Example usage for org.eclipse.jface.viewers ITableLabelProvider getColumnText

List of usage examples for org.eclipse.jface.viewers ITableLabelProvider getColumnText

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers ITableLabelProvider getColumnText.

Prototype

public String getColumnText(Object element, int columnIndex);

Source Link

Document

Returns the label text for the given column of the given element.

Usage

From source file:org.spearce.egit.ui.internal.history.CommitGraphTable.java

License:Open Source License

void doPaint(final Event event) {
    final RevCommit c = (RevCommit) ((TableItem) event.item).getData();
    if (highlight != null && c.has(highlight))
        event.gc.setFont(hFont);//from   ww w . ja va 2  s  .  c o  m
    else
        event.gc.setFont(nFont);

    if (event.index == 0) {
        renderer.paint(event);
        return;
    }

    final ITableLabelProvider lbl;
    final String txt;

    lbl = (ITableLabelProvider) table.getLabelProvider();
    txt = lbl.getColumnText(c, event.index);

    final Point textsz = event.gc.textExtent(txt);
    final int texty = (event.height - textsz.y) / 2;
    event.gc.drawString(txt, event.x, event.y + texty);
}

From source file:org.talend.core.ui.context.ContextTableValuesComposite.java

License:Open Source License

private void addSorter(final TreeViewer viewer2) {
    final Tree table = viewer2.getTree();
    Listener sortListener = new Listener() {

        private int direction = 1;

        @Override//from   www  . jav  a  2  s.  c o m
        public void handleEvent(Event e) {
            final TreeColumn column = (TreeColumn) e.widget;

            if (column == table.getSortColumn()) {
                direction = -direction;
            }
            if (direction == 1) {
                table.setSortDirection(SWT.UP);
            } else {
                table.setSortDirection(SWT.DOWN);
            }

            table.setSortColumn(column);
            viewer2.setSorter(new ViewerSorter() {

                int index = 0;

                @Override
                public void sort(Viewer viewer, Object[] elements) {
                    boolean found = false;
                    // find the sort column index
                    for (index = 0; index < table.getColumns().length; index++) {
                        if (table.getColumn(index) == table.getSortColumn()) {
                            found = true;
                            break;
                        }
                    }
                    if (!found) {
                        index = 0; // first one as default
                    }
                    super.sort(viewer, elements);
                }

                @Override
                public int compare(Viewer viewer, Object e1, Object e2) {
                    ITableLabelProvider labelProvider = (ITableLabelProvider) viewer2.getLabelProvider();
                    String columnText = labelProvider.getColumnText(e1, index) != null
                            ? labelProvider.getColumnText(e1, index)
                            : ""; //$NON-NLS-1$
                    String columnText2 = labelProvider.getColumnText(e2, index) != null
                            ? labelProvider.getColumnText(e2, index)
                            : ""; //$NON-NLS-1$
                    return getComparator().compare(columnText, columnText2) * direction;
                }
            });
        }
    };
    table.getColumn(0).addListener(SWT.Selection, sortListener);
    if (getContexts().size() > 0) {
        for (int i = 0; i < getContexts().size(); i++) {
            table.getColumn(i + 1).addListener(SWT.Selection, sortListener);
        }
    }
    table.setSortColumn(table.getColumn(0));
    table.setSortDirection(SWT.UP);
}

From source file:org.talend.core.ui.context.ContextTreeValuesComposite.java

License:Open Source License

/**
 * DOC bqian Comment method "addSorter".
 * //from ww  w. j av  a 2s.c o  m
 * @param viewer2
 */
private void addSorter(final TreeViewer viewer2) {
    final Tree table = viewer2.getTree();
    Listener sortListener = new Listener() {

        private int direction = 1;

        @Override
        public void handleEvent(Event e) {
            final TreeColumn column = (TreeColumn) e.widget;

            if (column == table.getSortColumn()) {
                direction = -direction;
            }
            if (direction == 1) {
                table.setSortDirection(SWT.UP);
            } else {
                table.setSortDirection(SWT.DOWN);
            }

            table.setSortColumn(column);
            viewer2.setSorter(new ViewerSorter() {

                int index = 0;

                @Override
                public void sort(Viewer viewer, Object[] elements) {
                    while (index < table.getColumns().length && table.getColumn(index) != column) {
                        index++;
                    }
                    super.sort(viewer, elements);
                }

                @Override
                public int compare(Viewer viewer, Object e1, Object e2) {
                    ITableLabelProvider labelProvider = (ITableLabelProvider) viewer2.getLabelProvider();
                    String columnText = labelProvider.getColumnText(e1, index) != null
                            ? labelProvider.getColumnText(e1, index)
                            : ""; //$NON-NLS-1$
                    String columnText2 = labelProvider.getColumnText(e2, index) != null
                            ? labelProvider.getColumnText(e2, index)
                            : ""; //$NON-NLS-1$
                    return getComparator().compare(columnText, columnText2) * direction;
                }
            });
            viewer2.expandAll();
        }
    };
    table.getColumn(0).addListener(SWT.Selection, sortListener);
    table.getColumn(1).addListener(SWT.Selection, sortListener);
    table.setSortColumn(table.getColumn(0));
    table.setSortDirection(SWT.UP);
}

