Search in sources :

Example 6 with ConfigurableExtension

use of org.springsource.ide.eclipse.commons.configurator.ConfigurableExtension in project eclipse-integration-commons by spring-projects.

the class ConfiguratorImporter method lazyStartup.

public void lazyStartup() {
    List<String> commandLineArgs = Arrays.asList(Platform.getCommandLineArgs());
    if (commandLineArgs.contains("-no-autoconfiguration")) {
        return;
    }
    /*
		 * p2 has a bug (ah, more then one actually): it can't make its mind if it wants
		 * sts.ini or STS.ini so on case sensitive file systems we copy it file again.
		 */
    if (Platform.getOS().equals(Platform.OS_MACOSX)) {
        File upperCaseFile = new File(".", "STS.ini");
        File lowerCaseFile = new File(".", "sts.ini");
        // already. Otherwise copy file over.
        if (upperCaseFile.exists() && !lowerCaseFile.exists()) {
            try {
                FileUtil.copyFile(upperCaseFile, lowerCaseFile, new NullProgressMonitor());
            } catch (CoreException e) {
                StatusHandler.log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Could not copy STS.ini to sts.ini", e));
            }
        }
    }
    // Check if we should run at all
    final boolean configured = Activator.getDefault().getPreferenceStore().getBoolean(Activator.PROPERTY_CONFIGURATOR_PROCESSED);
    final boolean pendingRequests = StringUtils.hasLength(Activator.getDefault().getPreferenceStore().getString(Activator.PROPERTY_CONFIGURE_TARGETS));
    if (configured && !pendingRequests) {
        return;
    }
    Job importJob = new Job("Workspace Configuration") {

        @Override
        public IStatus run(IProgressMonitor monitor) {
            // Rerun workspace participants
            if (pendingRequests) {
                Configurator action = new Configurator();
                action.executePendingRequests();
            }
            // Check if import already ran on the workspace
            if (configured) {
                return Status.OK_STATUS;
            }
            // Mark workspace as being processed before running to avoid
            // re-running on failure
            Activator.getDefault().getPreferenceStore().setValue(Activator.PROPERTY_CONFIGURATOR_PROCESSED, true);
            // Save servers view state for later reset
            boolean isShowOnActivity = ServerUIPlugin.getPreferences().getShowOnActivity();
            // Prevent the servers view from showing up
            ServerUIPlugin.getPreferences().setShowOnActivity(false);
            // Import the sample projects
            List<File> samplesPath = scan(SAMPLES_PATH, null);
            if (samplesPath.size() > 0) {
                for (File sample : samplesPath.get(0).listFiles()) {
                    createProject(monitor, sample);
                }
            }
            // Run external contributed configurators
            List<ConfigurableExtension> extensions = detectExtensions(monitor);
            for (ConfigurableExtension extension : extensions) {
                // avoid adding old runtime/server versions
                if (extension.isAutoConfigurable()) {
                    extension.configure(monitor);
                }
            }
            // Reset the servers view to original state
            ServerUIPlugin.getPreferences().setShowOnActivity(isShowOnActivity);
            lazyStartupJobLatch.countDown();
            return Status.OK_STATUS;
        }
    };
    importJob.setRule(ResourcesPlugin.getWorkspace().getRuleFactory().buildRule());
    importJob.schedule();
}
Also used : IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) CoreException(org.eclipse.core.runtime.CoreException) ConfigurableExtension(org.springsource.ide.eclipse.commons.configurator.ConfigurableExtension) Job(org.eclipse.core.runtime.jobs.Job) File(java.io.File)

Example 7 with ConfigurableExtension

use of org.springsource.ide.eclipse.commons.configurator.ConfigurableExtension in project eclipse-integration-commons by spring-projects.

the class ConfiguratorPreferencesPage method createContents.

