mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-03 23:25:26 +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;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
@ -147,6 +148,14 @@ public class RSEMainNewConnectionWizard extends Wizard implements INewWizard, IS
|
|||
restrictedSystemTypes = systemTypes;
|
||||
onlySystemType = restrictedSystemTypes.length == 1;
|
||||
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();
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
// a single system type. The IWizard.addPages() method will be called from the
|
||||
// enclosing wizard dialog directly instead!
|
||||
if (!onlySystemType && selectedWizard != null && !initializedWizards.contains(selectedWizard)) {
|
||||
if ((!onlySystemType || mainPage.getPreviousPage() != null) && selectedWizard != null && !initializedWizards.contains(selectedWizard)) {
|
||||
selectedWizard.addPages();
|
||||
initializedWizards.add(selectedWizard);
|
||||
}
|
||||
|
|
|
@ -263,7 +263,26 @@ public class RSENewConnectionWizardSelectionPage extends WizardPage {
|
|||
// before initializing the selection.
|
||||
restoreWidgetValues();
|
||||
|
||||
// Initialize the tree selection
|
||||
initializeSelection(treeViewer);
|
||||
|
||||
// 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) {
|
||||
ISelectionProvider selectionProvider = (ISelectionProvider)getWizard();
|
||||
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
|
||||
* 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
|
||||
// the tree elements.
|
||||
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.testBugzilla170728=true
|
||||
|
||||
RSENewConnectionWizardTestCase.testRestrictToSystemType=true
|
||||
|
||||
#
|
||||
# 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.
|
||||
|
|
|
@ -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