Example usage for org.eclipse.jface.viewers ViewerCell getColumnIndex

List of usage examples for org.eclipse.jface.viewers ViewerCell getColumnIndex

Introduction

In this page you can find the example usage for org.eclipse.jface.viewers ViewerCell getColumnIndex.

Prototype

public int getColumnIndex() 

Source Link

Document

Get the index of the cell.

Usage

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()));
        }
    });

}