@Override
protected Control createContents(Composite parent) {
    Composite composite = new Composite(parent, SWT.NONE);
    GridLayoutFactory.fillDefaults().numColumns(2).applyTo(composite);
    Label label = new Label(composite, SWT.WRAP);
    label.setText("Configurable Extensions:");
    GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(label);
    extensionViewer = new TableViewer(composite, SWT.BORDER | SWT.V_SCROLL | SWT.FULL_SELECTION | SWT.SINGLE);
    extensionViewer.getTable().setHeaderVisible(true);
    extensionViewer.getTable().setLinesVisible(true);
    extensionViewer.setSorter(new ViewerSorter() {

        @SuppressWarnings("unchecked")
        @Override
        public int compare(Viewer viewer, Object e1, Object e2) {
            String name1 = ((ConfigurableExtension) e1).getLabel();
            String name2 = ((ConfigurableExtension) e2).getLabel();
            return getComparator().compare(name1, name2);
        }
    });
    extensionViewer.setContentProvider(new IStructuredContentProvider() {

        Object[] elements;

        public void dispose() {
        // ignore
        }

        public Object[] getElements(Object inputElement) {
            return elements;
        }

        public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
            this.elements = (Object[]) newInput;
        }
    });
    GridDataFactory.fillDefaults().grab(true, true).applyTo(extensionViewer.getControl());
    TableViewerColumn statusColumn = new TableViewerColumn(extensionViewer, SWT.LEFT);
    statusColumn.getColumn().setText("");
    statusColumn.getColumn().setToolTipText("Configured");
    statusColumn.getColumn().setWidth(20);
    statusColumn.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public Image getImage(Object element) {
            if (((ConfigurableExtension) element).isConfigured()) {
                return CommonImages.getImage(CommonImages.COMPLETE);
            }
            return null;
        }

        @Override
        public String getText(Object element) {
            return "";
        }
    });
    TableViewerColumn extensionColumn = new TableViewerColumn(extensionViewer, SWT.LEFT);
    extensionColumn.getColumn().setText("Extension");
    extensionColumn.getColumn().setWidth(250);
    extensionColumn.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            return ((ConfigurableExtension) element).getLabel();
        }
    });
    TableViewerColumn locationColumn = new TableViewerColumn(extensionViewer, SWT.LEFT);
    locationColumn.getColumn().setText("Location");
    locationColumn.getColumn().setWidth(150);
    locationColumn.setLabelProvider(new ColumnLabelProvider() {

        @Override
        public String getText(Object element) {
            return ((ConfigurableExtension) element).getLocation();
        }
    });
    extensionViewer.setInput(elements.toArray());
    Composite buttonComposite = new Composite(composite, SWT.NONE);
    GridDataFactory.fillDefaults().grab(false, true).applyTo(buttonComposite);
    RowLayout layout = new RowLayout(SWT.VERTICAL);
    layout.fill = true;
    layout.marginLeft = 0;
    layout.marginTop = 0;
    layout.marginRight = 0;
    layout.marginBottom = 0;
    buttonComposite.setLayout(layout);
    configureButton = new Button(buttonComposite, SWT.NONE);
    configureButton.setText(" &Configure ");
    configureButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent event) {
            ConfigurableExtension extension = getSelectedExtension(extensionViewer.getSelection());
            if (extension != null) {
                doConfigure(extension);
            }
        }
    });
    installButton = new Button(buttonComposite, SWT.NONE);
    installButton.setText(" &Install ");
    installButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent event) {
            IStructuredSelection selection = (IStructuredSelection) extensionViewer.getSelection();
            ConfigurableExtension extension = (ConfigurableExtension) selection.getFirstElement();
            if (extension != null) {
                doInstall(extension);
            }
        }
    });
    Button refreshButton = new Button(buttonComposite, SWT.NONE);
    refreshButton.setText(" &Refresh ");
    refreshButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent event) {
            doRefresh();
        }
    });
    extensionViewer.addSelectionChangedListener(new ISelectionChangedListener() {

        public void selectionChanged(SelectionChangedEvent event) {
            updateSelection(event.getSelection());
        }
    });
    updateSelection(extensionViewer.getSelection());
    Group locationGroup = new Group(composite, SWT.NONE);
    GridDataFactory.fillDefaults().grab(true, false).span(2, 1).applyTo(locationGroup);
    locationGroup.setText("Runtime Locations");
    GridLayoutFactory.swtDefaults().numColumns(3).applyTo(locationGroup);
    File systemLocation = importer.getSystemLocation();
    if (systemLocation != null) {
        label = new Label(locationGroup, SWT.WRAP);
        label.setText("Search path for runtimes:");
        GridDataFactory.fillDefaults().grab(true, false).hint(100, SWT.DEFAULT).span(3, 1).applyTo(label);
        searchLocationsLabel = new Label(locationGroup, SWT.NONE);
        GridDataFactory.fillDefaults().grab(true, false).hint(100, SWT.DEFAULT).span(3, 1).applyTo(searchLocationsLabel);
    }
    useDefaultUserLocationButton = new Button(locationGroup, SWT.CHECK);
    GridDataFactory.fillDefaults().grab(true, false).span(3, 1).applyTo(useDefaultUserLocationButton);
    useDefaultUserLocationButton.setText("Use Default");
    useDefaultUserLocationButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent event) {
            userLocationText.setEnabled(!useDefaultUserLocationButton.getSelection());
            browseButton.setEnabled(!useDefaultUserLocationButton.getSelection());
            if (useDefaultUserLocationButton.getSelection()) {
                resetUserLocation();
            }
        }
    });
    label = new Label(locationGroup, SWT.WRAP);
    label.setText("Install Location:");
    userLocationText = new Text(locationGroup, SWT.BORDER);
    userLocationText.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
    userLocationText.addModifyListener(new ModifyListener() {

        public void modifyText(ModifyEvent event) {
            try {
                File file = new File(userLocationText.getText());
                if (!file.canWrite()) {
                    setErrorMessage(NLS.bind("''{0}'' is not writeable. Please select a different directory.", userLocationText.getText()));
                    setInstallEnabled(false);
                } else {
                    setErrorMessage(null);
                    setInstallEnabled(true);
                }
            } catch (Exception e) {
                setErrorMessage(NLS.bind("''{0}'' is not a valid path.", userLocationText.getText()));
                setInstallEnabled(false);
            }
        }
    });
    browseButton = new Button(locationGroup, SWT.NONE);
    browseButton.setText("Directory...");
    browseButton.addSelectionListener(new SelectionAdapter() {

        @Override
        public void widgetSelected(SelectionEvent e) {
            DirectoryDialog dialog = new DirectoryDialog(getShell());
            dialog.setMessage("Select the root directory for installing extensions.");
            String path = userLocationText.getText();
            path = path.replaceAll("\\\\", "/");
            dialog.setFilterPath(path);
            path = dialog.open();
            if (path == null || path.equals("")) {
                // $NON-NLS-1$
                return;
            }
            path = path.replaceAll("\\\\", "/");
            userLocationText.setText(path);
        }
    });
    initWidgets();
    return composite;
}
Also used : Group(org.eclipse.swt.widgets.Group) ModifyListener(org.eclipse.swt.events.ModifyListener) Label(org.eclipse.swt.widgets.Label) ViewerSorter(org.eclipse.jface.viewers.ViewerSorter) TableViewer(org.eclipse.jface.viewers.TableViewer) Viewer(org.eclipse.jface.viewers.Viewer) SelectionChangedEvent(org.eclipse.jface.viewers.SelectionChangedEvent) IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) Image(org.eclipse.swt.graphics.Image) ColumnLabelProvider(org.eclipse.jface.viewers.ColumnLabelProvider) ModifyEvent(org.eclipse.swt.events.ModifyEvent) Button(org.eclipse.swt.widgets.Button) RowLayout(org.eclipse.swt.layout.RowLayout) SelectionEvent(org.eclipse.swt.events.SelectionEvent) ConfigurableExtension(org.springsource.ide.eclipse.commons.configurator.ConfigurableExtension) TableViewerColumn(org.eclipse.jface.viewers.TableViewerColumn) DirectoryDialog(org.eclipse.swt.widgets.DirectoryDialog) Composite(org.eclipse.swt.widgets.Composite) SelectionAdapter(org.eclipse.swt.events.SelectionAdapter) ISelectionChangedListener(org.eclipse.jface.viewers.ISelectionChangedListener) Text(org.eclipse.swt.widgets.Text) CoreException(org.eclipse.core.runtime.CoreException) OperationCanceledException(org.eclipse.core.runtime.OperationCanceledException) InvocationTargetException(java.lang.reflect.InvocationTargetException) IStructuredContentProvider(org.eclipse.jface.viewers.IStructuredContentProvider) GridData(org.eclipse.swt.layout.GridData) TableViewer(org.eclipse.jface.viewers.TableViewer) File(java.io.File)