From source file:org.talend.core.ui.context.model.template.ContextViewerSorter.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override// w  w w.jav a2  s. c om
public int compare(Viewer viewer, Object e1, Object e2) {
    if (original) {
        if (e1 instanceof ContextVariableTabParentModel && e2 instanceof ContextVariableTabParentModel) {
            final int index1 = getContextParameterIndex(contextManager,
                    ((ContextVariableTabParentModel) e1).getContextParameter());
            final int index2 = getContextParameterIndex(contextManager,
                    ((ContextVariableTabParentModel) e2).getContextParameter());
            return new Integer(index1).compareTo(index2);
        }

    } else {
        if (sortViewer != null) {
            ITableLabelProvider labelProvider = (ITableLabelProvider) sortViewer.getLabelProvider();

            final String text1 = labelProvider.getColumnText(e1, index);
            final String text2 = labelProvider.getColumnText(e2, index);

            return getComparator().compare((text1 != null ? text1 : ""), (text2 != null ? text2 : "")) //$NON-NLS-1$//$NON-NLS-2$
                    * direction;
        }
    }
    return 0; // keep
}

From source file:org.talend.designer.core.ui.views.jobsettings.tabs.ProcessVersionComposite.java

License:Open Source License

/**
 * DOC Administrator Comment method "addSortListener".
 * /* www  . jav a  2 s  . co m*/
 * @param table
 * @param column1
 * @param column2
 * @param column3
 */
private void addSortListener(final Table table, final TableColumn column1, final TableColumn column2,
        final TableColumn column3, final TableColumn column4) {
    Listener sortListener = new Listener() {

        private int direction = 1;

        @Override
        public void handleEvent(Event e) {
            final TableColumn column = (TableColumn) e.widget;

            if (column == table.getSortColumn()) {
                direction = -direction;
            }
            if (direction == 1) {
                table.setSortDirection(SWT.DOWN);
            } else {
                table.setSortDirection(SWT.UP);
            }

            table.setSortColumn(column);
            tableViewer.setSorter(new ViewerSorter() {

                int index = 0;

                @Override
                public void sort(Viewer viewer, Object[] elements) {
                    while (index < table.getColumns().length && table.getColumn(index) != column) {
                        index++;
                    }
                    super.sort(viewer, elements);
                }

                @Override
                public int compare(Viewer viewer, Object e1, Object e2) {
                    ITableLabelProvider labelProvider = (ITableLabelProvider) tableViewer.getLabelProvider();
                    String columnText = labelProvider.getColumnText(e1, index) != null
                            ? labelProvider.getColumnText(e1, index)
                            : ""; //$NON-NLS-1$
                    String columnText2 = labelProvider.getColumnText(e2, index) != null
                            ? labelProvider.getColumnText(e2, index)
                            : ""; //$NON-NLS-1$
                    return getComparator().compare(columnText, columnText2) * direction;
                }
            });
        }
    };

    tableViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        /*
         * (non-Javadoc)
         * 
         * @seeorg.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.
         * SelectionChangedEvent)
         */
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            ProcessVersionComposite.this.selection = event.getSelection();
            if (getParentWizard() != null) {
                ((WizardPage) getParentWizard()).setPageComplete(true);
            }
        }
    });

    column1.addListener(SWT.Selection, sortListener);
    column2.addListener(SWT.Selection, sortListener);
    column3.addListener(SWT.Selection, sortListener);
    column4.addListener(SWT.Selection, sortListener);
    table.setSortColumn(column1);
    table.setSortDirection(SWT.DOWN);

    tableViewer.addDoubleClickListener(new IDoubleClickListener() {

        @Override
        public void doubleClick(DoubleClickEvent event) {
            if (getParentWizard() == null) {
                ITreeContextualAction editPropertiesAction = getEditPropertiesAction(
                        EditPropertiesAction.class);
                if (editPropertiesAction != null) {
                    editPropertiesAction.run();
                }
            }
        }

    });
}

