List of usage examples for org.eclipse.jface.viewers ITableLabelProvider getColumnText
public String getColumnText(Object element, int columnIndex);
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(); }