Example 8 with ConfigurableExtension

use of org.springsource.ide.eclipse.commons.configurator.ConfigurableExtension in project eclipse-integration-commons by spring-projects.

the class ConfiguratorPreferencesPage method getSelectedExtension.

private ConfigurableExtension getSelectedExtension(ISelection selection) {
    IStructuredSelection structuredSelection = (IStructuredSelection) selection;
    ConfigurableExtension extension = (ConfigurableExtension) structuredSelection.getFirstElement();
    return extension;
}
Also used : IStructuredSelection(org.eclipse.jface.viewers.IStructuredSelection) ConfigurableExtension(org.springsource.ide.eclipse.commons.configurator.ConfigurableExtension)

Example 9 with ConfigurableExtension

use of org.springsource.ide.eclipse.commons.configurator.ConfigurableExtension in project eclipse-integration-commons by spring-projects.

the class ServerWorkspaceConfigurator method detectExtensions.

@Override
public List<ConfigurableExtension> detectExtensions(IConfigurationContext context, IProgressMonitor monitor) {
    List<ConfigurableExtension> extensions = new ArrayList<ConfigurableExtension>();
    for (ServerDescriptor descriptor : configurator.getDescriptors()) {
        if (descriptor.getInstallPath() != null) {
            List<File> locations = context.scan(descriptor.getInstallPath(), new VersionRange(descriptor.getVersionRange()));
            boolean autoConfigurable = descriptor.isAutoConfigurable();
            for (File location : locations) {
                ConfigurableServerExtension extension = new ConfigurableServerExtension(descriptor, location);
                extensions.add(extension);
                // auto configure first extension which has the highest
                // version
                extension.setAutoConfigurable(autoConfigurable);
                autoConfigurable = false;
            }
        } else {
            ConfigurableServerExtension extension = new ConfigurableServerExtension(descriptor, null, descriptor.getRuntimeTypeId());
            extension.setAutoConfigurable(descriptor.isAutoConfigurable());
            extensions.add(extension);
        }
    }
    return extensions;
}
Also used : ArrayList(java.util.ArrayList) VersionRange(org.eclipse.osgi.service.resolver.VersionRange) ConfigurableExtension(org.springsource.ide.eclipse.commons.configurator.ConfigurableExtension) File(java.io.File)