From source file:org.talend.designer.filemultischemas.ui.provider.property.SchemaDetailsViewerSorter.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override// w  w w. j  a v a2  s.  c o  m
public int compare(Viewer viewer, Object e1, Object e2) {
    if (sortViewer != null) {
        ITableLabelProvider labelProvider = (ITableLabelProvider) sortViewer.getLabelProvider();

        final String text1 = labelProvider.getColumnText(e1, index);
        final String text2 = labelProvider.getColumnText(e2, index);

        return getComparator().compare((text1 != null ? text1 : ""), (text2 != null ? text2 : "")) * direction; //$NON-NLS-1$ //$NON-NLS-2$
    }
    return 0;
}

From source file:org.talend.repository.ui.properties.VersionSection.java

License:Open Source License

@Override
public void createControls(Composite parent, TabbedPropertySheetPage aTabbedPropertySheetPage) {
    super.createControls(parent, aTabbedPropertySheetPage);

    composite = getWidgetFactory().createFlatFormComposite(parent);

    tableViewer = new TableViewer(composite, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION);
    final Table table = tableViewer.getTable();
    TableLayout tableLayout = new TableLayout();
    table.setLayout(tableLayout);/*ww w  .j a  v a2  s .co  m*/
    table.setHeaderVisible(true);
    table.setLinesVisible(true);

    final String[] columnProperties = new String[] { Messages.getString("VersionSection.Version"), //$NON-NLS-1$
            Messages.getString("VersionSection.CreationDate"), //$NON-NLS-1$
            Messages.getString("VersionSection.ModificationDate"), //$NON-NLS-1$
            Messages.getString("VersionSection.Status") }; //$NON-NLS-1$ 

    final TableColumn column1 = new TableColumn(table, SWT.NONE);
    tableLayout.addColumnData(new ColumnPixelData(125, true));
    column1.setText(columnProperties[0]);

    final TableColumn column2 = new TableColumn(table, SWT.NONE);
    tableLayout.addColumnData(new ColumnPixelData(125, true));
    column2.setText(columnProperties[1]);

    final TableColumn column3 = new TableColumn(table, SWT.NONE);
    tableLayout.addColumnData(new ColumnPixelData(125, true));
    column3.setText(columnProperties[2]);

    final TableColumn column4 = new TableColumn(table, SWT.NONE);
    tableLayout.addColumnData(new ColumnWeightData(1, 150, true));
    column4.setText(columnProperties[3]);

    tableViewer.setColumnProperties(columnProperties);

    Object layoutData = parent.getLayoutData();
    if (layoutData instanceof GridData) {
        GridData gridData = (GridData) layoutData;
        gridData.grabExcessVerticalSpace = true;
        gridData.verticalAlignment = SWT.FILL;
    }

    FormData formData = new FormData();
    formData.left = new FormAttachment(0);
    formData.top = new FormAttachment(0);
    formData.right = new FormAttachment(100);
    formData.bottom = new FormAttachment(100);
    table.setLayoutData(formData);

    tableViewer.setContentProvider(new IStructuredContentProvider() {

        public Object[] getElements(Object inputElement) {
            IRepositoryViewObject repositoryObject = ((IRepositoryViewObject) inputElement);
            if (repositoryObject.getProperty() == null) {
                return null;
            }

            RepositoryNode parentRepositoryNode = RepositoryNodeUtilities
                    .getParentRepositoryNodeFromSelection(repositoryObject);

            try {
                List<IRepositoryViewObject> allVersion = ProxyRepositoryFactory.getInstance()
                        .getAllVersion(repositoryObject.getId());
                Collections.sort(allVersion, new IRepositoryObjectComparator());
                Object[] objects = new Object[allVersion.size()];
                for (int i = 0; i < objects.length; i++) {
                    IRepositoryViewObject repositoryObjectVersion = allVersion.get(i);
                    RepositoryNode repositoryNode = createRepositoryNode(parentRepositoryNode,
                            repositoryObjectVersion);
                    objects[i] = repositoryNode;
                }
                return objects;
            } catch (PersistenceException e) {
                return null;
            }
        }

        private RepositoryNode createRepositoryNode(RepositoryNode parentRepositoryNode,
                IRepositoryViewObject repositoryObjectVersion) {
            ERepositoryObjectType itemType = ERepositoryObjectType
                    .getItemType(repositoryObjectVersion.getProperty().getItem());

            RepositoryNode repositoryNode = new RepositoryNode(repositoryObjectVersion, parentRepositoryNode,
                    ENodeType.REPOSITORY_ELEMENT);
            repositoryNode.setProperties(EProperties.CONTENT_TYPE, itemType);
            repositoryNode.setProperties(EProperties.LABEL, repositoryObjectVersion.getLabel());
            return repositoryNode;
        }

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
        }
    });

    tableViewer.setLabelProvider(new ITableLabelProvider() {

        public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        public String getColumnText(Object element, int columnIndex) {
            RepositoryNode repositoryNode = (RepositoryNode) element;
            switch (columnIndex) {
            case 0:
                return repositoryNode.getObject().getVersion();
            case 1:
                if (repositoryNode.getObject().getCreationDate() != null) {
                    return FORMATTER.format(repositoryNode.getObject().getCreationDate());

                } else {
                    return null;
                }
            case 2:
                if (repositoryNode.getObject().getModificationDate() != null) {
                    return FORMATTER.format(repositoryNode.getObject().getModificationDate());
                } else {
                    return null;
                }
            case 3:
                if (repositoryNode.getObject().getStatusCode() != null) {
                    return repositoryNode.getObject().getStatusCode();
                } else {
                    return null;
                }
            default:
                return null;
            }
        }

        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
        }

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        public void removeListener(ILabelProviderListener listener) {
        }
    });

    MenuManager menuMgr = new MenuManager("#PopUp"); //$NON-NLS-1$
    menuMgr.setRemoveAllWhenShown(true);
    menuMgr.addMenuListener(new IMenuListener() {

        public void menuAboutToShow(IMenuManager mgr) {
            ISelection selection = tableViewer.getSelection();
            if (selection instanceof IStructuredSelection) {
                IStructuredSelection structuredSelection = (IStructuredSelection) selection;

                List<ITreeContextualAction> contextualsActions = ActionsHelper
                        .getRepositoryContextualsActions();
                for (ITreeContextualAction action : contextualsActions) {
                    if (action.isReadAction() || action.isEditAction() || action.isPropertiesAction()) {
                        action.init(null, structuredSelection);
                        if (action.isVisible()) {
                            mgr.add(action);
                        }
                    }
                }
            }
        }
    });
    Menu menu = menuMgr.createContextMenu(tableViewer.getControl());
    tableViewer.getControl().setMenu(menu);

    Listener sortListener = new Listener() {

        private int direction = 1;

        public void handleEvent(Event e) {
            final TableColumn column = (TableColumn) e.widget;

            if (column == table.getSortColumn()) {
                direction = -direction;
            }
            if (direction == 1) {
                table.setSortDirection(SWT.DOWN);
            } else {
                table.setSortDirection(SWT.UP);
            }

            table.setSortColumn(column);
            tableViewer.setSorter(new ViewerSorter() {

                int index = 0;

                @Override
                public void sort(Viewer viewer, Object[] elements) {
                    while (index < table.getColumns().length && table.getColumn(index) != column) {
                        index++;
                    }
                    super.sort(viewer, elements);
                }

                @Override
                public int compare(Viewer viewer, Object e1, Object e2) {
                    ITableLabelProvider labelProvider = (ITableLabelProvider) tableViewer.getLabelProvider();
                    String columnText = labelProvider.getColumnText(e1, index) != null
                            ? labelProvider.getColumnText(e1, index)
                            : ""; //$NON-NLS-1$
                    String columnText2 = labelProvider.getColumnText(e2, index) != null
                            ? labelProvider.getColumnText(e2, index)
                            : ""; //$NON-NLS-1$
                    return getComparator().compare(columnText, columnText2) * direction;
                }
            });
        }
    };
    column1.addListener(SWT.Selection, sortListener);
    column2.addListener(SWT.Selection, sortListener);
    column3.addListener(SWT.Selection, sortListener);
    column4.addListener(SWT.Selection, sortListener);
    table.setSortColumn(column1);
    table.setSortDirection(SWT.DOWN);

    aTabbedPropertySheetPage.getSite().setSelectionProvider(this);
}

