diff --git a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/IRSECoreRegistry.java b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/IRSECoreRegistry.java index 7c2ff58b47a..35c77784a8f 100644 --- a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/IRSECoreRegistry.java +++ b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/IRSECoreRegistry.java @@ -29,20 +29,26 @@ public interface IRSECoreRegistry { /** * Returns all defined system types. + * * @return an array of all defined system types. */ public IRSESystemType[] getSystemTypes(); - /** - * Returns the names of all defined system types. - * @return all defined system type names - */ - public String[] getSystemTypeNames(); - /** * Returns a system type object given the name. + * * @param name the name of the system type * @return the system type object with the given name, or null if none is found + * + * @deprecated Use {@link #getSystemTypeById(String)}. */ public IRSESystemType getSystemType(String name); + + /** + * Returns a system type object given by the id. + * + * @param systemTypeId The system type id. + * @return The system type object with the given id, or null if none is found + */ + public IRSESystemType getSystemTypeById(String systemTypeId); } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/internal/RSECoreRegistry.java b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/internal/RSECoreRegistry.java index 37e0a68892a..47046f92522 100644 --- a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/internal/RSECoreRegistry.java +++ b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/internal/RSECoreRegistry.java @@ -77,8 +77,7 @@ public class RSECoreRegistry implements IRSECoreRegistry { return instance; } - /** - * Returns all system types that have been defined. + /* (non-Javadoc) * @see org.eclipse.rse.core.IRSECoreRegistry#getSystemTypes() */ public IRSESystemType[] getSystemTypes() { @@ -91,12 +90,25 @@ public class RSECoreRegistry implements IRSECoreRegistry { return systemTypes; } - /** - * Returns the system type with the given name. + /* (non-Javadoc) + * @see org.eclipse.rse.core.IRSECoreRegistry#getSystemTypeById(java.lang.String) + */ + public IRSESystemType getSystemTypeById(String systemTypeId) { + if (systemTypeId != null) { + IRSESystemType[] types = getSystemTypes(); + for (int i = 0; i < types.length; i++) { + if (types[i].getId().equals(systemTypeId)) { + return types[i]; + } + } + } + return null; + } + + /* (non-Javadoc) * @see org.eclipse.rse.core.IRSECoreRegistry#getSystemType(java.lang.String) */ public IRSESystemType getSystemType(String name) { - IRSESystemType[] types = getSystemTypes(); for (int i = 0; i < types.length; i++) { @@ -110,21 +122,6 @@ public class RSECoreRegistry implements IRSECoreRegistry { return null; } - /** - * @see org.eclipse.rse.core.IRSECoreRegistry#getSystemTypeNames() - */ - public String[] getSystemTypeNames() { - IRSESystemType[] types = getSystemTypes(); - String[] names = new String[types.length]; - - for (int i = 0; i < types.length; i++) { - IRSESystemType type = types[i]; - names[i] = type.getName(); - } - - return names; - } - /** * Reads system types from the extension point registry and returns the defined system types. * @return an array of system types that have been defined diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/SystemWidgetHelpers.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/SystemWidgetHelpers.java index 97ae70c7c1c..9a3640bfa6f 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/SystemWidgetHelpers.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/SystemWidgetHelpers.java @@ -20,6 +20,7 @@ import java.util.Arrays; import java.util.Locale; import org.eclipse.jface.action.IAction; +import org.eclipse.rse.core.IRSESystemType; import org.eclipse.rse.core.RSECorePlugin; import org.eclipse.rse.core.SystemBasePlugin; import org.eclipse.rse.core.model.IHost; @@ -772,7 +773,7 @@ public class SystemWidgetHelpers { List list = createListBox(group, listener, false, null, SystemResources.RESID_CONNECTION_SYSTEMTYPE_TIP); - String[] typeItems = ((systemTypes == null) ? RSECorePlugin.getDefault().getRegistry().getSystemTypeNames() : systemTypes); + String[] typeItems = ((systemTypes == null) ? getSystemTypeNames() : systemTypes); if (systemTypes == null) { for (int i = 0; i < typeItems.length; i++) { @@ -1126,13 +1127,28 @@ public class SystemWidgetHelpers { return createSystemTypeCombo(parent, listener, null); } + private static String[] systemTypeNames = null; + + /** + * Internal method. Helper to get the list of registered system type names. + */ + private static String[] getSystemTypeNames() { + if (systemTypeNames == null) { + java.util.List names = new ArrayList(); + IRSESystemType[] systemTypes = RSECorePlugin.getDefault().getRegistry().getSystemTypes(); + for (int i = 0; i < systemTypes.length; i++) names.add(systemTypes[i].getName()); + systemTypeNames = (String[])names.toArray(new String[names.size()]); + } + return systemTypeNames; + } + /** * Creates a readonly system type combination box with the given system types. * Does NOT create the leading prompt or anything except the combo. */ public static Combo createSystemTypeCombo(Composite parent, Listener listener, String[] systemTypes) { Combo combo = createReadonlyCombo(parent, listener, SystemResources.RESID_CONNECTION_SYSTEMTYPE_TIP); - String[] typeItems = ((systemTypes == null) ? RSECorePlugin.getDefault().getRegistry().getSystemTypeNames() : systemTypes); + String[] typeItems = ((systemTypes == null) ? getSystemTypeNames() : systemTypes); ArrayList list = new ArrayList(); diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/actions/SystemNewConnectionAction.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/actions/SystemNewConnectionAction.java index 23b447395e0..59beac6d410 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/actions/SystemNewConnectionAction.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/actions/SystemNewConnectionAction.java @@ -35,6 +35,8 @@ import org.eclipse.rse.ui.ISystemIconConstants; import org.eclipse.rse.ui.RSEUIPlugin; import org.eclipse.rse.ui.SystemResources; import org.eclipse.rse.ui.wizards.newconnection.RSEMainNewConnectionWizard; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Shell; @@ -132,18 +134,34 @@ public class SystemNewConnectionAction extends SystemBaseWizardAction { protected WizardDialog doCreateWizardDialog(Shell shell, IWizard wizard) { // The new connection action is always using the standard Eclipse WizardDialog!!! WizardDialog dialog = new WizardDialog(getShell(), wizard) { -// protected Rectangle getConstrainedShellBounds(Rectangle preferredSize) { -// Rectangle bounds = super.getConstrainedShellBounds(preferredSize); -// // We allow to resize the dialog in height, but not in width -// // to more to 500 pixel. -// bounds.width = Math.min(bounds.width, 500); -// return bounds; -// } -// protected Point getInitialSize() { -// Point size = super.getInitialSize(); -// size.x = 500; -// return size; -// } + private boolean computeShellSizeFromScratch = true; + + /* (non-Javadoc) + * @see org.eclipse.jface.window.Window#getConstrainedShellBounds(org.eclipse.swt.graphics.Rectangle) + */ + protected Rectangle getConstrainedShellBounds(Rectangle preferredSize) { + // The parent shell might have very large bounds if badly selected. We + // will recalculate the wizard dialogs shell size the first time we end + // up here. That asures that the dialog does not inherit shell bounds + // from a much larger window. + if (computeShellSizeFromScratch) { + Point newSize = getInitialSize(); + Point newLoaction = getInitialLocation(newSize); + + preferredSize.height = newSize.y; + preferredSize.width = newSize.x; + preferredSize.y = newLoaction.y; + preferredSize.x = newLoaction.x; + + computeShellSizeFromScratch = false; + } + + Rectangle bounds = super.getConstrainedShellBounds(preferredSize); + // We allow to resize the dialog in height, but not in width + // to more to 500 pixel. + bounds.width = Math.min(bounds.width, 500); + return bounds; + } }; return dialog; diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/propertypages/RemoteSystemsPreferencePage.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/propertypages/RemoteSystemsPreferencePage.java index 3c157f45415..41518815a44 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/propertypages/RemoteSystemsPreferencePage.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/propertypages/RemoteSystemsPreferencePage.java @@ -18,10 +18,14 @@ package org.eclipse.rse.ui.propertypages; +import java.util.ArrayList; +import java.util.List; + import org.eclipse.jface.preference.FieldEditorPreferencePage; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.util.PropertyChangeEvent; import org.eclipse.rse.core.IRSEPreferenceNames; +import org.eclipse.rse.core.IRSESystemType; import org.eclipse.rse.core.RSECorePlugin; import org.eclipse.rse.core.model.ISystemPreferenceChangeEvents; import org.eclipse.rse.internal.model.SystemPreferenceChangeEvent; @@ -91,11 +95,15 @@ public class RemoteSystemsPreferencePage { IPreferenceStore coreStore = new PreferencesMapper(RSECorePlugin.getDefault().getPluginPreferences()); + List systemTypeNames = new ArrayList(); + IRSESystemType[] systemTypes = RSECorePlugin.getDefault().getRegistry().getSystemTypes(); + for (int i = 0; i < systemTypes.length; i++) systemTypeNames.add(systemTypes[i].getName()); + // DEFAULT SYSTEM TYPE SystemComboBoxFieldEditor systemTypeEditor = new SystemComboBoxFieldEditor( IRSEPreferenceNames.SYSTEMTYPE, SystemResources.RESID_PREF_SYSTEMTYPE_PREFIX_LABEL, - RSECorePlugin.getDefault().getRegistry().getSystemTypeNames(), + (String[])systemTypeNames.toArray(new String[systemTypeNames.size()]), true, // readonly getFieldEditorParent() ); diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSEMainNewConnectionWizard.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSEMainNewConnectionWizard.java index 7de118d1c46..556d4441290 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSEMainNewConnectionWizard.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSEMainNewConnectionWizard.java @@ -21,6 +21,7 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; +import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionProvider; @@ -32,6 +33,7 @@ import org.eclipse.jface.wizard.IWizardContainer; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.jface.wizard.Wizard; import org.eclipse.rse.core.IRSESystemType; +import org.eclipse.rse.core.RSECorePlugin; import org.eclipse.rse.ui.ISystemIconConstants; import org.eclipse.rse.ui.RSEUIPlugin; import org.eclipse.rse.ui.SystemResources; @@ -43,8 +45,11 @@ import org.eclipse.ui.IWorkbench; * The New Connection wizard. This wizard allows users to create new RSE connections. */ public class RSEMainNewConnectionWizard extends Wizard implements INewWizard, ISelectionProvider { + protected static final String LAST_SELECTED_SYSTEM_TYPE_ID = "lastSelectedSystemTypeId"; //$NON-NLS-1$ + private IWizard selectedWizard; private IRSESystemType selectedSystemType; + private boolean selectedWizardCanFinishEarly; private final RSENewConnectionWizardSelectionPage mainPage; private final List initializedWizards = new LinkedList(); @@ -61,12 +66,21 @@ public class RSEMainNewConnectionWizard extends Wizard implements INewWizard, IS setWindowTitle(SystemResources.RESID_NEWCONN_TITLE); setForcePreviousAndNextButtons(true); setNeedsProgressMonitor(true); + + // Initialize the dialog settings for this wizard + IDialogSettings settings = RSEUIPlugin.getDefault().getDialogSettings(); + String sectionName = this.getClass().getName(); + if (settings.getSection(sectionName) == null) settings.addNewSection(sectionName); + setDialogSettings(settings.getSection(sectionName)); mainPage = new RSENewConnectionWizardSelectionPage(); initializedWizards.clear(); selectionChangedListener.clear(); + + // and finally restore the wizard state + restoreFromDialogSettings(); } - + /* (non-Javadoc) * @see org.eclipse.jface.wizard.Wizard#getDefaultPageImage() */ @@ -141,8 +155,10 @@ public class RSEMainNewConnectionWizard extends Wizard implements INewWizard, IS if (selection instanceof IStructuredSelection && ((IStructuredSelection)selection).getFirstElement() instanceof IRSESystemType) { selectedSystemType = (IRSESystemType)((IStructuredSelection)selection).getFirstElement(); - onSelectedSystemTypeChanged(); + } else { + selectedSystemType = null; } + onSelectedSystemTypeChanged(); } /* (non-Javadoc) @@ -172,7 +188,13 @@ public class RSEMainNewConnectionWizard extends Wizard implements INewWizard, IS // Check if a wizard is registered for the selected system type IRSENewConnectionWizardDescriptor descriptor = getSelection() != null ? RSENewConnectionWizardRegistry.getInstance().getWizardForSelection((IStructuredSelection)getSelection()) : null; - selectedWizard = descriptor != null ? descriptor.getWizard() : null; + if (descriptor != null) { + selectedWizard = descriptor.getWizard(); + selectedWizardCanFinishEarly = descriptor.canFinishEarly(); + } else { + selectedWizard = null; + selectedWizardCanFinishEarly = false; + } // register the newly selected wizard as selection changed listener if (selectedWizard instanceof ISelectionChangedListener) { @@ -229,18 +251,49 @@ public class RSEMainNewConnectionWizard extends Wizard implements INewWizard, IS return nextPage; } + /* (non-Javadoc) + * @see org.eclipse.jface.wizard.Wizard#canFinish() + */ + public boolean canFinish() { + // We can finish from the main new connection wizard only if the selected + // wizard can finish early + return selectedWizardCanFinishEarly; + } + /* (non-Javadoc) * @see org.eclipse.rse.ui.wizards.AbstractSystemWizard#performFinish() */ public boolean performFinish() { - boolean result = true; - if (mainPage != null) result = mainPage.performFinish(); - // Note: Do _NOT_ delegate the performFinish from here to the selected // wizard!! The outer wizard dialog is handling the nested wizards by // default already itself!! - return result; + // Save the current selection to the dialog settings + IDialogSettings dialogSettings = getDialogSettings(); + if (dialogSettings != null && getSelection() instanceof IStructuredSelection) { + IStructuredSelection selection = (IStructuredSelection)getSelection(); + if (selection.getFirstElement() instanceof IRSESystemType) { + dialogSettings.put(LAST_SELECTED_SYSTEM_TYPE_ID, ((IRSESystemType)selection.getFirstElement()).getId()); + } + } + + return true; } -} \ No newline at end of file + /** + * Restore the persistent saved wizard state. This method + * is called from the wizards constructor. + */ + protected void restoreFromDialogSettings() { + IDialogSettings dialogSettings = getDialogSettings(); + if (dialogSettings != null) { + String systemTypeId = dialogSettings.get(LAST_SELECTED_SYSTEM_TYPE_ID); + if (systemTypeId != null) { + IRSESystemType systemType = RSECorePlugin.getDefault().getRegistry().getSystemTypeById(systemTypeId); + if (systemType != null) { + setSelection(new StructuredSelection(systemType)); + } + } + } + } +} diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardDescriptor.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardDescriptor.java index b1243548a3c..371f097d09c 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardDescriptor.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardDescriptor.java @@ -10,7 +10,6 @@ *******************************************************************************/ package org.eclipse.rse.ui.wizards.newconnection; -import java.util.Arrays; import java.util.LinkedList; import java.util.List; @@ -29,8 +28,8 @@ import org.eclipse.rse.ui.wizards.registries.RSEWizardDescriptor; public class RSENewConnectionWizardDescriptor extends RSEWizardDescriptor implements IRSENewConnectionWizardDescriptor { private final SystemTypeMatcher systemTypeMatcher; - // The list of resolved system types supported by this wizard. - private List resolvedSystemTypes; + // The list of resolved system type ids supported by this wizard. + private List resolvedSystemTypeIds; /** * Constructor @@ -54,14 +53,14 @@ public class RSENewConnectionWizardDescriptor extends RSEWizardDescriptor implem * @see org.eclipse.rse.ui.wizards.newconnection.INewConnectionWizardDescriptor#getSystemTypeIds() */ public String[] getSystemTypeIds() { - if (resolvedSystemTypes == null) { - resolvedSystemTypes = new LinkedList(); + if (resolvedSystemTypeIds == null) { + resolvedSystemTypeIds = new LinkedList(); // If the subsystem configuration supports all system types, just add all // currently registered system types to th resolved list if (systemTypeMatcher.supportsAllSystemTypes()) { - String[] systemTypes = RSECorePlugin.getDefault().getRegistry().getSystemTypeNames(); - if (systemTypes != null) resolvedSystemTypes.addAll(Arrays.asList(systemTypes)); + IRSESystemType[] systemTypes = RSECorePlugin.getDefault().getRegistry().getSystemTypes(); + for (int i = 0; i < systemTypes.length; i++) resolvedSystemTypeIds.add(systemTypes[i].getId()); } else { // We have to match the given lists of system type ids against // the list of available system types. As the list of system types cannot @@ -74,15 +73,15 @@ public class RSENewConnectionWizardDescriptor extends RSEWizardDescriptor implem if (systemTypeMatcher.matches(systemType) || (adapter != null && adapter.acceptWizardDescriptor(getConfigurationElement().getName(), this))) { - if (!resolvedSystemTypes.contains(systemType.getId())) { - resolvedSystemTypes.add(systemType.getId()); + if (!resolvedSystemTypeIds.contains(systemType.getId())) { + resolvedSystemTypeIds.add(systemType.getId()); } } } } } - return (String[])resolvedSystemTypes.toArray(new String[resolvedSystemTypes.size()]); + return (String[])resolvedSystemTypeIds.toArray(new String[resolvedSystemTypeIds.size()]); } } diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardSelectionPage.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardSelectionPage.java index 443fc5be7a9..b821f43d154 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardSelectionPage.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardSelectionPage.java @@ -14,9 +14,11 @@ package org.eclipse.rse.ui.wizards.newconnection; import java.util.Arrays; import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.viewers.AbstractTreeViewer; import org.eclipse.jface.viewers.DecoratingLabelProvider; import org.eclipse.jface.viewers.DoubleClickEvent; +import org.eclipse.jface.viewers.IBasicPropertyConstants; import org.eclipse.jface.viewers.IDoubleClickListener; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.ISelectionProvider; @@ -26,8 +28,10 @@ import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; +import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.jface.wizard.IWizard; +import org.eclipse.jface.wizard.IWizardContainer; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.rse.core.IRSESystemType; import org.eclipse.rse.ui.RSESystemTypeAdapter; @@ -58,6 +62,10 @@ public class RSENewConnectionWizardSelectionPage extends WizardPage { private ViewerFilter filteredTreeWizardStateFilter; private RSENewConnectionWizardSelectionTreeDataManager filteredTreeDataManager; + /** + * Internal class. The wizard state filter is responsible to filter + * out any not enabled wizard from the tree. + */ private class NewConnectionWizardStateFilter extends ViewerFilter { /* (non-Javadoc) @@ -91,6 +99,22 @@ public class RSENewConnectionWizardSelectionPage extends WizardPage { } /** + * Internal class. The wizard viewer comparator is responsible for + * the sorting in the tree. Current implementation is not prioritizing + * categories. + */ + private class NewConnectionWizardViewerComparator extends ViewerComparator { + + /* (non-Javadoc) + * @see org.eclipse.jface.viewers.ViewerComparator#isSorterProperty(java.lang.Object, java.lang.String) + */ + public boolean isSorterProperty(Object element, String property) { + // The comparator is affected if the label of the elements should change. + return property.equals(IBasicPropertyConstants.P_TEXT); + } + } + + /** * Constructor. */ public RSENewConnectionWizardSelectionPage() { @@ -151,13 +175,15 @@ public class RSENewConnectionWizardSelectionPage extends WizardPage { filteredTreeFilter = new RSEWizardSelectionTreePatternFilter(); filteredTree = new FilteredTree(composite, SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL | SWT.BORDER, filteredTreeFilter); filteredTree.setBackground(parent.getDisplay().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); - + GridData layoutData = new GridData(GridData.FILL_BOTH); + layoutData.heightHint = 275; layoutData.widthHint = 450; + filteredTree.setLayoutData(layoutData); + final TreeViewer treeViewer = filteredTree.getViewer(); treeViewer.setContentProvider(new RSEWizardSelectionTreeContentProvider()); // Explicitly allow the tree items to get decorated!!! treeViewer.setLabelProvider(new DecoratingLabelProvider(new RSEWizardSelectionTreeLabelProvider(), PlatformUI.getWorkbench().getDecoratorManager().getLabelDecorator())); -// treeViewer.setComparator(NewWizardCollectionComparator.INSTANCE); -// treeViewer.addSelectionChangedListener(this); + treeViewer.setComparator(new NewConnectionWizardViewerComparator()); treeViewer.setAutoExpandLevel(2); filteredTreeWizardStateFilter = new NewConnectionWizardStateFilter(); @@ -170,7 +196,6 @@ public class RSENewConnectionWizardSelectionPage extends WizardPage { }); treeViewer.addDoubleClickListener(new IDoubleClickListener() { public void doubleClick(DoubleClickEvent event) { -// onSelectionChanged(); if (canFlipToNextPage()) getWizard().getContainer().showPage(getNextPage()); } }); @@ -182,6 +207,19 @@ public class RSENewConnectionWizardSelectionPage extends WizardPage { Dialog.applyDialogFont(composite); setControl(composite); + + // Initialize the selection in the tree + if (getWizard() instanceof ISelectionProvider) { + ISelectionProvider selectionProvider = (ISelectionProvider)getWizard(); + if (selectionProvider.getSelection() instanceof IStructuredSelection) { + IStructuredSelection selection = (IStructuredSelection)selectionProvider.getSelection(); + if (selection.getFirstElement() instanceof IRSESystemType) { + IRSESystemType systemType = (IRSESystemType)selection.getFirstElement(); + RSENewConnectionWizardSelectionTreeElement treeElement = filteredTreeDataManager.getTreeElementForSystemType(systemType); + if (treeElement != null) treeViewer.setSelection(new StructuredSelection(treeElement), true); + } + } + } } /* (non-Javadoc) @@ -192,7 +230,7 @@ public class RSENewConnectionWizardSelectionPage extends WizardPage { } /** - * Called from the selection and double-click listener to propage the current + * Called from the selection listener to propage the current * system type selection to the underlaying wizard. */ protected void onSelectionChanged() { @@ -208,56 +246,33 @@ public class RSENewConnectionWizardSelectionPage extends WizardPage { } else { if (!getDefaultDescription().equals(getDescription())) setDescription(getDefaultDescription()); } + } else { + selectionProvider.setSelection(null); } } + + // Update the wizard container UI elements + IWizardContainer container = getContainer(); + if (container != null && container.getCurrentPage() != null) { + container.updateWindowTitle(); + container.updateTitleBar(); + container.updateButtons(); + } } - - /** - * @see org.eclipse.rse.ui.wizards.AbstractSystemWizardPage#createContents(org.eclipse.swt.widgets.Composite) - */ -// public Control createContents(Composite parent) { -// -// int nbrColumns = 2; -// Composite composite_prompts = SystemWidgetHelpers.createComposite(parent, nbrColumns); -// SystemWidgetHelpers.setCompositeHelp(composite_prompts, parentHelpId); -// -// String temp = SystemWidgetHelpers.appendColon(SystemResources.RESID_CONNECTION_SYSTEMTYPE_LABEL); -// -// Label labelSystemType = SystemWidgetHelpers.createLabel(composite_prompts, temp); -// labelSystemType.setToolTipText(SystemResources.RESID_CONNECTION_SYSTEMTYPE_TIP); -// -// if (restrictedSystemTypes == null) { -// textSystemType = SystemWidgetHelpers.createSystemTypeListBox(parent, null); -// } -// else { -// String[] systemTypeNames = new String[restrictedSystemTypes.length]; -// -// for (int i = 0; i < restrictedSystemTypes.length; i++) { -// systemTypeNames[i] = restrictedSystemTypes[i].getName(); -// } -// -// textSystemType = SystemWidgetHelpers.createSystemTypeListBox(parent, null, systemTypeNames); -// } -// -// textSystemType.setToolTipText(SystemResources.RESID_CONNECTION_SYSTEMTYPE_TIP); -// SystemWidgetHelpers.setHelp(textSystemType, RSEUIPlugin.HELPPREFIX + "ccon0003"); //$NON-NLS-1$ -// -// textSystemType.addSelectionListener(this); -// -// descriptionSystemType = SystemWidgetHelpers.createMultiLineTextField(parent,null,30); -// descriptionSystemType.setEditable(false); -// -// widgetSelected(null); -// -// return composite_prompts; -// } /* (non-Javadoc) - * @see org.eclipse.rse.ui.wizards.AbstractSystemWizardPage#performFinish() + * @see org.eclipse.jface.wizard.WizardPage#getDialogSettings() */ - public boolean performFinish() { - return true; + protected IDialogSettings getDialogSettings() { + // If the wizard is set and returns dialog settings, we re-use them here + IDialogSettings settings = super.getDialogSettings(); + // If the dialog settings could not set from the wizard, fallback to the plugins + // dialog settings store. + if (settings == null) settings = RSEUIPlugin.getDefault().getDialogSettings(); + String sectionName = this.getClass().getName(); + if (settings.getSection(sectionName) == null) settings.addNewSection(sectionName); + settings = settings.getSection(sectionName); + + return settings; } - - } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardSelectionTreeDataManager.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardSelectionTreeDataManager.java index 54d315be0b7..edc69fe44d4 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardSelectionTreeDataManager.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardSelectionTreeDataManager.java @@ -26,6 +26,10 @@ import org.eclipse.rse.ui.wizards.registries.RSEWizardSelectionTreeElement; * New connection wizard selection tree data manager. */ public class RSENewConnectionWizardSelectionTreeDataManager extends RSEAbstractWizardSelectionTreeDataManager { + // The element map is required to translate from IRSESystemType object instance + // into RSENewConnectionWizardSelectionTreeElement object instances as the tree + // and the wizard using these different object instances in their selections! + private Map elementMap; /** * Constructor. @@ -34,10 +38,28 @@ public class RSENewConnectionWizardSelectionTreeDataManager extends RSEAbstractW super(); } + /** + * Returns the corresponding wizard selection tree element for the specified + * system type. + * + * @param systemType The system type. Must be not null. + * @return The wizard selection tree element or null. + */ + public RSENewConnectionWizardSelectionTreeElement getTreeElementForSystemType(IRSESystemType systemType) { + assert systemType != null; + return (RSENewConnectionWizardSelectionTreeElement)elementMap.get(systemType); + } + /* (non-Javadoc) * @see org.eclipse.rse.ui.internal.wizards.newconnection.RSEAbstractWizardSelectionTreeDataManager#initialize(java.util.Set) */ protected void initialize(Set rootElement) { + // we must check the elementMap here for null as the static + // constructors may not have called yet as this method is called + // from the base classes constructor! + if (elementMap == null) elementMap = new HashMap(); + elementMap.clear(); + Map categoryCache = new HashMap(); // The new connection wizard selection is combining system types @@ -59,6 +81,8 @@ public class RSENewConnectionWizardSelectionTreeDataManager extends RSEAbstractW // and categorise the wizard. RSENewConnectionWizardSelectionTreeElement wizardElement = new RSENewConnectionWizardSelectionTreeElement(systemType, descriptor); wizardElement.setParentElement(null); + elementMap.put(systemType, wizardElement); + String categoryId = descriptor.getCategoryId(); // if the wizard is of type IRSEDynamicNewConnectionWizard, call validateCategoryId! if (descriptor.getWizard() instanceof IRSEDynamicNewConnectionWizard) { diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardSelectionTreeElement.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardSelectionTreeElement.java index 2807afd25f6..12940767fa4 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardSelectionTreeElement.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/newconnection/RSENewConnectionWizardSelectionTreeElement.java @@ -72,7 +72,22 @@ public class RSENewConnectionWizardSelectionTreeElement extends RSEWizardSelecti return image; } - + + /* (non-Javadoc) + * @see org.eclipse.rse.ui.wizards.registries.RSEWizardSelectionTreeElement#getDescription() + */ + public String getDescription() { + // Check the system type adapter for the description in case the wizard descriptor does + // not come up with a description itself. + String description = super.getDescription(); + if (description == null) { + RSESystemTypeAdapter adapter = (RSESystemTypeAdapter)(getSystemType().getAdapter(IRSESystemType.class)); + if (adapter != null) { + description = adapter.getDescription(getSystemType()); + } + } + return description; + } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/registries/RSEWizardSelectionTreePatternFilter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/registries/RSEWizardSelectionTreePatternFilter.java index 1ccaf4c2e4d..a671dd2935e 100644 --- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/registries/RSEWizardSelectionTreePatternFilter.java +++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/wizards/registries/RSEWizardSelectionTreePatternFilter.java @@ -34,10 +34,8 @@ public class RSEWizardSelectionTreePatternFilter extends PatternFilter { protected boolean isLeafMatch(Viewer viewer, Object element) { if (element instanceof RSEWizardSelectionTreeElement) { RSEWizardSelectionTreeElement treeElement = (RSEWizardSelectionTreeElement)element; - // we filter only the wizard nodes, not the category nodes (yet). - if (treeElement.getWizardRegistryElement() instanceof IRSEWizardCategory) { - return true; - } else { + // we filter only the wizard nodes + if (treeElement.getWizardRegistryElement() instanceof IRSEWizardDescriptor) { return wordMatches(treeElement.getLabel()); } diff --git a/rse/plugins/org.eclipse.rse.ui/model/org/eclipse/rse/internal/model/SystemNewConnectionPromptObject.java b/rse/plugins/org.eclipse.rse.ui/model/org/eclipse/rse/internal/model/SystemNewConnectionPromptObject.java index 3d54703bbf5..79bd1a8dde3 100644 --- a/rse/plugins/org.eclipse.rse.ui/model/org/eclipse/rse/internal/model/SystemNewConnectionPromptObject.java +++ b/rse/plugins/org.eclipse.rse.ui/model/org/eclipse/rse/internal/model/SystemNewConnectionPromptObject.java @@ -15,6 +15,9 @@ ********************************************************************************/ package org.eclipse.rse.internal.model; +import java.util.ArrayList; +import java.util.List; + import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.resource.ImageDescriptor; @@ -40,75 +43,86 @@ import org.eclipse.swt.widgets.Shell; * It shows as "New Connection..." in the tree. When expanded, they get the new connection * wizard. */ -public class SystemNewConnectionPromptObject - implements ISystemPromptableObject, ISystemViewRunnableObject, IAdaptable -{ - private Object parent; - private String[] systemTypes; - private ISystemPromptableObject[] children; - private SystemNewConnectionAction action = null; - private boolean systemTypesSet = false; - private String newConnText; - private boolean isRootPrompt = false; - - /** - * Constructor - */ - public SystemNewConnectionPromptObject() - { - setSystemTypes(RSECorePlugin.getDefault().getRegistry().getSystemTypeNames()); - isRootPrompt = true; - } - /** - * Constructor for child instances - */ - public SystemNewConnectionPromptObject(SystemNewConnectionPromptObject parent, String systemType) - { - this.parent = parent; - setSystemTypes(new String[] {systemType}); - } - - // ---------------------------------------------------- - // METHODS FOR CONFIGURING THIS OBJECT - // ---------------------------------------------------- - - /** - * Set the system types to restrict the New Connection wizard to - */ - public void setSystemTypes(String[] systemTypes) - { - this.systemTypes = systemTypes; - this.systemTypesSet = true; - } - - /* (non-Javadoc) - * @see org.eclipse.rse.model.ISystemPromptableObject#getSystemTypes() - */ - public String[] getSystemTypes() { - String[] types = systemTypes; - if (types == null || !systemTypesSet) types = new String[0]; - return types; +public class SystemNewConnectionPromptObject implements ISystemPromptableObject, ISystemViewRunnableObject, IAdaptable { + private Object parent; + private IRSESystemType[] systemTypes; + private ISystemPromptableObject[] children; + private SystemNewConnectionAction action = null; + private boolean systemTypesSet = false; + private String newConnText; + private boolean isRootPrompt = false; + + /** + * Constructor + */ + public SystemNewConnectionPromptObject() { + setSystemTypes(RSECorePlugin.getDefault().getRegistry().getSystemTypes()); + isRootPrompt = true; + } + + /** + * Constructor for child instances + */ + public SystemNewConnectionPromptObject(SystemNewConnectionPromptObject parent, IRSESystemType systemType) { + this.parent = parent; + setSystemTypes(new IRSESystemType[] { systemType }); + } + + // ---------------------------------------------------- + // METHODS FOR CONFIGURING THIS OBJECT + // ---------------------------------------------------- + + /** + * Set the system types to restrict the New Connection wizard to + */ + public void setSystemTypes(IRSESystemType[] systemTypes) { + this.systemTypes = systemTypes; + this.systemTypesSet = true; + } + + /** + * @deprecated Use {@link #setSystemTypes(IRSESystemType[])}. + */ + public void setSystemTypes(String[] systemTypes) { + if (systemTypes != null) { + List types = new ArrayList(); + for (int i = 0; i < systemTypes.length; i++) { + IRSESystemType type = RSECorePlugin.getDefault().getRegistry().getSystemType(systemTypes[i]); + if (type != null) types.add(type); + } + setSystemTypes((IRSESystemType[])types.toArray(new IRSESystemType[types.size()])); + } else { + setSystemTypes((IRSESystemType[])null); } - - /** - * Set the parent object so that we can respond to getParent requests - */ - public void setParent(Object parent) - { - this.parent = parent; - } - - // ---------------------------------------------------- - // METHODS CALLED BY THE SYSTEMVIEWPROMPTABLEADAPTER... - // ---------------------------------------------------- - - /** - * Get the parent object (within tree view) - */ - public Object getParent() - { - return parent; - } + } + + /* (non-Javadoc) + * @see org.eclipse.rse.model.ISystemPromptableObject#getSystemTypes() + */ + public IRSESystemType[] getSystemTypes() { + IRSESystemType[] types = systemTypes; + if (types == null || !systemTypesSet) + types = new IRSESystemType[0]; + return types; + } + + /** + * Set the parent object so that we can respond to getParent requests + */ + public void setParent(Object parent) { + this.parent = parent; + } + + // ---------------------------------------------------- + // METHODS CALLED BY THE SYSTEMVIEWPROMPTABLEADAPTER... + // ---------------------------------------------------- + + /** + * Get the parent object (within tree view) + */ + public Object getParent() { + return parent; + } /** * Return the child promptable objects. @@ -123,9 +137,7 @@ public class SystemNewConnectionPromptObject // Basically, once initialized, the list of system types cannot change, but // it doesn't hurt to check this in case it changes because of future extensions. if (isRootPrompt) { - String[] typeNames = RSECorePlugin.getDefault().getRegistry().getSystemTypeNames(); - if (systemTypes == null || typeNames.length != systemTypes.length) - systemTypes = typeNames; + systemTypes = RSECorePlugin.getDefault().getRegistry().getSystemTypes(); } if (systemTypes != null) { @@ -138,21 +150,20 @@ public class SystemNewConnectionPromptObject return children; } - + /** * Return true if we have children, false if run when expanded */ - public boolean hasChildren() - { - + public boolean hasChildren() { + // DKM - I think we shouuld indicate children even if there's only one connection type //if (systemTypes.length == 1) if (systemTypes == null || (systemTypes.length == 1 && !isRootPrompt)) return false; else - return true; + return true; } - + /** * Returns an image descriptor for the image. More efficient than getting the image. * Calls getImage on the subsystem's owning factory. @@ -161,12 +172,11 @@ public class SystemNewConnectionPromptObject if (hasChildren()) return RSEUIPlugin.getDefault().getImageDescriptor(ISystemIconConstants.ICON_SYSTEM_NEWCONNECTION_ID); else { - IRSESystemType sysType = RSECorePlugin.getDefault().getRegistry().getSystemType(systemTypes[0]); - RSESystemTypeAdapter adapter = (RSESystemTypeAdapter)(sysType.getAdapter(IRSESystemType.class)); - return adapter.getImageDescriptor(sysType); + RSESystemTypeAdapter adapter = (RSESystemTypeAdapter)(systemTypes[0].getAdapter(IRSESystemType.class)); + return adapter.getImageDescriptor(systemTypes[0]); } } - + /** * Return the label for this object */ @@ -184,68 +194,59 @@ public class SystemNewConnectionPromptObject return newConnText; } - + /** * Return the type label for this object */ - public String getType() - { + public String getType() { if (hasChildren()) - return SystemResources.RESID_NEWCONN_EXPANDABLEPROMPT_VALUE; + return SystemResources.RESID_NEWCONN_EXPANDABLEPROMPT_VALUE; else - return SystemResources.RESID_NEWCONN_PROMPT_VALUE; - } - + return SystemResources.RESID_NEWCONN_PROMPT_VALUE; + } + /** * Run this prompt. This should return an appropriate ISystemMessageObject to show * as the child, reflecting if it ran successfully, was cancelled or failed. */ - public Object[] run(Shell shell) - { - if (action == null) - { - action = new SystemNewConnectionAction(shell, false, false, null); + public Object[] run(Shell shell) { + if (action == null) { + action = new SystemNewConnectionAction(shell, false, false, null); } - if (systemTypes!=null) - action.restrictSystemTypes(systemTypes); - - try - { - action.run(); - } catch (Exception exc) - { - return new Object[] { - new SystemMessageObject(RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_EXPAND_FAILED), - ISystemMessageObject.MSGTYPE_ERROR,null)}; + if (systemTypes != null) { + List systemTypeNames = new ArrayList(); + for (int i = 0; i < systemTypes.length; i++) systemTypeNames.add(systemTypes[i].getName()); + action.restrictSystemTypes((String[])systemTypeNames.toArray(new String[systemTypeNames.size()])); } - - + + try { + action.run(); + } catch (Exception exc) { + return new Object[] { new SystemMessageObject(RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_EXPAND_FAILED), ISystemMessageObject.MSGTYPE_ERROR, null) }; + } + IHost newConnection = (IHost)action.getValue(); - + // create appropriate object to return... ISystemMessageObject result = null; - if (newConnection != null) - { - result = new SystemMessageObject(RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_EXPAND_CONNECTIONCREATED), - ISystemMessageObject.MSGTYPE_OBJECTCREATED,null); - } - else - result = new SystemMessageObject(RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_EXPAND_CANCELLED), - ISystemMessageObject.MSGTYPE_CANCEL,null); - return new Object[] {result}; + if (newConnection != null) { + result = new SystemMessageObject(RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_EXPAND_CONNECTIONCREATED), ISystemMessageObject.MSGTYPE_OBJECTCREATED, + null); + } else + result = new SystemMessageObject(RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_EXPAND_CANCELLED), ISystemMessageObject.MSGTYPE_CANCEL, null); + return new Object[] { result }; } - - // ---------------------------------------------------- - // METHODS REQUIRED BY THE IADAPTABLE INTERFACE... - // ---------------------------------------------------- - /** + // ---------------------------------------------------- + // METHODS REQUIRED BY THE IADAPTABLE INTERFACE... + // ---------------------------------------------------- + + /** * This is the method required by the IAdaptable interface. * Given an adapter class type, return an object castable to the type, or * null if this is not possible. */ - public Object getAdapter(Class adapterType) - { - return Platform.getAdapterManager().getAdapter(this, adapterType); - } -} \ No newline at end of file + public Object getAdapter(Class adapterType) { + return Platform.getAdapterManager().getAdapter(this, adapterType); + } +} diff --git a/rse/plugins/org.eclipse.rse.ui/model/org/eclipse/rse/model/ISystemPromptableObject.java b/rse/plugins/org.eclipse.rse.ui/model/org/eclipse/rse/model/ISystemPromptableObject.java index e32b3c972a8..58bf5184143 100644 --- a/rse/plugins/org.eclipse.rse.ui/model/org/eclipse/rse/model/ISystemPromptableObject.java +++ b/rse/plugins/org.eclipse.rse.ui/model/org/eclipse/rse/model/ISystemPromptableObject.java @@ -17,6 +17,7 @@ package org.eclipse.rse.model; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.resource.ImageDescriptor; +import org.eclipse.rse.core.IRSESystemType; import org.eclipse.swt.widgets.Shell; /** @@ -29,9 +30,7 @@ import org.eclipse.swt.widgets.Shell; *

* Related adapter is org.eclipse.rse.ui.view.SystemViewPromptableAdapter */ -public interface ISystemPromptableObject extends IAdaptable -{ - +public interface ISystemPromptableObject extends IAdaptable { /** * Returns the list of system types this promptable object * is associated with. This is important to implement label @@ -39,9 +38,9 @@ public interface ISystemPromptableObject extends IAdaptable * * @return The list of associated system types or an empty list. */ - public String[] getSystemTypes(); - - /** + public IRSESystemType[] getSystemTypes(); + + /** * Get the parent object (within tree view) */ public Object getParent(); diff --git a/rse/plugins/org.eclipse.rse.ui/schema/newConnectionWizard.exsd b/rse/plugins/org.eclipse.rse.ui/schema/newConnectionWizard.exsd index 9ea70d98f2d..9cc195435e7 100644 --- a/rse/plugins/org.eclipse.rse.ui/schema/newConnectionWizard.exsd +++ b/rse/plugins/org.eclipse.rse.ui/schema/newConnectionWizard.exsd @@ -103,8 +103,9 @@ New connection wizard may have the need of contributing different attribute valu - A fully qualified valid category id previously defined by this or some other plug-in. If omitted or if the specified category id is invalid, the wizard will be added as non-categorized root element. - + A fully qualified valid category id previously defined by this or some other plug-in. If omitted or if the specified category id is invalid, the wizard will be added as non-categorized root element. +<p> +The default RSE wizard category id is "org.eclipse.rse.ui.wizards.newconnection.default.category". @@ -148,7 +149,6 @@ New connection wizard may have the need of contributing different attribute valu The fully qualified id of the parent category or empty if it is a root category. - @@ -166,16 +166,16 @@ New connection wizard may have the need of contributing different attribute valu <pre> <extension point="org.eclipse.rse.ui.newConnectionWizard"> - <category id="org.eclipse.rse.ui.wizards.newconnection.default.category" - name="%Creation.category.name"/> - <newConnectionWizard - id="org.eclipse.rse.ui.wizards.newconnection.RSEDefaultnNewConnectionWizard" - class="org.eclipse.rse.ui.wizards.newconnection.RSEDefaultNewConnectionWizard" - name="%DefaultRSENewConnectionWizard.name" - canFinishEarly="false" - categoryId="org.eclipse.rse.ui.wizards.newconnection.default.category" - hasPages="true"> - </newConnectionWizard> + <category id="org.eclipse.rse.ui.wizards.newconnection.default.category" + name="%Creation.category.name"/> + <newConnectionWizard + id="org.eclipse.rse.ui.wizards.newconnection.RSEDefaultnNewConnectionWizard" + class="org.eclipse.rse.ui.wizards.newconnection.RSEDefaultNewConnectionWizard" + name="%DefaultRSENewConnectionWizard.name" + canFinishEarly="false" + categoryId="org.eclipse.rse.ui.wizards.newconnection.default.category" + hasPages="true"> + </newConnectionWizard> </extension> </pre> </p> diff --git a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/internal/subsystems/SubSystemConfigurationProxy.java b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/internal/subsystems/SubSystemConfigurationProxy.java index ea7fde2d277..4ddcd1a8a9d 100644 --- a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/internal/subsystems/SubSystemConfigurationProxy.java +++ b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/internal/subsystems/SubSystemConfigurationProxy.java @@ -164,8 +164,8 @@ public class SubSystemConfigurationProxy implements ISubSystemConfigurationProxy // If the subsystem configuration supports all system types, just add all // currently registered system types to th resolved list if (supportsAllSystemTypes()) { - String[] systemTypes = RSECorePlugin.getDefault().getRegistry().getSystemTypeNames(); - if (systemTypes != null) resolvedSystemTypes.addAll(Arrays.asList(systemTypes)); + IRSESystemType[] systemTypes = RSECorePlugin.getDefault().getRegistry().getSystemTypes(); + for (int i = 0; i < systemTypes.length; i++) resolvedSystemTypes.add(systemTypes[i].getName()); } else { // We have to match the given lists of system type ids against // the list of available system types. As the list of system types cannot