List of usage examples for org.eclipse.jface.viewers TreeViewer getTree
public Tree getTree()
From source file:com.bluexml.side.form.clazz.ShowLinkedClassAction.java
License:Open Source License
private void doAction(FormClass form) { Clazz clazz = form.getReal_class(); if (clazz != null) { XMIResource r = (XMIResource) clazz.eResource(); IFile file = XMIResource2IFile(r); IFile diagramFile = file.getParent().getFile(new Path(file.getName() + "di")); if (diagramFile.exists()) { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry() .getDefaultEditor(diagramFile.getName()); try { IEditorPart editor = page.openEditor(new FileEditorInput(diagramFile), desc.getId()); if (editor instanceof Modeler) { Modeler modeler = (Modeler) editor; selectDiagramElement(modeler.getDiagrams(), modeler, clazz); }/*w w w . j a v a2s .c o m*/ } catch (PartInitException e) { e.printStackTrace(); } } else { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry() .getDefaultEditor(file.getName()); try { IEditorPart editor = page.openEditor(new FileEditorInput(file), desc.getId()); if (editor instanceof ClazzEditor) { ClazzEditor cEditor = (ClazzEditor) editor; TreeViewer treeViewer = (TreeViewer) cEditor.getViewer(); TreeItem item = treeViewer.getTree().getItem(0); item.setExpanded(true); treeViewer.refresh(); Package p = (Package) item.getItem(0).getData(); selectClass(p, cEditor, clazz); } } catch (PartInitException e) { e.printStackTrace(); } } } else { MessageDialog.openError(null, FormUI.Messages.getString("ShowLinkedClass_1"), FormUI.Messages.getString("ShowLinkedClass_2")); } }
From source file:com.bluexml.side.form.workflow.ShowLinkedTaskAction.java
License:Open Source License
private void doAction(FormWorkflow formWorkflow) { ModelElement me = formWorkflow.getRef(); if (me != null && me instanceof State) { State s = (State) me; XMIResource r = (XMIResource) s.eResource(); IFile file = XMIResource2IFile(r); IFile diagramFile = file.getParent().getFile(new Path(file.getName() + "di")); if (diagramFile.exists()) { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry() .getDefaultEditor(diagramFile.getName()); try { IEditorPart editor = page.openEditor(new FileEditorInput(diagramFile), desc.getId()); if (editor instanceof Modeler) { Modeler modeler = (Modeler) editor; selectDiagramElement(modeler.getActiveDiagram(), modeler, s); }//from w w w . j a v a 2 s .com } catch (PartInitException e) { e.printStackTrace(); } } else { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry() .getDefaultEditor(file.getName()); try { IEditorPart editor = page.openEditor(new FileEditorInput(file), desc.getId()); if (editor instanceof WorkflowEditor) { WorkflowEditor wEditor = (WorkflowEditor) editor; TreeViewer treeViewer = (TreeViewer) wEditor.getViewer(); TreeItem item = treeViewer.getTree().getItem(0); item.setExpanded(true); treeViewer.refresh(); Process p = (Process) item.getItem(0).getData(); selectState(p, wEditor, s); } } catch (PartInitException e) { e.printStackTrace(); } } } else { MessageDialog.openError(null, FormUI.Messages.getString("ShowLinkedTask_1"), FormUI.Messages.getString("ShowLinkedTask_2")); } }
From source file:com.bluexml.side.Portal.modeler.diagram.actions.ShowFormAction.java
License:Open Source License
@Override protected void selectEObject(IEditorPart editorPart, List<EObject> elements) { ArrayList<EObject> l = new ArrayList<EObject>(); if (editorPart instanceof FormEditor) { FormEditor editor = (FormEditor) editorPart; for (EObject eObject : elements) { FormCollection foundedFc = (FormCollection) eObject; TreeViewer treeViewer = (TreeViewer) editor.getViewer(); TreeItem item = treeViewer.getTree().getItem(0); item.setExpanded(true);/*from ww w . j a v a2s .com*/ treeViewer.refresh(); FormCollection wfc = (FormCollection) item.getItem(0).getData(); if (compare(wfc, foundedFc)) { l.add(wfc); } } editor.setSelectionToViewer(l); } }
From source file:com.bluexml.side.Portal.modeler.diagram.actions.ShowViewAction.java
License:Open Source License
@Override protected void selectEObject(IEditorPart editorPart, List<EObject> elements) { ArrayList<EObject> l = new ArrayList<EObject>(); if (editorPart instanceof ViewEditor) { ViewEditor editor = (ViewEditor) editorPart; for (EObject eObject : elements) { AbstractView view = (AbstractView) eObject; TreeViewer treeViewer = (TreeViewer) editor.getViewer(); TreeItem item = treeViewer.getTree().getItem(0); item.setExpanded(true);//from w w w . j av a 2 s .co m treeViewer.refresh(); ViewCollection wfc = (ViewCollection) item.getItem(0).getData(); for (AbstractView fc : wfc.getAllViewsAndSubViews()) { if (fc instanceof AbstractView) { AbstractView fw = (AbstractView) fc; if (compareView(view, fw)) { l.add(fw); } } } } editor.setSelectionToViewer(l); } }
From source file:com.bluexml.side.view.edit.ui.actions.ShowLinkedClassAction.java
License:Open Source License
private void doAction(AbstractViewOf view) { ModelElement c = view.getViewOf();/*from ww w . jav a 2 s .c om*/ if (c instanceof Clazz) { Clazz clazz = (Clazz) c; if (clazz != null) { XMIResource r = (XMIResource) clazz.eResource(); IFile file = XMIResource2IFile(r); IFile diagramFile = file.getParent().getFile(new Path(file.getName() + "di")); if (diagramFile.exists()) { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry() .getDefaultEditor(diagramFile.getName()); try { IEditorPart editor = page.openEditor(new FileEditorInput(diagramFile), desc.getId()); if (editor instanceof Modeler) { Modeler modeler = (Modeler) editor; selectDiagramElement(modeler.getDiagrams(), modeler, clazz); } } catch (PartInitException e) { e.printStackTrace(); } } else { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry() .getDefaultEditor(file.getName()); try { IEditorPart editor = page.openEditor(new FileEditorInput(file), desc.getId()); if (editor instanceof ClazzEditor) { ClazzEditor cEditor = (ClazzEditor) editor; TreeViewer treeViewer = (TreeViewer) cEditor.getViewer(); TreeItem item = treeViewer.getTree().getItem(0); item.setExpanded(true); treeViewer.refresh(); Package p = (Package) item.getItem(0).getData(); selectClass(p, cEditor, clazz); } } catch (PartInitException e) { e.printStackTrace(); } } } else { MessageDialog.openError(null, ViewUI.Messages.getString("ShowLinkedClass_1"), ViewUI.Messages.getString("ShowLinkedClass_2")); } } }
From source file:com.bluexml.side.Workflow.modeler.actions.popup.ShowFormAction.java
License:Open Source License
private void recomputeAndSelect(List<FormWorkflow> forms, UserTask task) { IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry() .getDefaultEditor(XMIResource2IFile((XMIResource) forms.get(0).eResource()).getName()); for (FormWorkflow formWorkflow : forms) { IEditorPart editorPart;/*from www. ja v a 2s .c o m*/ try { editorPart = page.openEditor( new FileEditorInput(XMIResource2IFile((XMIResource) formWorkflow.eResource())), desc.getId()); if (editorPart instanceof FormEditor) { FormEditor editor = (FormEditor) editorPart; TreeViewer treeViewer = (TreeViewer) editor.getViewer(); TreeItem item = treeViewer.getTree().getItem(0); item.setExpanded(true); treeViewer.refresh(); WorkflowFormCollection wfc = (WorkflowFormCollection) item.getItem(0).getData(); selectForm(wfc, editor, task); } } catch (PartInitException e) { e.printStackTrace(); } } }
From source file:com.ebmwebsourcing.petals.common.extensions.internal.wizards.JavaToWSDLWizardPage.java
License:Open Source License
@Override public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(2, false); container.setLayout(layout);/*from w w w . j a va 2 s . co m*/ container.setLayoutData(new GridData(GridData.FILL_BOTH)); // Container selection Label l = new Label(container, SWT.NONE); l.setText("Select the Java project that contains the classes."); GridData layoutData = new GridData(); layoutData.horizontalSpan = 2; l.setLayoutData(layoutData); TreeViewer viewer = new TreeViewer(container, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER); layoutData = new GridData(GridData.FILL_BOTH); layoutData.horizontalSpan = 2; viewer.getTree().setLayoutData(layoutData); viewer.setLabelProvider(new WorkbenchLabelProvider()); viewer.setContentProvider(new WorkbenchContentProvider() { @Override public Object[] getChildren(Object o) { if (o instanceof IWorkspaceRoot) { IProject[] projects = ((IWorkspaceRoot) o).getProjects(); ArrayList<IJavaProject> result = new ArrayList<IJavaProject>(); for (IProject project : projects) { try { if (!project.isOpen() || !project.hasNature(JavaCore.NATURE_ID)) continue; } catch (CoreException e) { PetalsCommonWsdlExtPlugin.log(e, IStatus.WARNING); continue; } IJavaProject p = JavaCore.create(project); result.add(p); } return result.toArray(); } return new Object[0]; } }); // Set page input IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); viewer.setInput(root); if (this.javaProject != null) { viewer.setSelection(new StructuredSelection(this.javaProject), true); viewer.expandToLevel(this.javaProject, 1); } viewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection s = (IStructuredSelection) event.getSelection(); if (!s.isEmpty()) JavaToWSDLWizardPage.this.javaProject = (IJavaProject) s.getFirstElement(); else JavaToWSDLWizardPage.this.javaProject = null; validate(); } }); viewer.addDoubleClickListener(new IDoubleClickListener() { @Override public void doubleClick(DoubleClickEvent event) { openClassSelectionDialog(); } }); // Class field l = new Label(container, SWT.NONE); l.setText("Select the Java interface."); layoutData = new GridData(); layoutData.horizontalSpan = 2; layoutData.verticalIndent = 15; l.setLayoutData(layoutData); this.classText = new Text(container, SWT.BORDER | SWT.SINGLE); this.classText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); this.classText.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { JavaToWSDLWizardPage.this.className = JavaToWSDLWizardPage.this.classText.getText(); validate(); } }); Button b = new Button(container, SWT.PUSH); b.setText("Browse..."); b.addSelectionListener(new SelectionAdapter() { @Override public void widgetDefaultSelected(SelectionEvent e) { openClassSelectionDialog(); } @Override public void widgetSelected(SelectionEvent e) { openClassSelectionDialog(); } }); this.classText.setFocus(); setControl(container); }
From source file:com.ebmwebsourcing.petals.common.extensions.internal.wizards.WSDLtoJavaWizardPage.java
License:Open Source License
@Override public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); container.setLayout(layout);// w ww. ja v a 2 s . c o m container.setLayoutData(new GridData(GridData.FILL_BOTH)); // WSDL field Label l = new Label(container, SWT.NONE); l.setText("WSDL URI:"); l.setLayoutData(new GridData()); final Text text = new Text(container, SWT.BORDER | SWT.SINGLE); text.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); text.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { String uri = text.getText(); if (uri.trim().length() == 0) return; try { WSDLtoJavaWizardPage.this.wsdlUri = UriAndUrlHelper.urlToUri(uri); } catch (Exception e1) { WSDLtoJavaWizardPage.this.wsdlUri = null; } validate(); } }); Composite buttons = new Composite(container, SWT.NONE); layout = new GridLayout(2, false); layout.marginHeight = layout.marginWidth = 0; buttons.setLayout(layout); Button b = new Button(buttons, SWT.PUSH); b.setText("Browse File System"); b.addSelectionListener(new SelectionAdapter() { @Override public void widgetDefaultSelected(SelectionEvent e) { widgetSelected(e); } @Override public void widgetSelected(SelectionEvent e) { FileDialog dlg = new FileDialog(text.getShell(), SWT.SINGLE); dlg.setFilterNames(new String[] { "WSDL (*.wsdl)" }); //$NON-NLS-1$ dlg.setFilterExtensions(new String[] { "*.wsdl" }); //$NON-NLS-1$ String path = dlg.open(); if (path != null) { text.setText(new File(path).toURI().toString()); text.setSelection(path.length()); text.setFocus(); } } }); b = new Button(buttons, SWT.PUSH); b.setText("Browse Workspace..."); b.addSelectionListener(new SelectionAdapter() { @Override public void widgetDefaultSelected(SelectionEvent e) { widgetSelected(e); } @Override public void widgetSelected(SelectionEvent e) { WorkspaceExplorer dlg = new WorkspaceExplorer(getShell(), new String[] { "wsdl" }); if (dlg.open() == Window.OK) { IResource res = dlg.getSelectedResource(); text.setText(new File(res.getLocation().toOSString()).toURI().toString()); text.setSelection(text.getText().length()); text.setFocus(); } } }); // Container selection l = new Label(container, SWT.NONE); l.setText("Select the output location."); GridData layoutData = new GridData(); layoutData.verticalIndent = 15; l.setLayoutData(layoutData); TreeViewer viewer = new TreeViewer(container, SWT.SINGLE | SWT.V_SCROLL | SWT.BORDER); layoutData = new GridData(GridData.FILL_BOTH); layoutData.heightHint = 200; viewer.getTree().setLayoutData(layoutData); viewer.setLabelProvider(new WorkbenchLabelProvider()); viewer.setContentProvider(new WorkbenchContentProvider() { @Override public Object[] getChildren(Object o) { if (o instanceof IContainer) { IResource[] members; try { members = ((IContainer) o).members(); } catch (Exception e) { return new Object[0]; } ArrayList<IResource> results = new ArrayList<IResource>(); for (IResource member : members) { if (member instanceof IContainer) results.add(member); } return results.toArray(); } return new Object[0]; } }); // Set page input IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); viewer.setInput(root); if (this.outputContainer != null) { viewer.setSelection(new StructuredSelection(this.outputContainer), true); viewer.expandToLevel(this.outputContainer, 1); } viewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { IStructuredSelection s = (IStructuredSelection) event.getSelection(); if (!s.isEmpty()) WSDLtoJavaWizardPage.this.outputContainer = (IContainer) s.getFirstElement(); else WSDLtoJavaWizardPage.this.outputContainer = null; validate(); } }); text.setFocus(); setControl(container); }
From source file:com.ebmwebsourcing.petals.common.internal.wizards.JbiXmlNewWizardPage.java
License:Open Source License
@Override public void createControl(Composite parent) { // Create the composite container and define its layout final Composite container = new Composite(parent, SWT.NONE); GridLayout layout = new GridLayout(); layout.marginLeft = layout.marginRight = 15; layout.marginTop = 15;/*from w ww .j ava 2s . c o m*/ container.setLayout(layout); container.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); // Container viewer new Label(container, SWT.NONE).setText(Messages.NewJbiXmlWizardPage_2); final Text folderPathText = new Text(container, SWT.SINGLE | SWT.BORDER); folderPathText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); TreeViewer viewer = new TreeViewer(container, SWT.SINGLE | SWT.BORDER | SWT.V_SCROLL | SWT.HIDE_SELECTION); GridData layoutData = new GridData(GridData.FILL_BOTH); layoutData.heightHint = 100; viewer.getTree().setLayoutData(layoutData); viewer.setLabelProvider(new WorkbenchLabelProvider()); viewer.setContentProvider(new WorkbenchContentProvider() { /* * (non-Javadoc) * @see org.eclipse.ui.model.BaseWorkbenchContentProvider * #getChildren(java.lang.Object) */ @Override public Object[] getChildren(Object o) { if (o instanceof IProject && !((IProject) o).isOpen()) return new Object[0]; List<IResource> children = new ArrayList<IResource>(); if (o instanceof IContainer) { try { IResource[] members = ((IContainer) o).members(); for (IResource member : members) { if (member instanceof IContainer || (member instanceof IFile && member.getName().equals("jbi.xml"))) //$NON-NLS-1$ children.add(member); } } catch (CoreException e) { PetalsCommonPlugin.log(e, IStatus.ERROR); } } return children.toArray(new IResource[0]); } /* * (non-Javadoc) * @see org.eclipse.ui.model.BaseWorkbenchContentProvider * #hasChildren(java.lang.Object) */ @Override public boolean hasChildren(Object element) { return getChildren(element).length > 0; } }); // Set page input IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot(); viewer.setInput(root); if (this.selectedContainer != null) { viewer.setSelection(new StructuredSelection(this.selectedContainer), true); viewer.expandToLevel(this.selectedContainer, 1); } viewer.addPostSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { Object o = ((IStructuredSelection) event.getSelection()).getFirstElement(); if (o instanceof IContainer) JbiXmlNewWizardPage.this.selectedContainer = (IContainer) o; else JbiXmlNewWizardPage.this.selectedContainer = ((IFile) o).getParent(); String path = JbiXmlNewWizardPage.this.selectedContainer.getFullPath().toOSString(); String fileSeparator = System.getProperty("file.separator"); //$NON-NLS-1$ if (path.startsWith(fileSeparator)) path = path.substring(fileSeparator.length()); folderPathText.setText(path); validate(); } }); // Overwrite existing file ? final Button overwriteButton = new Button(container, SWT.CHECK); overwriteButton.setText(Messages.NewJbiXmlWizardPage_5); overwriteButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { JbiXmlNewWizardPage.this.overwriteExistingFile = overwriteButton.getSelection(); validate(); } }); // Set control setControl(container); }
From source file:com.ebmwebsourcing.petals.services.su.wizards.pages.ChoicePage.java
License:Open Source License
@Override public void createControl(Composite parent) { // Create the composite container and define its layout final Composite container = SwtFactory.createComposite(parent); setControl(container);/*from w w w .j a v a 2s. c o m*/ SwtFactory.applyNewGridLayout(container, 2, false, 15, 0, 0, 15); SwtFactory.applyHorizontalGridData(container); // Add a tool tip to display in case of problem this.helpTooltip = new FixedShellTooltip(getShell(), true, 90) { @Override public void populateTooltip(Composite parent) { GridLayout layout = new GridLayout(); layout.verticalSpacing = 2; parent.setLayout(layout); parent.setLayoutData(new GridData(GridData.FILL_BOTH)); parent.setBackground(getShell().getDisplay().getSystemColor(SWT.COLOR_LIST_BACKGROUND)); try { ImageDescriptor desc = AbstractUIPlugin.imageDescriptorFromPlugin( PetalsConstants.PETALS_COMMON_PLUGIN_ID, "icons/petals/thinking_hard.png"); if (desc != null) ChoicePage.this.helpImg = desc.createImage(); parent.setBackgroundMode(SWT.INHERIT_DEFAULT); Label imgLabel = new Label(parent, SWT.NONE); imgLabel.setImage(ChoicePage.this.helpImg); imgLabel.setLayoutData(new GridData(SWT.CENTER, SWT.DEFAULT, true, true)); } catch (Exception e) { PetalsServicesPlugin.log(e, IStatus.WARNING); } FontData[] fd = PlatformUtils.getModifiedFontData(getFont().getFontData(), SWT.BOLD); ChoicePage.this.boldFont = new Font(getShell().getDisplay(), fd); Label titleLabel = new Label(parent, SWT.NONE); titleLabel.setFont(ChoicePage.this.boldFont); GridData layoutData = new GridData(SWT.CENTER, SWT.DEFAULT, true, true); layoutData.verticalIndent = 5; titleLabel.setLayoutData(layoutData); titleLabel.setText("What does this error mean?"); Label l = new Label(parent, SWT.WRAP); l.setText("This wizard will generate, among other things, Maven artifacts."); layoutData = new GridData(); layoutData.verticalIndent = 8; l.setLayoutData(layoutData); RowLayout rowLayout = new RowLayout(SWT.HORIZONTAL); rowLayout.marginLeft = 0; rowLayout.marginTop = 0; rowLayout.marginRight = 0; rowLayout.marginBottom = 0; rowLayout.spacing = 0; Composite rowComposite = new Composite(parent, SWT.NONE); rowComposite.setLayout(rowLayout); rowComposite.setLayoutData(new GridData(SWT.CENTER, SWT.DEFAULT, true, true)); new Label(rowComposite, SWT.WRAP).setText("Unfortunately, there is a problem with the "); Link link = new Link(rowComposite, SWT.WRAP | SWT.NO_FOCUS); link.setText("<A>the Petals Maven preferences</A>"); new Label(rowComposite, SWT.WRAP).setText("."); new Label(parent, SWT.WRAP).setText("Please, make them correct."); link.addSelectionListener(new DefaultSelectionListener() { @Override public void widgetSelected(SelectionEvent e) { try { PreferencesUtil.createPreferenceDialogOn(new Shell(), "com.ebmwebsourcing.petals.services.prefs.maven", null, null).open(); } catch (Exception e1) { PetalsServicesPlugin.log(e1, IStatus.ERROR); } } }); } }; // Prepare the input Comparator<AbstractServiceUnitWizard> comparator = new Comparator<AbstractServiceUnitWizard>() { @Override public int compare(AbstractServiceUnitWizard o1, AbstractServiceUnitWizard o2) { String v1 = o1.getComponentVersionDescription().getComponentVersion(); String v2 = o2.getComponentVersionDescription().getComponentVersion(); return -v1.compareTo(v2); // negative so that the most recent is first } }; final Map<String, Collection<AbstractServiceUnitWizard>> componentNameToHandler = new TreeMap<String, Collection<AbstractServiceUnitWizard>>(); final Map<PetalsKeyWords, Set<String>> keywordToComponentName = new TreeMap<PetalsKeyWords, Set<String>>(); for (AbstractServiceUnitWizard handler : ExtensionManager.INSTANCE.findComponentWizards(this.petalsMode)) { for (PetalsKeyWords keyword : handler.getComponentVersionDescription().getKeyWords()) { Set<String> list = keywordToComponentName.get(keyword); if (list == null) list = new TreeSet<String>(); String componentName = handler.getComponentVersionDescription().getComponentName(); list.add(componentName); keywordToComponentName.put(keyword, list); Collection<AbstractServiceUnitWizard> handlers = componentNameToHandler.get(componentName); if (handlers == null) handlers = new TreeSet<AbstractServiceUnitWizard>(comparator); handlers.add(handler); componentNameToHandler.put(componentName, handlers); } } // Add the selection area final PhantomText searchText = new PhantomText(container, SWT.SINGLE | SWT.BORDER); searchText.setDefaultValue("Search..."); GridDataFactory.swtDefaults().grab(true, false).align(SWT.FILL, SWT.TOP).span(2, 1).applyTo(searchText); final TreeViewer componentsViewer = new TreeViewer(container, SWT.BORDER | SWT.SINGLE | SWT.FULL_SELECTION); GridDataFactory.fillDefaults().span(2, 1).hint(380, 300).applyTo(componentsViewer.getTree()); componentsViewer.setLabelProvider(new LabelProvider() { @Override public String getText(Object element) { String result; if (element instanceof String) { IComponentDescription desc = componentNameToHandler.get(element).iterator().next() .getComponentVersionDescription(); String componentName = desc.getComponentName(); String componentAlias = desc.getComponentAlias(); String annotation = desc.getComponentAnnotation(); StringBuilder sb = new StringBuilder(); if (StringUtils.isEmpty(componentName)) sb.append(componentAlias); // Generic component else sb.append(componentAlias + " - " + componentName); if (!StringUtils.isEmpty(annotation)) sb.append(" ( " + annotation + " )"); result = sb.toString(); } else { result = super.getText(element); } return result; } @Override public Image getImage(Object element) { Image result = null; if (element instanceof PetalsKeyWords) { result = ChoicePage.this.keywordToImage.get(element); } else { IComponentDescription desc = componentNameToHandler.get(element).iterator().next() .getComponentVersionDescription(); result = desc.isBc() ? ChoicePage.this.bcImg : ChoicePage.this.seImg; } return result; } }); componentsViewer.setContentProvider(new DefaultTreeContentProvider() { @Override public Object[] getElements(Object inputElement) { return keywordToComponentName.keySet().toArray(); } @Override public Object[] getChildren(Object parentElement) { Object[] result; if (parentElement instanceof PetalsKeyWords) { Collection<String> componentNames = keywordToComponentName.get(parentElement); result = componentNames == null ? new Object[0] : componentNames.toArray(); } else { result = new Object[0]; } return result; } @Override public boolean hasChildren(Object element) { return element instanceof PetalsKeyWords; } }); componentsViewer.addFilter(new ViewerFilter() { @Override public boolean select(Viewer viewer, Object parentElement, Object element) { boolean result = false; String filter = searchText.getTextValue().trim().toLowerCase(); if (filter.length() == 0) result = true; else if (element instanceof PetalsKeyWords) { Set<String> names = keywordToComponentName.get(element); if (names != null) { for (String s : names) { if (select(viewer, null, s)) { result = true; break; } } } } else if (element instanceof String) result = ((String) element).toLowerCase().contains(filter); return result; } }); componentsViewer.setInput(new Object()); if (keywordToComponentName.size() > 0) componentsViewer.expandToLevel(keywordToComponentName.keySet().iterator().next(), 1); // Display the available versions new Label(container, SWT.NONE).setText("Component Version:"); final ComboViewer versionCombo = new ComboViewer(container, SWT.BORDER | SWT.DROP_DOWN | SWT.READ_ONLY); GridData layoutData = new GridData(); layoutData.widthHint = 130; versionCombo.getCombo().setLayoutData(layoutData); versionCombo.setContentProvider(new ArrayContentProvider()); versionCombo.setLabelProvider(new LabelProvider() { @Override public String getText(Object element) { return ((AbstractServiceUnitWizard) element).getComponentVersionDescription().getComponentVersion(); } }); final Label descriptionLabel = new Label(container, SWT.NONE); GridDataFactory.swtDefaults().span(2, 1).indent(0, 10).applyTo(descriptionLabel); // Selection listeners searchText.addModifyListener(new ModifyListener() { @Override public void modifyText(ModifyEvent e) { componentsViewer.refresh(); if (searchText.getTextValue().trim().length() == 0) componentsViewer.collapseAll(); else componentsViewer.expandAll(); } }); componentsViewer.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { // Get the selection Object o = ((IStructuredSelection) event.getSelection()).getFirstElement(); Collection<?> input; if (o == null || o instanceof PetalsKeyWords) input = Collections.emptyList(); else input = componentNameToHandler.get(o); // Default selection - there is always one versionCombo.setInput(input); versionCombo.getCombo().setVisibleItemCount(input.size() > 0 ? input.size() : 1); if (!input.isEmpty()) { versionCombo.setSelection(new StructuredSelection(input.iterator().next())); versionCombo.getCombo().notifyListeners(SWT.Selection, new Event()); } else { setPageComplete(false); setSelectedNode(null); descriptionLabel.setText(""); descriptionLabel.getParent().layout(); } } }); versionCombo.addSelectionChangedListener(new ISelectionChangedListener() { @Override public void selectionChanged(SelectionChangedEvent event) { AbstractServiceUnitWizard suWizard = (AbstractServiceUnitWizard) ((IStructuredSelection) event .getSelection()).getFirstElement(); if (suWizard == null) return; setPageComplete(true); setSelectedNode(getWizardNode(suWizard)); String desc = ChoicePage.this.petalsMode == PetalsMode.provides ? suWizard.getComponentVersionDescription().getProvideDescription() : suWizard.getComponentVersionDescription().getConsumeDescription(); descriptionLabel.setText(desc); descriptionLabel.getParent().layout(); } }); // Initialize if (PreferencesManager.isMavenTemplateConfigurationValid()) this.helpTooltip.hide(); componentsViewer.getTree().setFocus(); }