From source file:org.thanlwinsoft.doccharconvert.eclipse.editors.DccxEditor.java

License:Open Source License

private void setupConverterParameters(Section parametersSection) {
    final Table table = new Table(parametersSection, SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION);
    table.setHeaderVisible(true);/*from  w ww. j a v a 2  s .co m*/
    TableColumn typeColumn = new TableColumn(table, SWT.LEAD);
    typeColumn.setText(MessageUtil.getString("Type"));
    typeColumn.setWidth(150);
    TableColumn valueColumn = new TableColumn(table, SWT.LEAD);
    valueColumn.setText(MessageUtil.getString("Value"));
    valueColumn.setWidth(150);
    final TableViewer viewer = new TableViewer(table);
    viewer.setContentProvider(new IStructuredContentProvider() {

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

        }

        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof ConverterClass) {
                return ((ConverterClass) inputElement).getArgumentArray();
            }
            return null;
        }
    });
    final ITableLabelProvider labelProvider = new ITableLabelProvider() {
        // 
        public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        public String getColumnText(Object element, int columnIndex) {
            if (element instanceof Argument) {
                Argument a = (Argument) element;
                switch (columnIndex) {
                case 0:
                    if (a.isSetType())
                        return a.getType().toString();
                    else
                        return "";
                case 1:
                    if (a.isSetValue())
                        return a.getValue();
                    else
                        return "";
                }
            }
            return "-";
        }

        @Override
        public void addListener(ILabelProviderListener listener) {
            // TODO Auto-generated method stub

        }

        @Override
        public void dispose() {
            // TODO Auto-generated method stub

        }

        @Override
        public boolean isLabelProperty(Object element, String property) {
            // TODO Auto-generated method stub
            return false;
        }

        @Override
        public void removeListener(ILabelProviderListener listener) {
            // TODO Auto-generated method stub

        }
    };
    viewer.setLabelProvider(labelProvider);
    mParameterViewer = viewer;
    if (mConverter != null && mConverter.getConverterClass() != null
            && mConverter.getConverterClass().sizeOfArgumentArray() > 0)
        viewer.setInput(mConverter.getConverterClass());
    viewer.refresh();
    toolkit.adapt(table);
    parametersSection.setClient(table);

    TableViewerColumn tvc = new TableViewerColumn(viewer, valueColumn);
    final int colNum = 1;
    tvc.setEditingSupport(new EditingSupport(viewer) {
        CellEditor tce = null;
        CellEditor fce = null;

        @Override
        protected boolean canEdit(Object element) {
            return (element instanceof Argument);
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            Argument arg = (Argument) element;
            if (arg.getType().equals(org.thanlwinsoft.schemas.docCharConvert.ArgType.FILE)) {
                if (getEditorInput() instanceof FileEditorInput) {
                    FileEditorInput fei = (FileEditorInput) getEditorInput();
                    String value = "";
                    if (arg.isSetValue())
                        value = arg.getValue();
                    IResource fr = fei.getFile().getParent().findMember(value);
                    if (fr instanceof IFile) {
                        IFile file = (IFile) fr;
                        fce = new FileCellEditor(table, SWT.NONE, file, new String[] { "*" });
                        return fce;
                    } else {
                        fr = fei.getFile().getParent();
                        fce = new FileCellEditor(table, SWT.NONE, fr, new String[] { "*" });
                        return fce;
                    }
                }

            }
            if (tce == null)
                tce = new TextCellEditor(table);
            return tce;
        }

        @Override
        protected Object getValue(Object element) {
            return labelProvider.getColumnText(element, colNum);
        }

        @Override
        protected void setValue(Object element, Object value) {
            String oldValue = "";
            if (getValue(element) != null)
                oldValue = getValue(element).toString();
            if (value == null || value.toString().equals(oldValue))
                return;
            try {
                if (element instanceof Argument) {
                    String newValue = value.toString();
                    Argument arg = (Argument) element;
                    if (arg.getType().equals("File")) {
                        FileEditorInput fei = (FileEditorInput) getEditorInput();
                        IContainer parent = fei.getFile().getParent();
                        Path newPath = new Path(newValue);
                        int seg = parent.getRawLocation().matchingFirstSegments(newPath);
                        String up = "";
                        int upCount = parent.getRawLocation().segmentCount() - seg;
                        while (upCount-- > 0)
                            up += "../";
                        IPath relativePath = new Path(up).append(newPath.removeFirstSegments(seg));
                        newValue = relativePath.toPortableString();
                        if (newValue.equals(oldValue))
                            return;
                        arg.setValue(newValue);
                    } else
                        arg.setValue(value.toString());
                }
                setDirty(true);
                viewer.refresh(element);
            } catch (NumberFormatException e) {

            }
        }

    });
    tvc.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(ViewerCell cell) {
            cell.setText(labelProvider.getColumnText(cell.getElement(), cell.getColumnIndex()));
        }
    });

}

