List of usage examples for org.eclipse.jface.viewers DialogCellEditor DialogCellEditor
protected DialogCellEditor(Composite parent, int style)
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()); } }); } } }); }