List of usage examples for org.eclipse.jface.viewers IStructuredSelection toList
public List toList();
List
. From source file:net.sf.commonclipse.popup.actions.JavaTypeObjectAction.java
License:Apache License
/** * file selected from menu./* w w w. j a v a2s. c o m*/ * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) */ public void selectionChanged(IAction action, ISelection selection) { if (selection != null && selection instanceof IStructuredSelection) { IStructuredSelection ss = (IStructuredSelection) selection; if (!ss.isEmpty()) { this.selected = ss.toList(); } } }
From source file:net.sf.eclipsecs.ui.actions.ActivateProjectsAction.java
License:Open Source License
/** * {@inheritDoc}/*w ww. j a va 2 s . com*/ */ @SuppressWarnings("unchecked") public void selectionChanged(IAction action, ISelection selection) { if (selection instanceof IStructuredSelection) { IStructuredSelection sel = (IStructuredSelection) selection; mSelectedProjects = sel.toList(); } }
From source file:net.sf.eclipsefp.haskell.debug.ui.internal.launch.InteractiveLaunchShortcut.java
License:Open Source License
@Override public void launch(final ISelection selection, final String mode) { // launched from workbench selection if (selection != null && selection instanceof IStructuredSelection) { List<IResource> list = new ArrayList<>(); IStructuredSelection ssel = (IStructuredSelection) selection; for (Object element : ssel.toList()) { IResource res = ResourceUtil.findResource(element); if (res != null) { list.add(res);/*from w ww.j av a2 s.c o m*/ } } IResource[] ress = ResourceUtil.toResourceArray(list); launch(ress, mode); } }
From source file:net.sf.eclipsensis.dialogs.NSISAssociatedHeadersPropertyPage.java
License:Open Source License
@Override public Control createControl(final Composite parent) { mOriginalHeaders = mHeaderAssociationManager .getAssociatedHeaders((IFile) ((NSISProperties) mSettings).getResource()); mHeaders = new HashSet<IFile>(); initHeaders();//from w ww . j av a 2 s. co m final IFilter filter = new IFilter() { public boolean select(Object toTest) { if (toTest instanceof IFile) { String ext = ((IFile) toTest).getFileExtension(); if (ext != null && ext.equalsIgnoreCase(INSISConstants.NSH_EXTENSION)) { return mHeaders != null && !mHeaders.contains(toTest); } } return false; } }; Composite composite = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(2, false); composite.setLayout(layout); Label l = new Label(composite, SWT.NONE); l.setText(EclipseNSISPlugin.getResourceString("associated.headers.title")); //$NON-NLS-1$ GridData data = new GridData(SWT.FILL, SWT.FILL, true, false); data.horizontalSpan = 2; l.setLayoutData(data); Table table = new Table(composite, SWT.FULL_SELECTION | SWT.MULTI | SWT.V_SCROLL | SWT.BORDER); table.setHeaderVisible(true); table.setLinesVisible(true); TableColumn column = new TableColumn(table, SWT.LEFT, 0); column.setText(EclipseNSISPlugin.getResourceString("associated.headers.column.label")); //$NON-NLS-1$ table.addControlListener(new TableResizer()); mViewer = new TableViewer(table); mViewer.setContentProvider(new CollectionContentProvider()); mViewer.setLabelProvider(new CollectionLabelProvider() { @Override public String getColumnText(Object element, int columnIndex) { if (element instanceof IFile) { return ((IFile) element).getFullPath().toString(); } return null; } }); mViewer.setComparator(new ViewerComparator() { @Override public int compare(Viewer viewer, Object e1, Object e2) { if (e1 instanceof IFile && e2 instanceof IFile) { return ((IFile) e1).getFullPath().toString().compareTo(((IFile) e2).getFullPath().toString()); } return super.compare(viewer, e1, e2); } }); data = new GridData(SWT.FILL, SWT.FILL, true, true); data.verticalSpan = 2; table.setLayoutData(data); Button addButton = new Button(composite, SWT.PUSH); addButton.setImage(CommonImages.ADD_ICON); addButton.setToolTipText(EclipseNSISPlugin.getResourceString("add.associated.header.toolip")); //$NON-NLS-1$ addButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent arg0) { FileSelectionDialog dialog = new FileSelectionDialog(parent.getShell(), ((NSISProperties) mSettings).getResource().getParent(), filter); dialog.setDialogMessage(EclipseNSISPlugin.getResourceString("nsis.script.prompt")); //$NON-NLS-1$ dialog.setHelpAvailable(false); if (dialog.open() == Window.OK) { IFile file = dialog.getFile(); IFile script = mHeaderAssociationManager.getAssociatedScript(file); if (script != null && !script.equals(((NSISProperties) mSettings).getResource()) && mReassociateHeaderWarning.getSelection()) { MessageDialogWithToggle dlg = new MessageDialogWithToggle(parent.getShell(), EclipseNSISPlugin.getResourceString("confirm.title"), //$NON-NLS-1$ EclipseNSISPlugin.getShellImage(), EclipseNSISPlugin.getFormattedString("associated.header.warning", //$NON-NLS-1$ new String[] { file.getFullPath().toString(), script.getFullPath().toString() }), MessageDialog.QUESTION, new String[] { IDialogConstants.OK_LABEL, IDialogConstants.CANCEL_LABEL }, 0, EclipseNSISPlugin.getResourceString("associated.header.toggle.message"), false); //$NON-NLS-1$ dlg.open(); if (dialog.getReturnCode() == IDialogConstants.OK_ID) { mReassociateHeaderWarning.setSelection(!dlg.getToggleState()); } else { return; } } if (!mHeaders.contains(file)) { mHeaders.add(file); mViewer.refresh(false); } } } }); addButton.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false)); final Button removeButton = new Button(composite, SWT.PUSH); removeButton.setImage(CommonImages.DELETE_ICON); removeButton.setToolTipText(EclipseNSISPlugin.getResourceString("remove.associated.header.toolip")); //$NON-NLS-1$ removeButton.setEnabled(false); removeButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent arg0) { IStructuredSelection sel = (IStructuredSelection) mViewer.getSelection(); if (!sel.isEmpty()) { mHeaders.removeAll(sel.toList()); mViewer.refresh(false); } } }); data = new GridData(SWT.FILL, SWT.TOP, false, false); data.verticalSpan = 2; removeButton.setLayoutData(data); Composite c = new Composite(composite, SWT.NONE); data = new GridData(SWT.FILL, SWT.FILL, true, false); c.setLayoutData(data); layout = new GridLayout(2, false); layout.marginWidth = layout.marginHeight = 0; layout.horizontalSpacing = 3; c.setLayout(layout); mReassociateHeaderWarning = new Button(c, SWT.CHECK); mReassociateHeaderWarning.setLayoutData(new GridData(SWT.FILL, SWT.TOP, false, false)); mReassociateHeaderWarning.setSelection(NSISPreferences.getInstance().getPreferenceStore() .getBoolean(INSISPreferenceConstants.WARN_REASSOCIATE_HEADER)); l = new Label(c, SWT.WRAP); l.setText(EclipseNSISPlugin.getResourceString("show.associated.header.warning.label")); //$NON-NLS-1$ l.setLayoutData(new GridData(SWT.LEFT, SWT.TOP, true, false)); mViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection selection = (IStructuredSelection) event.getSelection(); removeButton.setEnabled((selection != null && !selection.isEmpty())); } }); mViewer.setInput(mHeaders); PlatformUI.getWorkbench().getHelpSystem().setHelp(composite, INSISConstants.PLUGIN_CONTEXT_PREFIX + "nsis_assochdrproperties_context"); //$NON-NLS-1$ return composite; }
From source file:net.sf.eclipsensis.dialogs.NSISTaskTagsPreferencePage.java
License:Open Source License
@SuppressWarnings("unchecked") private void remove() { IStructuredSelection selection = (IStructuredSelection) mTableViewer.getSelection(); if (!selection.isEmpty()) { Collection<NSISTaskTag> coll = (Collection<NSISTaskTag>) mTableViewer.getInput(); for (Iterator<?> iter = selection.toList().iterator(); iter.hasNext();) { coll.remove(iter.next());/*from w w w . ja v a2 s. c om*/ } mTableViewer.refresh(); } }
From source file:net.sf.eclipsensis.installoptions.dialogs.InstallOptionsPreferencePage.java
License:Open Source License
/** * @param composite//from w ww. j a va 2 s .c o m */ private Control createDialogSizesGroup(final Composite composite) { final Group group = new Group(composite, SWT.SHADOW_ETCHED_IN); GridData gridData = new GridData(SWT.FILL, SWT.FILL, true, true); gridData.widthHint = convertWidthInCharsToPixels(60); group.setLayoutData(gridData); GridLayout layout = new GridLayout(2, false); group.setLayout(layout); group.setText(InstallOptionsPlugin.getResourceString("dialog.sizes.group.name")); //$NON-NLS-1$ Table table = new Table(group, SWT.CHECK | SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION); gridData = new GridData(SWT.FILL, SWT.FILL, true, true); table.setLayoutData(gridData); FontData[] fd = table.getFont().getFontData(); for (int i = 0; i < fd.length; i++) { fd[i].setStyle(fd[i].getStyle() | SWT.BOLD); } final Font boldFont = new Font(table.getShell().getDisplay(), fd); table.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { boldFont.dispose(); } }); table.setHeaderVisible(true); table.setLinesVisible(true); final TableColumn[] columns = new TableColumn[3]; columns[0] = new TableColumn(table, SWT.NONE); columns[0].setText(InstallOptionsPlugin.getResourceString("dialog.size.name.label")); //$NON-NLS-1$ columns[1] = new TableColumn(table, SWT.NONE); columns[1].setText(InstallOptionsPlugin.getResourceString("dialog.size.width.label")); //$NON-NLS-1$ columns[2] = new TableColumn(table, SWT.NONE); columns[2].setText(InstallOptionsPlugin.getResourceString("dialog.size.height.label")); //$NON-NLS-1$ mDialogSizeViewer = new CheckboxTableViewer(table); DialogSizeLabelProvider provider = new DialogSizeLabelProvider(); provider.setDefaultFont(boldFont); mDialogSizeViewer.setLabelProvider(provider); mDialogSizeViewer.setContentProvider(new CollectionContentProvider()); mDialogSizeViewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent e) { editDialogSize(); } }); final Composite buttons = new Composite(group, SWT.NONE); buttons.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false)); layout = new GridLayout(); layout.marginHeight = 0; layout.marginWidth = 0; buttons.setLayout(layout); createButton(buttons, CommonImages.ADD_ICON, "new.tooltip", //$NON-NLS-1$ new Listener() { public void handleEvent(Event e) { new DialogSizeDialog(getShell(), null).open(); } }); mEditDialogSize = createButton(buttons, CommonImages.EDIT_ICON, "edit.tooltip", //$NON-NLS-1$ new Listener() { public void handleEvent(Event e) { editDialogSize(); } }); mRemoveDialogSize = createButton(buttons, CommonImages.DELETE_ICON, "remove.tooltip", //$NON-NLS-1$ new Listener() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { IStructuredSelection selection = (IStructuredSelection) mDialogSizeViewer.getSelection(); if (!selection.isEmpty()) { Collection<DialogSize> coll = (Collection<DialogSize>) mDialogSizeViewer.getInput(); for (Iterator<?> iter = selection.toList().iterator(); iter.hasNext();) { DialogSize ds = (DialogSize) iter.next(); coll.remove(ds); if (mDefaultDialogSize.equals(ds)) { mDefaultDialogSize = null; } } if (mDefaultDialogSize == null && coll.size() > 0) { mDefaultDialogSize = coll.iterator().next(); mDefaultDialogSize.setDefault(true); } mDialogSizeViewer.refresh(); mDialogSizeViewer.setAllChecked(false); mDialogSizeViewer.setChecked(mDefaultDialogSize, true); } } }); mDialogSizeViewer.addCheckStateListener(new ICheckStateListener() { @SuppressWarnings("unchecked") public void checkStateChanged(CheckStateChangedEvent event) { DialogSize dialogSize = (DialogSize) event.getElement(); boolean checked = event.getChecked(); Collection<DialogSize> dialogSizes = (Collection<DialogSize>) mDialogSizeViewer.getInput(); if (dialogSizes.size() == 1) { checked = true; } else { for (Iterator<DialogSize> iter = dialogSizes.iterator(); iter.hasNext();) { DialogSize ds = iter.next(); if (!ds.equals(dialogSize) && ds.isDefault() == checked) { ds.setDefault(!checked); mDialogSizeViewer.setChecked(ds, !checked); mDialogSizeViewer.refresh(ds, true); break; } } } dialogSize.setDefault(checked); mDialogSizeViewer.setChecked(dialogSize, checked); mDialogSizeViewer.refresh(dialogSize, true); updateButtons(); } }); mDialogSizeViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent e) { updateButtons(); } }); Label l = new Label(group, SWT.WRAP); gridData = new GridData(SWT.FILL, SWT.CENTER, true, false); gridData.horizontalSpan = 2; l.setLayoutData(gridData); l.setText(InstallOptionsPlugin.getResourceString("dialog.size.group.footer")); //$NON-NLS-1$ updateDialogSizeViewerInput(); table.addControlListener(new TableResizer(new double[] { 2, 1, 1 })); return group; }
From source file:net.sf.eclipsensis.installoptions.properties.dialogs.FileFilterDialog.java
License:Open Source License
@Override @SuppressWarnings("unchecked") protected Control createDialogArea(Composite parent) { GridLayout layout;//from w w w .ja va 2 s . com Composite composite = (Composite) super.createDialogArea(parent); final Group summaryGroup = new Group(composite, SWT.SHADOW_ETCHED_IN); summaryGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true)); summaryGroup.setLayout(new GridLayout(2, false)); summaryGroup.setText(InstallOptionsPlugin.getResourceString("filter.summary.group.name")); //$NON-NLS-1$ Table summaryTable = new Table(summaryGroup, 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 = new Composite(summaryGroup, SWT.NONE); 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 = new Button(summaryButtons, SWT.PUSH); 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() { public void handleEvent(Event e) { 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); summaryViewer.refresh(false); summaryViewer.setSelection(new StructuredSelection(f)); } } }); final Button summaryDel = new Button(summaryButtons, SWT.PUSH); 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() { public void handleEvent(Event e) { List<FileFilter> list = (List<FileFilter>) summaryViewer.getInput(); if (list != null) { IStructuredSelection selection = (IStructuredSelection) summaryViewer.getSelection(); if (!selection.isEmpty()) { for (Iterator<?> iter = selection.toList().iterator(); iter.hasNext();) { list.remove(iter.next()); } summaryViewer.refresh(false); } } } }); summaryDel.setEnabled(!summaryViewer.getSelection().isEmpty()); final TableViewerUpDownMover<List<FileFilter>, FileFilter> summaryMover = new TableViewerUpDownMover<List<FileFilter>, FileFilter>() { @Override 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) { (input).clear(); (input).addAll(elements); } }; summaryMover.setViewer(summaryViewer); final Button summaryUp = new Button(summaryButtons, SWT.PUSH); 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 = new Button(summaryButtons, SWT.PUSH); 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 detailsGroup = new Group(composite, SWT.SHADOW_ETCHED_IN); detailsGroup.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true)); detailsGroup.setLayout(new GridLayout(1, false)); detailsGroup.setText(InstallOptionsPlugin.getResourceString("filter.detail.group.name")); //$NON-NLS-1$ boolean isNull = (mCurrent == null); Composite detailsComposite = new Composite(detailsGroup, SWT.NONE); detailsComposite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); layout = new GridLayout(2, false); layout.marginHeight = 0; layout.marginWidth = 0; detailsComposite.setLayout(layout); final Label descriptionLabel = new Label(detailsComposite, SWT.NONE); descriptionLabel.setText(InstallOptionsPlugin.getResourceString("filter.description")); //$NON-NLS-1$ descriptionLabel.setLayoutData(new GridData()); descriptionLabel.setEnabled(!isNull); final Text descriptionText = new Text(detailsComposite, SWT.BORDER); descriptionText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); descriptionText.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { if (mCurrent != null) { mCurrent.setDescription(descriptionText.getText()); summaryViewer.update(mCurrent, null); } } }); descriptionText.setEnabled(!isNull); final Label patternsLabel = new Label(detailsGroup, SWT.NONE); patternsLabel.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); patternsLabel.setText(InstallOptionsPlugin.getResourceString("filter.patterns")); //$NON-NLS-1$ patternsLabel.setEnabled(!isNull); detailsComposite = new Composite(detailsGroup, SWT.NONE); detailsComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); layout = new GridLayout(2, false); layout.marginHeight = 0; layout.marginWidth = 0; detailsComposite.setLayout(layout); final Table patternsTable = new Table(detailsComposite, 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(); } public void modify(Object element, String property, Object value) { if (value == null) { Common.openError(getShell(), textEditor.getErrorMessage(), InstallOptionsPlugin.getShellImage()); } else { FilePattern pattern = (FilePattern) ((TableItem) element).getData(); pattern.setPattern((String) value); patternsViewer.update(pattern, null); summaryViewer.update(mCurrent, null); } } }); final Composite patternsButtons = new Composite(detailsComposite, SWT.NONE); 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 = new Button(patternsButtons, SWT.PUSH); 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() { public void handleEvent(Event e) { if (mCurrent != null) { FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput(); patterns = (FilePattern[]) Common.resizeArray(patterns, patterns.length + 1); String filter = InstallOptionsPlugin.getResourceString("default.filter.pattern"); //$NON-NLS-1$ patterns[patterns.length - 1] = new FilePattern(filter); mCurrent.setPatterns(patterns); patternsViewer.setInput(patterns); patternsViewer.setSelection(new StructuredSelection(patterns[patterns.length - 1])); summaryViewer.update(mCurrent, null); patternsViewer.editElement(patterns[patterns.length - 1], 0); ((Text) textEditor.getControl()).setSelection(filter.length()); } } }); patternsAdd.setEnabled(!isNull); final Button patternsDel = new Button(patternsButtons, SWT.PUSH); 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() { public void handleEvent(Event e) { if (mCurrent != null) { FilePattern[] patterns = (FilePattern[]) patternsViewer.getInput(); int[] indices = patternsTable.getSelectionIndices(); FilePattern[] patterns2 = (FilePattern[]) Common.resizeArray(patterns, patterns.length - indices.length); int j = 0; int k = 0; for (int i = 0; i < patterns.length; i++) { if (j >= indices.length || i != indices[j]) { patterns2[k++] = patterns[i]; } else { j++; } } mCurrent.setPatterns(patterns2); patternsViewer.setInput(patterns2); summaryViewer.update(mCurrent, null); } } }); 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 (mCurrent != null) { return Common.makeList((FilePattern[]) ((TableViewer) getViewer()).getInput()); } return Collections.<FilePattern>emptyList(); } @Override protected void updateStructuredViewerInput(FilePattern[] input, List elements, List move, boolean isDown) { if (mCurrent != null) { for (int i = 0; i < input.length; i++) { input[i] = (FilePattern) elements.get(i); } patternsViewer.refresh(); summaryViewer.update(mCurrent, null); } } }; patternsMover.setViewer(patternsViewer); final Button patternsUp = new Button(patternsButtons, SWT.PUSH); 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 = new Button(patternsButtons, SWT.PUSH); 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()); mCurrent = null; if (!sel.isEmpty()) { if (sel.size() == 1) { mCurrent = (FileFilter) sel.getFirstElement(); } } boolean isNull = (mCurrent == null); descriptionText.setText((isNull ? "" : mCurrent.getDescription())); //$NON-NLS-1$ descriptionText.setSelection(descriptionText.getText().length()); patternsViewer.setInput((isNull ? null : mCurrent.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()); } }); applyDialogFont(composite); ((GridData) composite.getLayoutData()).widthHint = convertWidthInCharsToPixels(80); summaryViewer.setInput(mFilter); return composite; }
From source file:net.sf.eclipsensis.installoptions.properties.dialogs.ListItemsDialog.java
License:Open Source License
@Override protected Control createDialogArea(Composite parent) { final Composite composite = (Composite) super.createDialogArea(parent); GridLayout layout = (GridLayout) composite.getLayout(); layout.numColumns = 2;//from w ww. ja v a 2 s.co m layout.makeColumnsEqualWidth = false; Table table = new Table(composite, SWT.BORDER | SWT.MULTI | SWT.FULL_SELECTION | SWT.V_SCROLL); initializeDialogUnits(table); GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); data.widthHint = convertWidthInCharsToPixels(40); data.heightHint = convertHeightInCharsToPixels(10); table.setLayoutData(data); table.setLinesVisible(true); new TableColumn(table, SWT.LEFT); final TableViewer viewer = new TableViewer(table); viewer.setContentProvider(new CollectionContentProvider()); viewer.setLabelProvider(new LabelProvider()); final TextCellEditor textEditor = new TextCellEditor(table); ((Text) textEditor.getControl()).addVerifyListener(new VerifyListener() { public void verifyText(VerifyEvent e) { e.doit = e.text.indexOf(IInstallOptionsConstants.LIST_SEPARATOR) < 0; if (!e.doit) { e.display.beep(); } } }); viewer.setColumnProperties(new String[] { "item" }); //$NON-NLS-1$ viewer.setCellEditors(new CellEditor[] { textEditor }); viewer.setCellModifier(new ICellModifier() { public boolean canModify(Object element, String property) { return true; } public Object getValue(Object element, String property) { return element; } @SuppressWarnings("unchecked") public void modify(Object element, String property, Object value) { if (value == null) { Common.openError(getShell(), textEditor.getErrorMessage(), InstallOptionsPlugin.getShellImage()); } else { TableItem ti = (TableItem) element; Table t = ti.getParent(); int n = t.getSelectionIndex(); List<String> list = (List<String>) viewer.getInput(); if (n < list.size()) { list.set(n, (String) value); } else { list.add((String) value); } viewer.refresh(true); viewer.setSelection(new StructuredSelection(value)); } } }); final Composite buttons = new Composite(composite, SWT.NONE); buttons.setLayoutData(new GridData(SWT.BEGINNING, SWT.BEGINNING, false, false)); layout = new GridLayout(1, false); layout.marginWidth = 0; layout.marginHeight = 0; buttons.setLayout(layout); final Button add = new Button(buttons, SWT.PUSH); add.setImage(CommonImages.ADD_ICON); add.setToolTipText(EclipseNSISPlugin.getResourceString("new.tooltip")); //$NON-NLS-1$ add.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); add.addListener(SWT.Selection, new Listener() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { List<String> list = (List<String>) viewer.getInput(); if (list != null) { int counter = 1; String item = InstallOptionsPlugin.getFormattedString("default.listitem.label", //$NON-NLS-1$ new Object[] { new Integer(counter++) }); while (Common.collectionContainsIgnoreCase(list, item)) { item = InstallOptionsPlugin.getFormattedString("default.listitem.label", //$NON-NLS-1$ new Object[] { new Integer(counter++) }); } list.add(item); viewer.refresh(false); viewer.setSelection(new StructuredSelection(item)); viewer.editElement(item, 0); Text t = (Text) textEditor.getControl(); t.setSelection(item.length()); } } }); final Button del = new Button(buttons, SWT.PUSH); del.setImage(CommonImages.DELETE_ICON); del.setToolTipText(EclipseNSISPlugin.getResourceString("remove.tooltip")); //$NON-NLS-1$ del.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); del.addListener(SWT.Selection, new Listener() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { List<String> list = (List<String>) viewer.getInput(); if (list != null) { IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); if (!selection.isEmpty()) { for (Iterator<?> iter = selection.toList().iterator(); iter.hasNext();) { list.remove(iter.next()); } viewer.refresh(false); } } } }); del.setEnabled(!viewer.getSelection().isEmpty()); final TableViewerUpDownMover<List<String>, String> mover = new TableViewerUpDownMover<List<String>, String>() { @Override @SuppressWarnings("unchecked") protected List<String> getAllElements() { return (List<String>) ((TableViewer) getViewer()).getInput(); } @Override protected void updateStructuredViewerInput(List<String> input, List<String> elements, List<String> move, boolean isDown) { (input).clear(); (input).addAll(elements); } }; mover.setViewer(viewer); final Button up = new Button(buttons, SWT.PUSH); up.setImage(CommonImages.UP_ICON); up.setToolTipText(EclipseNSISPlugin.getResourceString("up.tooltip")); //$NON-NLS-1$ up.setEnabled(mover.canMoveUp()); up.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); up.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { mover.moveUp(); } }); final Button down = new Button(buttons, SWT.PUSH); down.setImage(CommonImages.DOWN_ICON); down.setToolTipText(EclipseNSISPlugin.getResourceString("down.tooltip")); //$NON-NLS-1$ down.setEnabled(mover.canMoveDown()); down.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); down.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { mover.moveDown(); } }); viewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection sel = (IStructuredSelection) event.getSelection(); del.setEnabled(!sel.isEmpty()); up.setEnabled(mover.canMoveUp()); down.setEnabled(mover.canMoveDown()); } }); table.addControlListener(new TableResizer()); viewer.setInput(mValues); return composite; }
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);/* w ww . ja va 2 s.c o m*/ 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.ListItemsPropertySectionCreator.java
License:Open Source License
protected void createListAndStateButtons(Composite buttons, final CheckboxTableViewer viewer, TabbedPropertySheetWidgetFactory widgetFactory, final InstallOptionsCommandHelper commandHelper) { final IPropertyDescriptor listItemsDescriptor = getWidget() .getPropertyDescriptor(InstallOptionsModel.PROPERTY_LISTITEMS); final ICellEditorValidator listItemsValidator = PropertyDescriptorHelper .getCellEditorValidator((PropertyDescriptor) listItemsDescriptor); final IPropertyDescriptor stateDescriptor = getWidget() .getPropertyDescriptor(InstallOptionsModel.PROPERTY_STATE); final ICellEditorValidator stateValidator = PropertyDescriptorHelper .getCellEditorValidator((PropertyDescriptor) stateDescriptor); final TextCellEditor textEditor = new TextCellEditor(viewer.getTable()); ((Text) textEditor.getControl()).addVerifyListener(new VerifyListener() { public void verifyText(VerifyEvent e) { e.doit = e.text.indexOf(IInstallOptionsConstants.LIST_SEPARATOR) < 0; if (!e.doit) { e.display.beep();// ww w . j a v a 2 s.c o m } } }); viewer.setColumnProperties(new String[] { "item" }); //$NON-NLS-1$ viewer.setCellEditors(new CellEditor[] { textEditor }); viewer.setCellModifier(new ICellModifier() { public boolean canModify(Object element, String property) { return true; } public Object getValue(Object element, String property) { return element; } @SuppressWarnings("unchecked") public void modify(Object element, String property, Object value) { if (value == null) { Common.openError(viewer.getTable().getShell(), textEditor.getErrorMessage(), InstallOptionsPlugin.getShellImage()); } else { TableItem ti = (TableItem) element; Table t = ti.getParent(); int n = t.getSelectionIndex(); String oldValue = null; List<String> list = (List<String>) viewer.getInput(); if (n < list.size()) { oldValue = list.set(n, String.valueOf(value)); } else { list.add(String.valueOf(value)); } String error = listItemsValidator.isValid(list); if (Common.isEmpty(error)) { CompoundCommand command = commandHelper.createPropertyChangedCommand( InstallOptionsModel.PROPERTY_LISTITEMS, listItemsDescriptor.getDisplayName(), getWidget(), list); List<String> oldState = Common.tokenizeToList( ((InstallOptionsListItems) getWidget()).getState(), IInstallOptionsConstants.LIST_SEPARATOR); if (Common.collectionContainsIgnoreCase(oldState, oldValue)) { if (!Common.collectionContainsIgnoreCase(list, oldValue)) { for (ListIterator<String> iter = oldState.listIterator(); iter.hasNext();) { String str = iter.next(); if (Common.stringsAreEqual(str, oldValue, true)) { iter.set(String.valueOf(value)); String newState = Common.flatten(oldState, IInstallOptionsConstants.LIST_SEPARATOR); error = stateValidator.isValid(newState); if (Common.isEmpty(error)) { CompoundCommand cmd = new ForwardUndoCompoundCommand( command.getLabel()); cmd.add(commandHelper.createPropertyChangedCommand( InstallOptionsModel.PROPERTY_STATE, stateDescriptor.getDisplayName(), getWidget(), newState)); cmd.add(command); command = cmd; } else { command = null; } break; } } } } if (command != null && command.size() > 0) { viewer.refresh(true); commandHelper.execute(command); viewer.refresh(true); viewer.setSelection(new StructuredSelection(value)); return; } } Common.openError(viewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); if (oldValue != null) { list.set(n, oldValue); } else { list.remove(n); } } } }); final Button add = widgetFactory.createButton(buttons, "", SWT.PUSH | SWT.FLAT); //$NON-NLS-1$ add.setImage(CommonImages.ADD_ICON); add.setToolTipText(EclipseNSISPlugin.getResourceString("new.tooltip")); //$NON-NLS-1$ add.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); add.addListener(SWT.Selection, new Listener() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { List<String> list = (List<String>) viewer.getInput(); if (list != null) { int counter = 1; String item = InstallOptionsPlugin.getFormattedString("default.listitem.label", //$NON-NLS-1$ new Object[] { new Integer(counter++) }); while (Common.collectionContainsIgnoreCase(list, item)) { item = InstallOptionsPlugin.getFormattedString("default.listitem.label", //$NON-NLS-1$ new Object[] { new Integer(counter++) }); } list.add(item); String error = listItemsValidator.isValid(list); if (Common.isEmpty(error)) { commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_LISTITEMS, listItemsDescriptor.getDisplayName(), getWidget(), list); viewer.refresh(false); viewer.setSelection(new StructuredSelection(item)); viewer.editElement(item, 0); Text t = (Text) textEditor.getControl(); t.setSelection(item.length()); } else { Common.openError(viewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); list.remove(item); } } } }); final Button del = widgetFactory.createButton(buttons, "", SWT.PUSH | SWT.FLAT); //$NON-NLS-1$ del.setImage(CommonImages.DELETE_ICON); del.setToolTipText(EclipseNSISPlugin.getResourceString("remove.tooltip")); //$NON-NLS-1$ del.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); del.addListener(SWT.Selection, new Listener() { @SuppressWarnings("unchecked") public void handleEvent(Event e) { List<String> list = (List<String>) viewer.getInput(); if (list != null) { IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); if (!selection.isEmpty()) { for (Iterator<?> iter = selection.toList().iterator(); iter.hasNext();) { list.remove(iter.next()); } String error = listItemsValidator.isValid(list); if (Common.isEmpty(error)) { commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_LISTITEMS, listItemsDescriptor.getDisplayName(), getWidget(), list); viewer.refresh(false); } else { Common.openError(viewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); list.clear(); list.addAll(((InstallOptionsListItems) getWidget()).getListItems()); viewer.setSelection(selection); } } } } }); del.setEnabled(!viewer.getSelection().isEmpty()); final TableViewerUpDownMover<List<String>, String> mover = new TableViewerUpDownMover<List<String>, String>() { @Override @SuppressWarnings("unchecked") protected List<String> getAllElements() { return (List<String>) ((TableViewer) getViewer()).getInput(); } @Override protected void updateStructuredViewerInput(List<String> input, List<String> elements, List<String> move, boolean isDown) { String error = listItemsValidator.isValid(elements); if (Common.isEmpty(error)) { commandHelper.propertyChanged(InstallOptionsModel.PROPERTY_LISTITEMS, listItemsDescriptor.getDisplayName(), getWidget(), elements); } else { Common.openError(viewer.getTable().getShell(), error, InstallOptionsPlugin.getShellImage()); } } }; mover.setViewer(viewer); final Button up = widgetFactory.createButton(buttons, "", SWT.PUSH | SWT.FLAT); //$NON-NLS-1$ up.setImage(CommonImages.UP_ICON); up.setToolTipText(EclipseNSISPlugin.getResourceString("up.tooltip")); //$NON-NLS-1$ up.setEnabled(mover.canMoveUp()); up.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); up.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { mover.moveUp(); } }); final Button down = widgetFactory.createButton(buttons, "", SWT.PUSH | SWT.FLAT); //$NON-NLS-1$ down.setImage(CommonImages.DOWN_ICON); down.setToolTipText(EclipseNSISPlugin.getResourceString("down.tooltip")); //$NON-NLS-1$ down.setEnabled(mover.canMoveDown()); down.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); down.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { mover.moveDown(); } }); viewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection sel = (IStructuredSelection) event.getSelection(); del.setEnabled(!sel.isEmpty()); up.setEnabled(mover.canMoveUp()); down.setEnabled(mover.canMoveDown()); } }); }