mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-15 13:05:22 +02:00
[fix] bug 237816: restrictToSystemType does not work for RSEMainNewConnectionWizard
This commit is contained in:
parent
592e9a2d04
commit
2beb24ab37
7 changed files with 341 additions and 8 deletions
|
@ -23,6 +23,7 @@
|
||||||
package org.eclipse.rse.ui.wizards.newconnection;
|
package org.eclipse.rse.ui.wizards.newconnection;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -147,6 +148,14 @@ public class RSEMainNewConnectionWizard extends Wizard implements INewWizard, IS
|
||||||
restrictedSystemTypes = systemTypes;
|
restrictedSystemTypes = systemTypes;
|
||||||
onlySystemType = restrictedSystemTypes.length == 1;
|
onlySystemType = restrictedSystemTypes.length == 1;
|
||||||
mainPage.restrictToSystemTypes(restrictedSystemTypes);
|
mainPage.restrictToSystemTypes(restrictedSystemTypes);
|
||||||
|
|
||||||
|
if (onlySystemType && !restrictedSystemTypes[0].equals(selectedSystemType))
|
||||||
|
selectedSystemType = restrictedSystemTypes[0];
|
||||||
|
else if (restrictedSystemTypes.length > 0 && !Arrays.asList(restrictedSystemTypes).contains(selectedSystemType))
|
||||||
|
selectedSystemType = null;
|
||||||
|
else if (restrictedSystemTypes.length == 0)
|
||||||
|
selectedSystemType = null;
|
||||||
|
|
||||||
onSelectedSystemTypeChanged();
|
onSelectedSystemTypeChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -329,7 +338,7 @@ public class RSEMainNewConnectionWizard extends Wizard implements INewWizard, IS
|
||||||
// Note: Do not call IWizard.addPages() here in case the main wizard is restricted to
|
// Note: Do not call IWizard.addPages() here in case the main wizard is restricted to
|
||||||
// a single system type. The IWizard.addPages() method will be called from the
|
// a single system type. The IWizard.addPages() method will be called from the
|
||||||
// enclosing wizard dialog directly instead!
|
// enclosing wizard dialog directly instead!
|
||||||
if (!onlySystemType && selectedWizard != null && !initializedWizards.contains(selectedWizard)) {
|
if ((!onlySystemType || mainPage.getPreviousPage() != null) && selectedWizard != null && !initializedWizards.contains(selectedWizard)) {
|
||||||
selectedWizard.addPages();
|
selectedWizard.addPages();
|
||||||
initializedWizards.add(selectedWizard);
|
initializedWizards.add(selectedWizard);
|
||||||
}
|
}
|
||||||
|
|
|
@ -263,7 +263,26 @@ public class RSENewConnectionWizardSelectionPage extends WizardPage {
|
||||||
// before initializing the selection.
|
// before initializing the selection.
|
||||||
restoreWidgetValues();
|
restoreWidgetValues();
|
||||||
|
|
||||||
|
// Initialize the tree selection
|
||||||
|
initializeSelection(treeViewer);
|
||||||
|
|
||||||
// Initialize the selection in the tree
|
// Initialize the selection in the tree
|
||||||
|
filteredTree.getFilterControl().setFocus();
|
||||||
|
|
||||||
|
PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), helpId);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set the initial tree selection for the given tree viewer instance.
|
||||||
|
*
|
||||||
|
* @param treeViewer The tree viewer instance.
|
||||||
|
*
|
||||||
|
* @since 3.1
|
||||||
|
*/
|
||||||
|
protected void initializeSelection(TreeViewer treeViewer) {
|
||||||
|
if (treeViewer == null) return;
|
||||||
|
|
||||||
if (getWizard() instanceof ISelectionProvider) {
|
if (getWizard() instanceof ISelectionProvider) {
|
||||||
ISelectionProvider selectionProvider = (ISelectionProvider)getWizard();
|
ISelectionProvider selectionProvider = (ISelectionProvider)getWizard();
|
||||||
if (selectionProvider.getSelection() instanceof IStructuredSelection) {
|
if (selectionProvider.getSelection() instanceof IStructuredSelection) {
|
||||||
|
@ -275,14 +294,9 @@ public class RSENewConnectionWizardSelectionPage extends WizardPage {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// we put the initial focus into the filter field
|
|
||||||
filteredTree.getFilterControl().setFocus();
|
|
||||||
|
|
||||||
PlatformUI.getWorkbench().getHelpSystem().setHelp(getControl(), helpId);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called from the selection listener to propage the current
|
* Called from the selection listener to propage the current
|
||||||
* system type selection to the underlaying wizard.
|
* system type selection to the underlaying wizard.
|
||||||
|
@ -338,6 +352,12 @@ public class RSENewConnectionWizardSelectionPage extends WizardPage {
|
||||||
// if the page will become hidden, save the expansion state of
|
// if the page will become hidden, save the expansion state of
|
||||||
// the tree elements.
|
// the tree elements.
|
||||||
if (!visible) saveWidgetValues();
|
if (!visible) saveWidgetValues();
|
||||||
|
// If the page will become visible, refresh the viewer
|
||||||
|
// content -> The listed system types might have changed.
|
||||||
|
else if (filteredTree != null && filteredTree.getViewer() != null) {
|
||||||
|
filteredTree.getViewer().refresh();
|
||||||
|
initializeSelection(filteredTree.getViewer());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -37,6 +37,8 @@ TestSubsystemTestCase.testAddAndDeleteDeepNodes=true
|
||||||
TestSubsystemTestCase.testAddAndDeleteFlatNodes=true
|
TestSubsystemTestCase.testAddAndDeleteFlatNodes=true
|
||||||
TestSubsystemTestCase.testBugzilla170728=true
|
TestSubsystemTestCase.testBugzilla170728=true
|
||||||
|
|
||||||
|
RSENewConnectionWizardTestCase.testRestrictToSystemType=true
|
||||||
|
|
||||||
#
|
#
|
||||||
# The following section controls enablement of test cases by target or client platform.
|
# The following section controls enablement of test cases by target or client platform.
|
||||||
# Uncomment a line to disable running unit tests on the specified target connection.
|
# Uncomment a line to disable running unit tests on the specified target connection.
|
||||||
|
|
|
@ -0,0 +1,41 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2008 Wind River Systems, Inc. and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Uwe Stieber (Wind River) - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.rse.tests.ui.connectionwizard;
|
||||||
|
|
||||||
|
import org.eclipse.jface.wizard.WizardDialog;
|
||||||
|
import org.eclipse.rse.core.IRSECoreRegistry;
|
||||||
|
import org.eclipse.rse.core.RSECorePlugin;
|
||||||
|
import org.eclipse.rse.tests.RSETestsPlugin;
|
||||||
|
import org.eclipse.rse.tests.core.RSECoreTestCase;
|
||||||
|
import org.eclipse.ui.PlatformUI;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Tests the RSE new connection wizard functionality.
|
||||||
|
*
|
||||||
|
* @author uwe.stieber@windriver.com
|
||||||
|
*/
|
||||||
|
public class RSENewConnectionWizardTestCase extends RSECoreTestCase {
|
||||||
|
|
||||||
|
/* Test restrictToSystemType functionality. See bug 237816 */
|
||||||
|
public void testRestrictToSystemType() {
|
||||||
|
//-test-author-:UweStieber
|
||||||
|
if (!RSETestsPlugin.isTestCaseEnabled("RSENewConnectionWizardTestCase.testRestrictToSystemType")) return; //$NON-NLS-1$
|
||||||
|
|
||||||
|
IRSECoreRegistry coreRegistry = RSECorePlugin.getTheCoreRegistry();
|
||||||
|
assertNotNull("Failed to fetch RSE core registry instance!", coreRegistry); //$NON-NLS-1$
|
||||||
|
|
||||||
|
// Construct the wizard
|
||||||
|
RSENewConnectionWizardTestWizard wizard = new RSENewConnectionWizardTestWizard();
|
||||||
|
|
||||||
|
WizardDialog dialog = new WizardDialog(PlatformUI.getWorkbench().getDisplay().getActiveShell(), wizard);
|
||||||
|
dialog.open();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,144 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2008 Wind River Systems, Inc. and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Uwe Stieber (Wind River) - initial API and implementation.
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.rse.tests.ui.connectionwizard;
|
||||||
|
|
||||||
|
import org.eclipse.jface.resource.ImageDescriptor;
|
||||||
|
import org.eclipse.jface.wizard.IWizardPage;
|
||||||
|
import org.eclipse.jface.wizard.WizardPage;
|
||||||
|
import org.eclipse.rse.core.IRSECoreRegistry;
|
||||||
|
import org.eclipse.rse.core.IRSESystemType;
|
||||||
|
import org.eclipse.rse.core.RSECorePlugin;
|
||||||
|
import org.eclipse.rse.ui.wizards.newconnection.RSEMainNewConnectionWizard;
|
||||||
|
import org.eclipse.rse.ui.wizards.newconnection.RSENewConnectionWizardRegistry;
|
||||||
|
import org.eclipse.swt.SWT;
|
||||||
|
import org.eclipse.swt.events.SelectionAdapter;
|
||||||
|
import org.eclipse.swt.events.SelectionEvent;
|
||||||
|
import org.eclipse.swt.layout.GridData;
|
||||||
|
import org.eclipse.swt.layout.GridLayout;
|
||||||
|
import org.eclipse.swt.widgets.Composite;
|
||||||
|
import org.eclipse.swt.widgets.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple wizard page listing the available system types in a simple text list.
|
||||||
|
*
|
||||||
|
* @author uwe.stieber@windriver.com
|
||||||
|
*/
|
||||||
|
public class RSENewConnectionWizardTestSimpleWizardPage extends WizardPage {
|
||||||
|
private List fList;
|
||||||
|
private IRSESystemType[] fSystemTypes;
|
||||||
|
RSEMainNewConnectionWizard fMainWizard;
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param wizardRegistry The wizard registry to use. Must not be <code>null</code>
|
||||||
|
* @param pageName the name of the page
|
||||||
|
*/
|
||||||
|
public RSENewConnectionWizardTestSimpleWizardPage(RSENewConnectionWizardRegistry wizardRegistry, String pageName) {
|
||||||
|
super(pageName);
|
||||||
|
assert wizardRegistry != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
* @param wizardRegistry The wizard registry to use. Must not be <code>null</code>
|
||||||
|
* @param pageName the name of the page
|
||||||
|
* @param title the title for this wizard page,
|
||||||
|
* or <code>null</code> if none
|
||||||
|
* @param titleImage the image descriptor for the title of this wizard page,
|
||||||
|
* or <code>null</code> if none
|
||||||
|
*/
|
||||||
|
public RSENewConnectionWizardTestSimpleWizardPage(RSENewConnectionWizardRegistry wizardRegistry, String pageName, String title, ImageDescriptor titleImage) {
|
||||||
|
super(pageName, title, titleImage);
|
||||||
|
assert wizardRegistry != null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.dialogs.DialogPage#dispose()
|
||||||
|
*/
|
||||||
|
public void dispose() {
|
||||||
|
fSystemTypes = null;
|
||||||
|
|
||||||
|
fList = null;
|
||||||
|
|
||||||
|
if (fMainWizard != null) { fMainWizard.dispose(); fMainWizard = null; }
|
||||||
|
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
|
||||||
|
*/
|
||||||
|
public void createControl(Composite parent) {
|
||||||
|
Composite composite = new Composite(parent, SWT.NONE);
|
||||||
|
composite.setLayout(new GridLayout());
|
||||||
|
composite.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||||
|
setControl(composite);
|
||||||
|
|
||||||
|
fList = new List(composite, SWT.BORDER | SWT.SINGLE | SWT.V_SCROLL | SWT.H_SCROLL);
|
||||||
|
fList.setLayoutData(new GridData(GridData.FILL_BOTH));
|
||||||
|
|
||||||
|
IRSECoreRegistry coreRegistry = RSECorePlugin.getTheCoreRegistry();
|
||||||
|
fSystemTypes = coreRegistry.getSystemTypes();
|
||||||
|
for (int i = 0; i < fSystemTypes.length; i++) {
|
||||||
|
fList.add(fSystemTypes[i].getLabel());
|
||||||
|
}
|
||||||
|
|
||||||
|
fList.addSelectionListener(new SelectionAdapter() {
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
|
||||||
|
*/
|
||||||
|
public void widgetSelected(SelectionEvent e) {
|
||||||
|
// Update the main wizard if already created
|
||||||
|
if (fMainWizard != null && getSelectedSystemType() != null) fMainWizard.restrictToSystemType(getSelectedSystemType());
|
||||||
|
setPageComplete(getSelectedSystemType() != null);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
setPageComplete(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the selected system type instance. This method will
|
||||||
|
* return <code>null</code> if the page hasn't been visible yet or
|
||||||
|
* got already disposed.
|
||||||
|
*
|
||||||
|
* @return The selected RSE system type instance or <code>null</code>.
|
||||||
|
*/
|
||||||
|
public IRSESystemType getSelectedSystemType() {
|
||||||
|
if (fList != null && !fList.isDisposed() && fList.getSelectionIndex() != -1) {
|
||||||
|
return fSystemTypes[fList.getSelectionIndex()];
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.wizard.WizardPage#canFlipToNextPage()
|
||||||
|
*/
|
||||||
|
public boolean canFlipToNextPage() {
|
||||||
|
return super.canFlipToNextPage() && (fList != null && !fList.isDisposed() && fList.getSelectionIndex() != -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.wizard.WizardPage#getNextPage()
|
||||||
|
*/
|
||||||
|
public IWizardPage getNextPage() {
|
||||||
|
if (fMainWizard == null) {
|
||||||
|
// Create a new instance
|
||||||
|
fMainWizard = new RSEMainNewConnectionWizard();
|
||||||
|
// Create the pages
|
||||||
|
fMainWizard.addPages();
|
||||||
|
// Restrict the wizard to the selected system type
|
||||||
|
if (getSelectedSystemType() != null) fMainWizard.restrictToSystemType(getSelectedSystemType());
|
||||||
|
}
|
||||||
|
return fMainWizard.getStartingPage();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2008 Wind River Systems, Inc. and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Uwe Stieber (Wind River) - initial API and implementation.
|
||||||
|
*******************************************************************************/
|
||||||
|
package org.eclipse.rse.tests.ui.connectionwizard;
|
||||||
|
|
||||||
|
import junit.framework.Test;
|
||||||
|
import junit.framework.TestSuite;
|
||||||
|
|
||||||
|
import org.eclipse.rse.tests.framework.DelegatingTestSuiteHolder;
|
||||||
|
|
||||||
|
public class RSENewConnectionWizardTestSuite extends DelegatingTestSuiteHolder {
|
||||||
|
/**
|
||||||
|
* Standard Java application main method. Allows to launch the test
|
||||||
|
* suite from outside as part of nightly runs, headless runs or other.
|
||||||
|
* <p><b>Note:</b> Use only <code>junit.textui.TestRunner</code> here as
|
||||||
|
* it is explicitly supposed to output the test output to the shell the
|
||||||
|
* test suite has been launched from.
|
||||||
|
* <p>
|
||||||
|
* @param args The standard Java application command line parameters passed in.
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
junit.textui.TestRunner.run(suite());
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Combine all test into a suite and returns the test suite instance.
|
||||||
|
* <p>
|
||||||
|
* <b>Note: This method must be always called <i><code>suite</code></i> ! Otherwise
|
||||||
|
* the JUnit plug-in test launcher will fail to detect this class!</b>
|
||||||
|
* <p>
|
||||||
|
* @return The test suite instance.
|
||||||
|
*/
|
||||||
|
public static Test suite() {
|
||||||
|
TestSuite suite = new TestSuite("RSE Registries Test Suite"); //$NON-NLS-1$
|
||||||
|
// add the single test suites to the overall one here.
|
||||||
|
suite.addTestSuite(RSENewConnectionWizardTestCase.class);
|
||||||
|
|
||||||
|
return suite;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.rse.tests.framework.AbstractTestSuiteHolder#getTestSuite()
|
||||||
|
*/
|
||||||
|
public TestSuite getTestSuite() {
|
||||||
|
return (TestSuite)RSENewConnectionWizardTestSuite.suite();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,62 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright (c) 2008 Wind River Systems, Inc. and others.
|
||||||
|
* All rights reserved. This program and the accompanying materials
|
||||||
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
|
* which accompanies this distribution, and is available at
|
||||||
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
|
*
|
||||||
|
* Contributors:
|
||||||
|
* Uwe Stieber (Wind River) - initial API and implementation
|
||||||
|
*******************************************************************************/
|
||||||
|
|
||||||
|
package org.eclipse.rse.tests.ui.connectionwizard;
|
||||||
|
|
||||||
|
import org.eclipse.jface.wizard.Wizard;
|
||||||
|
import org.eclipse.rse.ui.wizards.newconnection.RSENewConnectionWizardRegistry;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple test wizard implementation.
|
||||||
|
*
|
||||||
|
* @author uwe.stieber@windriver.com
|
||||||
|
*/
|
||||||
|
public class RSENewConnectionWizardTestWizard extends Wizard {
|
||||||
|
private final RSENewConnectionWizardRegistry fWizardRegisty;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructor.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public RSENewConnectionWizardTestWizard() {
|
||||||
|
super();
|
||||||
|
|
||||||
|
fWizardRegisty = new RSENewConnectionWizardRegistry();
|
||||||
|
|
||||||
|
setNeedsProgressMonitor(false);
|
||||||
|
setForcePreviousAndNextButtons(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the RSE new connection wizard registry instance.
|
||||||
|
*
|
||||||
|
* @return The new connection wizard registry.
|
||||||
|
*/
|
||||||
|
public RSENewConnectionWizardRegistry getWizardRegistry() {
|
||||||
|
return fWizardRegisty;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.wizard.Wizard#addPages()
|
||||||
|
*/
|
||||||
|
public void addPages() {
|
||||||
|
addPage(new RSENewConnectionWizardTestSimpleWizardPage(getWizardRegistry(), "Simple Selection Page")); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
|
||||||
|
/* (non-Javadoc)
|
||||||
|
* @see org.eclipse.jface.wizard.Wizard#performFinish()
|
||||||
|
*/
|
||||||
|
public boolean performFinish() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue