Example usage for org.eclipse.jface.viewers DialogCellEditor DialogCellEditor

List of usage examples for org.eclipse.jface.viewers DialogCellEditor DialogCellEditor

Introduction

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

Prototype

protected DialogCellEditor(Composite parent, int style) 

Source Link

Document

Creates a new dialog cell editor parented under the given control.

Usage

From source file:org.obeonetwork.m2doc.ui.dialog.ConfigureTemplateDialog.java

License:Open Source License

protected void createVariablesTable(ScrolledComposite varScrolledComposite) {
    Composite varComposite = new Composite(varScrolledComposite, SWT.NONE);
    varComposite.setLayout(new GridLayout(2, false));

    varTableViewer = new TableViewer(varComposite, SWT.BORDER | SWT.FULL_SELECTION);
    varTable = varTableViewer.getTable();
    varTable.setLinesVisible(true);/*  www.  j av a  2  s.c  o  m*/
    varTable.setHeaderVisible(true);
    varTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));

    TableViewerColumn varNameTVColumn = new TableViewerColumn(varTableViewer, SWT.NONE);
    TableColumn varNameColumn = varNameTVColumn.getColumn();
    varNameColumn.setWidth(110);
    varNameColumn.setText("Name");
    varNameTVColumn.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof TemplateVariable) {
                return ((TemplateVariable) element).getName();
            }
            return super.getText(element);
        }
    });
    varNameTVColumn.setEditingSupport(new EditingSupport(varTableViewer) {
        @Override
        protected void setValue(final Object element, final Object value) {
            if (element instanceof TemplateVariable && value instanceof String) {
                editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
                    @Override
                    protected void doExecute() {
                        ((TemplateVariable) element).setName((String) value);
                    }
                });
            }
        }

        @Override
        protected Object getValue(Object element) {
            if (element instanceof TemplateVariable) {
                return ((TemplateVariable) element).getName();
            }
            return null;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            TextCellEditor editor = new TextCellEditor(varTable);
            editor.setValidator(new ICellEditorValidator() {

                @Override
                public String isValid(Object value) {
                    if (value instanceof String) {
                        String s = (String) value;
                        if (TemplateConfigUtil.isValidVariableName(s)) {
                            return null;
                        }
                        return "Variable name is not valid.";
                    }
                    return "Value must be a String.";
                }
            });
            return editor;
        }

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

    TableViewerColumn varTypeTVColumn = new TableViewerColumn(varTableViewer, SWT.NONE);
    TableColumn varTypeColumn = varTypeTVColumn.getColumn();
    varTypeColumn.setWidth(250);
    varTypeColumn.setText("Type");
    varTypeTVColumn.setLabelProvider(new ColumnLabelProvider() {
        @Override
        public String getText(Object element) {
            if (element instanceof TemplateVariable) {
                return ((TemplateVariable) element).getTypeName();
            }
            return super.getText(element);
        }
    });
    varTypeTVColumn.setEditingSupport(new EditingSupport(varTableViewer) {
        @Override
        protected void setValue(final Object element, final Object value) {
            if (element instanceof TemplateVariable && value instanceof TemplateVariable) {
                editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
                    @Override
                    protected void doExecute() {
                        TemplateVariable toUpdate = (TemplateVariable) element;
                        TemplateVariable copy = (TemplateVariable) value;
                        String oldName = toUpdate.getName();
                        if (copy.getName() != null && !copy.getName().equals(oldName)) {
                            toUpdate.setName(copy.getName());
                        }
                        toUpdate.setTypeName(copy.getTypeName());
                        toUpdate.setType(copy.getType());
                        postVariableChange(toUpdate);
                    }
                });
            }
        }

        @Override
        protected Object getValue(Object element) {
            if (element instanceof TemplateVariable) {
                return ((TemplateVariable) element).getTypeName();
            }
            return null;
        }

        @Override
        protected CellEditor getCellEditor(Object element) {
            if (element instanceof TemplateVariable) {
                TemplateVariable var = (TemplateVariable) element;
                final TemplateVariable copy = TplconfFactoryImpl.eINSTANCE.createTemplateVariable();
                copy.setName(var.getName());
                copy.setTypeName(var.getTypeName());
                copy.setType(var.getType());
                return new DialogCellEditor(varTable, SWT.NONE) {
                    @Override
                    protected Object openDialogBox(Control cellEditorWindow) {
                        VariableEditDialog dlg = new VariableEditDialog(getParentShell(), copy, config,
                                adapterFactory);
                        if (dlg.open() == Dialog.OK) {
                            return copy;
                        }
                        return null;
                    }
                };
            }
            return null;
        }

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

    varTableViewer.setContentProvider(new IStructuredContentProvider() {
        @Override
        public Object[] getElements(Object inputElement) {
            if (inputElement instanceof TemplateConfig) {
                TemplateConfig cfg = (TemplateConfig) inputElement;
                List<TemplateVariable> result = cfg.getVariables();
                return result.toArray(new Object[result.size()]);
            }
            return new Object[0];
        }

        @Override
        public void dispose() {
            // Nothing
        }

        @Override
        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            // Nothing
        }
    });
    varTableViewer.setInput(config);

    Composite varButtonsComp = new Composite(varComposite, SWT.NONE);
    varButtonsComp.setLayoutData(new GridData(SWT.CENTER, SWT.TOP, false, false, 1, 1));
    RowLayout rl_varButtonsComp = new RowLayout(SWT.VERTICAL);
    rl_varButtonsComp.justify = true;
    rl_varButtonsComp.fill = true;
    rl_varButtonsComp.center = true;
    varButtonsComp.setLayout(rl_varButtonsComp);

    Button btnAddVar = new Button(varButtonsComp, SWT.NONE);
    btnAddVar.setImage(Activator.getDefault().getImageRegistry().get(Activator.ADD_IMG_KEY));
    btnAddVar.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            final TemplateVariable newVar = TplconfFactory.eINSTANCE.createTemplateVariable();
            newVar.setName("newVar");
            VariableEditDialog dlg = new VariableEditDialog(getParentShell(), newVar, config, adapterFactory);
            if (dlg.open() == Dialog.OK) {
                editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
                    @Override
                    protected void doExecute() {
                        config.getVariables().add(newVar);
                        postVariableChange(newVar);
                    }
                });
            }
        }
    });

    final Button btnDelVar = new Button(varButtonsComp, SWT.NONE);
    btnDelVar.setImage(Activator.getDefault().getImageRegistry().get(Activator.DELETE_IMG_KEY));
    varScrolledComposite.setContent(varComposite);
    varScrolledComposite.setMinSize(varComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));

    varTableViewer.addPostSelectionChangedListener(new ISelectionChangedListener() {
        @Override
        public void selectionChanged(SelectionChangedEvent event) {
            if (event.getSelection().isEmpty()) {
                btnDelVar.setEnabled(false);
            } else {
                btnDelVar.setEnabled(true);
            }
        }
    });

    btnDelVar.addSelectionListener(new SelectionAdapter() {
        @Override
        public void widgetSelected(SelectionEvent e) {
            final IStructuredSelection selection = (IStructuredSelection) varTableViewer.getSelection();
            if (!selection.isEmpty() && (selection.getFirstElement() instanceof TemplateVariable)) {
                editingDomain.getCommandStack().execute(new RecordingCommand(editingDomain) {
                    @Override
                    protected void doExecute() {
                        config.getVariables().remove(selection.getFirstElement());
                    }
                });
            }
        }
    });
}