List of usage examples for org.eclipse.jface.viewers ViewerCell getColumnIndex
public int getColumnIndex()
From source file:org.projectusus.ui.internal.proportions.cockpit.CockpitLP.java
License:Open Source License
@Override public void update(ViewerCell cell) { Object element = cell.getElement(); int columnIndex = cell.getColumnIndex(); cell.setImage(getColumnImage(element, columnIndex)); cell.setText(getColumnText(element, columnIndex)); }
From source file:org.rssowl.ui.internal.CredentialsPreferencesPage.java
License:Open Source License
@Override protected Control createContents(Composite parent) { Composite container = createComposite(parent); /* Use a master password */ Composite masterContainer = new Composite(container, SWT.NONE); masterContainer.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1)); masterContainer.setLayout(LayoutUtils.createGridLayout(2, 0, 0)); ((GridLayout) masterContainer.getLayout()).marginBottom = 15; ((GridLayout) masterContainer.getLayout()).verticalSpacing = 10; StyledText infoText = new StyledText(masterContainer, SWT.WRAP); infoText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); ((GridData) infoText.getLayoutData()).widthHint = 200; infoText.setBackground(masterContainer.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); if (Application.IS_WINDOWS) infoText.setText(/*from www. j av a 2s. c o m*/ "Set a master password to protect your passwords from unauthorized access. Note that on Windows, the passwords are automatically protected using your system password."); else if (Application.IS_MAC) infoText.setText( "Set a master password to protect your passwords from unauthorized access. Note that on MacOS, the passwords are automatically protected using your system password."); else infoText.setText( "It is recommended to set a master password to protect your passwords from unauthorized access."); fUseMasterPasswordCheck = new Button(masterContainer, SWT.CHECK); fUseMasterPasswordCheck.setText("Use a master password"); fUseMasterPasswordCheck.setLayoutData(new GridData(SWT.FILL, SWT.END, true, true)); fUseMasterPasswordCheck.setSelection(fGlobalScope.getBoolean(DefaultPreferences.USE_MASTER_PASSWORD)); fUseMasterPasswordCheck.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { fResetMasterPassword.setEnabled(fUseMasterPasswordCheck.getSelection()); } }); fResetMasterPassword = new Button(masterContainer, SWT.PUSH); fResetMasterPassword.setEnabled(fUseMasterPasswordCheck.getSelection()); fResetMasterPassword.setLayoutData(new GridData(SWT.END, SWT.CENTER, false, true)); fResetMasterPassword.setText("Change Master Password..."); fResetMasterPassword.addSelectionListener(new SelectionAdapter() { @SuppressWarnings("restriction") @Override public void widgetSelected(SelectionEvent e) { reSetAllCredentials(); } }); /* Label */ Label infoLabel = new Label(container, SWT.NONE); infoLabel.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1)); infoLabel.setText("RSSOwl has saved login information for the following sites and realms:"); /* Viewer to display Passwords */ int style = SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER; CTable customTable = new CTable(container, style); customTable.getControl().setHeaderVisible(true); fViewer = new TableViewer(customTable.getControl()); fViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); fViewer.getControl().setData(ApplicationWorkbenchWindowAdvisor.FOCUSLESS_SCROLL_HOOK, new Object()); /* Create Columns */ TableViewerColumn col = new TableViewerColumn(fViewer, SWT.LEFT); customTable.manageColumn(col.getColumn(), new CColumnLayoutData(CColumnLayoutData.Size.FILL, 45), "Site", null, false, true); col.getColumn().setMoveable(false); col = new TableViewerColumn(fViewer, SWT.LEFT); customTable.manageColumn(col.getColumn(), new CColumnLayoutData(CColumnLayoutData.Size.FILL, 30), "Realm", null, false, true); col.getColumn().setMoveable(false); col = new TableViewerColumn(fViewer, SWT.LEFT); customTable.manageColumn(col.getColumn(), new CColumnLayoutData(CColumnLayoutData.Size.FILL, 25), "Username", null, false, true); col.getColumn().setMoveable(false); /* Content Provider */ fViewer.setContentProvider(new IStructuredContentProvider() { public Object[] getElements(Object inputElement) { Set<CredentialsModelData> credentials = loadCredentials(); return credentials.toArray(); } public void dispose() { } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } }); /* Label Provider */ fViewer.setLabelProvider(new CellLabelProvider() { @SuppressWarnings("unchecked") @Override public void update(ViewerCell cell) { CredentialsModelData data = (CredentialsModelData) cell.getElement(); switch (cell.getColumnIndex()) { case 0: cell.setText(data.getNormalizedLink().toString()); break; case 1: cell.setText(data.getRealm()); break; case 2: cell.setText(data.getUsername()); break; } } }); /* Sorter */ fViewer.setSorter(new ViewerSorter() { @SuppressWarnings("unchecked") @Override public int compare(Viewer viewer, Object e1, Object e2) { CredentialsModelData data1 = (CredentialsModelData) e1; CredentialsModelData data2 = (CredentialsModelData) e2; return data1.getNormalizedLink().toString().compareTo(data2.getNormalizedLink().toString()); } }); /* Set Dummy Input */ fViewer.setInput(new Object()); /* Offer Buttons to remove Credentials */ fRemoveSelected = new Button(container, SWT.PUSH); fRemoveSelected.setText("&Remove"); fRemoveSelected.setEnabled(false); fRemoveSelected.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { onRemove(); } }); fRemoveAll = new Button(container, SWT.PUSH); fRemoveAll.setText("Remove &All"); fRemoveAll.setEnabled(fViewer.getTable().getItemCount() > 0); fRemoveAll.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { onRemoveAll(); } }); setButtonLayoutData(fRemoveSelected); setButtonLayoutData(fRemoveAll); ((GridData) fRemoveAll.getLayoutData()).grabExcessHorizontalSpace = false; ((GridData) fRemoveAll.getLayoutData()).horizontalAlignment = SWT.BEGINNING; fViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { fRemoveSelected.setEnabled(!fViewer.getSelection().isEmpty()); } }); return container; }
From source file:org.rssowl.ui.internal.dialogs.preferences.CredentialsPreferencesPage.java
License:Open Source License
@Override protected Control createContents(Composite parent) { Composite container = createComposite(parent); /* Use a master password */ if (!Application.IS_ECLIPSE) { Composite masterContainer = new Composite(container, SWT.NONE); masterContainer.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1)); masterContainer.setLayout(LayoutUtils.createGridLayout(3, 0, 0)); ((GridLayout) masterContainer.getLayout()).marginBottom = 15; ((GridLayout) masterContainer.getLayout()).verticalSpacing = 10; Label infoText = new Label(masterContainer, SWT.WRAP); infoText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 3, 1)); ((GridData) infoText.getLayoutData()).widthHint = 200; if (Application.IS_WINDOWS || Application.IS_MAC) infoText.setText(Messages.CredentialsPreferencesPage_MASTER_PW_INFO); else/*w ww .j a v a 2s . co m*/ infoText.setText(Messages.CredentialsPreferencesPage_MASTER_PW_MSG); /* Use Own Master Password */ fUseMasterPasswordCheck = new Button(masterContainer, SWT.CHECK); fUseMasterPasswordCheck.setText(Messages.CredentialsPreferencesPage_USE_MASTER_PW); fUseMasterPasswordCheck.setFocus(); fUseMasterPasswordCheck.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true)); fUseMasterPasswordCheck.setSelection(fGlobalScope.getBoolean(DefaultPreferences.USE_MASTER_PASSWORD)); fUseMasterPasswordCheck.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { if (!fUseMasterPasswordCheck.getSelection()) fChangeMasterPassword.setEnabled(false); } }); /* Change Own Master Password */ fChangeMasterPassword = new Button(masterContainer, SWT.PUSH); fChangeMasterPassword.setEnabled(fUseMasterPasswordCheck.getSelection()); fChangeMasterPassword.setText(Messages.CredentialsPreferencesPage_CHANGE_MASTER_PW); Dialog.applyDialogFont(fChangeMasterPassword); setButtonLayoutData(fChangeMasterPassword); fChangeMasterPassword.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { onChangeMasterPassword(); } }); /* Reset Master Password */ fResetMasterPassword = new Button(masterContainer, SWT.PUSH); fResetMasterPassword.setEnabled(false); fResetMasterPassword.setText(Messages.CredentialsPreferencesPage_RESET); Dialog.applyDialogFont(fResetMasterPassword); setButtonLayoutData(fResetMasterPassword); fResetMasterPassword.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { onResetMasterPassword(); } }); } /* Label */ Label infoLabel = new Label(container, SWT.NONE); infoLabel.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1)); infoLabel.setText(Messages.CredentialsPreferencesPage_SAVED_PWS); /* Viewer to display Passwords */ int style = SWT.MULTI | SWT.FULL_SELECTION | SWT.BORDER; CTable customTable = new CTable(container, style); customTable.getControl().setHeaderVisible(true); fViewer = new TableViewer(customTable.getControl()); fViewer.getControl().setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1)); ((GridData) fViewer.getTable().getLayoutData()).heightHint = 190; fViewer.getControl().setData(ApplicationWorkbenchWindowAdvisor.FOCUSLESS_SCROLL_HOOK, new Object()); /* Create Columns */ TableViewerColumn col = new TableViewerColumn(fViewer, SWT.LEFT); customTable.manageColumn(col.getColumn(), new CColumnLayoutData(CColumnLayoutData.Size.FILL, 45), Messages.CredentialsPreferencesPage_SITE, null, null, false, true); col.getColumn().setMoveable(false); col = new TableViewerColumn(fViewer, SWT.LEFT); customTable.manageColumn(col.getColumn(), new CColumnLayoutData(CColumnLayoutData.Size.FILL, 30), Messages.CredentialsPreferencesPage_REALM, null, null, false, true); col.getColumn().setMoveable(false); col = new TableViewerColumn(fViewer, SWT.LEFT); customTable.manageColumn(col.getColumn(), new CColumnLayoutData(CColumnLayoutData.Size.FILL, 25), Messages.CredentialsPreferencesPage_USERNAME, null, null, false, true); col.getColumn().setMoveable(false); /* Content Provider */ fViewer.setContentProvider(new IStructuredContentProvider() { public Object[] getElements(Object inputElement) { Set<CredentialsModelData> credentials = loadCredentials(); return credentials.toArray(); } public void dispose() { } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } }); /* Label Provider */ fViewer.setLabelProvider(new CellLabelProvider() { @Override public void update(ViewerCell cell) { CredentialsModelData data = (CredentialsModelData) cell.getElement(); switch (cell.getColumnIndex()) { case 0: String link = data.getNormalizedLink().toString(); if (SyncUtils.GOOGLE_LOGIN_URL.equals(link)) cell.setText("Google Reader"); //$NON-NLS-1$ else cell.setText(link); break; case 1: cell.setText(data.getRealm()); break; case 2: cell.setText(data.getUsername()); break; } } }); /* Sorter */ fViewer.setSorter(new ViewerSorter() { @Override public int compare(Viewer viewer, Object e1, Object e2) { CredentialsModelData data1 = (CredentialsModelData) e1; CredentialsModelData data2 = (CredentialsModelData) e2; return data1.getNormalizedLink().toString().compareTo(data2.getNormalizedLink().toString()); } }); /* Buttons Container */ Composite buttonContainer = new Composite(container, SWT.None); buttonContainer.setLayoutData(new GridData(SWT.FILL, SWT.BEGINNING, true, false, 2, 1)); buttonContainer.setLayout(LayoutUtils.createGridLayout(3, 0, 0)); /* Offer Button to add Credentials */ fAddCredentials = new Button(buttonContainer, SWT.PUSH); fAddCredentials.setText(Messages.CredentialsPreferencesPage_ADD); fAddCredentials.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { onAdd(); } }); /* Offer Buttons to remove Credentials */ fRemoveSelected = new Button(buttonContainer, SWT.PUSH); fRemoveSelected.setText(Messages.CredentialsPreferencesPage_REMOVE); fRemoveSelected.setEnabled(false); fRemoveSelected.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { onRemove(); } }); fRemoveAll = new Button(buttonContainer, SWT.PUSH); fRemoveAll.setText(Messages.CredentialsPreferencesPage_REMOVE_ALL); fRemoveAll.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { onRemoveAll(); } }); Dialog.applyDialogFont(fAddCredentials); Dialog.applyDialogFont(fRemoveSelected); Dialog.applyDialogFont(fRemoveAll); setButtonLayoutData(fAddCredentials); setButtonLayoutData(fRemoveSelected); setButtonLayoutData(fRemoveAll); ((GridData) fRemoveAll.getLayoutData()).grabExcessHorizontalSpace = false; ((GridData) fRemoveAll.getLayoutData()).horizontalAlignment = SWT.BEGINNING; /* Set Dummy Input */ fViewer.setInput(new Object()); fRemoveAll.setEnabled(fViewer.getTable().getItemCount() > 0); /* Listen to Selection Changes */ fViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { fRemoveSelected.setEnabled(!fViewer.getSelection().isEmpty()); } }); applyDialogFont(container); /* Enable Apply Button on Selection Changes */ OwlUI.runOnSelection(new Runnable() { public void run() { updateApplyEnablement(true); } }, container); return container; }
From source file:org.rssowl.ui.internal.editors.feed.NewsTableLabelProvider.java
License:Open Source License
@Override public void update(ViewerCell cell) { NewsColumn column = fColumnModel.getColumn(cell.getColumnIndex()); /* Text *///from w w w . j a v a2 s . c om cell.setText(getColumnText(cell.getElement(), column, cell.getColumnIndex())); /* Image */ cell.setImage(getColumnImage(cell.getElement(), column, cell.getColumnIndex())); /* Font */ cell.setFont(getFont(cell.getElement(), cell.getColumnIndex())); /* Foreground */ Color foreground = getForeground(cell.getElement(), cell.getColumnIndex()); /* This is required to invalidate + redraw the entire TableItem! */ if (!OwlUI.isHighContrast()) { Item item = (Item) cell.getItem(); if (item instanceof TreeItem) ((TreeItem) cell.getItem()).setForeground(foreground); else if (item instanceof TableItem) ((TableItem) cell.getItem()).setForeground(foreground); } /* Background */ if (!OwlUI.isHighContrast()) cell.setBackground(getBackground(cell.getElement(), cell.getColumnIndex())); }
From source file:org.salever.common.swtjface.extend.widget.BooleanCellEditor.java
License:Open Source License
public void activate(ColumnViewerEditorActivationEvent activationEvent) { ViewerCell cell = (ViewerCell) activationEvent.getSource(); index = cell.getColumnIndex(); row = (ViewerRow) cell.getViewerRow().clone(); restoredImage = row.getImage(index); restoredText = row.getText(index);//from www .j av a 2 s . c om row.setImage(index, null); row.setText(index, ""); //$NON-NLS-1$ if (activationEvent.eventType != ColumnViewerEditorActivationEvent.TRAVERSAL && changeOnActivation) { button.setSelection(!button.getSelection()); } //TODO Add a way to enable key traversal when CheckBoxes don't get focus // if( Util.isMac() ) { // button.getParent().addKeyListener(macSelectionListener); // } super.activate(activationEvent); }
From source file:org.sonarlint.eclipse.ui.internal.server.BaseCellLabelProvider.java
License:Open Source License
@Override public void update(ViewerCell cell) { super.update(cell); Object element = cell.getElement(); int index = cell.getColumnIndex(); cell.setText(getColumnText(element, index)); Image image = getColumnImage(element, index); cell.setImage(image);// www . ja v a 2 s . co m }
From source file:org.spotter.eclipse.ui.providers.PropertiesLabelProvider.java
License:Apache License
@Override public void update(ViewerCell cell) { Object element = cell.getElement(); if (element != null && element instanceof AbstractPropertyItem) { AbstractPropertyItem tableItem = (AbstractPropertyItem) element; ConfigParameterDescription desc = tableItem.getConfigParameterDescription(); boolean mandatory = desc == null ? true : desc.isMandatory(); cell.setFont(mandatory ? NORMAL_FONT : ITALIC_FONT); switch (cell.getColumnIndex()) { case 0:/* w w w. j av a 2s . c om*/ AbstractNameFormatter formatter = propertiesGroupViewer.getNameFormatter(); String name = tableItem.getName(); cell.setText(formatter == null ? name : formatter.format(name)); break; case 1: cell.setText(tableItem.getValue()); break; default: break; } } }
From source file:org.springframework.ide.eclipse.boot.dash.views.sections.BootDashElementsTableSection.java
License:Open Source License
public void addSingleClickHandling() { final AbstractBootDashElementsAction[] singleClickActions = new AbstractBootDashElementsAction[model .getRunTarget().getAllColumns().length]; boolean hasSingleClickActions = false; for (int i = 0; i < model.getRunTarget().getAllColumns().length; i++) { BootDashColumn columnType = model.getRunTarget().getAllColumns()[i]; BootDashActionFactory factory = columnType.getSingleClickAction(); if (factory != null) { hasSingleClickActions = true; singleClickActions[i] = factory.create(viewModel, getHoverElement(), ui); }/*from w w w. j ava2 s . c om*/ } if (hasSingleClickActions) { final Cursor defaultCursor = tv.getTable().getCursor(); getHoverCell().addListener(new ValueListener<ViewerCell>() { public void gotValue(LiveExpression<ViewerCell> exp, ViewerCell cell) { Table table = tv.getTable(); if (cell != null) { int colIdx = cell.getColumnIndex(); AbstractBootDashElementsAction action = singleClickActions[colIdx]; if (action != null && action.isEnabled()) { table.setCursor(CursorProviders.HAND_CURSOR.getCursor(cell)); return; } } table.setCursor(defaultCursor); } }); tv.getTable().addMouseListener(new MouseAdapter() { public void mouseDown(MouseEvent e) { if (tableMouseEvent != null) { tableMouseEvent.setValue(e); } ViewerCell cell = tv.getCell(new Point(e.x, e.y)); if (cell != null) { Object el = cell.getElement(); if (el instanceof BootDashElement) { int idx = cell.getColumnIndex(); AbstractBootDashElementsAction action = singleClickActions[idx]; if (action != null) { action.run(); } } } } }); } }
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 w w. ja va 2 s. c o 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;/* www . ja va 2 s . c om*/ 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())); } }); }