Aggregations

ConfigurableExtension (org.springsource.ide.eclipse.commons.configurator.ConfigurableExtension)9 CoreException (org.eclipse.core.runtime.CoreException)4 File (java.io.File)3 ArrayList (java.util.ArrayList)3 NullProgressMonitor (org.eclipse.core.runtime.NullProgressMonitor)3 InvocationTargetException (java.lang.reflect.InvocationTargetException)2 List (java.util.List)2 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)2 ISafeRunnable (org.eclipse.core.runtime.ISafeRunnable)2 IStatus (org.eclipse.core.runtime.IStatus)2 Status (org.eclipse.core.runtime.Status)2 IStructuredSelection (org.eclipse.jface.viewers.IStructuredSelection)2 WorkspaceConfiguratorParticipant (org.springsource.ide.eclipse.commons.configurator.WorkspaceConfiguratorParticipant)2 HashSet (java.util.HashSet)1 AtomicBoolean (java.util.concurrent.atomic.AtomicBoolean)1 MultiStatus (org.eclipse.core.runtime.MultiStatus)1 OperationCanceledException (org.eclipse.core.runtime.OperationCanceledException)1 Job (org.eclipse.core.runtime.jobs.Job)1 IRunnableWithProgress (org.eclipse.jface.operation.IRunnableWithProgress)1 ColumnLabelProvider (org.eclipse.jface.viewers.ColumnLabelProvider)1