List of usage examples for org.eclipse.jface.viewers ICellEditorValidator isValid
public String isValid(Object value);
null means valid, and non-null means invalid, with the result being the error message to display to the end user. From source file:com.mentor.nucleus.bp.ui.properties.test.PropertiesRenameTests.java
License:Open Source License
private void doRenameTestInvalidChar(NonRootModelElement uut, ICellEditorValidator validator, String expected) { Selection.getInstance().clear();/*from ww w . jav a2 s . c om*/ Selection.getInstance().addToSelection(uut); assertEquals(expected, validator.isValid("*")); }
From source file:com.mentor.nucleus.bp.ui.properties.test.PropertiesRenameTests.java
License:Open Source License
private void doRenameTestSpaces(NonRootModelElement uut, ICellEditorValidator validator, String expected) { Selection.getInstance().clear();/*from www .j a v a2 s . c om*/ Selection.getInstance().addToSelection(uut); assertEquals(expected, validator.isValid("name with spaces")); }
From source file:com.mentor.nucleus.bp.ui.properties.test.PropertiesViewTest2.java
License:Open Source License
/** * Checks that after adding a space to the given model-element name, * the modified name is considered invalid/valid (according to the * spaceAllowed parameter) by the cell editor for the model-element's * name property. The editor is created by the property-descriptor * returned by the given property-source for the given property-id. *//*from w w w .ja v a2s .c o m*/ private void checkSpaceInModelElementNameProperty(IPropertySource propertySource, String propertyId, String name, boolean spaceAllowed, boolean duplicateName, boolean component) { // create a cell-editor for the name property's value IPropertyDescriptor descriptor = PropertiesUtil.getDescriptor(propertySource, propertyId); CellEditor editor = descriptor.createPropertyEditor(new Shell()); // validate this test by checking that the editor says that the // given name is invalid since it is a duplicate ICellEditorValidator validator = editor.getValidator(); String result = validator.isValid(name); // must use different message when working against a PMC root String message = CorePlugin.DUPLICATE_NAME_ERROR; if (component) { message = "A model element with the same name already exists.\n\n" + "This is most likely due to uncommitted renames or deletions." + " If this is the case, please commit any outstanding changes before proceeding.\n\n" + "If the project is not connected to a configuration management system" + ", you will need to remove the target manually."; } assertTrue("Property cell editor says original name is invalid", duplicateName ? result.equals(message) : result == null); // check that the editor says that a name containing a space is // invalid/valid result = validator.isValid(name + " "); assertTrue("Property cell editor says name with spaces is valid", spaceAllowed ? result == null : result != null); }
From source file:com.nokia.sdt.component.symbian.properties.AbstractPropertySource.java
License:Open Source License
void setPropertyValue(Object id, Object value, boolean overrideLocalizedState) { ITypeDescriptor td = getPropertyTypeDescriptor(id); if (td == null) { String fmt = Messages.getString("AbstractPropertySource.3"); //$NON-NLS-1$ Object params[] = { getPropertyIdentifier(id) }; String msg = MessageFormat.format(fmt, params); ComponentSystemPlugin.log(null, msg); return;/*w w w . j a v a 2 s.co m*/ } IPropertyValueSource propertyValueSource = getPropertyValueSourceFor(id); Check.checkState(propertyValueSource != null); if (td instanceof CompoundPropertyTypeDescriptor && (value != null && !(value instanceof IPropertySource))) { setCompoundPropertyFromEditableValue(id, value); } else if (value instanceof ArrayPropertySource) { ArrayPropertySource aps = (ArrayPropertySource) value; ISequencePropertyValue spv = aps.getSequencePropertyValue(); propertyValueSource.setPropertyValue(id, spv); } else if (value instanceof IPropertySource) { setPropertyFromPropertySource(id, (IPropertySource) value); } else if (value instanceof ArrayEditableValue) { setPropertyFromArrayEditableValue(id, (ArrayEditableValue) value); } else if (value instanceof Collection) { setPropertyFromCollection(id, (Collection) value); } else if (value != null) { // we'll check if the new value is the default // value both before and after conversion to text Object defaultValue = getDefaultValue(id); boolean inhibitDefaultValue = getInhibitDefaultValue(id); // Values coming in might be from the data model and not already internalized, // but then again, they might be enums, which use strings for both formats. // Don't balk if the conversion fails. if (value instanceof String) { Object valueObj = td.valueOf((String) value); if (valueObj != null) { value = valueObj; } ICellEditorValidator validator = getCellEditorValidator(id); if (validator != null) { String msg = validator.isValid(value); if (msg != null) { throw new IllegalArgumentException(msg); } } } if (inhibitDefaultValue && value.equals(defaultValue)) resetPropertyValue(id); else { String strValue = td.toStorageString(value); Check.checkState(strValue != null); if (inhibitDefaultValue && strValue.equals(defaultValue)) resetPropertyValue(id); else { if (td.isLocalizable()) { propertyValueSource.setLocalizableStringPropertyValue(id, strValue, overrideLocalizedState); } else if (td.isReference()) { propertyValueSource.setReferencePropertyValue(id, strValue); } else { propertyValueSource.setPropertyValue(id, strValue); } } } if (promotingReferencePropertyDescriptors.contains(id)) { // promoting reference property changed, so reset property descriptors propertyDescriptors = null; } } else resetPropertyValue(id); }
From source file:net.sf.eclipsensis.installoptions.properties.dialogs.FileFilterDialog.java
License:Open Source License
@Override protected void okPressed() { ICellEditorValidator validator = getValidator(); if (validator != null) { String error = validator.isValid(getFilter()); if (!Common.isEmpty(error)) { Common.openError(getShell(), EclipseNSISPlugin.getResourceString("error.title"), error, //$NON-NLS-1$ InstallOptionsPlugin.getShellImage()); return; }/*from www . j a va2s. c o m*/ } super.okPressed(); }
From source file:net.sf.eclipsensis.installoptions.properties.dialogs.ListItemsDialog.java
License:Open Source License
@Override protected void okPressed() { ICellEditorValidator validator = getValidator(); if (validator != null) { String error = validator.isValid(getValues()); if (!Common.isEmpty(error)) { Common.openError(getShell(), EclipseNSISPlugin.getResourceString("error.title"), error, //$NON-NLS-1$ InstallOptionsPlugin.getShellImage()); return; }/*from ww w. j a v a 2s.co m*/ } super.okPressed(); }
From source file:net.sf.eclipsensis.installoptions.properties.tabbed.section.FilterPropertySection.java
License:Open Source License
@Override protected Control createSection(final InstallOptionsElement element, Composite parent, TabbedPropertySheetPage page, final InstallOptionsCommandHelper commandHelper) { if (element instanceof InstallOptionsFileRequest) { final FileFilter[] current = { null }; final boolean[] nonUserChange = { false }; final IPropertyDescriptor descriptor = element .getPropertyDescriptor(InstallOptionsModel.PROPERTY_FILTER); final ICellEditorValidator validator = PropertyDescriptorHelper .getCellEditorValidator((PropertyDescriptor) descriptor); final TabbedPropertySheetWidgetFactory widgetFactory = getWidgetFactory(); Composite parent2 = createSectionComposite(parent); GridLayout layout = new GridLayout(2, false); layout.marginHeight = layout.marginWidth = 0; parent2.setLayout(layout);//from w ww. j a va 2s. c om final Group summaryGroup = widgetFactory.createGroup(parent2, InstallOptionsPlugin.getResourceString("filter.summary.group.name")); //$NON-NLS-1$ summaryGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); summaryGroup.setLayout(new GridLayout(2, false)); Table summaryTable = widgetFactory.createTable(summaryGroup, SWT.FLAT | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION); summaryTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); summaryTable.setLinesVisible(true); summaryTable.setHeaderVisible(true); TableColumn[] columns = new TableColumn[2]; columns[0] = new TableColumn(summaryTable, SWT.LEFT); columns[0].setText(InstallOptionsPlugin.getResourceString("filter.description")); //$NON-NLS-1$ columns[1] = new TableColumn(summaryTable, SWT.LEFT); columns[1].setText(InstallOptionsPlugin.getResourceString("filter.patterns")); //$NON-NLS-1$ summaryTable.addControlListener(new TableResizer()); final TableViewer summaryViewer = new TableViewer(summaryTable); summaryViewer.setContentProvider(new CollectionContentProvider()); summaryViewer.setLabelProvider(new FileFilterLabelProvider()); final Composite summaryButtons = widgetFactory.createComposite(summaryGroup); summaryButtons.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false)); layout = new GridLayout(); layout.marginHeight = 0; layout.marginWidth = 0; summaryButtons.setLayout(layout); final Button summaryAdd = widgetFactory.createButton(summaryButtons, "", SWT.PUSH); //$NON-NLS-1$ summaryAdd.setImage(CommonImages.ADD_ICON); summaryAdd.setToolTipText(EclipseNSISPlugin.getResourceString("new.tooltip")); //$NON-NLS-1$ summaryAdd.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); summaryAdd.addListener(SWT.Selection, new Listener() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { if (!nonUserChange[0]) { List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); if (list != null) { String desc = InstallOptionsPlugin .getFormattedString("default.filter.description", new Object[] { "" }).trim(); //$NON-NLS-1$ //$NON-NLS-2$ int counter = 1; for (ListIterator<FileFilter> iter = list.listIterator(); iter.hasNext();) { if (iter.next().getDescription().equals(desc)) { while (iter.hasPrevious()) { iter.previous(); } desc = InstallOptionsPlugin.getFormattedString("default.filter.description", //$NON-NLS-1$ new Object[] { new Integer(counter++) }); continue; } } FileFilter f = new FileFilter(desc, new FilePattern[] { new FilePattern( InstallOptionsPlugin.getResourceString("default.filter.pattern")) }); //$NON-NLS-1$ list.add(f); String error = validator.isValid(list); if (Common.isEmpty(error)) { summaryViewer.refresh(false); summaryViewer.setSelection(new StructuredSelection(f)); commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_FILTER, descriptor.getDisplayName(), element, list); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); list.remove(f); } } } } }); final Button summaryDel = widgetFactory.createButton(summaryButtons, "", SWT.PUSH); //$NON-NLS-1$ summaryDel.setImage(CommonImages.DELETE_ICON); summaryDel.setToolTipText(EclipseNSISPlugin.getResourceString("remove.tooltip")); //$NON-NLS-1$ summaryDel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); summaryDel.addListener(SWT.Selection, new Listener() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); if (list != null) { IStructuredSelection selection = (IStructuredSelection) summaryViewer.getSelection(); if (!selection.isEmpty()) { List<FileFilter> old = new ArrayList<FileFilter>(list); for (Iterator<?> iter = selection.toList().iterator(); iter.hasNext();) { list.remove(iter.next()); } String error = validator.isValid(list); if (Common.isEmpty(error)) { summaryViewer.refresh(false); commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_FILTER, descriptor.getDisplayName(), element, list); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); list.clear(); list.addAll(old); } } } } }); summaryDel.setEnabled(!summaryViewer.getSelection().isEmpty()); final TableViewerUpDownMover<List<FileFilter>, FileFilter> summaryMover = new TableViewerUpDownMover<List<FileFilter>, FileFilter>() { @Override @SuppressWarnings("unchecked") protected List<FileFilter> getAllElements() { return (List<FileFilter>) ((TableViewer) getViewer()).getInput(); } @Override protected void updateStructuredViewerInput(List<FileFilter> input, List<FileFilter> elements, List<FileFilter> move, boolean isDown) { List<FileFilter> old = new ArrayList<FileFilter>(input); input.clear(); input.addAll(elements); String error = validator.isValid(input); if (Common.isEmpty(error)) { summaryViewer.refresh(false); commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_FILTER, descriptor.getDisplayName(), element, input); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); input.clear(); input.addAll(old); } } }; summaryMover.setViewer(summaryViewer); final Button summaryUp = widgetFactory.createButton(summaryButtons, "", SWT.PUSH); //$NON-NLS-1$ summaryUp.setImage(CommonImages.UP_ICON); summaryUp.setToolTipText(EclipseNSISPlugin.getResourceString("up.tooltip")); //$NON-NLS-1$ summaryUp.setEnabled(summaryMover.canMoveUp()); summaryUp.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); summaryUp.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { summaryMover.moveUp(); } }); final Button summaryDown = widgetFactory.createButton(summaryButtons, "", SWT.PUSH); //$NON-NLS-1$ summaryDown.setImage(CommonImages.DOWN_ICON); summaryDown.setToolTipText(EclipseNSISPlugin.getResourceString("down.tooltip")); //$NON-NLS-1$ summaryDown.setEnabled(summaryMover.canMoveDown()); summaryDown.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); summaryDown.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { summaryMover.moveDown(); } }); final Group detailGroup = widgetFactory.createGroup(parent2, InstallOptionsPlugin.getResourceString("filter.detail.group.name")); //$NON-NLS-1$ detailGroup.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); detailGroup.setLayout(new GridLayout(1, false)); boolean isNull = current[0] == null; Composite composite = widgetFactory.createComposite(detailGroup); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); layout = new GridLayout(2, false); layout.marginHeight = 0; layout.marginWidth = 0; composite.setLayout(layout); final CLabel descriptionLabel = widgetFactory.createCLabel(composite, InstallOptionsPlugin.getResourceString("filter.description")); //$NON-NLS-1$ descriptionLabel.setLayoutData(new GridData()); descriptionLabel.setEnabled(!isNull); final Text descriptionText = widgetFactory.createText(composite, "", SWT.FLAT | SWT.BORDER); //$NON-NLS-1$ descriptionText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); final TextChangeHelper helper = new TextChangeHelper() { @Override protected String getResetValue(Text text) { if (current[0] != null) { return current[0].getDescription(); } return ""; //$NON-NLS-1$ } @Override @SuppressWarnings("unchecked") protected void handleTextChange(Text text) { if (current[0] != null) { String oldDescription = current[0].getDescription(); current[0].setDescription(text.getText()); List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); String error = validator.isValid(list); if (Common.isEmpty(error)) { summaryViewer.update(current[0], null); commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_FILTER, descriptor.getDisplayName(), element, list); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); current[0].setDescription(oldDescription); } } } }; helper.connect(descriptionText); descriptionText.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { helper.disconnect(descriptionText); } }); descriptionText.setEnabled(!isNull); final CLabel patternsLabel = widgetFactory.createCLabel(detailGroup, InstallOptionsPlugin.getResourceString("filter.patterns")); //$NON-NLS-1$ patternsLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); patternsLabel.setEnabled(!isNull); composite = widgetFactory.createComposite(detailGroup); composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); layout = new GridLayout(2, false); layout.marginHeight = 0; layout.marginWidth = 0; composite.setLayout(layout); final Table patternsTable = widgetFactory.createTable(composite, SWT.FLAT | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION); patternsTable.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); patternsTable.setLinesVisible(true); patternsTable.setEnabled(!isNull); new TableColumn(patternsTable, SWT.LEFT); final TextCellEditor textEditor = new TextCellEditor(patternsTable); ((Text) textEditor.getControl()).addVerifyListener(new VerifyListener() { public void verifyText(VerifyEvent e) { e.doit = e.text.indexOf(IInstallOptionsConstants.LIST_SEPARATOR) < 0 && e.text.indexOf(InstallOptionsFileRequest.FILTER_SEPARATOR) < 0; if (!e.doit) { e.display.beep(); } } }); patternsTable.addControlListener(new TableResizer()); textEditor.setValidator(new ICellEditorValidator() { public String isValid(Object value) { if (!Common.isEmpty((String) value)) { return null; } else { return InstallOptionsPlugin.getResourceString("empty.filter.pattern.error"); //$NON-NLS-1$ } } }); final TableViewer patternsViewer = new TableViewer(patternsTable); patternsViewer.setColumnProperties(new String[] { "pattern" }); //$NON-NLS-1$ patternsViewer.setContentProvider(new ArrayContentProvider()); patternsViewer.setLabelProvider(new LabelProvider()); patternsViewer.setCellEditors(new CellEditor[] { textEditor }); patternsViewer.setCellModifier(new ICellModifier() { public boolean canModify(Object element, String property) { return true; } public Object getValue(Object element, String property) { return ((FilePattern) element).getPattern(); } @SuppressWarnings("unchecked") public void modify(Object item, String property, Object value) { if (value == null) { Common.openError(patternsTable.getShell(), textEditor.getErrorMessage(), InstallOptionsPlugin.getShellImage()); } else { FilePattern pattern = (FilePattern) ((TableItem) item).getData(); String oldValue = pattern.getPattern(); pattern.setPattern((String) value); List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); String error = validator.isValid(list); if (Common.isEmpty(error)) { patternsViewer.update(pattern, null); summaryViewer.update(current[0], null); commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_FILTER, descriptor.getDisplayName(), element, list); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); pattern.setPattern(oldValue); } } } }); final Composite patternsButtons = widgetFactory.createComposite(composite); patternsButtons.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false)); layout = new GridLayout(); layout.marginHeight = 0; layout.marginWidth = 0; patternsButtons.setLayout(layout); final Button patternsAdd = widgetFactory.createButton(patternsButtons, "", SWT.PUSH); //$NON-NLS-1$ patternsAdd.setImage(CommonImages.ADD_ICON); patternsAdd.setToolTipText(EclipseNSISPlugin.getResourceString("new.tooltip")); //$NON-NLS-1$ patternsAdd.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); patternsAdd.addListener(SWT.Selection, new Listener() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { if (current[0] != null) { FilePattern[] oldPatterns = (FilePattern[]) patternsViewer.getInput(); FilePattern[] patterns = (FilePattern[]) Common.resizeArray(oldPatterns, oldPatterns.length + 1); String filter = InstallOptionsPlugin.getResourceString("default.filter.pattern"); //$NON-NLS-1$ FilePattern newPattern = new FilePattern(filter); patterns[patterns.length - 1] = newPattern; current[0].setPatterns(patterns); List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); String error = validator.isValid(list); if (Common.isEmpty(error)) { patternsViewer.setInput(patterns); patternsViewer.setSelection(new StructuredSelection(newPattern)); summaryViewer.update(current[0], null); patternsViewer.editElement(newPattern, 0); ((Text) textEditor.getControl()).setSelection(filter.length()); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); current[0].setPatterns(oldPatterns); } } } }); patternsAdd.setEnabled(!isNull); final Button patternsDel = widgetFactory.createButton(patternsButtons, "", SWT.PUSH); //$NON-NLS-1$ patternsDel.setImage(CommonImages.DELETE_ICON); patternsDel.setToolTipText(EclipseNSISPlugin.getResourceString("remove.tooltip")); //$NON-NLS-1$ patternsDel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); patternsDel.addListener(SWT.Selection, new Listener() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { if (current[0] != null) { FilePattern[] oldPatterns = (FilePattern[]) patternsViewer.getInput(); int[] indices = patternsTable.getSelectionIndices(); FilePattern[] newPatterns = (FilePattern[]) Common.resizeArray(oldPatterns, oldPatterns.length - indices.length); int j = 0; int k = 0; for (int i = 0; i < oldPatterns.length; i++) { if (j >= indices.length || i != indices[j]) { newPatterns[k++] = oldPatterns[i]; } else { j++; } } current[0].setPatterns(newPatterns); List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); String error = validator.isValid(list); if (Common.isEmpty(error)) { patternsViewer.setInput(newPatterns); summaryViewer.update(current[0], null); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); current[0].setPatterns(oldPatterns); } } } }); IStructuredSelection sel = (IStructuredSelection) patternsViewer.getSelection(); FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput(); int len = Common.isEmptyArray(patterns) ? 0 : patterns.length; patternsDel.setEnabled(!isNull && !sel.isEmpty() && sel.size() != len && len > 1); final TableViewerUpDownMover<FilePattern[], FilePattern> patternsMover = new TableViewerUpDownMover<FilePattern[], FilePattern>() { @Override protected List<FilePattern> getAllElements() { if (current[0] != null) { return Common.makeList((FilePattern[]) ((TableViewer) getViewer()).getInput()); } return Collections.emptyList(); } @Override @SuppressWarnings("unchecked") protected void updateStructuredViewerInput(FilePattern[] input, List<FilePattern> elements, List<FilePattern> move, boolean isDown) { if (current[0] != null) { FilePattern[] oldPatterns = input.clone(); for (int i = 0; i < input.length; i++) { input[i] = elements.get(i); } List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); String error = validator.isValid(list); if (Common.isEmpty(error)) { patternsViewer.refresh(); summaryViewer.update(current[0], null); } else { Common.openError(summaryViewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); System.arraycopy(oldPatterns, 0, input, 0, input.length); } } } }; patternsMover.setViewer(patternsViewer); final Button patternsUp = widgetFactory.createButton(patternsButtons, "", SWT.PUSH); //$NON-NLS-1$ patternsUp.setImage(CommonImages.UP_ICON); patternsUp.setToolTipText(EclipseNSISPlugin.getResourceString("up.tooltip")); //$NON-NLS-1$ patternsUp.setEnabled(!isNull && patternsMover.canMoveUp()); patternsUp.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); patternsUp.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { patternsMover.moveUp(); } }); final Button patternsDown = widgetFactory.createButton(patternsButtons, "", SWT.PUSH); //$NON-NLS-1$ patternsDown.setImage(CommonImages.DOWN_ICON); patternsDown.setToolTipText(EclipseNSISPlugin.getResourceString("down.tooltip")); //$NON-NLS-1$ patternsDown.setEnabled(!isNull && patternsMover.canMoveDown()); patternsDown.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); patternsDown.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { patternsMover.moveDown(); } }); patternsViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection sel = (IStructuredSelection) event.getSelection(); FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput(); int len = patterns == null ? 0 : patterns.length; patternsDel.setEnabled(!sel.isEmpty() && sel.size() != len && len > 1); patternsUp.setEnabled(patternsMover.canMoveUp()); patternsDown.setEnabled(patternsMover.canMoveDown()); } }); summaryViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection sel = (IStructuredSelection) event.getSelection(); summaryDel.setEnabled(!sel.isEmpty()); summaryUp.setEnabled(summaryMover.canMoveUp()); summaryDown.setEnabled(summaryMover.canMoveDown()); current[0] = null; if (!sel.isEmpty()) { if (sel.size() == 1) { current[0] = (FileFilter) sel.getFirstElement(); } } boolean isNull = current[0] == null; descriptionText.setText((isNull ? "" : current[0].getDescription())); //$NON-NLS-1$ descriptionText.setSelection(descriptionText.getText().length()); patternsViewer.setInput((isNull ? null : current[0].getPatterns())); descriptionLabel.setEnabled(!isNull); descriptionText.setEnabled(!isNull); patternsLabel.setEnabled(!isNull); patternsTable.setEnabled(!isNull); patternsAdd.setEnabled(!isNull); FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput(); int len = Common.isEmptyArray(patterns) ? 0 : patterns.length; patternsDel.setEnabled(!isNull && !sel.isEmpty() && sel.size() != len && len > 1); patternsUp.setEnabled(!isNull && patternsMover.canMoveUp()); patternsDown.setEnabled(!isNull && patternsMover.canMoveDown()); } }); summaryViewer.setInput(InstallOptionsFileRequest.FILEFILTER_LIST_CONVERTER .makeCopy(((InstallOptionsFileRequest) element).getFilter())); final PropertyChangeListener listener = new PropertyChangeListener() { @SuppressWarnings("unchecked") public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals(InstallOptionsModel.PROPERTY_FILTER)) { List<FileFilter> newFilter = (List<FileFilter>) evt.getNewValue(); List<FileFilter> oldFilter = (List<FileFilter>) summaryViewer.getInput(); if (!Common.objectsAreEqual(newFilter, oldFilter)) { try { ISelection sel = summaryViewer.getSelection(); nonUserChange[0] = true; summaryViewer.setInput( InstallOptionsFileRequest.FILEFILTER_LIST_CONVERTER.makeCopy(newFilter)); if (!sel.isEmpty()) { summaryViewer.setSelection(sel); } } finally { nonUserChange[0] = false; } } } } }; element.addPropertyChangeListener(listener); parent2.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { element.removePropertyChangeListener(listener); } }); return parent2; } return null; }
From source file:net.sf.eclipsensis.installoptions.properties.tabbed.section.GeneralPropertySection.java
License:Open Source License
private Control createFlagsSection(final InstallOptionsWidget widget, Composite parent, final InstallOptionsCommandHelper commandHelper) { final String displayName = widget.getPropertyDescriptor(InstallOptionsModel.PROPERTY_FLAGS) .getDisplayName();/*from w w w. j av a2s.c o m*/ TabbedPropertySheetWidgetFactory factory = getWidgetFactory(); Composite group = factory.createGroup(parent, displayName); GridLayout layout = new GridLayout(2, true); group.setLayout(layout); final boolean[] nonUserChange = { false }; final Table table = factory.createTable(group, SWT.FLAT | SWT.CHECK | SWT.SINGLE | SWT.HIDE_SELECTION); GC gc = new GC(table); gc.setFont(JFaceResources.getDialogFont()); FontMetrics fontMetrics = gc.getFontMetrics(); gc.dispose(); GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); data.horizontalSpan = 2; data.widthHint = fontMetrics.getAverageCharWidth() * 30; data.heightHint = fontMetrics.getHeight() * 10; table.setLayoutData(data); final CheckboxTableViewer viewer = new CheckboxTableViewer(table); viewer.setContentProvider(new CollectionContentProvider()); viewer.setLabelProvider(new LabelProvider()); viewer.setComparer(new IElementComparer() { public boolean equals(Object a, Object b) { return Common.objectsAreEqual(a, b); } public int hashCode(Object element) { if (element != null) { return element.hashCode(); } return 0; } }); table.addListener(SWT.EraseItem, new Listener() { public void handleEvent(Event event) { event.detail &= ~(SWT.SELECTED | SWT.FOCUSED); } }); final List<String> flags = new ArrayList<String>(widget.getFlags()); final Collection<String> availableFlags = widget.getTypeDef().getFlags(); final IPropertyDescriptor descriptor = widget.getPropertyDescriptor(InstallOptionsModel.PROPERTY_FLAGS); final ICellEditorValidator validator = PropertyDescriptorHelper .getCellEditorValidator((PropertyDescriptor) descriptor); final Runnable runnable = new Runnable() { public void run() { nonUserChange[0] = true; try { if (validator != null) { String error = validator.isValid(flags); if (error != null) { Common.openError(table.getShell(), error, InstallOptionsPlugin.getShellImage()); viewer.setCheckedElements(widget.getFlags().toArray()); return; } } commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_FLAGS, descriptor.getDisplayName(), widget, flags); } finally { nonUserChange[0] = false; } } }; viewer.addCheckStateListener(new ICheckStateListener() { public void checkStateChanged(CheckStateChangedEvent event) { String flag = (String) event.getElement(); boolean checked = event.getChecked(); if (checked) { flags.add(flag); } else { flags.remove(flag); } runnable.run(); } }); viewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { if (!event.getSelection().isEmpty()) { String flag = (String) ((IStructuredSelection) event.getSelection()).getFirstElement(); viewer.setSelection(StructuredSelection.EMPTY); boolean checked = viewer.getChecked(flag); viewer.setChecked(flag, !checked); if (!checked) { flags.add(flag); } else { flags.remove(flag); } runnable.run(); } } }); Button b = factory.createButton(group, InstallOptionsPlugin.getResourceString("select.all.label"), //$NON-NLS-1$ SWT.PUSH | SWT.FLAT); b.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { flags.clear(); flags.addAll(availableFlags); viewer.setCheckedElements(availableFlags.toArray()); runnable.run(); } }); b.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); b = factory.createButton(group, InstallOptionsPlugin.getResourceString("deselect.all.label"), //$NON-NLS-1$ SWT.PUSH | SWT.FLAT); b.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { flags.clear(); viewer.setCheckedElements(Common.EMPTY_STRING_ARRAY); runnable.run(); } }); b.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); viewer.setInput(availableFlags == null ? Collections.EMPTY_LIST : availableFlags); viewer.setCheckedElements(flags.toArray()); final PropertyChangeListener listener = new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals(InstallOptionsModel.PROPERTY_FLAGS)) { if (!nonUserChange[0]) { List<String> newFlags = widget.getFlags(); if (Common.isValid(viewer.getControl())) { viewer.setCheckedElements( newFlags == null ? Common.EMPTY_STRING_ARRAY : newFlags.toArray()); flags.clear(); flags.addAll(newFlags); } } } } }; widget.addPropertyChangeListener(listener); group.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { widget.removePropertyChangeListener(listener); } }); return group; }
From source file:net.sf.eclipsensis.installoptions.properties.tabbed.section.LinkPropertySectionCreator.java
License:Open Source License
@Override protected Control createAppearancePropertySection(final Composite parent, final TabbedPropertySheetWidgetFactory widgetFactory, final InstallOptionsCommandHelper commandHelper) { final Composite composite = widgetFactory.createComposite(parent); GridLayout layout = new GridLayout(2, false); layout.marginWidth = layout.marginHeight = 0; composite.setLayout(layout);/*from ww w. j a va 2 s .co m*/ GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); data.horizontalSpan = ((GridLayout) parent.getLayout()).numColumns; composite.setLayoutData(data); Control c = super.createAppearancePropertySection(composite, widgetFactory, commandHelper); data = (GridData) c.getLayoutData(); if (data == null) { data = new GridData(); c.setLayoutData(data); } data.horizontalSpan = 2; data.grabExcessHorizontalSpace = true; data.grabExcessVerticalSpace = true; data.horizontalAlignment = data.verticalAlignment = SWT.FILL; Composite composite2 = parent; layout = (GridLayout) parent.getLayout(); if (layout.numColumns != 2) { composite2 = widgetFactory.createComposite(composite2); data = new GridData(SWT.FILL, SWT.FILL, true, false); data.horizontalSpan = layout.numColumns; composite2.setLayoutData(data); layout = new GridLayout(2, false); layout.marginHeight = layout.marginWidth = 0; composite2.setLayout(layout); } final IPropertyDescriptor descriptor = getWidget() .getPropertyDescriptor(InstallOptionsModel.PROPERTY_TXTCOLOR); final ICellEditorValidator validator = PropertyDescriptorHelper .getCellEditorValidator((PropertyDescriptor) descriptor); CLabel label = widgetFactory.createCLabel(composite2, descriptor.getDisplayName()); label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); composite2 = widgetFactory.createComposite(composite2); composite2.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); layout = new GridLayout(3, false); layout.marginHeight = layout.marginWidth = 0; composite2.setLayout(layout); final ILabelProvider labelProvider = descriptor.getLabelProvider(); RGB rgb = (RGB) getWidget().getPropertyValue(InstallOptionsModel.PROPERTY_TXTCOLOR); final Text colorText = widgetFactory.createText(composite2, labelProvider.getText(rgb), SWT.FLAT | SWT.BORDER); colorText.setEditable(false); colorText.setBackground(colorText.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); colorText.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); final ColorEditor colorEditor = new ColorEditor(composite2, SWT.FLAT | widgetFactory.getOrientation()); colorEditor.setRGB(rgb == null ? InstallOptionsLink.DEFAULT_TXTCOLOR : rgb); colorEditor.getButton().setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); colorEditor.getButton().addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { RGB newRGB = colorEditor.getRGB(); if (validator != null) { String error = validator.isValid(newRGB); if (!Common.isEmpty(error)) { Common.openError(((Control) e.widget).getShell(), error, InstallOptionsPlugin.getShellImage()); newRGB = InstallOptionsLink.DEFAULT_TXTCOLOR; //Default } } updateRGB(commandHelper, descriptor, labelProvider, colorText, newRGB); } }); //Reject focus colorText.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { colorEditor.getButton().setFocus(); } }); Button resetButton = widgetFactory.createButton(composite2, InstallOptionsPlugin.getResourceString("restore.default.label"), SWT.PUSH); //$NON-NLS-1$ resetButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); resetButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { updateRGB(commandHelper, descriptor, labelProvider, colorText, null); } }); final PropertyChangeListener propertyListener = new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals(InstallOptionsModel.PROPERTY_TXTCOLOR)) { RGB newRGB = checkDefault((RGB) evt.getNewValue()); RGB oldRGB = checkDefault(colorEditor.getRGB()); if (!Common.objectsAreEqual(oldRGB, newRGB)) { colorEditor.setRGB(newRGB == null ? InstallOptionsLink.DEFAULT_TXTCOLOR : newRGB); colorText.setText(labelProvider.getText(newRGB)); } } else if (evt.getPropertyName().equals(InstallOptionsModel.PROPERTY_MULTILINE)) { Control[] controls = composite.getChildren(); for (int i = 0; i < controls.length; i++) { controls[i].dispose(); } Control c = LinkPropertySectionCreator.super.createAppearancePropertySection(composite, widgetFactory, commandHelper); GridData data = (GridData) c.getLayoutData(); if (data == null) { data = new GridData(); c.setLayoutData(data); } data.horizontalSpan = 2; data.grabExcessHorizontalSpace = true; data.grabExcessVerticalSpace = true; data.horizontalAlignment = data.verticalAlignment = SWT.FILL; forceLayout(composite); } } }; getWidget().addPropertyChangeListener(propertyListener); parent.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { getWidget().removePropertyChangeListener(propertyListener); } }); return parent; }
From source file:net.sf.eclipsensis.installoptions.properties.tabbed.section.ListboxPropertySectionCreator.java
License:Open Source License
@Override protected void createListAndStateButtons(Composite buttons, final CheckboxTableViewer viewer, TabbedPropertySheetWidgetFactory widgetFactory, final InstallOptionsCommandHelper commandHelper) { super.createListAndStateButtons(buttons, viewer, widgetFactory, commandHelper); final IPropertyDescriptor stateDescriptor = getWidget() .getPropertyDescriptor(InstallOptionsModel.PROPERTY_STATE); final ICellEditorValidator stateValidator = PropertyDescriptorHelper .getCellEditorValidator((PropertyDescriptor) stateDescriptor); final Button selectAll = widgetFactory.createButton(buttons, "", SWT.PUSH | SWT.FLAT); //$NON-NLS-1$ selectAll.setEnabled(((InstallOptionsListItems) getWidget()).isMultiSelect()); selectAll.setImage(InstallOptionsPlugin.getImageManager() .getImage(InstallOptionsPlugin.getResourceString("select.all.icon"))); //$NON-NLS-1$ selectAll.setToolTipText(InstallOptionsPlugin.getResourceString("select.all.tooltip")); //$NON-NLS-1$ selectAll.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); selectAll.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { List<?> list = (List<?>) viewer.getInput(); if (list != null) { Object[] checkedItems = viewer.getCheckedElements(); if (checkedItems != null && checkedItems.length == list.size()) { return; }/*from w w w. j av a 2 s .c om*/ String state = Common.flatten(list, IInstallOptionsConstants.LIST_SEPARATOR); String error = stateValidator.isValid(state); if (Common.isEmpty(error)) { commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_STATE, stateDescriptor.getDisplayName(), getWidget(), state); } else { Common.openError(viewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); } } } }); final Button deselectAll = widgetFactory.createButton(buttons, "", SWT.PUSH | SWT.FLAT); //$NON-NLS-1$ deselectAll.setImage(InstallOptionsPlugin.getImageManager() .getImage(InstallOptionsPlugin.getResourceString("deselect.all.icon"))); //$NON-NLS-1$ deselectAll.setToolTipText(InstallOptionsPlugin.getResourceString("deselect.all.tooltip")); //$NON-NLS-1$ deselectAll.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); deselectAll.addListener(SWT.Selection, new Listener() { public void handleEvent(Event e) { String state = ""; //$NON-NLS-1$ String error = stateValidator.isValid(state); if (Common.isEmpty(error)) { commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_STATE, stateDescriptor.getDisplayName(), getWidget(), state); } else { Common.openError(viewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); } } }); final PropertyChangeListener listener = new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent evt) { if (evt.getPropertyName().equals(InstallOptionsModel.PROPERTY_FLAGS)) { selectAll.setEnabled(((InstallOptionsListItems) getWidget()).isMultiSelect()); } } }; getWidget().addPropertyChangeListener(listener); buttons.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { getWidget().removePropertyChangeListener(listener); } }); }