List of usage examples for org.eclipse.jface.preference PreferenceDialog open
public int open()
From source file:org.springframework.ide.eclipse.wizard.template.TemplateSelectionPart.java
License:Open Source License
@Override public Control createArea(Composite parent) { initialiseTemplatesFromContentManager(); Composite container = new Composite(parent, SWT.NONE); GridLayoutFactory.fillDefaults().margins(0, 0).spacing(0, 0).applyTo(container); container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); Label label = new Label(container, SWT.NONE); label.setText("Templates:"); //$NON-NLS-1$ label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); Tree tree = new Tree(container, SWT.FULL_SELECTION | SWT.BORDER); tree.setLinesVisible(false);//w ww .jav a 2 s . c o m tree.setHeaderVisible(false); tree.setEnabled(true); GridData data = new GridData(SWT.FILL, SWT.FILL, true, true); data.heightHint = 170; tree.setLayoutData(data); treeViewer = new TreeViewer(tree); treeViewer.setLabelProvider(new ILabelProvider() { public void removeListener(ILabelProviderListener listener) { } public boolean isLabelProperty(Object element, String property) { return false; } public void dispose() { } public void addListener(ILabelProviderListener listener) { } public String getText(Object element) { if (element instanceof ITemplateElement) { return ((ITemplateElement) element).getName(); } return null; } public Image getImage(Object element) { if (element instanceof Template) { Template template = (Template) element; Image templateImage = WizardImages.getImage(WizardImages.TEMPLATE_ICON); // Simple Project templates are bundled in the plugin, // therefore do not require download icon, since they are // not downloaded if (template instanceof SimpleProject || ((template.getItem().isLocal() || TemplateUtils.hasBeenDownloaded(template)) && !template.getItem().isNewerVersionAvailable())) { return templateImage; } return WizardImages.getImage(new DecorationOverlayIcon(templateImage, new ImageDescriptor[] { StsUiImages.DOWNLOAD_OVERLAY, null, null, null, null })); } if (element instanceof TemplateCategory) { return WizardImages.getImage(WizardImages.TEMPLATE_CATEGORY_ICON); } return null; } }); treeViewer.setSorter(new ViewerSorter() { @Override public int compare(Viewer viewer, Object e1, Object e2) { if (e1 instanceof TemplateCategory && e2 instanceof Template) { return -1; } if (e1 instanceof Template && e2 instanceof TemplateCategory) { return 1; } if (e1 instanceof ITemplateElement && e2 instanceof ITemplateElement) { ITemplateElement t1 = (ITemplateElement) e1; ITemplateElement t2 = (ITemplateElement) e2; // Special Case, Simple Projects category is placed above // others if (t1.getName().equals(SIMPLE_PROJECTS_CATEGORY)) { return -1; } else if (t2.getName().equals(SIMPLE_PROJECTS_CATEGORY)) { return 1; } else { return t1.getName().compareTo(t2.getName()); } } return super.compare(viewer, e1, e2); } }); treeViewer.setContentProvider(new TemplateContentProvider()); treeViewer.setInput(templates); Composite legendContainer = new Composite(container, SWT.NONE); legendContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); GridLayout headerLayout = new GridLayout(3, false); headerLayout.marginWidth = 0; headerLayout.marginHeight = 0; legendContainer.setLayout(headerLayout); Composite legendComposite = new Composite(legendContainer, SWT.NONE); GridLayout legendLayout = new GridLayout(2, false); legendLayout.verticalSpacing = 0; legendLayout.marginHeight = 0; legendLayout.marginBottom = 0; int legendControlVerticalIndent = 5; legendComposite.setLayout(legendLayout); legendComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); legendImage = new Label(legendComposite, SWT.NONE); GridDataFactory.fillDefaults().grab(false, false).indent(0, legendControlVerticalIndent) .applyTo(legendImage); legendImage.setImage(WizardImages.getImage(StsUiImages.DOWNLOAD_OVERLAY)); legendImage.setToolTipText("Templates with this icon will be downloaded after clicking the 'Next' button."); legendText = new Label(legendComposite, SWT.NONE); legendText.setText("requires downloading"); GridDataFactory.fillDefaults().grab(false, false).indent(0, legendControlVerticalIndent) .applyTo(legendText); Hyperlink hyperlink = new Hyperlink(legendContainer, SWT.WRAP); GridDataFactory.fillDefaults().grab(false, false).indent(0, legendControlVerticalIndent).applyTo(hyperlink); hyperlink.setText(NLS.bind("Configure templates...", null)); Color blue = new Color(null, 0, 0, 255); hyperlink.setForeground(blue); hyperlink.setUnderlined(true); blue.dispose(); hyperlink.addHyperlinkListener(new HyperlinkAdapter() { @Override public void linkActivated(HyperlinkEvent event) { PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(null, TemplatesPreferencePage.EXAMPLE_PREFERENCES_PAGE_ID, null, null); refreshButton.setEnabled(false); dialog.open(); downloadDescriptors(); refreshButton.setEnabled(!isRefreshing()); } }); refreshButton = new Button(legendContainer, SWT.PUSH); refreshButton.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, false)); refreshButton.setText("Refresh"); refreshButton.setEnabled(!isRefreshing()); // refreshButton.setImage(WizardImages.getImage(WizardImages.REFRESH_ICON)); refreshButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // under most circumstances, we don't want to download templates // if there has not been any change. However, when the user // presses Refresh, they really do want to see something happen. ContentPlugin.getDefault().getManager().setDirty(); downloadDescriptors(); } }); refreshButton.setToolTipText( "Refresh the list of templates. Note that the current template selection will be cleared."); Composite descriptionComposite = new Composite(container, SWT.NONE); descriptionComposite.setLayout(new GridLayout()); descriptionComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); descriptionLabel = new Label(descriptionComposite, SWT.NONE); descriptionLabel.setText("Description:"); //$NON-NLS-1$ descriptionLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); descriptionText = new StyledText(descriptionComposite, SWT.WRAP | SWT.READ_ONLY | SWT.V_SCROLL); // descriptionText.setAlwaysShowScrollBars(false); Display display = Display.getCurrent(); if (display != null) { descriptionText.setBackground(display.getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); } GridData descriptionData = new GridData(SWT.FILL, SWT.FILL, true, true); descriptionData.widthHint = 200; descriptionData.heightHint = 80; descriptionText.setLayoutData(descriptionData); treeViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { ISelection selection = treeViewer.getSelection(); if (selection instanceof TreeSelection) { Object element = ((TreeSelection) selection).getFirstElement(); if (element instanceof Template) { setSeletectedTemplate((Template) element); } else if (element instanceof TemplateCategory) { // Note: ONLY clear the selected template if the // selection is a template category. // Do not clear the template if there is an empty // selection in the tree, as there // are times when the viewer // will set an empty selection in the tree due to a // refresh operation, and if // a template was already selected prior to that refresh // request, it should not be // overwritten with null as other operations will // require that the selected template not be changed setSeletectedTemplate(null); } } } }); this.contentManagerListener = new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent event) { ContentManager manager = event.getSource() instanceof ContentManager ? (ContentManager) event.getSource() : null; final boolean hasTemplateContentChanged = manager != null && manager.isDirty(); if (hasTemplateContentChanged) { clearTemplateSelection(); // Only reinitialise templates if the manager is marked as // dirty, as template contents may have changed, therefore // new templates // need to be created in the tree viewer initialiseTemplatesFromContentManager(); } // switch to UI thread to refresh the UI controls PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() { public void run() { refreshPage(hasTemplateContentChanged); } }); } }; ContentManager manager = ContentPlugin.getDefault().getManager(); manager.addListener(contentManagerListener); // This does not automatically add the templates to the tree viewer // input. // Rather it downloads templates asynchronously, and the content manager // will then notify the tree viewer when the content is available and at // that time // refresh the tree input downloadDescriptors(); expandCategory(SIMPLE_PROJECTS_CATEGORY); return container; }
From source file:org.springframework.ide.eclipse.wizard.template.TemplateSelectionWizardPage.java
License:Open Source License
public void createControl(Composite parent) { initializeTemplates();/*from ww w. j a va2 s.c o m*/ Composite container = new Composite(parent, SWT.NONE); container.setLayout(new GridLayout()); container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); Label label = new Label(container, SWT.NONE); label.setText("Templates:"); //$NON-NLS-1$ label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); String[] names = new String[templates.size()]; for (int i = 0; i < templates.size(); i++) { names[i] = templates.get(i).getName(); } Tree tree = new Tree(container, SWT.FULL_SELECTION | SWT.BORDER); tree.setLinesVisible(false); tree.setHeaderVisible(false); tree.setEnabled(true); tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); treeViewer = new TreeViewer(tree); treeViewer.setLabelProvider(new ILabelProvider() { public void removeListener(ILabelProviderListener listener) { } public boolean isLabelProperty(Object element, String property) { return false; } public void dispose() { } public void addListener(ILabelProviderListener listener) { } public String getText(Object element) { if (element instanceof ITemplateElement) { return ((ITemplateElement) element).getName(); } return null; } public Image getImage(Object element) { if (element instanceof Template) { Template template = (Template) element; Image templateImage = WizardImages.getImage(WizardImages.TEMPLATE_ICON); if (template.getItem().isLocal() && !template.getItem().isNewerVersionAvailable()) { return templateImage; } return WizardImages.getImage(new DecorationOverlayIcon(templateImage, new ImageDescriptor[] { StsUiImages.DOWNLOAD_OVERLAY, null, null, null, null })); } if (element instanceof TemplateCategory) { return WizardImages.getImage(WizardImages.TEMPLATE_CATEGORY_ICON); } return null; } }); treeViewer.setSorter(new ViewerSorter() { @Override public int compare(Viewer viewer, Object e1, Object e2) { if (e1 instanceof TemplateCategory && e2 instanceof Template) { return -1; } if (e1 instanceof Template && e2 instanceof TemplateCategory) { return 1; } if (e1 instanceof ITemplateElement && e2 instanceof ITemplateElement) { ITemplateElement t1 = (ITemplateElement) e1; ITemplateElement t2 = (ITemplateElement) e2; return t1.getName().compareTo(t2.getName()); } return super.compare(viewer, e1, e2); } }); treeViewer.setContentProvider(new TemplateContentProvider()); treeViewer.setInput(templates); Composite legendContainer = new Composite(container, SWT.NONE); legendContainer.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); GridLayout headerLayout = new GridLayout(2, false); headerLayout.marginWidth = 0; headerLayout.marginHeight = 0; legendContainer.setLayout(headerLayout); Composite legendComposite = new Composite(legendContainer, SWT.NONE); GridLayout legendLayout = new GridLayout(2, false); legendLayout.verticalSpacing = 0; legendLayout.marginHeight = 0; legendLayout.marginBottom = 5; legendComposite.setLayout(legendLayout); legendComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); legendImage = new Label(legendComposite, SWT.NONE); legendImage.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false)); legendImage.setImage(WizardImages.getImage(StsUiImages.DOWNLOAD_OVERLAY)); legendText = new Label(legendComposite, SWT.NONE); legendText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false)); legendText.setText("requires downloading"); Hyperlink hyperlink = new Hyperlink(container, SWT.WRAP | SWT.TRAIL | SWT.TOP); GridDataFactory.fillDefaults().grab(false, true).align(SWT.END, SWT.BEGINNING).indent(5, 0) .applyTo(hyperlink); hyperlink.setText(NLS.bind("Configure templates...", null)); Color blue = new Color(null, 0, 0, 255); hyperlink.setForeground(blue); hyperlink.setUnderlined(true); blue.dispose(); hyperlink.addHyperlinkListener(new HyperlinkAdapter() { @Override public void linkActivated(HyperlinkEvent event) { PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(null, TemplatesPreferencePage.EXAMPLE_PREFERENCES_PAGE_ID, null, null); refreshButton.setEnabled(false); setErrorMessage(null); dialog.open(); if (ContentPlugin.getDefault().getManager().isDirty()) { downloadDescriptors(); } refreshButton.setEnabled(!isRefreshing()); } }); refreshButton = new Button(legendContainer, SWT.PUSH); refreshButton.setLayoutData(new GridData(SWT.RIGHT, SWT.FILL, false, false)); refreshButton.setText("Refresh"); refreshButton.setEnabled(!isRefreshing()); // refreshButton.setImage(WizardImages.getImage(WizardImages.REFRESH_ICON)); refreshButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { setErrorMessage(null); // under most circumstances, we don't want to download templates // if there has not been any change. However, when the user // presses Refresh, they really do want to see something happen. ContentPlugin.getDefault().getManager().setDirty(); downloadDescriptors(); } }); Composite descriptionComposite = new Composite(container, SWT.NONE); descriptionComposite.setLayout(new GridLayout()); descriptionComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); descriptionLabel = new Label(descriptionComposite, SWT.NONE); descriptionLabel.setText("Description:"); //$NON-NLS-1$ descriptionLabel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false)); descriptionLabel.setVisible(false); descriptionText = new Text(descriptionComposite, SWT.WRAP | SWT.READ_ONLY | SWT.V_SCROLL); GridData descriptionData = new GridData(SWT.FILL, SWT.FILL, true, true); descriptionData.widthHint = 200; descriptionData.heightHint = 80; descriptionText.setLayoutData(descriptionData); treeViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { ISelection selection = treeViewer.getSelection(); if (selection instanceof TreeSelection) { Object element = ((TreeSelection) selection).getFirstElement(); if (element instanceof Template) { if (element != null) { selectedTemplate = ((Template) element); } } } firstPage = null; if (selectedTemplate != null) { setDescription(selectedTemplate); if (TemplateSelectionWizardPage.this.equals(wizard.getContainer().getCurrentPage())) { wizard.getContainer().updateButtons(); } } } }); this.contentManagerListener = new PropertyChangeListener() { public void propertyChange(PropertyChangeEvent arg0) { initializeTemplates(); // switch to UI thread PlatformUI.getWorkbench().getDisplay().syncExec(new Runnable() { public void run() { refreshPage(); } }); } }; ContentManager manager = ContentPlugin.getDefault().getManager(); manager.addListener(contentManagerListener); if (manager.isDirty()) { downloadDescriptors(); } setControl(container); }
From source file:org.springframework.ide.eclipse.wizard.template.util.ExampleProjectsDashboardPart.java
License:Open Source License
private void createLinkToPreferencesPage() { FormToolkit toolkit = getToolkit();/*from w ww. j av a 2 s . c o m*/ Hyperlink configureLink = toolkit.createHyperlink(composite, "Edit list of example projects", SWT.WRAP); configureLink.addHyperlinkListener(new HyperlinkAdapter() { @Override public void linkActivated(HyperlinkEvent event) { PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(getControl().getShell(), ExampleProjectsPreferencePage.EXAMPLE_PREFERENCES_PAGE_ID, null, null); dialog.open(); } }); }
From source file:org.springsource.ide.eclipse.commons.gettingstarted.dashboard.ExtensionsEditor.java
License:Open Source License
@Override public void createPartControl(Composite parent) { toolkit = new FormToolkit(parent.getDisplay()); form = toolkit.createScrolledForm(parent); Composite body = form.getBody(); body.setLayout(new GridLayout(5, false)); discoveryViewer = new DashboardDiscoveryViewer(getSite(), this); initialize(discoveryViewer);/*from w ww.j ava 2 s . co m*/ discoveryViewer.setDirectoryUrl(ResourceProvider.getUrl(RESOURCE_DISCOVERY_DIRECTORY).replace("%VERSION%", IdeUiUtils.getShortVersion())); discoveryViewer.setShowConnectorDescriptorKindFilter(false); discoveryViewer.createControl(body); adaptRecursively(discoveryViewer.getControl(), toolkit); GridDataFactory.fillDefaults().span(5, 1).grab(true, true).applyTo(discoveryViewer.getControl()); findUpdatesButton = toolkit.createButton(body, "&Find Updates", SWT.NONE); findUpdatesButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent event) { IHandlerService handlerService = (IHandlerService) getSite().getService(IHandlerService.class); try { handlerService.executeCommand("org.eclipse.equinox.p2.ui.sdk.update", new Event()); } catch (Exception e) { StatusManager.getManager() .handle(new Status(IStatus.ERROR, IdeUiPlugin.PLUGIN_ID, "Find updates failed with an unexpected error.", e), StatusManager.SHOW | StatusManager.LOG); } } }); Hyperlink configureLink = toolkit.createHyperlink(body, "Configure Extensions...", SWT.NONE); configureLink.addHyperlinkListener(new HyperlinkAdapter() { @Override public void linkActivated(HyperlinkEvent event) { PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(getSite().getShell(), ID_PREFERENCE_PAGE, new String[] { ID_PREFERENCE_PAGE }, null); dialog.open(); } }); progressMonitorPart = new ProgressMonitorPart(body, null); monitor.attach(progressMonitorPart); progressMonitorPart.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { monitor.setCanceled(true); monitor.detach(progressMonitorPart); } }); adaptRecursively(progressMonitorPart, toolkit); GridDataFactory.fillDefaults().grab(true, false).applyTo(progressMonitorPart); // Button refreshButton = toolkit.createButton(body, "Refresh", // SWT.NONE); // refreshButton.addSelectionListener(new SelectionAdapter() { // @Override // public void widgetSelected(SelectionEvent e) { // pane.updateDiscovery(); // } // }); cancelButton = toolkit.createButton(body, "&Cancel", SWT.NONE); cancelButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { cancelButton.setEnabled(false); progressMonitorPart.setCanceled(true); } }); installButton = toolkit.createButton(body, "&Install", SWT.NONE); installButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // check for conflicts List<ConnectorDescriptor> selection = discoveryViewer.getInstallableConnectors(); IStatus conflictStatus = new MultiStatus(IdeUiPlugin.PLUGIN_ID, -1, new IStatus[] { checkForConflicts(SVN_FEATURES, " Please select only one SVN team provider.", selection), checkForConflicts(M2E_EXTENSION_IDS, " Please select only one m2e version to install.", selection) }, "Could not perform install due to conflicts.", null); if (!conflictStatus.isOK()) { StatusManager.getManager().handle(conflictStatus, StatusManager.SHOW | StatusManager.BLOCK); return; } // now, if m2e is going to be installed, ensure that all other // versions of m2e are uninstalled first. Set<String> featuresToUninstall = chooseUnwantedFeatures(selection); if (!featuresToUninstall.isEmpty()) { IStatus uninstallResult = uninstallFeatures(featuresToUninstall); if (!uninstallResult.isOK()) { if (uninstallResult.getSeverity() != IStatus.CANCEL) { StatusManager.getManager().handle(uninstallResult, StatusManager.SHOW | StatusManager.LOG | StatusManager.BLOCK); } return; } } DiscoveryUi.install(discoveryViewer.getInstallableConnectors(), ExtensionsEditor.this); } private IStatus uninstallFeatures(final Set<String> featuresToUninstall) { String allInstalled = findFeaturesToUninstall(featuresToUninstall, discoveryViewer.getInstalledFeatures()); if (allInstalled.length() == 0) { return Status.OK_STATUS; } boolean res = MessageDialog.openQuestion(getEditorSite().getShell(), "Perform uninstall?", "In order to switch versions of m2eclipse, the following features will be uninstalled:\n" + allInstalled + "Do you want to continue?"); if (!res) { return Status.CANCEL_STATUS; } // uninstall previous Maven tooling AbstractInstallJob job = DiscoveryUi.createInstallJob(); try { return job.uninstall(new UninstallRequest() { /** * Uninstall all features that are somehow related to * m2eclipse */ @Override public boolean select(@SuppressWarnings("rawtypes") InstalledItem item) { String featureId = item.getId(); return isRelatedToM2e(featuresToUninstall, featureId); } }, new NullProgressMonitor()); } catch (Exception e) { return new Status(IStatus.ERROR, IdeUiPlugin.PLUGIN_ID, NLS.bind("Could not uninstall features:\n{0},\n try uninstalling manually.", featuresToUninstall), e); } } private String findFeaturesToUninstall(Set<String> featuresToUninstall, Set<String> installedFeatures) { StringBuilder sb = new StringBuilder(); for (String featureId : installedFeatures) { if (isRelatedToM2e(featuresToUninstall, featureId)) { if (featureId.endsWith(".feature.group")) { featureId = featureId.substring(0, featureId.length() - ".feature.group".length()); } sb.append(" " + featureId + "\n"); } } return sb.toString(); } private Set<String> chooseUnwantedFeatures(List<ConnectorDescriptor> selection) { boolean uninstallOld = false; boolean uninstallNew = false; for (ConnectorDescriptor feature : selection) { // if new m2e to be installed, then must uninstall the old // first and vice versa if (feature.getId().equals(NEW_M2E_EXTENSION_ID)) { uninstallOld = true; } else if (feature.getId().equals(OLD_M2E_EXTENSION_ID)) { uninstallNew = true; } } Set<String> maybeUninstall; if (uninstallOld) { maybeUninstall = OLD_M2E_FEATURES; } else if (uninstallNew) { maybeUninstall = NEW_M2E_FEATURES; } else { maybeUninstall = Collections.emptySet(); } Set<String> installedFeatures = ExtensionsEditor.this.discoveryViewer.getInstalledFeatures(); Set<String> definitelyUninstall = new HashSet<String>(); for (String feature : maybeUninstall) { if (installedFeatures.contains(feature)) { definitelyUninstall.add(feature); } } if (definitelyUninstall.size() > 0) { IdeUiPlugin.log(new Status(IStatus.INFO, IdeUiPlugin.PLUGIN_ID, "To make way for a new version of m2eclipse, we will uninstall these features: " + definitelyUninstall)); } return definitelyUninstall; } /** * This method checks for conflicts with requested installs. If a * conflict is found, this method will pop up a dialog explaining * the conflict and it will return true. * * @param featuresToCheck set of features of which only one can be * installed at once. * @param message message to add if there is an error * @param selection * * @return true iff there is a conflict. */ public IStatus checkForConflicts(Set<String> featuresToCheck, String prependedMessage, List<ConnectorDescriptor> selection) { StringBuilder message = new StringBuilder(); List<ConnectorDescriptor> conflicting = new ArrayList<ConnectorDescriptor>(); for (ConnectorDescriptor descriptor : selection) { if (featuresToCheck.contains(descriptor.getId())) { conflicting.add(descriptor); if (message.length() > 0) { message.append(", "); } message.append(descriptor.getName()); } } if (conflicting.size() > 1) { return new Status(IStatus.WARNING, IdeUiPlugin.PLUGIN_ID, NLS.bind("The following extensions can not be installed at the same time: {0}.", message.toString())); } else { return Status.OK_STATUS; } } }); Display.getCurrent().asyncExec(new Runnable() { public void run() { if (form != null && !form.isDisposed()) { discoveryViewer.updateDiscovery(); } } }); discoveryViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { installButton.setEnabled(discoveryViewer.isComplete()); } }); }
From source file:org.springsource.ide.eclipse.commons.ui.tips.TipInfo.java
License:Open Source License
public void invokeAction(String text, IWorkbenchWindow activeWindow) { if (text.startsWith(TipInfo.PREF)) { PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(activeWindow.getShell(), text.substring(TipInfo.PREF.length()), null, null); dialog.open(); } else if (text.startsWith(TipInfo.COMMAND)) { String commandIdString = text.substring(TipInfo.COMMAND.length()); if (activeWindow != null) { ICommandService commandService = (ICommandService) activeWindow.getService(ICommandService.class); try { Command command = commandService.getCommand(commandIdString); command.executeWithChecks(new ExecutionEvent()); } catch (Exception e) { e.printStackTrace();// w ww . ja va 2 s . c o m } } } else { UiUtil.openUrl(text); } }
From source file:org.springsource.ide.eclipse.dashboard.internal.ui.discovery.DashboardExtensionsPage.java
License:Open Source License
@Override protected void createFormContent(final IManagedForm managedForm) { Composite body = managedForm.getForm().getBody(); body.setLayout(new GridLayout(5, false)); discoveryViewer = new DashboardDiscoveryViewer(getSite(), this); initialize(discoveryViewer);/*www. ja v a 2s .com*/ discoveryViewer.setDirectoryUrl(ResourceProvider.getUrl(RESOURCE_DISCOVERY_DIRECTORY).replace("%VERSION%", IdeUiUtils.getShortVersion())); discoveryViewer.setShowConnectorDescriptorKindFilter(false); discoveryViewer.createControl(body); FormToolkit toolkit = managedForm.getToolkit(); adaptRecursively(discoveryViewer.getControl(), toolkit); GridDataFactory.fillDefaults().span(5, 1).grab(true, true).applyTo(discoveryViewer.getControl()); findUpdatesButton = toolkit.createButton(body, "&Find Updates", SWT.NONE); findUpdatesButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent event) { IHandlerService handlerService = (IHandlerService) getSite().getService(IHandlerService.class); try { handlerService.executeCommand("org.eclipse.equinox.p2.ui.sdk.update", new Event()); } catch (Exception e) { StatusManager.getManager() .handle(new Status(IStatus.ERROR, IdeUiPlugin.PLUGIN_ID, "Find updates failed with an unexpected error.", e), StatusManager.SHOW | StatusManager.LOG); } } }); Hyperlink configureLink = toolkit.createHyperlink(body, "Configure Extensions...", SWT.NONE); configureLink.addHyperlinkListener(new HyperlinkAdapter() { @Override public void linkActivated(HyperlinkEvent event) { PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(getSite().getShell(), ID_PREFERENCE_PAGE, new String[] { ID_PREFERENCE_PAGE }, null); dialog.open(); } }); progressMonitorPart = new ProgressMonitorPart(body, null); monitor.attach(progressMonitorPart); progressMonitorPart.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent e) { monitor.setCanceled(true); monitor.detach(progressMonitorPart); } }); adaptRecursively(progressMonitorPart, toolkit); GridDataFactory.fillDefaults().grab(true, false).applyTo(progressMonitorPart); // Button refreshButton = toolkit.createButton(body, "Refresh", // SWT.NONE); // refreshButton.addSelectionListener(new SelectionAdapter() { // @Override // public void widgetSelected(SelectionEvent e) { // pane.updateDiscovery(); // } // }); cancelButton = toolkit.createButton(body, "&Cancel", SWT.NONE); cancelButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { cancelButton.setEnabled(false); progressMonitorPart.setCanceled(true); } }); installButton = toolkit.createButton(body, "&Install", SWT.NONE); installButton.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { // check for conflicts List<ConnectorDescriptor> selection = discoveryViewer.getInstallableConnectors(); IStatus conflictStatus = new MultiStatus(IdeUiPlugin.PLUGIN_ID, -1, new IStatus[] { checkForConflicts(SVN_FEATURES, " Please select only one SVN team provider.", selection), checkForConflicts(M2E_EXTENSION_IDS, " Please select only one m2e version to install.", selection) }, "Could not perform install due to conflicts.", null); if (!conflictStatus.isOK()) { StatusManager.getManager().handle(conflictStatus, StatusManager.SHOW | StatusManager.BLOCK); return; } // now, if m2e is going to be installed, ensure that all other // versions of m2e are uninstalled first. Set<String> featuresToUninstall = chooseUnwantedFeatures(selection); if (!featuresToUninstall.isEmpty()) { IStatus uninstallResult = uninstallFeatures(featuresToUninstall); if (!uninstallResult.isOK()) { if (uninstallResult.getSeverity() != IStatus.CANCEL) { StatusManager.getManager().handle(uninstallResult, StatusManager.SHOW | StatusManager.LOG | StatusManager.BLOCK); } return; } } DiscoveryUi.install(discoveryViewer.getInstallableConnectors(), DashboardExtensionsPage.this); } private IStatus uninstallFeatures(final Set<String> featuresToUninstall) { String allInstalled = findFeaturesToUninstall(featuresToUninstall, discoveryViewer.getInstalledFeatures()); if (allInstalled.length() == 0) { return Status.OK_STATUS; } boolean res = MessageDialog.openQuestion(getPartControl().getShell(), "Perform uninstall?", "In order to switch versions of m2eclipse, the following features will be uninstalled:\n" + allInstalled + "Do you want to continue?"); if (!res) { return Status.CANCEL_STATUS; } // uninstall previous Maven tooling AbstractInstallJob job = DiscoveryUi.createInstallJob(); try { return job.uninstall(new UninstallRequest() { /** * Uninstall all features that are somehow related to * m2eclipse */ @Override public boolean select(InstalledItem item) { String featureId = item.getId(); return isRelatedToM2e(featuresToUninstall, featureId); } }, new NullProgressMonitor()); } catch (Exception e) { return new Status(IStatus.ERROR, IdeUiPlugin.PLUGIN_ID, NLS.bind("Could not uninstall features:\n{0},\n try uninstalling manually.", featuresToUninstall), e); } } private String findFeaturesToUninstall(Set<String> featuresToUninstall, Set<String> installedFeatures) { StringBuilder sb = new StringBuilder(); for (String featureId : installedFeatures) { if (isRelatedToM2e(featuresToUninstall, featureId)) { if (featureId.endsWith(".feature.group")) { featureId = featureId.substring(0, featureId.length() - ".feature.group".length()); } sb.append(" " + featureId + "\n"); } } return sb.toString(); } private Set<String> chooseUnwantedFeatures(List<ConnectorDescriptor> selection) { boolean uninstallOld = false; boolean uninstallNew = false; for (ConnectorDescriptor feature : selection) { // if new m2e to be installed, then must uninstall the old // first and vice versa if (feature.getId().equals(NEW_M2E_EXTENSION_ID)) { uninstallOld = true; } else if (feature.getId().equals(OLD_M2E_EXTENSION_ID)) { uninstallNew = true; } } Set<String> maybeUninstall; if (uninstallOld) { maybeUninstall = OLD_M2E_FEATURES; } else if (uninstallNew) { maybeUninstall = NEW_M2E_FEATURES; } else { maybeUninstall = Collections.emptySet(); } Set<String> installedFeatures = DashboardExtensionsPage.this.discoveryViewer.getInstalledFeatures(); Set<String> definitelyUninstall = new HashSet<String>(); for (String feature : maybeUninstall) { if (installedFeatures.contains(feature)) { definitelyUninstall.add(feature); } } if (definitelyUninstall.size() > 0) { IdeUiPlugin.log(new Status(IStatus.INFO, IdeUiPlugin.PLUGIN_ID, "To make way for a new version of m2eclipse, we will uninstall these features: " + definitelyUninstall)); } return definitelyUninstall; } /** * This method checks for conflicts with requested installs. If a * conflict is found, this method will pop up a dialog explaining * the conflict and it will return true. * @param featuresToCheck set of features of which only one can be * installed at once. * @param message message to add if there is an error * @param selection * * @return true iff there is a conflict. */ public IStatus checkForConflicts(Set<String> featuresToCheck, String prependedMessage, List<ConnectorDescriptor> selection) { StringBuilder message = new StringBuilder(); List<ConnectorDescriptor> conflicting = new ArrayList<ConnectorDescriptor>(); for (ConnectorDescriptor descriptor : selection) { if (featuresToCheck.contains(descriptor.getId())) { conflicting.add(descriptor); if (message.length() > 0) { message.append(", "); } message.append(descriptor.getName()); } } if (conflicting.size() > 1) { return new Status(IStatus.WARNING, IdeUiPlugin.PLUGIN_ID, NLS.bind("The following extensions can not be installed at the same time: {0}.", message.toString())); } else { return Status.OK_STATUS; } } }); Display.getCurrent().asyncExec(new Runnable() { public void run() { if (!managedForm.getForm().isDisposed()) { discoveryViewer.updateDiscovery(); } } }); discoveryViewer.addSelectionChangedListener(new ISelectionChangedListener() { public void selectionChanged(SelectionChangedEvent event) { installButton.setEnabled(discoveryViewer.isComplete()); } }); }
From source file:org.springsource.ide.eclipse.dashboard.internal.ui.editors.DashboardMainPage.java
License:Open Source License
private void createFeedsSection(Composite parent, final String title, FeedType feedType, String feedName) { final Section section = new Section(parent, ExpandableComposite.TITLE_BAR) { @Override// ww w. j a v a 2s .c o m public void redraw() { GridData compositeData = (GridData) feedsScrolled.getLayoutData(); compositeData.widthHint = getSize().x - 35; compositeData.heightHint = getSize().y - 40; compositeData.grabExcessHorizontalSpace = false; compositeData.grabExcessVerticalSpace = false; super.redraw(); } }; form.addControlListener(new ControlAdapter() { @Override public void controlResized(ControlEvent e) { GridData data = (GridData) section.getLayoutData(); data.heightHint = form.getSize().y - FEEDS_TEXT_WRAP_INDENT; } }); toolkit.adapt(section); section.setTitleBarForeground(toolkit.getColors().getColor(IFormColors.TB_TOGGLE)); section.setTitleBarBackground(toolkit.getColors().getColor(IFormColors.TB_BG)); section.setTitleBarBorderColor(toolkit.getColors().getColor(IFormColors.TB_BORDER)); section.setFont(FormFonts.getInstance().getBoldFont(getSite().getShell().getDisplay(), section.getFont())); section.setText(title); section.setLayout(new GridLayout()); GridDataFactory.fillDefaults().grab(true, true).hint(300, 300).applyTo(section); final Composite headerComposite = toolkit.createComposite(section, SWT.NONE); RowLayout rowLayout = new RowLayout(); rowLayout.marginTop = 0; rowLayout.marginBottom = 0; headerComposite.setLayout(rowLayout); headerComposite.setBackground(null); ToolBarManager toolBarManager = new ToolBarManager(SWT.FLAT); toolBarManager.createControl(headerComposite); final PageBook pagebook = new PageBook(section, SWT.NONE); toolkit.adapt(pagebook); pagebook.setLayoutData(new GridLayout()); final Composite disclaimer = createDisclaimer(pagebook); feedsScrolled = new ScrolledComposite(pagebook, SWT.V_SCROLL); feedsScrolled.setExpandVertical(false); feedsScrolled.setLayout(new GridLayout()); feedsScrolled.setAlwaysShowScrollBars(false); GridDataFactory.fillDefaults().grab(true, false).applyTo(feedsScrolled); toolkit.adapt(feedsScrolled); feedsComposite = toolkit.createComposite(feedsScrolled); feedsComposite.setLayout(new TableWrapLayout()); GridDataFactory.fillDefaults().grab(true, false).applyTo(feedsComposite); feedsScrolled.setContent(feedsComposite); feedsComposite.addPaintListener(new PaintListener() { public void paintControl(PaintEvent e) { GridData data = (GridData) feedsComposite.getLayoutData(); data.widthHint = section.getSize().x - FEEDS_TEXT_WRAP_INDENT; data.heightHint = form.getSize().y - 50; } }); section.addControlListener(new ControlAdapter() { @Override public void controlResized(ControlEvent e) { GridData data = (GridData) feedsScrolled.getLayoutData(); data.heightHint = form.getSize().y - 50; data.grabExcessVerticalSpace = false; feedsScrolled.setSize(section.getSize().x - 40, form.getSize().y - 50); for (Control feedControl : feedControls) { ((TableWrapData) feedControl.getLayoutData()).maxWidth = section.getSize().x - FEEDS_TEXT_WRAP_INDENT; // Point size = feedControl.computeSize(data.widthHint, // 400); // feedControl.setSize(size); // feedControl.pack(true); } feedsComposite.pack(); }; }); feedControls = new HashSet<Control>(); final Map<String, String> springMap = new HashMap<String, String>(); String[] urls = ResourceProvider.getUrls(RESOURCE_DASHBOARD_FEEDS_BLOGS); for (String url : urls) { springMap.put(url, null); } getEditorSite().getShell().getDisplay().asyncExec(new Runnable() { public void run() { FeedsReader reader = new FeedsReader(); CachedFeedsManager manager = new CachedFeedsManager(title, springMap, reader); try { manager.readCachedFeeds(null); Set<SyndEntry> entries = new HashSet<SyndEntry>(); for (SyndFeed entry : reader.getFeeds()) { entries.addAll(entry.getEntries()); } if (!getManagedForm().getForm().isDisposed()) { displayFeeds(entries, feedsComposite, feedsScrolled, pagebook, disclaimer, section); } } catch (IllegalArgumentException e) { StatusHandler.log(new Status(IStatus.ERROR, IdeUiPlugin.PLUGIN_ID, "An unexpected error occurred while retrieving feed content from cache.", e)); } catch (FeedException e) { StatusHandler.log(new Status(IStatus.ERROR, IdeUiPlugin.PLUGIN_ID, "An unexpected error occurred while retrieving feed content from cache.", e)); } } }); refreshFeedsAction = new Action("Refresh Feeds", CommonImages.REFRESH) { @Override public void run() { Map<String, String> springMap = getFeedsMap(); displayFeeds(feedsComposite, feedsScrolled, pagebook, disclaimer, springMap, title, section); } }; Action configureURLsAction = new Action("Configure URLs", StsUiImages.RSS_CONFIGURE) { @Override public void run() { PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(getSite().getShell(), URL_CONFIGURATION_ID, new String[] { URL_CONFIGURATION_ID }, null); dialog.open(); } }; section.setClient(pagebook); section.setTextClient(headerComposite); toolBarManager.add(configureURLsAction); toolBarManager.add(refreshFeedsAction); toolBarManager.update(true); refreshFeedsAction.run(); }
From source file:org.springsource.ide.eclipse.dashboard.internal.ui.editors.DashboardMainPage.java
License:Open Source License
private Composite createDisclaimer(Composite parent) { FormText disclaimer = toolkit.createFormText(parent, true); disclaimer.setForeground(feedColor); disclaimer.setText(/*w w w . j ava 2 s .c om*/ "<form><p>No entries found. Ensure <a href=\"proxy\">firewall and proxy settings</a> are appropriately configured.</p></form>", true, false); disclaimer.addHyperlinkListener(new HyperlinkAdapter() { @Override public void linkActivated(HyperlinkEvent e) { if ("proxy".equals(e.data)) { PreferenceDialog dialog = PreferencesUtil.createPreferenceDialogOn(null, PROXY_PREF_PAGE_ID, null, null); dialog.open(); } } }); return disclaimer; }
From source file:org.springsource.ide.eclipse.gradle.ui.JavaHomeSection.java
License:Open Source License
public void createContents(Composite page) { GridDataFactory grabHorizontal = GridDataFactory.fillDefaults().grab(true, false); Label label = new Label(page, SWT.NONE); label.setText("Java Home (requires Gradle 1.0.RC1 or later)"); //Alternative 1 Composite composite = new Composite(page, SWT.NONE); GridLayout layout = new GridLayout(3, false); composite.setLayout(layout);//w w w .j a v a 2s . co m grabHorizontal.applyTo(composite); defaultButton = new Button(composite, SWT.RADIO); defaultButton.setText("Use Gradle wrapper's default"); GridDataFactory span = GridDataFactory.fillDefaults().span(3, 1); span.applyTo(defaultButton); //Alternative 2: choose a workspace JRE customHomeButton = new Button(composite, SWT.RADIO); customHomeButton.setText("Workspace JRE: "); customHomeButton.setToolTipText("Use a specific Java installation configured in this workspace"); customJRECombo = new Combo(composite, SWT.DROP_DOWN + SWT.READ_ONLY); refreshJREs(); browseHomeButton = new Button(composite, SWT.PUSH); browseHomeButton.setText("Configure JREs"); customHomeButton.addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent e) { enableDisableWidgets(); } public void widgetDefaultSelected(SelectionEvent e) { } }); browseHomeButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { @SuppressWarnings("restriction") IPreferencePage page = new org.eclipse.jdt.internal.debug.ui.jres.JREsPreferencePage(); PreferenceManager mgr = new PreferenceManager(); IPreferenceNode node = new PreferenceNode("1", page); mgr.addToRoot(node); PreferenceDialog dialog = new PreferenceDialog(owner.getShell(), mgr); dialog.create(); dialog.setMessage(page.getTitle()); dialog.open(); refreshJREs(); // System.out.println("kdvolder"); // PreferenceDialog w = PreferencesUtil.createPreferenceDialogOn(owner.getShell(), JRE_PREF_PAGE_ID, new String[] {JRE_PREF_PAGE_ID, GradlePreferencesPage.ID}, null); // w.setBlockOnOpen(true); // w.open(); // //Eclipse only allows one preferences dialog to be open at the same time // //We only get here after user closed dialog, so we must reopen it on the Gradle preferences page. // PreferencesUtil.createPreferenceDialogOn(null, GradlePreferencesPage.ID, new String[] {JRE_PREF_PAGE_ID, GradlePreferencesPage.ID}, null).open(); } }); customJRECombo.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { validator.refresh(); } }); grabHorizontal.applyTo(customJRECombo); setJavaHomeInPage(getJavaHome()); enableDisableWidgets(); }
From source file:org.springsource.ide.eclipse.gradle.ui.JavaHomeSectionImpl.java
License:Open Source License
/** * This does more or less what a PageSection implementation of createContents should do (i.e. * create the widgets on the page).//from ww w . j a va2 s . com * <p> * However, it does not fill the widget contents with the contents of the preferences because * this implementation may not yet be connected to a preferences store yet when the widgets * are being created. It is up to the caller/client to make sure a to call copyFrom method * to (re)initialise the widget contents at an appropriate time. * * @param page */ public void createWidgets(Composite page) { GridDataFactory grabHor = GridDataFactory.fillDefaults().grab(true, false); Group group = null; if (!border) { Label label = new Label(page, SWT.NONE); label.setText(TITLE); } else { group = new Group(page, SWT.BORDER); group.setText(TITLE); } //Alternative 1 Composite composite = border ? group : new Composite(page, SWT.NONE); GridLayout layout = new GridLayout(3, false); composite.setLayout(layout); grabHor.applyTo(composite); defaultButton = new Button(composite, SWT.RADIO); defaultButton.setText("Use Gradle wrapper's default"); GridDataFactory span = GridDataFactory.fillDefaults().span(3, 1); span.applyTo(defaultButton); //Alternative 2: choose a workspace JRE customHomeButton = new Button(composite, SWT.RADIO); customHomeButton.setText("Workspace JRE: "); customHomeButton.setToolTipText("Use a specific Java installation configured in this workspace"); customJRECombo = new Combo(composite, SWT.DROP_DOWN + SWT.READ_ONLY); configureJREsButton = new Button(composite, SWT.PUSH); configureJREsButton.setText("Configure JREs"); grabHor.applyTo(configureJREsButton); grabHor.applyTo(customJRECombo); //Alternative 3: choose an execution environment customExecutionEnvButton = new Button(composite, SWT.RADIO); customExecutionEnvButton.setText("Execution Environment"); customExecutionEnvButton.setToolTipText("Specify a JRE indirectly via an execution environment"); customExecutionEnvCombo = new Combo(composite, SWT.DROP_DOWN + SWT.READ_ONLY); configureExecEnvsButton = new Button(composite, SWT.PUSH); configureExecEnvsButton.setText("Configure EEs"); grabHor.applyTo(configureExecEnvsButton); grabHor.applyTo(customExecutionEnvCombo); refreshJREs(); customHomeButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { enableDisableWidgets(customHomeButton, customJRECombo, configureJREsButton); doRefresh(); } }); customExecutionEnvButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { enableDisableWidgets(customExecutionEnvButton, customExecutionEnvCombo, configureExecEnvsButton); doRefresh(); } }); configureJREsButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { @SuppressWarnings("restriction") IPreferencePage page = new org.eclipse.jdt.internal.debug.ui.jres.JREsPreferencePage(); PreferenceManager mgr = new PreferenceManager(); IPreferenceNode node = new PreferenceNode("1", page); mgr.addToRoot(node); PreferenceDialog dialog = new PreferenceDialog(owner.getShell(), mgr); dialog.create(); dialog.setMessage(page.getTitle()); dialog.open(); refreshJREs(); } }); configureExecEnvsButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { @SuppressWarnings("restriction") IPreferencePage page = new org.eclipse.jdt.internal.debug.ui.jres.ExecutionEnvironmentsPreferencePage(); PreferenceManager mgr = new PreferenceManager(); IPreferenceNode node = new PreferenceNode("1", page); mgr.addToRoot(node); PreferenceDialog dialog = new PreferenceDialog(owner.getShell(), mgr); dialog.create(); dialog.setMessage(page.getTitle()); dialog.open(); refreshJREs(); } }); customJRECombo.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { doRefresh(); } }); customExecutionEnvCombo.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { doRefresh(); } }); grabHor.applyTo(customJRECombo); }