From source file:org.thanlwinsoft.doccharconvert.eclipse.editors.DccxEditor.java

License:Open Source License

private void addFontEditorSupport(final Table table, final TableViewer viewer,
        final ITableLabelProvider labelProvider, int col, TableColumn tc) {
    TableViewerColumn tvc = new TableViewerColumn(viewer, tc);
    final int colNum = col;
    tvc.setEditingSupport(new EditingSupport(viewer) {
        FontCellEditor tce = null;/*from  w w w .  j ava 2s.  c o m*/
        ComboBoxCellEditor typeEditor = null;

        @Override
        protected boolean canEdit(Object element) {
            return (element instanceof Style);
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            if (colNum == 1 || colNum == 3) {
                if (typeEditor == null) {
                    String scriptTypes[] = new String[3];
                    scriptTypes[0] = MessageUtil.getString("Script_" + Script.LATIN.toString());
                    scriptTypes[1] = MessageUtil.getString("Script_" + Script.CTL.toString());
                    scriptTypes[2] = MessageUtil.getString("Script_" + Script.CJK.toString());
                    typeEditor = new ComboBoxCellEditor(table, scriptTypes);
                }
                return typeEditor;
            }
            if (tce == null)
                tce = new FontCellEditor(table, SWT.NONE);
            return tce;
        }

        @Override
        protected Object getValue(Object element) {
            switch (colNum) {
            case 1:
            case 3: {
                if (element instanceof Style) {
                    Style s = (Style) element;
                    Script.Enum script = s.getFontArray((colNum == 1) ? 0 : 1).getScript();
                    if (script == Script.LATIN)
                        return new Integer(0);
                    else if (script == Script.CTL)
                        return new Integer(1);
                    else if (script == Script.CJK)
                        return new Integer(2);
                    return new Integer(-1);
                }
            }
            default:
                return labelProvider.getColumnText(element, colNum);
            }
        }

        @Override
        protected void setValue(Object element, Object value) {
            if (value == null || value.toString().equals(getValue(element)))
                return;
            try {
                Style style = (Style) element;
                while (style.sizeOfFontArray() != 2)
                    style.addNewFont();
                assert (style.sizeOfFontArray() == 2);
                switch (colNum) {
                case 0:
                    Font f = style.getFontArray(0);
                    assert (f.getType().equals(Age.OLD));
                    f.setType(Age.OLD);
                    f.setName(value.toString());
                    break;
                case 1:
                    f = style.getFontArray(0);
                    f.setType(Age.OLD);
                    if (value instanceof Integer) {
                        switch (((Integer) value).intValue()) {
                        case 0:
                            f.setScript(Script.LATIN);
                            break;
                        case 1:
                            f.setScript(Script.CTL);
                            break;
                        case 2:
                            f.setScript(Script.CJK);
                            break;
                        }
                    } else
                        f.setScript(Script.Enum.forString(value.toString()));
                    break;
                case 2:
                    f = style.getFontArray(1);
                    f.setType(Age.NEW);
                    f.setName(value.toString());
                    break;
                case 3:
                    f = style.getFontArray(1);
                    f.setType(Age.NEW);
                    if (value instanceof Integer) {
                        switch (((Integer) value).intValue()) {
                        case 0:
                            f.setScript(Script.LATIN);
                            break;
                        case 1:
                            f.setScript(Script.CTL);
                            break;
                        case 2:
                            f.setScript(Script.CJK);
                            break;
                        }
                    } else
                        f.setScript(Script.Enum.forString(value.toString()));
                    break;
                }
                setDirty(true);
                viewer.refresh(element);
            } catch (NumberFormatException e) {

            }
        }

    });
    tvc.setLabelProvider(new CellLabelProvider() {

        @Override
        public void update(ViewerCell cell) {
            cell.setText(labelProvider.getColumnText(cell.getElement(), cell.getColumnIndex()));
        }
    });

}

