### Eclipse Workspace Patch 1.0 #P org.eclipse.rse.ui Index: UI/org/eclipse/rse/internal/ui/filters/dialogs/SystemNewFilterWizardNamePage.java =================================================================== RCS file: UI/org/eclipse/rse/internal/ui/filters/dialogs/SystemNewFilterWizardNamePage.java diff -N UI/org/eclipse/rse/internal/ui/filters/dialogs/SystemNewFilterWizardNamePage.java --- UI/org/eclipse/rse/internal/ui/filters/dialogs/SystemNewFilterWizardNamePage.java 5 Apr 2008 17:47:19 -0000 1.5 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,486 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002, 2008 IBM Corporation 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 - * - * Initial Contributors: - * The following IBM employees contributed to the Remote System Explorer - * component that contains this file: David McKnight, Kushal Munir, - * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson, - * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley. - * - * Contributors: - * David Dykstal (IBM) - [160403] filters should be connection private by default - * David McKnight (IBM) - [225506] [api][breaking] RSE UI leaks non-API types - *******************************************************************************/ - -package org.eclipse.rse.internal.ui.filters.dialogs; -import org.eclipse.rse.core.filters.ISystemFilterPool; -import org.eclipse.rse.core.filters.ISystemFilterPoolSelectionValidator; -import org.eclipse.rse.core.filters.ISystemFilterPoolWrapper; -import org.eclipse.rse.core.filters.ISystemFilterPoolWrapperInformation; -import org.eclipse.rse.services.clientserver.messages.SystemMessage; -import org.eclipse.rse.ui.SystemWidgetHelpers; -import org.eclipse.rse.ui.filters.dialogs.ISystemNewFilterWizardConfigurator; -import org.eclipse.rse.ui.filters.dialogs.SystemNewFilterWizard; -import org.eclipse.rse.ui.validators.ISystemValidator; -import org.eclipse.rse.ui.wizards.AbstractSystemWizardPage; -import org.eclipse.swt.events.ModifyEvent; -import org.eclipse.swt.events.ModifyListener; -import org.eclipse.swt.events.SelectionEvent; -import org.eclipse.swt.events.SelectionListener; -import org.eclipse.swt.widgets.Button; -import org.eclipse.swt.widgets.Combo; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Text; - - - - -/** - * Second page of the New Filter wizard that prompts for the name of the filter. - */ -public class SystemNewFilterWizardNamePage - extends AbstractSystemWizardPage - implements SelectionListener -{ - - protected Text nameText; - protected Button uniqueCB; - protected Label poolVerbiage; - protected Label poolComboLabel; - protected Combo poolWrapperCombo; - protected Combo poolCombo; - protected SystemMessage errorMessage; - protected String inputFilterName; - protected boolean contentsCreated; - protected boolean userEditedName; - protected boolean ignoreChanges; - protected ISystemValidator nameValidator; - protected ISystemValidator[] nameValidators; - protected ISystemFilterPoolSelectionValidator filterPoolSelectionValidator; - protected ISystemFilterPool[] poolsToSelectFrom = null; - protected ISystemFilterPoolWrapper[] poolWrappers = null; - protected ISystemFilterPoolWrapperInformation poolWrapperInformation; - protected ISystemFilterPool parentPool = null; - private ISystemNewFilterWizardConfigurator configurator; - - /** - * Constructor. - */ - public SystemNewFilterWizardNamePage(SystemNewFilterWizard wizard, ISystemFilterPool parentPool, ISystemNewFilterWizardConfigurator data) - { - super(wizard, "SetNewFilterName", data.getPage2Title(), data.getPage2Description()); //$NON-NLS-1$ - this.parentPool = parentPool; - this.configurator = data; - setHelp(data.getPage2HelpID()); - } - - // --------------------------------- - // INPUT METHODS... - // --------------------------------- - /** - * Set the filter name to default the entry field to - */ - public void setFilterName(String filterName) - { - this.inputFilterName = filterName; - if (nameText != null) - nameText.setText(inputFilterName); - } - /** - * Set the validator to use to verify the filter name is correct - */ - public void setFilterNameValidator(ISystemValidator nameValidator) - { - this.nameValidator = nameValidator; - } - /** - * Call if you want to allow the user to select the filter pool to create this filter in. - */ - public void setAllowFilterPoolSelection(ISystemFilterPool[] poolsToSelectFrom, - ISystemValidator[] nameValidators) - { - this.poolsToSelectFrom = poolsToSelectFrom; - this.nameValidators = nameValidators; - if ((poolsToSelectFrom != null) && (poolsToSelectFrom.length>0)) - { - if (parentPool == null) - parentPool = poolsToSelectFrom[0]; - } - } - /** - * This is an alternative to {@link #setAllowFilterPoolSelection(ISystemFilterPool[], ISystemValidator[])} - *

