mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-08-08 16:55:38 +02:00
RSE New Connection Wizard update
This commit is contained in:
parent
1069e41afc
commit
de3af0763d
7 changed files with 187 additions and 46 deletions
|
@ -18,6 +18,8 @@ package org.eclipse.rse.ui.actions;
|
|||
import org.eclipse.jface.viewers.ISelectionProvider;
|
||||
import org.eclipse.jface.viewers.IStructuredSelection;
|
||||
import org.eclipse.jface.wizard.IWizard;
|
||||
import org.eclipse.rse.core.IRSESystemType;
|
||||
import org.eclipse.rse.core.RSECorePlugin;
|
||||
import org.eclipse.rse.core.subsystems.ISubSystem;
|
||||
import org.eclipse.rse.filters.ISystemFilterPoolReference;
|
||||
import org.eclipse.rse.filters.ISystemFilterReference;
|
||||
|
@ -109,8 +111,16 @@ public class SystemNewConnectionAction extends SystemBaseWizardAction
|
|||
}
|
||||
|
||||
// newConnWizard.setCurrentlySelectedConnection(currConn);
|
||||
// if (restrictSystemTypesTo != null)
|
||||
// newConnWizard.restrictSystemTypes(restrictSystemTypesTo);
|
||||
if (restrictSystemTypesTo != null) {
|
||||
|
||||
IRSESystemType[] systemTypes = new IRSESystemType[restrictSystemTypesTo.length];
|
||||
for (int i = 0; i < restrictSystemTypesTo.length; i++) {
|
||||
systemTypes[i] = RSECorePlugin.getDefault().getRegistry().getSystemType(restrictSystemTypesTo[i]);
|
||||
}
|
||||
|
||||
newConnWizard.restrictToSystemTypes(systemTypes);
|
||||
}
|
||||
|
||||
// if (defaultHostName != null)
|
||||
// newConnWizard.setHostName(defaultHostName);
|
||||
// if (defaultConnectionName != null)
|
||||
|
|
|
@ -22,8 +22,29 @@ import org.eclipse.ui.INewWizard;
|
|||
public interface IRSENewConnectionWizard extends INewWizard {
|
||||
|
||||
public static final String NEW_CONNECTION_WIZARD_DELEGATE_EXTENSION_POINT_ID = "org.eclipse.rse.ui.newConnectionWizardDelegate";
|
||||
public static final String NEW_CONNECTION_WIZARD_DELEGATE_EXTENSION_CONFIG_NAME = "newConnectionWizardDelegate";
|
||||
public static final String NEW_CONNECTION_WIZARD_DELEGATE_EXTENSION_CONFIG_ATTRIBUTE_SYSTEMTYPE = "systemType";
|
||||
public static final String NEW_CONNECTION_WIZARD_DELEGATE_EXTENSION_CONFIG_ATTRIBUTE_CLASS = "class";
|
||||
|
||||
public IRSENewConnectionWizardDelegate getDelegate();
|
||||
|
||||
public void setSystemType(IRSESystemType systemType, boolean initWithSystemType);
|
||||
/**
|
||||
* Restrict system types. Users will only be able to choose from the given system types.
|
||||
* @param systemTypes the system types to restrict to.
|
||||
*/
|
||||
public void restrictToSystemTypes(IRSESystemType[] systemTypes);
|
||||
|
||||
/**
|
||||
* Restrict to a single system type. Users will not be shown the system type selection page in
|
||||
* the wizard.
|
||||
* @param systemType the system type to restrict to.
|
||||
*/
|
||||
public void restrictToSystemType(IRSESystemType systemType);
|
||||
|
||||
/**
|
||||
* Sets the system type that was selected in the wizard. This will only be called if the wizard
|
||||
* shows the system type selection page, i.e. if the wizard is not restricted to a single system type.
|
||||
* @param systemType the system type.
|
||||
*/
|
||||
public void setSelectedSystemType(IRSESystemType systemType);
|
||||
}
|
|
@ -27,6 +27,8 @@ public interface IRSENewConnectionWizardDelegate {
|
|||
|
||||
public void init(RSENewConnectionWizard wizard, IRSESystemType systemType);
|
||||
|
||||
public boolean isInitialized();
|
||||
|
||||
public void systemTypeChanged(IRSESystemType systemType);
|
||||
|
||||
public RSENewConnectionWizard getWizard();
|
||||
|
|
|
@ -18,29 +18,30 @@ package org.eclipse.rse.ui.wizards;
|
|||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.eclipse.core.runtime.CoreException;
|
||||
import org.eclipse.core.runtime.IConfigurationElement;
|
||||
import org.eclipse.core.runtime.IExtensionRegistry;
|
||||
import org.eclipse.core.runtime.Platform;
|
||||
import org.eclipse.jface.wizard.IWizardPage;
|
||||
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;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @author kmunir
|
||||
*
|
||||
* The New Connection wizard. This wizard allows users to create new RSE connections.
|
||||
*/
|
||||
public class RSENewConnectionWizard extends AbstractSystemWizard implements IRSENewConnectionWizard {
|
||||
|
||||
private HashMap map;
|
||||
private IRSESystemType systemType;
|
||||
private boolean initWithSystemType;
|
||||
private IRSENewConnectionWizardDelegate delegate;
|
||||
private RSENewConnectionWizardMainPage mainPage;
|
||||
private IRSESystemType[] restrictedSystemTypes;
|
||||
private boolean onlySystemType;
|
||||
private IRSENewConnectionWizardDelegate defaultDelegate;
|
||||
private boolean defaultDelegateCreated;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
|
@ -51,13 +52,35 @@ public class RSENewConnectionWizard extends AbstractSystemWizard implements IRSE
|
|||
setForcePreviousAndNextButtons(true);
|
||||
setNeedsProgressMonitor(true);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @see org.eclipse.rse.ui.wizards.IRSENewConnectionWizard#setSystemType(org.eclipse.rse.core.IRSESystemType)
|
||||
* @see org.eclipse.rse.ui.wizards.IRSENewConnectionWizard#restrictToSystemType(org.eclipse.rse.core.IRSESystemType)
|
||||
*/
|
||||
public void setSystemType(IRSESystemType systemType, boolean initWithSystemType) {
|
||||
public void restrictToSystemType(IRSESystemType systemType) {
|
||||
IRSESystemType[] types = new IRSESystemType[1];
|
||||
types[0] = systemType;
|
||||
restrictToSystemTypes(types);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.rse.ui.wizards.IRSENewConnectionWizard#restrictToSystemTypes(org.eclipse.rse.core.IRSESystemType[])
|
||||
*/
|
||||
public void restrictToSystemTypes(IRSESystemType[] systemTypes) {
|
||||
this.restrictedSystemTypes = systemTypes;
|
||||
|
||||
if (systemTypes.length == 1) {
|
||||
this.onlySystemType = true;
|
||||
}
|
||||
else {
|
||||
this.onlySystemType = false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.rse.ui.wizards.IRSENewConnectionWizard#setSelectedSystemType(org.eclipse.rse.core.IRSESystemType)
|
||||
*/
|
||||
public void setSelectedSystemType(IRSESystemType systemType) {
|
||||
this.systemType = systemType;
|
||||
this.initWithSystemType = initWithSystemType;
|
||||
setDelegate(systemType);
|
||||
}
|
||||
|
||||
|
@ -67,6 +90,37 @@ public class RSENewConnectionWizard extends AbstractSystemWizard implements IRSE
|
|||
private void readWizardDelegateExtensions() {
|
||||
IExtensionRegistry registry = Platform.getExtensionRegistry();
|
||||
IConfigurationElement[] elements = registry.getConfigurationElementsFor(NEW_CONNECTION_WIZARD_DELEGATE_EXTENSION_POINT_ID);
|
||||
|
||||
for (int i = 0; i < elements.length; i++) {
|
||||
IConfigurationElement element = elements[0];
|
||||
|
||||
if (element.getName().equals(NEW_CONNECTION_WIZARD_DELEGATE_EXTENSION_CONFIG_NAME)) {
|
||||
String systemTypeID = element.getAttribute(NEW_CONNECTION_WIZARD_DELEGATE_EXTENSION_CONFIG_ATTRIBUTE_SYSTEMTYPE);
|
||||
Object obj = null;
|
||||
|
||||
try {
|
||||
obj = element.createExecutableExtension(NEW_CONNECTION_WIZARD_DELEGATE_EXTENSION_CONFIG_ATTRIBUTE_CLASS);
|
||||
|
||||
if (obj instanceof IRSENewConnectionWizardDelegate) {
|
||||
|
||||
if (map == null) {
|
||||
map = new HashMap();
|
||||
}
|
||||
|
||||
if (!map.containsKey(systemTypeID)) {
|
||||
map.put(systemTypeID, obj);
|
||||
}
|
||||
}
|
||||
else {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
catch (CoreException e) {
|
||||
RSEUIPlugin.logError("Class " + obj + " is not executable extension", e);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -80,11 +134,22 @@ public class RSENewConnectionWizard extends AbstractSystemWizard implements IRSE
|
|||
}
|
||||
|
||||
if (delegate == null) {
|
||||
delegate = new RSEDefaultNewConnectionWizardDelegate();
|
||||
|
||||
if (!defaultDelegateCreated) {
|
||||
defaultDelegate = new RSEDefaultNewConnectionWizardDelegate();
|
||||
defaultDelegateCreated = true;
|
||||
}
|
||||
|
||||
delegate = defaultDelegate;
|
||||
}
|
||||
|
||||
// set the wizard
|
||||
delegate.init(this, systemType);
|
||||
// initialize with wizard and system type if not initialized before
|
||||
if (!delegate.isInitialized()) {
|
||||
delegate.init(this, systemType);
|
||||
}
|
||||
else {
|
||||
delegate.systemTypeChanged(systemType);
|
||||
}
|
||||
|
||||
return delegate;
|
||||
}
|
||||
|
@ -100,8 +165,20 @@ public class RSENewConnectionWizard extends AbstractSystemWizard implements IRSE
|
|||
* @see org.eclipse.jface.wizard.Wizard#addPages()
|
||||
*/
|
||||
public void addPages() {
|
||||
mainPage = new RSENewConnectionWizardMainPage(this, "Select System Type", "Select a system type");
|
||||
addPage(mainPage);
|
||||
|
||||
if (!onlySystemType) {
|
||||
mainPage = new RSENewConnectionWizardMainPage(this, "Select System Type", "Select a system type");
|
||||
|
||||
if (restrictedSystemTypes != null) {
|
||||
mainPage.restrictToSystemTypes(restrictedSystemTypes);
|
||||
}
|
||||
|
||||
addPage(mainPage);
|
||||
}
|
||||
else {
|
||||
setDelegate(restrictedSystemTypes[0]);
|
||||
addPage(delegate.getMainPage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -109,7 +186,11 @@ public class RSENewConnectionWizard extends AbstractSystemWizard implements IRSE
|
|||
*/
|
||||
public boolean canFinish() {
|
||||
|
||||
boolean result = mainPage.isPageComplete();
|
||||
boolean result = true;
|
||||
|
||||
if (mainPage != null) {
|
||||
result = mainPage.isPageComplete();
|
||||
}
|
||||
|
||||
if (result) {
|
||||
|
||||
|
@ -130,7 +211,7 @@ public class RSENewConnectionWizard extends AbstractSystemWizard implements IRSE
|
|||
*/
|
||||
public IWizardPage getNextPage(IWizardPage page) {
|
||||
|
||||
if (page == mainPage) {
|
||||
if (mainPage != null && page == mainPage) {
|
||||
return super.getNextPage(page);
|
||||
}
|
||||
else {
|
||||
|
@ -157,7 +238,7 @@ public class RSENewConnectionWizard extends AbstractSystemWizard implements IRSE
|
|||
*/
|
||||
public IWizardPage getPreviousPage(IWizardPage page) {
|
||||
|
||||
if (page == mainPage) {
|
||||
if (mainPage != null && page == mainPage) {
|
||||
return super.getPreviousPage(page);
|
||||
}
|
||||
else {
|
||||
|
@ -183,7 +264,11 @@ public class RSENewConnectionWizard extends AbstractSystemWizard implements IRSE
|
|||
*/
|
||||
public boolean performFinish() {
|
||||
|
||||
boolean result = mainPage.performFinish();
|
||||
boolean result = true;
|
||||
|
||||
if (mainPage != null) {
|
||||
result = mainPage.performFinish();
|
||||
}
|
||||
|
||||
if (result) {
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@ public abstract class RSENewConnectionWizardDelegate implements IRSENewConnectio
|
|||
|
||||
private RSENewConnectionWizard wizard;
|
||||
private IRSESystemType systemType;
|
||||
private boolean isInitialized;
|
||||
|
||||
/**
|
||||
* @see org.eclipse.rse.ui.wizards.IRSENewConnectionWizardDelegate#init(org.eclipse.rse.ui.wizards.RSENewConnectionWizard, org.eclipse.rse.core.IRSESystemType)
|
||||
|
@ -33,6 +34,7 @@ public abstract class RSENewConnectionWizardDelegate implements IRSENewConnectio
|
|||
public void init(RSENewConnectionWizard wizard, IRSESystemType systemType) {
|
||||
setWizard(wizard);
|
||||
setSystemType(systemType);
|
||||
setInitialized(true);
|
||||
}
|
||||
|
||||
protected void setWizard(RSENewConnectionWizard wizard) {
|
||||
|
@ -42,6 +44,10 @@ public abstract class RSENewConnectionWizardDelegate implements IRSENewConnectio
|
|||
protected void setSystemType(IRSESystemType systemType) {
|
||||
this.systemType = systemType;
|
||||
}
|
||||
|
||||
protected void setInitialized(boolean isInitialized) {
|
||||
this.isInitialized = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.rse.ui.wizards.IRSENewConnectionWizardDelegate#getWizard()
|
||||
|
@ -57,6 +63,13 @@ public abstract class RSENewConnectionWizardDelegate implements IRSENewConnectio
|
|||
return systemType;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.rse.ui.wizards.IRSENewConnectionWizardDelegate#isInitialized()
|
||||
*/
|
||||
public boolean isInitialized() {
|
||||
return isInitialized;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.rse.ui.wizards.IRSENewConnectionWizardDelegate#addPages()
|
||||
*/
|
||||
|
|
|
@ -18,6 +18,7 @@ package org.eclipse.rse.ui.wizards;
|
|||
|
||||
import org.eclipse.jface.wizard.IWizard;
|
||||
import org.eclipse.jface.wizard.IWizardPage;
|
||||
import org.eclipse.rse.core.IRSESystemType;
|
||||
import org.eclipse.rse.core.RSECorePlugin;
|
||||
import org.eclipse.rse.ui.RSEUIPlugin;
|
||||
import org.eclipse.rse.ui.SystemResources;
|
||||
|
@ -31,13 +32,14 @@ import org.eclipse.swt.widgets.Label;
|
|||
import org.eclipse.swt.widgets.Listener;
|
||||
|
||||
/**
|
||||
*
|
||||
* The New Connection Wizard main page that allows selection of system type.
|
||||
*/
|
||||
public class RSENewConnectionWizardMainPage extends AbstractSystemWizardPage implements Listener {
|
||||
|
||||
protected String parentHelpId;
|
||||
protected Combo textSystemType;
|
||||
protected IWizardPage nextPage;
|
||||
protected IRSESystemType[] restrictedSystemTypes;
|
||||
|
||||
/**
|
||||
* Constructor.
|
||||
|
@ -65,7 +67,19 @@ public class RSENewConnectionWizardMainPage extends AbstractSystemWizardPage imp
|
|||
Label labelSystemType = SystemWidgetHelpers.createLabel(composite_prompts, temp);
|
||||
labelSystemType.setToolTipText(SystemResources.RESID_CONNECTION_SYSTEMTYPE_TIP);
|
||||
|
||||
textSystemType = SystemWidgetHelpers.createSystemTypeCombo(parent, null);
|
||||
if (restrictedSystemTypes == null) {
|
||||
textSystemType = SystemWidgetHelpers.createSystemTypeCombo(parent, null);
|
||||
}
|
||||
else {
|
||||
String[] systemTypeNames = new String[restrictedSystemTypes.length];
|
||||
|
||||
for (int i = 0; i < restrictedSystemTypes.length; i++) {
|
||||
systemTypeNames[i] = restrictedSystemTypes[i].getName();
|
||||
}
|
||||
|
||||
textSystemType = SystemWidgetHelpers.createSystemTypeCombo(parent, null, systemTypeNames);
|
||||
}
|
||||
|
||||
textSystemType.setToolTipText(SystemResources.RESID_CONNECTION_SYSTEMTYPE_TIP);
|
||||
SystemWidgetHelpers.setHelp(textSystemType, RSEUIPlugin.HELPPREFIX + "ccon0003");
|
||||
|
||||
|
@ -73,6 +87,10 @@ public class RSENewConnectionWizardMainPage extends AbstractSystemWizardPage imp
|
|||
|
||||
return composite_prompts;
|
||||
}
|
||||
|
||||
public void restrictToSystemTypes(IRSESystemType[] systemTypes) {
|
||||
this.restrictedSystemTypes = systemTypes;
|
||||
}
|
||||
|
||||
/**
|
||||
* @see org.eclipse.rse.ui.wizards.AbstractSystemWizardPage#getInitialFocusControl()
|
||||
|
@ -99,28 +117,20 @@ public class RSENewConnectionWizardMainPage extends AbstractSystemWizardPage imp
|
|||
*/
|
||||
public IWizardPage getNextPage() {
|
||||
|
||||
if (nextPage == null) {
|
||||
IWizard wizard = getWizard();
|
||||
|
||||
IWizard wizard = getWizard();
|
||||
|
||||
// if the wizard is a new connection wizard, which should always be the case,
|
||||
// get the new connection wizard delegate for the selected system type and
|
||||
// ask for the main page
|
||||
if (wizard instanceof IRSENewConnectionWizard) {
|
||||
String systemTypeStr = textSystemType.getText();
|
||||
IRSENewConnectionWizard newConnWizard = (IRSENewConnectionWizard)wizard;
|
||||
newConnWizard.setSystemType(RSECorePlugin.getDefault().getRegistry().getSystemType(systemTypeStr), false);
|
||||
nextPage = newConnWizard.getDelegate().getMainPage();
|
||||
}
|
||||
else {
|
||||
nextPage = super.getNextPage();
|
||||
}
|
||||
// if the wizard is a new connection wizard, which should always be the case,
|
||||
// get the new connection wizard delegate for the selected system type and
|
||||
// ask for the main page
|
||||
if (wizard instanceof IRSENewConnectionWizard) {
|
||||
String systemTypeStr = textSystemType.getText();
|
||||
IRSENewConnectionWizard newConnWizard = (IRSENewConnectionWizard)wizard;
|
||||
newConnWizard.setSelectedSystemType(RSECorePlugin.getDefault().getRegistry().getSystemType(systemTypeStr));
|
||||
return newConnWizard.getDelegate().getMainPage();
|
||||
}
|
||||
else {
|
||||
|
||||
return super.getNextPage();
|
||||
}
|
||||
|
||||
return nextPage;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -134,7 +144,7 @@ public class RSENewConnectionWizardMainPage extends AbstractSystemWizardPage imp
|
|||
if (wizard instanceof IRSENewConnectionWizard) {
|
||||
String systemTypeStr = textSystemType.getText();
|
||||
IRSENewConnectionWizard newConnWizard = (IRSENewConnectionWizard)wizard;
|
||||
newConnWizard.getDelegate().systemTypeChanged(RSECorePlugin.getDefault().getRegistry().getSystemType(systemTypeStr));
|
||||
newConnWizard.setSelectedSystemType(RSECorePlugin.getDefault().getRegistry().getSystemType(systemTypeStr));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
<meta.schema plugin="org.eclipse.rse.ui" id="newConnectionWizardDelegate" name="RSE New Connection Wizard Delegate"/>
|
||||
</appInfo>
|
||||
<documentation>
|
||||
This extension point allows a New Connection wizard delegate to be provided for a certain system type. This is useful for those system types that need New Connection wizard pages which are different from the default pages supplied by RSE.
|
||||
This extension point allows a New Connection wizard delegate to be provided for a certain system type. This is useful for those system types that need New Connection wizard pages which are different from the default pages supplied by RSE.
|
||||
</documentation>
|
||||
</annotation>
|
||||
|
||||
|
@ -48,10 +48,10 @@
|
|||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
<attribute name="class" type="string" use="default" value="org.eclipse.rse.ui.wizards.RSENewConnectionWizardDelegate">
|
||||
<attribute name="class" type="string" use="default" value="org.eclipse.rse.ui.wizards.RSEDefaultNewConnectionWizardDelegate">
|
||||
<annotation>
|
||||
<documentation>
|
||||
A class that implements
|
||||
A class that implements <samp>org.eclipse.rse.ui.wizards.IRSENewConnectionWizardDelegate</samp>
|
||||
</documentation>
|
||||
</annotation>
|
||||
</attribute>
|
||||
|
|
Loading…
Add table
Reference in a new issue