From source file:org.thanlwinsoft.doccharconvert.eclipse.editors.ScriptsEditorPart.java

License:Open Source License

/**
 * @param section/*from   ww w .  j  a v  a 2  s  . co m*/
 * @param scriptArray
 */
private void addScriptTable(ExpandableComposite parent, final Script scriptArray) {
    final Table table = new Table(parent, SWT.H_SCROLL | SWT.V_SCROLL);
    table.setHeaderVisible(true);
    final TableViewer viewer = new TableViewer(table);
    viewer.setContentProvider(new IStructuredContentProvider() {

        public void dispose() {
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {

        }

        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof Script) {
                return ((Script) inputElement).getCluster().getComponentArray();
            }
            return null;
        }
    });
    final ITableLabelProvider labelProvider = new ITableLabelProvider() {
        // ID, Name, Priority, Min
        public Image getColumnImage(Object element, int columnIndex) {
            return null;
        }

        public String getColumnText(Object element, int columnIndex) {
            if (element instanceof Component) {
                Component c = (Component) element;
                switch (columnIndex) {
                case 0:
                    if (c.isSetId())
                        return c.getId();
                    else if (c.isSetRefId())
                        return "[" + c.getRefId() + "]";
                    else
                        return "";
                case 1:
                    StringBuilder builder = new StringBuilder();
                    for (int i = 0; i < c.getDomNode().getChildNodes().getLength(); i++)
                        builder.append(c.getDomNode().getChildNodes().item(i).getNodeValue());
                    return builder.toString();
                case 2:
                    if (c.isSetPriority())
                        return c.getPriority().toString();
                    else
                        return "";
                case 3:
                    if (c.isSetMin())
                        return c.getMin().toString();
                    else
                        return "";
                }
            }
            return "";
        }

        public void addListener(ILabelProviderListener listener) {
        }

        public void dispose() {
        }

        public boolean isLabelProperty(Object element, String property) {
            return false;
        }

        public void removeListener(ILabelProviderListener listener) {
        }
    };
    viewer.setLabelProvider(labelProvider);
    viewer.setInput(scriptArray);
    String[] columnNames = new String[] { MessageUtil.getString("ID"), MessageUtil.getString("Name"),
            MessageUtil.getString("Priority"), MessageUtil.getString("Minimum"), };
    for (int i = 0; i < 4; i++) {
        TableColumn col = new TableColumn(table, SWT.LEAD);
        col.setWidth(100);
        col.setText(columnNames[i]);
        TableViewerColumn tvc = new TableViewerColumn(viewer, col);
        final int colNum = i;
        tvc.setEditingSupport(new EditingSupport(viewer) {
            TextCellEditor tce = null;
            ComboBoxCellEditor cbce = null;

            @Override
            protected boolean canEdit(Object element) {
                return (element instanceof Component);
            }

            @Override
            protected CellEditor getCellEditor(Object element) {
                Component c = (Component) element;
                if (colNum == 0 && !c.isSetId()) {
                    ArrayList<String> items = new ArrayList<String>();
                    Cluster cluster = scriptArray.getCluster();
                    for (int j = 0; j < cluster.sizeOfComponentArray(); j++) {
                        if (cluster.getComponentArray(j).isSetId())
                            items.add(cluster.getComponentArray(j).getId());
                    }
                    if (cbce == null)
                        cbce = new ComboBoxCellEditor(table, items.toArray(new String[items.size()]));
                    else
                        cbce.setItems(items.toArray(new String[items.size()]));
                    Control control = cbce.getControl();
                    if (control instanceof CCombo) {
                        CCombo cc = (CCombo) control;
                        cc.setEditable(true);
                    }
                    return cbce;
                }
                if (tce == null)
                    tce = new TextCellEditor(table);
                return tce;
            }

            @Override
            protected Object getValue(Object element) {
                if (colNum == 0 && element instanceof Component && !(((Component) element).isSetId())) {
                    int componentIndex = -1;
                    for (int j = 0; j < scriptArray.getCluster().sizeOfComponentArray(); j++) {
                        Component c = scriptArray.getCluster().getComponentArray(j);
                        if (c.isSetId()) {
                            ++componentIndex;
                            if (c.getId().equals(((Component) element).getRefId()))
                                break;
                        }
                    }
                    return new Integer(componentIndex);
                }

                return labelProvider.getColumnText(element, colNum);
            }

            @Override
            protected void setValue(Object element, Object value) {
                if (value == null || value.toString().equals(getValue(element)))
                    return;
                try {
                    Component c = (Component) element;
                    switch (colNum) {
                    case 0:
                        if (value instanceof Integer) {
                            if (((Integer) value).intValue() < 0) {
                                Control control = cbce.getControl();
                                if (control instanceof CCombo) {
                                    String id = ((CCombo) control).getText();
                                    if (id.length() < 1)
                                        break;
                                    c.setId(id.trim());
                                    if (c.isSetRefId())
                                        c.unsetRefId();
                                    break;
                                }
                            } else {
                                if (c.isSetId())
                                    c.unsetId();
                                c.setRefId(cbce.getItems()[((Integer) value).intValue()]);
                                break;
                            }
                        }
                        if (c.getId() == null || !c.getId().equals(value.toString())) {
                            if (isUniqueComponentId(value.toString())) {
                                switchComponentId(c.getId(), value.toString());
                                c.setId(value.toString().trim());
                                if (c.isSetRefId())
                                    c.unsetRefId();
                            }
                        }
                        break;
                    case 1:
                        org.w3c.dom.Text t = c.getDomNode().getOwnerDocument().createTextNode(value.toString());
                        while (c.getDomNode().hasChildNodes())
                            c.getDomNode().removeChild(c.getDomNode().getFirstChild());
                        c.getDomNode().appendChild(t);
                        break;
                    case 2:
                        int iValue = Integer.parseInt(value.toString());
                        c.setPriority(BigInteger.valueOf(iValue));
                        break;
                    case 3:
                        int minValue = Integer.parseInt(value.toString());
                        c.setMin(BigInteger.valueOf(minValue));
                        break;
                    }
                    parentEditor.setDirty(true);
                    viewer.refresh(element);
                } catch (NumberFormatException e) {

                }
            }

        });
        tvc.setLabelProvider(new CellLabelProvider() {

            @Override
            public void update(ViewerCell cell) {
                cell.setText(labelProvider.getColumnText(cell.getElement(), cell.getColumnIndex()));

            }
        });
    }
    MenuManager menuManager = new MenuManager(parentEditor.getPartName() + ":" + this.getPartName());
    Action insertAction = new Action() {
        public void run() {
            int mapIndex = table.getSelectionIndex();// redo if sort
            if (mapIndex < 0)
                mapIndex = scriptArray.getCluster().sizeOfComponentArray();
            int insertRowCount = Math.max(1, table.getSelectionCount());
            for (int i = 0; i < insertRowCount; i++) {
                //Component c;
                if (mapIndex + i < scriptArray.getCluster().sizeOfComponentArray())
                    scriptArray.getCluster().insertNewComponent(mapIndex + i);
                else
                    scriptArray.getCluster().addNewComponent();
                int numComponents = scriptArray.getCluster().sizeOfComponentArray();
                String id = "Side" + scriptArray.getSide() + numComponents;
                if (scriptArray.getSide().equals(Side.LEFT)) {
                    id = MessageUtil.getString("LeftComponent", Integer.toString(numComponents));
                    for (int j = 0; j < scriptArray.getCluster().sizeOfComponentArray(); j++) {
                        Component existing = scriptArray.getCluster().getComponentArray(j);
                        if (existing.getId() != null && existing.getId().equals(id)) {
                            id = MessageUtil.getString("LeftComponent", Integer.toString(++numComponents));
                            j = 0;
                        }
                    }
                } else if (scriptArray.getSide().equals(Side.RIGHT)) {
                    id = MessageUtil.getString("RightComponent", Integer.toString(numComponents));
                    for (int j = 0; j < scriptArray.getCluster().sizeOfComponentArray(); j++) {
                        Component existing = scriptArray.getCluster().getComponentArray(j);
                        if (existing.getId() != null && existing.getId().equals(id)) {
                            id = MessageUtil.getString("RightComponent", Integer.toString(++numComponents));
                            j = 0;
                        }
                    }
                }
                //c.setId(id);
            }
            viewer.refresh();
            parentEditor.setDirty(true);
        }
    };
    insertAction.setId("Insert");
    insertAction.setText(MessageUtil.getString("Insert"));
    insertAction.setToolTipText(MessageUtil.getString("InsertToolTip"));
    Action deleteAction = new Action() {
        public void run() {
            int mapIndex = table.getSelectionIndex();
            if (mapIndex < 0)
                return;
            scriptArray.getCluster().removeComponent(mapIndex);

            viewer.refresh();
            parentEditor.setDirty(true);
        }
    };
    deleteAction.setId("Delete");
    deleteAction.setText(MessageUtil.getString("Delete"));
    deleteAction.setToolTipText(MessageUtil.getString("DeleteToolTip"));
    Action moveUpAction = new Action() {
        public void run() {
            int mapIndex = table.getSelectionIndex();
            if (mapIndex < 1)
                return;
            XmlObject toMove = scriptArray.getCluster().getComponentArray(mapIndex).copy();
            scriptArray.getCluster().removeComponent(mapIndex);
            Component moved = scriptArray.getCluster().insertNewComponent(mapIndex - 1);
            moved.set(toMove);
            viewer.refresh();
            parentEditor.setDirty(true);
        }
    };
    moveUpAction.setId("moveUp");
    moveUpAction.setText(MessageUtil.getString("MoveUp"));
    moveUpAction.setToolTipText(MessageUtil.getString("MoveUpToolTip"));

    Action moveDownAction = new Action() {
        public void run() {
            int mapIndex = table.getSelectionIndex();
            int numComponents = scriptArray.getCluster().sizeOfComponentArray();
            if (mapIndex < 0 || mapIndex == numComponents - 1)
                return;
            XmlObject toMove = scriptArray.getCluster().getComponentArray(mapIndex).copy();
            scriptArray.getCluster().removeComponent(mapIndex);
            Component moved = scriptArray.getCluster().insertNewComponent(mapIndex + 1);
            moved.set(toMove);
            viewer.refresh();
            parentEditor.setDirty(true);
        }
    };
    moveDownAction.setId("moveDown");
    moveDownAction.setText(MessageUtil.getString("MoveDown"));
    moveDownAction.setToolTipText(MessageUtil.getString("MoveDownToolTip"));

    menuManager.add(insertAction);
    menuManager.add(deleteAction);
    menuManager.add(moveUpAction);
    menuManager.add(moveDownAction);
    menuManager.add(new Separator());
    menuManager.setVisible(true);
    toolkit.adapt(table);
    table.setMenu(menuManager.createContextMenu(table));
    parent.setClient(table);
    viewer.refresh();

}