/** Creates a dialog that'll choose from a list of interpreter infos. */ public static SelectionDialog createChooseIntepreterInfoDialog( IWorkbenchWindow workbenchWindow, IInterpreterInfo[] interpreters, String msg, boolean selectMultiple) { IStructuredContentProvider contentProvider = new IStructuredContentProvider() { public Object[] getElements(Object inputElement) { if (inputElement instanceof IInterpreterInfo[]) { return (IInterpreterInfo[]) inputElement; } return new Object[0]; } public void dispose() {} public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {} }; LabelProvider labelProvider = new LabelProvider() { public Image getImage(Object element) { return PydevPlugin.getImageCache().get(UIConstants.PY_INTERPRETER_ICON); } public String getText(Object element) { if (element != null && element instanceof IInterpreterInfo) { IInterpreterInfo info = (IInterpreterInfo) element; return info.getNameForUI(); } return super.getText(element); } }; SelectionDialog selectionDialog; if (selectMultiple) { selectionDialog = new ListSelectionDialog( workbenchWindow.getShell(), interpreters, contentProvider, labelProvider, msg); } else { ListDialog listDialog = new ListDialog(workbenchWindow.getShell()); listDialog.setContentProvider(contentProvider); listDialog.setLabelProvider(labelProvider); listDialog.setInput(interpreters); listDialog.setMessage(msg); selectionDialog = listDialog; } return selectionDialog; }
public void prompt(Shell shell) { ListDialog dialog = new ListDialog(shell) { @Override protected int getTableStyle() { return super.getTableStyle() - SWT.SINGLE + SWT.MULTI; } }; dialog.setTitle(Messages.RemoveFilterDialog_0); dialog.setMessage(Messages.RemoveFilterDialog_1); dialog.setAddCancelButton(true); dialog.setLabelProvider( new LabelProvider() { @Override public String getText(Object element) { return (String) element; } }); dialog.setContentProvider( new IStructuredContentProvider() { public Object[] getElements(Object inputElement) { return (Object[]) inputElement; } public void dispose() {} public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {} }); String[] filterPatterns = filter.getFilterPatterns(); Arrays.sort(filterPatterns); dialog.setInput(filterPatterns); dialog.open(); Object[] selected = dialog.getResult(); if (selected == null) return; filter.removeFilterPatterns(selected); }