- * If you want to prompt the user for the parent filter pool to create this filter in, - * but want to not use the term "pool" say, you can use an array of euphamisms. That is, - * you can pass an array of objects that map to filter pools, but have a different - * display name that is shown in the dropdown. - *

- * Of course, if you want to do this, then you will likely want to offer a different - * label and tooltip for the prompt, and different verbiage above the prompt. The - * object this method accepts as a parameter encapsulates all that information, and - * there is a default class you can use for this. - */ - public void setAllowFilterPoolSelection(ISystemFilterPoolWrapperInformation poolWrappersToSelectFrom, - ISystemValidator[] nameValidators) - { - this.poolWrapperInformation = poolWrappersToSelectFrom; - this.nameValidators = nameValidators; - if (parentPool == null) - parentPool = poolWrappersToSelectFrom.getPreSelectWrapper().getSystemFilterPool(); - } - /** - * Set the validator to call when the user selects a filter pool. Optional. - */ - public void setFilterPoolSelectionValidator(ISystemFilterPoolSelectionValidator validator) - { - filterPoolSelectionValidator = validator; - //System.out.println("Inside setFilterPoolSelectionValidator. Non null? " + (validator != null)); - } - - // --------------------------------- - // LIFECYCLE METHODS... - // --------------------------------- - - /** - * Populate the dialog area with our widgets. Return the composite they are in. - */ - public Control createContents(Composite parent) - { - - int nbrColumns = 2; - Composite composite_prompts = SystemWidgetHelpers.createComposite(parent, nbrColumns); - - SystemWidgetHelpers.createVerbiage(composite_prompts, configurator.getPage2NameVerbiage(), nbrColumns, false, 200); - nameText = SystemWidgetHelpers.createLabeledTextField(composite_prompts, null, configurator.getPage2NamePromptLabel(), configurator.getPage2NamePromptTooltip()); - - addSeparatorLine(composite_prompts, nbrColumns); - addFillerLine(composite_prompts, nbrColumns); - - // allow the user to create this filter uniquely for this connection, which means putting it in a - // special filter pool we will create, just for this connection. This option is not shown if we are - // already told which filter pool to create the filter in, such as in Show Filter Pools mode, when - // the user selects New Filter to create a filter in the selected pool. We assume in this case the - // will go in whatever filter is selected. - if ((poolsToSelectFrom!=null) || (poolWrapperInformation!=null)) - { - uniqueCB = SystemWidgetHelpers.createCheckBox(composite_prompts, nbrColumns, configurator.getPage2UniqueToConnectionLabel(), null); - uniqueCB.setToolTipText(configurator.getPage2UniqueToConnectionToolTip()); - uniqueCB.addSelectionListener(this); - uniqueCB.setSelection(true); // [160403] filters should be connection private by default - } - - addFillerLine(composite_prompts, nbrColumns); - - if (poolsToSelectFrom != null) - { - poolVerbiage = SystemWidgetHelpers.createVerbiage(composite_prompts, configurator.getPage2PoolVerbiage(), nbrColumns, false, 200); - poolVerbiage.setToolTipText(configurator.getPage2PoolVerbiageTip()); - poolCombo = SystemWidgetHelpers.createLabeledReadonlyCombo(composite_prompts, null, configurator.getPage2PoolPromptLabel(), configurator.getPage2PoolPromptTooltip()); - poolComboLabel = SystemWidgetHelpers.getLastLabel(); - String[] poolNames = new String[poolsToSelectFrom.length]; - int filterPoolSelectionIndex = 0; - for (int idx=0; idx= 0) - nameText.setTextLimit(maxNameLength); - } - if (inputFilterName != null) - nameText.setText(inputFilterName); - - // add keystroke listeners... - nameText.addModifyListener( - new ModifyListener() { - public void modifyText(ModifyEvent e) { - if (ignoreChanges) - return; - userEditedName = true; - validateNameInput(); - } - } - ); - - setPageComplete(); - contentsCreated = true; - return composite_prompts; - } - /** - * Return the Control to be given initial focus. - * Override from parent. Return control to be given initial focus. - */ - protected Control getInitialFocusControl() - { - return nameText; - } - - /** - * Completes processing of the wizard. If this - * method returns true, the wizard will close; - * otherwise, it will stay active. - * This method is an override from the parent Wizard class. - * - * @return whether the wizard finished successfully - */ - public boolean performFinish() - { - if (!contentsCreated) - return true; - return (verify() == null); - } - - /** - * Return true if the page is complete, so to enable Finish. - * Called by wizard framework. - */ - public boolean isPageComplete() - { - boolean pageComplete = (errorMessage == null) && (nameText!=null); - if (pageComplete) - pageComplete = (nameText.getText().trim().length() > 0); - return pageComplete; - } - - /** - * Inform caller of page-complete status of this page - */ - public void setPageComplete() - { - setPageComplete(isPageComplete()); - } - /** - * User has selected something - */ - public void widgetSelected(SelectionEvent e) - { - Object src = e.getSource(); - if (src == poolCombo) - { - int selection = poolCombo.getSelectionIndex(); - if ((selection >= 0) && (nameValidators!=null)) - nameValidator = nameValidators[selection]; - } - else if (src == poolWrapperCombo) - { - int selection = poolWrapperCombo.getSelectionIndex(); - if ((selection >= 0) && (nameValidators!=null)) - nameValidator = nameValidators[selection]; - } - else if (src == uniqueCB) - { - boolean selected = uniqueCB.getSelection(); - if (poolVerbiage != null) - poolVerbiage.setEnabled(!selected); - if (poolCombo != null) - poolCombo.setEnabled(!selected); - if (poolWrapperCombo != null) - poolWrapperCombo.setEnabled(!selected); - if (poolComboLabel != null) - poolComboLabel.setEnabled(!selected); - } - verify(); - setPageComplete(); - } - /** - * User has selected something and pressed Enter - */ - public void widgetDefaultSelected(SelectionEvent e) - { - } - // --------------------------------- - // VERIFICATION METHODS... - // --------------------------------- - /** - * Verify all contents - */ - public SystemMessage verify() - { - errorMessage = null; - Control controlInError = null; - - if ((errorMessage == null) && (filterPoolSelectionValidator != null)) - { - errorMessage = filterPoolSelectionValidator.validate(getParentSystemFilterPool()); - if (poolCombo != null) - controlInError = poolCombo; - else if (poolWrapperCombo != null) - controlInError = poolCombo; - } - if ((errorMessage == null) && (nameValidator != null)) - { - errorMessage = nameValidator.validate(nameText.getText().trim()); - controlInError = nameText; - } - - if (errorMessage != null) - { - if (controlInError != null) - controlInError.setFocus(); - setErrorMessage(errorMessage); - } - else - clearErrorMessage(); - return errorMessage; - } - /** - * This hook method is called whenever the text changes in the filter name input field. - */ - protected SystemMessage validateNameInput() - { - errorMessage= null; - if (nameValidator != null) - errorMessage = nameValidator.validate(nameText.getText().trim()); - if ((errorMessage == null) && (filterPoolSelectionValidator != null)) - errorMessage = filterPoolSelectionValidator.validate(getParentSystemFilterPool()); - setPageComplete(); - if (errorMessage != null) - setErrorMessage(errorMessage); - else - clearErrorMessage(); - return errorMessage; - } - - - // --------------------------------- - // METHODS FOR EXTRACTING USER DATA - // --------------------------------- - /** - * Return name of filter - * Call this after finish ends successfully. - */ - public String getFilterName() - { - if (nameText != null) - return nameText.getText().trim(); - else - return inputFilterName; - } - /** - * Return the filter pool that was explicitly chosen by the user, - * or implicitly set by the caller. - */ - public ISystemFilterPool getParentSystemFilterPool() - { - ISystemFilterPool pool = null; - // do we prompt with a list of filter pools? Yes, just return selected... - if (poolCombo != null) - { - int selection = poolCombo.getSelectionIndex(); - if (selection < 0) - selection = 0; - pool = poolsToSelectFrom[selection]; - } - // do we prompt using a wrapper of some kind, such a profile or a command set, - // from which we deduce the pool? If so, deduce pool from selected wrapper.... - else if (poolWrapperCombo != null) - { - int selection = poolWrapperCombo.getSelectionIndex(); - if (selection < 0) - selection = 0; - pool = poolWrappers[selection].getSystemFilterPool(); - } - // else no prompt so we must have been given the explicit filter pool in which - // to create this filter. Eg, in Show Filter Pools mode and the user selects a - // filter pool and choose New Filter from it. - else - pool = parentPool; - //System.out.println("Inside getParentSystemFilterPool. returning " + pool.getName()); - return pool; - } - - /** - * Return the user's decision whether to create this filter uniquely - * for this connection, or for all applicable connections. - */ - public boolean getUniqueToThisConnection() - { - if (uniqueCB != null) - return uniqueCB.getSelection(); - else - return false; - } - - // ------------------------------- - // INTERCEPT OF WIZARDPAGE METHODS - // ------------------------------- - /** - * This is called when a page is given focus or loses focus - */ - public void setVisible(boolean visible) - { - super.setVisible(visible); - if (visible) - { - if (!userEditedName && (nameText!=null)) - { - String defaultName = ((SystemNewFilterWizard)getWizard()).getDefaultFilterName(); - if (defaultName != null) - { - ignoreChanges = true; - nameText.setText(defaultName); - ignoreChanges = false; - } - } - verify(); - //System.out.println("Wizard size = " + ((SystemNewFilterWizard)getWizard()).getShell().getSize()); - } - } - - // -------------------------------------------------------------- - // ALL THE MRI ON THIS PAGE IS CONFIGURABLE. CALL HERE TO SET IT. - // -------------------------------------------------------------- - -} Index: UI/org/eclipse/rse/ui/filters/dialogs/SystemNewFilterWizard.java =================================================================== RCS file: /cvsroot/dsdp/org.eclipse.tm.rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/filters/dialogs/SystemNewFilterWizard.java,v retrieving revision 1.15 diff -u -r1.15 SystemNewFilterWizard.java --- UI/org/eclipse/rse/ui/filters/dialogs/SystemNewFilterWizard.java 5 Apr 2008 17:47:25 -0000 1.15 +++ UI/org/eclipse/rse/ui/filters/dialogs/SystemNewFilterWizard.java 21 Apr 2008 14:09:45 -0000 @@ -36,7 +36,6 @@ import org.eclipse.rse.core.filters.ISystemFilterPoolWrapperInformation; import org.eclipse.rse.core.filters.ISystemFilterReference; import org.eclipse.rse.internal.ui.SystemResources; -import org.eclipse.rse.internal.ui.filters.dialogs.SystemNewFilterWizardNamePage; import org.eclipse.rse.services.clientserver.messages.SystemMessage; import org.eclipse.rse.ui.ISystemIconConstants; import org.eclipse.rse.ui.ISystemMessages; @@ -330,7 +329,7 @@ * By default, this page uses the wizard page title as set in setWizardPageTitle(...) or the constructor. * @return the wizard page prompting for the filter name and parent filter pool */ - private SystemNewFilterWizardNamePage createNamePage() + protected SystemNewFilterWizardNamePage createNamePage() { namePage = new SystemNewFilterWizardNamePage(this, parentPool, configurator); return namePage; Index: UI/org/eclipse/rse/ui/filters/dialogs/SystemNewFilterWizardNamePage.java =================================================================== RCS file: UI/org/eclipse/rse/ui/filters/dialogs/SystemNewFilterWizardNamePage.java diff -N UI/org/eclipse/rse/ui/filters/dialogs/SystemNewFilterWizardNamePage.java --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ UI/org/eclipse/rse/ui/filters/dialogs/SystemNewFilterWizardNamePage.java 1 Jan 1970 00:00:00 -0000 @@ -0,0 +1,484 @@ +/******************************************************************************* + * Copyright (c) 2002, 2008 IBM Corporation 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 + * + * Initial Contributors: + * The following IBM employees contributed to the Remote System Explorer + * component that contains this file: David McKnight, Kushal Munir, + * Michael Berger, David Dykstal, Phil Coulthard, Don Yantzi, Eric Simpson, + * Emily Bruner, Mazen Faraj, Adrian Storisteanu, Li Ding, and Kent Hawley. + * + * Contributors: + * David Dykstal (IBM) - [160403] filters should be connection private by default + * David McKnight (IBM) - [225506] [api][breaking] RSE UI leaks non-API types + *******************************************************************************/ + +package org.eclipse.rse.ui.filters.dialogs; +import org.eclipse.rse.core.filters.ISystemFilterPool; +import org.eclipse.rse.core.filters.ISystemFilterPoolSelectionValidator; +import org.eclipse.rse.core.filters.ISystemFilterPoolWrapper; +import org.eclipse.rse.core.filters.ISystemFilterPoolWrapperInformation; +import org.eclipse.rse.services.clientserver.messages.SystemMessage; +import org.eclipse.rse.ui.SystemWidgetHelpers; +import org.eclipse.rse.ui.validators.ISystemValidator; +import org.eclipse.rse.ui.wizards.AbstractSystemWizardPage; +import org.eclipse.swt.events.ModifyEvent; +import org.eclipse.swt.events.ModifyListener; +import org.eclipse.swt.events.SelectionEvent; +import org.eclipse.swt.events.SelectionListener; +import org.eclipse.swt.widgets.Button; +import org.eclipse.swt.widgets.Combo; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Text; + + + + +/** + * Second page of the New Filter wizard that prompts for the name of the filter. + */ +public class SystemNewFilterWizardNamePage + extends AbstractSystemWizardPage + implements SelectionListener +{ + + protected Text nameText; + protected Button uniqueCB; + protected Label poolVerbiage; + protected Label poolComboLabel; + protected Combo poolWrapperCombo; + protected Combo poolCombo; + protected SystemMessage errorMessage; + protected String inputFilterName; + protected boolean contentsCreated; + protected boolean userEditedName; + protected boolean ignoreChanges; + protected ISystemValidator nameValidator; + protected ISystemValidator[] nameValidators; + protected ISystemFilterPoolSelectionValidator filterPoolSelectionValidator; + protected ISystemFilterPool[] poolsToSelectFrom = null; + protected ISystemFilterPoolWrapper[] poolWrappers = null; + protected ISystemFilterPoolWrapperInformation poolWrapperInformation; + protected ISystemFilterPool parentPool = null; + private ISystemNewFilterWizardConfigurator configurator; + + /** + * Constructor. + */ + public SystemNewFilterWizardNamePage(SystemNewFilterWizard wizard, ISystemFilterPool parentPool, ISystemNewFilterWizardConfigurator data) + { + super(wizard, "SetNewFilterName", data.getPage2Title(), data.getPage2Description()); //$NON-NLS-1$ + this.parentPool = parentPool; + this.configurator = data; + setHelp(data.getPage2HelpID()); + } + + // --------------------------------- + // INPUT METHODS... + // --------------------------------- + /** + * Set the filter name to default the entry field to + */ + public void setFilterName(String filterName) + { + this.inputFilterName = filterName; + if (nameText != null) + nameText.setText(inputFilterName); + } + /** + * Set the validator to use to verify the filter name is correct + */ + public void setFilterNameValidator(ISystemValidator nameValidator) + { + this.nameValidator = nameValidator; + } + /** + * Call if you want to allow the user to select the filter pool to create this filter in. + */ + public void setAllowFilterPoolSelection(ISystemFilterPool[] poolsToSelectFrom, + ISystemValidator[] nameValidators) + { + this.poolsToSelectFrom = poolsToSelectFrom; + this.nameValidators = nameValidators; + if ((poolsToSelectFrom != null) && (poolsToSelectFrom.length>0)) + { + if (parentPool == null) + parentPool = poolsToSelectFrom[0]; + } + } + /** + * This is an alternative to {@link #setAllowFilterPoolSelection(ISystemFilterPool[], ISystemValidator[])} + *

+ * If you want to prompt the user for the parent filter pool to create this filter in, + * but want to not use the term "pool" say, you can use an array of euphamisms. That is, + * you can pass an array of objects that map to filter pools, but have a different + * display name that is shown in the dropdown. + *

+ * Of course, if you want to do this, then you will likely want to offer a different + * label and tooltip for the prompt, and different verbiage above the prompt. The + * object this method accepts as a parameter encapsulates all that information, and + * there is a default class you can use for this. + */ + public void setAllowFilterPoolSelection(ISystemFilterPoolWrapperInformation poolWrappersToSelectFrom, + ISystemValidator[] nameValidators) + { + this.poolWrapperInformation = poolWrappersToSelectFrom; + this.nameValidators = nameValidators; + if (parentPool == null) + parentPool = poolWrappersToSelectFrom.getPreSelectWrapper().getSystemFilterPool(); + } + /** + * Set the validator to call when the user selects a filter pool. Optional. + */ + public void setFilterPoolSelectionValidator(ISystemFilterPoolSelectionValidator validator) + { + filterPoolSelectionValidator = validator; + //System.out.println("Inside setFilterPoolSelectionValidator. Non null? " + (validator != null)); + } + + // --------------------------------- + // LIFECYCLE METHODS... + // --------------------------------- + + /** + * Populate the dialog area with our widgets. Return the composite they are in. + */ + public Control createContents(Composite parent) + { + + int nbrColumns = 2; + Composite composite_prompts = SystemWidgetHelpers.createComposite(parent, nbrColumns); + + SystemWidgetHelpers.createVerbiage(composite_prompts, configurator.getPage2NameVerbiage(), nbrColumns, false, 200); + nameText = SystemWidgetHelpers.createLabeledTextField(composite_prompts, null, configurator.getPage2NamePromptLabel(), configurator.getPage2NamePromptTooltip()); + + addSeparatorLine(composite_prompts, nbrColumns); + addFillerLine(composite_prompts, nbrColumns); + + // allow the user to create this filter uniquely for this connection, which means putting it in a + // special filter pool we will create, just for this connection. This option is not shown if we are + // already told which filter pool to create the filter in, such as in Show Filter Pools mode, when + // the user selects New Filter to create a filter in the selected pool. We assume in this case the + // will go in whatever filter is selected. + if ((poolsToSelectFrom!=null) || (poolWrapperInformation!=null)) + { + uniqueCB = SystemWidgetHelpers.createCheckBox(composite_prompts, nbrColumns, configurator.getPage2UniqueToConnectionLabel(), null); + uniqueCB.setToolTipText(configurator.getPage2UniqueToConnectionToolTip()); + uniqueCB.addSelectionListener(this); + uniqueCB.setSelection(true); // [160403] filters should be connection private by default + } + + addFillerLine(composite_prompts, nbrColumns); + + if (poolsToSelectFrom != null) + { + poolVerbiage = SystemWidgetHelpers.createVerbiage(composite_prompts, configurator.getPage2PoolVerbiage(), nbrColumns, false, 200); + poolVerbiage.setToolTipText(configurator.getPage2PoolVerbiageTip()); + poolCombo = SystemWidgetHelpers.createLabeledReadonlyCombo(composite_prompts, null, configurator.getPage2PoolPromptLabel(), configurator.getPage2PoolPromptTooltip()); + poolComboLabel = SystemWidgetHelpers.getLastLabel(); + String[] poolNames = new String[poolsToSelectFrom.length]; + int filterPoolSelectionIndex = 0; + for (int idx=0; idx= 0) + nameText.setTextLimit(maxNameLength); + } + if (inputFilterName != null) + nameText.setText(inputFilterName); + + // add keystroke listeners... + nameText.addModifyListener( + new ModifyListener() { + public void modifyText(ModifyEvent e) { + if (ignoreChanges) + return; + userEditedName = true; + validateNameInput(); + } + } + ); + + setPageComplete(); + contentsCreated = true; + return composite_prompts; + } + /** + * Return the Control to be given initial focus. + * Override from parent. Return control to be given initial focus. + */ + protected Control getInitialFocusControl() + { + return nameText; + } + + /** + * Completes processing of the wizard. If this + * method returns true, the wizard will close; + * otherwise, it will stay active. + * This method is an override from the parent Wizard class. + * + * @return whether the wizard finished successfully + */ + public boolean performFinish() + { + if (!contentsCreated) + return true; + return (verify() == null); + } + + /** + * Return true if the page is complete, so to enable Finish. + * Called by wizard framework. + */ + public boolean isPageComplete() + { + boolean pageComplete = (errorMessage == null) && (nameText!=null); + if (pageComplete) + pageComplete = (nameText.getText().trim().length() > 0); + return pageComplete; + } + + /** + * Inform caller of page-complete status of this page + */ + public void setPageComplete() + { + setPageComplete(isPageComplete()); + } + /** + * User has selected something + */ + public void widgetSelected(SelectionEvent e) + { + Object src = e.getSource(); + if (src == poolCombo) + { + int selection = poolCombo.getSelectionIndex(); + if ((selection >= 0) && (nameValidators!=null)) + nameValidator = nameValidators[selection]; + } + else if (src == poolWrapperCombo) + { + int selection = poolWrapperCombo.getSelectionIndex(); + if ((selection >= 0) && (nameValidators!=null)) + nameValidator = nameValidators[selection]; + } + else if (src == uniqueCB) + { + boolean selected = uniqueCB.getSelection(); + if (poolVerbiage != null) + poolVerbiage.setEnabled(!selected); + if (poolCombo != null) + poolCombo.setEnabled(!selected); + if (poolWrapperCombo != null) + poolWrapperCombo.setEnabled(!selected); + if (poolComboLabel != null) + poolComboLabel.setEnabled(!selected); + } + verify(); + setPageComplete(); + } + /** + * User has selected something and pressed Enter + */ + public void widgetDefaultSelected(SelectionEvent e) + { + } + // --------------------------------- + // VERIFICATION METHODS... + // --------------------------------- + /** + * Verify all contents + */ + public SystemMessage verify() + { + errorMessage = null; + Control controlInError = null; + + if ((errorMessage == null) && (filterPoolSelectionValidator != null)) + { + errorMessage = filterPoolSelectionValidator.validate(getParentSystemFilterPool()); + if (poolCombo != null) + controlInError = poolCombo; + else if (poolWrapperCombo != null) + controlInError = poolCombo; + } + if ((errorMessage == null) && (nameValidator != null)) + { + errorMessage = nameValidator.validate(nameText.getText().trim()); + controlInError = nameText; + } + + if (errorMessage != null) + { + if (controlInError != null) + controlInError.setFocus(); + setErrorMessage(errorMessage); + } + else + clearErrorMessage(); + return errorMessage; + } + /** + * This hook method is called whenever the text changes in the filter name input field. + */ + protected SystemMessage validateNameInput() + { + errorMessage= null; + if (nameValidator != null) + errorMessage = nameValidator.validate(nameText.getText().trim()); + if ((errorMessage == null) && (filterPoolSelectionValidator != null)) + errorMessage = filterPoolSelectionValidator.validate(getParentSystemFilterPool()); + setPageComplete(); + if (errorMessage != null) + setErrorMessage(errorMessage); + else + clearErrorMessage(); + return errorMessage; + } + + + // --------------------------------- + // METHODS FOR EXTRACTING USER DATA + // --------------------------------- + /** + * Return name of filter + * Call this after finish ends successfully. + */ + public String getFilterName() + { + if (nameText != null) + return nameText.getText().trim(); + else + return inputFilterName; + } + /** + * Return the filter pool that was explicitly chosen by the user, + * or implicitly set by the caller. + */ + public ISystemFilterPool getParentSystemFilterPool() + { + ISystemFilterPool pool = null; + // do we prompt with a list of filter pools? Yes, just return selected... + if (poolCombo != null) + { + int selection = poolCombo.getSelectionIndex(); + if (selection < 0) + selection = 0; + pool = poolsToSelectFrom[selection]; + } + // do we prompt using a wrapper of some kind, such a profile or a command set, + // from which we deduce the pool? If so, deduce pool from selected wrapper.... + else if (poolWrapperCombo != null) + { + int selection = poolWrapperCombo.getSelectionIndex(); + if (selection < 0) + selection = 0; + pool = poolWrappers[selection].getSystemFilterPool(); + } + // else no prompt so we must have been given the explicit filter pool in which + // to create this filter. Eg, in Show Filter Pools mode and the user selects a + // filter pool and choose New Filter from it. + else + pool = parentPool; + //System.out.println("Inside getParentSystemFilterPool. returning " + pool.getName()); + return pool; + } + + /** + * Return the user's decision whether to create this filter uniquely + * for this connection, or for all applicable connections. + */ + public boolean getUniqueToThisConnection() + { + if (uniqueCB != null) + return uniqueCB.getSelection(); + else + return false; + } + + // ------------------------------- + // INTERCEPT OF WIZARDPAGE METHODS + // ------------------------------- + /** + * This is called when a page is given focus or loses focus + */ + public void setVisible(boolean visible) + { + super.setVisible(visible); + if (visible) + { + if (!userEditedName && (nameText!=null)) + { + String defaultName = ((SystemNewFilterWizard)getWizard()).getDefaultFilterName(); + if (defaultName != null) + { + ignoreChanges = true; + nameText.setText(defaultName); + ignoreChanges = false; + } + } + verify(); + //System.out.println("Wizard size = " + ((SystemNewFilterWizard)getWizard()).getShell().getSize()); + } + } + + // -------------------------------------------------------------- + // ALL THE MRI ON THIS PAGE IS CONFIGURABLE. CALL HERE TO SET IT. + // -------------------------------------------------------------- + +}