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();
}
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;
}
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;
}
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;
}
Aggregations