Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/widgets/SystemFileFilterStringEditPane.java')
-rw-r--r--rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/widgets/SystemFileFilterStringEditPane.java865
1 files changed, 0 insertions, 865 deletions
diff --git a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/widgets/SystemFileFilterStringEditPane.java b/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/widgets/SystemFileFilterStringEditPane.java
deleted file mode 100644
index 268bd8bc8..000000000
--- a/rse/plugins/org.eclipse.rse.files.ui/src/org/eclipse/rse/files/ui/widgets/SystemFileFilterStringEditPane.java
+++ /dev/null
@@ -1,865 +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:
- * Martin Oberhuber (Wind River) - [168870] refactor org.eclipse.rse.core package of the UI plugin
- * David McKnight (IBM) - [216252] [api][nls] Resource Strings specific to subsystems should be moved from rse.ui into files.ui / shells.ui / processes.ui where possible
- * David McKnight (IBM) - [220547] [api][breaking] SimpleSystemMessage needs to specify a message id and some messages should be shared
- * David McKnight (IBM) - [225506] [api][breaking] RSE UI leaks non-API types
- ********************************************************************************/
-
-package org.eclipse.rse.files.ui.widgets;
-
-import java.util.Arrays;
-import java.util.Vector;
-
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.rse.core.filters.ISystemFilter;
-import org.eclipse.rse.core.filters.ISystemFilterPoolManagerProvider;
-import org.eclipse.rse.core.filters.ISystemFilterPoolReferenceManagerProvider;
-import org.eclipse.rse.core.subsystems.ISubSystem;
-import org.eclipse.rse.core.subsystems.ISubSystemConfiguration;
-import org.eclipse.rse.internal.files.ui.Activator;
-import org.eclipse.rse.internal.files.ui.FileResources;
-import org.eclipse.rse.internal.files.ui.ISystemFileConstants;
-import org.eclipse.rse.internal.files.ui.actions.SystemSelectFileTypesAction;
-import org.eclipse.rse.internal.subsystems.files.core.SystemFileResources;
-import org.eclipse.rse.internal.ui.actions.SystemTestFilterStringAction;
-import org.eclipse.rse.services.clientserver.messages.SimpleSystemMessage;
-import org.eclipse.rse.services.clientserver.messages.SystemMessage;
-import org.eclipse.rse.subsystems.files.core.model.RemoteFileFilterString;
-import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystem;
-import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFileSubSystemConfiguration;
-import org.eclipse.rse.subsystems.files.core.subsystems.RemoteFileSubSystemConfiguration;
-import org.eclipse.rse.subsystems.files.core.util.ValidatorFileFilterString;
-import org.eclipse.rse.ui.RSEUIPlugin;
-import org.eclipse.rse.ui.SystemBasePlugin;
-import org.eclipse.rse.ui.SystemWidgetHelpers;
-import org.eclipse.rse.ui.filters.SystemFilterStringEditPane;
-import org.eclipse.rse.ui.messages.SystemMessageDialog;
-import org.eclipse.rse.ui.validators.ISystemValidator;
-import org.eclipse.rse.ui.validators.ValidatorPathName;
-import org.eclipse.swt.events.ModifyEvent;
-import org.eclipse.swt.events.ModifyListener;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.swt.widgets.Text;
-
-
-/**
- * The edit pane for page 1 of the New File Filter wizard.
- * Prompts for the details of a single file filter string.
- */
-public class SystemFileFilterStringEditPane
- extends SystemFilterStringEditPane
-{
- // GUI widgets
- protected Button filesOnlyCheckBox;
- protected Button subsetByFileNameRadioButton;
- protected Button subsetByFileTypesRadioButton;
- protected Button selectTypesButton;
- protected Label labelFile;
- protected Label labelTypes;
- protected Text textFile;
- protected Text textTypes;
- protected SystemRemoteFolderCombo folderCombo;
- // limits
- protected int filterFileLength = 256;
- protected int filterPathLength = 256;
- // validators
- protected ISystemValidator pathValidator = new ValidatorPathName();
- protected ISystemValidator fileValidator;
- // inputs
- protected boolean caseSensitive = false;
- //protected boolean showTestButton = true;
- protected String[] inputFilterStrings;
- // state
- protected boolean noValidation = false;
- protected boolean callerInstanceOfWizardPage, callerInstanceOfSystemPromptDialog;
- protected boolean skipUniquenessChecking;
- protected boolean calledFromVerify;
- protected boolean dontStealFocus;
- protected RemoteFileSubSystemConfiguration inputSubsystemConfiguration = null;
-
- // actions
- private SystemTestFilterStringAction testAction = null;
- private SystemSelectFileTypesAction typesAction = null;
-
-
- /**
- * Constructor for SystemFileFilterStringEditPane.
- * @param shell
- */
- public SystemFileFilterStringEditPane(Shell shell)
- {
- super(shell);
- }
-
- // ------------------------------
- // INPUT/CONFIGURATION METHODS...
- // ------------------------------
- /**
- * Set the contextual system filter pool reference manager provider. Will be non-null if the
- * current selection is a reference to a filter pool or filter, or a reference manager
- * provider (eg subsystem).
- * <p>
- * Intercept of parent so we can extract the isCaseSensitive() value.
- */
- public void setSystemFilterPoolReferenceManagerProvider(ISystemFilterPoolReferenceManagerProvider provider)
- {
- super.setSystemFilterPoolReferenceManagerProvider(provider);
- if (provider != null)
- caseSensitive = ((ISubSystem)provider).getSubSystemConfiguration().isCaseSensitive();
- }
- /**
- * Set the contextual system filter pool manager provider. Will be non-null if the
- * current selection is a filter pool or filter or reference to either, or a manager
- * provider itself (eg, subsystem factory).
- * <p>
- * Intercept of parent so we can extract the isCaseSensitive() value.
- */
- public void setSystemFilterPoolManagerProvider(ISystemFilterPoolManagerProvider provider)
- {
- super.setSystemFilterPoolManagerProvider(provider);
- if (provider != null)
- caseSensitive = ((ISubSystemConfiguration)provider).isCaseSensitive();
- }
-
- /**
- * Call this to override the text limit for the filter name, from the default of 40.
- */
- public void setFilterFileLength(int max)
- {
- filterFileLength = max;
- if (textFile != null)
- textFile.setTextLimit(max);
- }
- /**
- * Call this to override the text limit for the filter name, from the default of 40.
- */
- public void setFilterPathLength(int max)
- {
- filterPathLength = max;
- if (folderCombo != null)
- folderCombo.setTextLimit(max);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.rse.ui.filters.SystemFilterStringEditPane#setEditable(boolean)
- */
- public void setEditable(boolean editable) {
- super.setEditable(editable);
- enable(filesOnlyCheckBox, editable);
- enable(subsetByFileNameRadioButton, editable);
- enable(selectTypesButton, editable);
- enable(labelFile, editable);
- enable(textFile, editable);
- enable(folderCombo, editable);
- enable(subsetByFileTypesRadioButton, editable);
- enable(labelTypes, editable);
- enable(textTypes, editable);
- }
-
- /**
- * Existing strings are used to aid in uniqueness validation.
- */
- public void setExistingStrings(String[] existingStrings, boolean caseSensitive)
- {
- this.inputFilterStrings = existingStrings;
- this.caseSensitive = caseSensitive;
- }
-
- // ------------------------------
- // LIFECYCLE METHODS...
- // ------------------------------
-
- /**
- * Populate the pane with the GUI widgets
- * @param parent
- * @return Control
- */
- public Control createContents(Composite parent)
- {
- int gridColumns = 2;
- Composite composite_prompts = SystemWidgetHelpers.createComposite(parent, gridColumns);
-
- // directory prompt
- String historyKey = null;
- if (refProvider != null)
- historyKey = ((ISubSystem)refProvider).getSubSystemConfiguration().getId()+".filterStringDialog"; // unique to us //$NON-NLS-1$
- else
- historyKey = "files.filterStringDialog"; // unique to us //$NON-NLS-1$
-
- boolean readonly = false;
- folderCombo = SystemFileWidgetHelpers.createFolderCombo(composite_prompts, null, gridColumns, historyKey, readonly);
- folderCombo.setShowNewConnectionPrompt(false);
- SystemWidgetHelpers.setHelp(folderCombo, RSEUIPlugin.HELPPREFIX+"ffsd0001"); //$NON-NLS-1$
- SystemWidgetHelpers.createLabel(composite_prompts," ",gridColumns); // FILLER //$NON-NLS-1$
-
- // parent folder prompt
- //textFolder = SystemWidgetHelpers.createLabeledTextField(composite_prompts, null, rb, RESID_FILEFILTERSTRING_FOLDER_ROOT);
-
- // "Subset by file name filter" radiobutton
- subsetByFileNameRadioButton = SystemWidgetHelpers.createRadioButton(composite_prompts, null, SystemFileResources.RESID_FILEFILTERSTRING_BYFILENAME_LABEL, SystemFileResources.RESID_FILEFILTERSTRING_BYFILENAME_TOOLTIP);
- //SystemWidgetHelpers.setHelp(subsetByFileNameRadioButton, RSEUIPlugin.HELPPREFIX+"ffsd0002", RSEUIPlugin.HELPPREFIX+"ffsd0003");
- SystemWidgetHelpers.setHelp(subsetByFileNameRadioButton, RSEUIPlugin.HELPPREFIX+"ffsd0002"); //$NON-NLS-1$
- updateGridData(subsetByFileNameRadioButton, gridColumns);
-
- // File name prompt
- //textFile = SystemWidgetHelpers.createLabeledTextField(composite_prompts, null, rb, RESID_FILEFILTERSTRING_FILE_ROOT);
- String indent = " "; //$NON-NLS-1$
- String temp = SystemWidgetHelpers.appendColon(SystemFileResources.RESID_FILEFILTERSTRING_FILE_LABEL);
- labelFile = SystemWidgetHelpers.createLabel(composite_prompts, indent+temp);
- labelFile.setToolTipText(SystemFileResources.RESID_FILEFILTERSTRING_FILE_TOOLTIP);
- textFile = SystemWidgetHelpers.createTextField(composite_prompts, null);
- textFile.setToolTipText(SystemFileResources.RESID_FILEFILTERSTRING_FILE_TOOLTIP);
- //SystemWidgetHelpers.setHelp(textFile, RSEUIPlugin.HELPPREFIX+"ffsd0003",RSEUIPlugin.HELPPREFIX+"ffsd0002");
- SystemWidgetHelpers.setHelp(textFile, RSEUIPlugin.HELPPREFIX+"ffsd0003"); //$NON-NLS-1$
- updateGridData(textFile, gridColumns-1);
- textFile.setText("*"); //$NON-NLS-1$
-
-
- // "Subset by file types filter" radiobutton
- subsetByFileTypesRadioButton = SystemWidgetHelpers.createRadioButton(composite_prompts, null, SystemFileResources.RESID_FILEFILTERSTRING_BYFILETYPES_LABEL, SystemFileResources.RESID_FILEFILTERSTRING_BYFILETYPES_TOOLTIP);
- //SystemWidgetHelpers.setHelp(subsetByFileTypesRadioButton, RSEUIPlugin.HELPPREFIX+"ffsd0004", RSEUIPlugin.HELPPREFIX+"ffsd0005");
- SystemWidgetHelpers.setHelp(subsetByFileTypesRadioButton, RSEUIPlugin.HELPPREFIX+"ffsd0004"); //$NON-NLS-1$
- updateGridData(subsetByFileTypesRadioButton, gridColumns);
-
- // File types prompt
- Composite typesGroup = SystemWidgetHelpers.createComposite(composite_prompts, 3);
- //SystemWidgetHelpers.setHelp(typesGroup, RSEUIPlugin.HELPPREFIX+"ffsd0005",RSEUIPlugin.HELPPREFIX+"ffsd0004");
- SystemWidgetHelpers.setHelp(typesGroup, RSEUIPlugin.HELPPREFIX+"ffsd0005"); //$NON-NLS-1$
- GridLayout layout = (GridLayout)typesGroup.getLayout();
- layout.marginWidth = 0;
- layout.marginHeight = 0;
- updateGridData(typesGroup, gridColumns);
- temp = SystemWidgetHelpers.appendColon(SystemFileResources.RESID_FILEFILTERSTRING_TYPES_LABEL);
- labelTypes = SystemWidgetHelpers.createLabel(typesGroup, indent+temp);
- labelTypes.setToolTipText(SystemFileResources.RESID_FILEFILTERSTRING_TYPES_TOOLTIP);
- textTypes = SystemWidgetHelpers.createReadonlyTextField(typesGroup);
- textTypes.setToolTipText(SystemFileResources.RESID_FILEFILTERSTRING_TYPES_TOOLTIP);
- updateGridData(textTypes, 1);
- selectTypesButton = SystemWidgetHelpers.createPushButton(typesGroup, null, SystemFileResources.RESID_FILEFILTERSTRING_SELECTTYPES_LABEL, SystemFileResources.RESID_FILEFILTERSTRING_SELECTTYPES_TOOLTIP);
- GridData data = (GridData)selectTypesButton.getLayoutData();
- data.grabExcessHorizontalSpace = false;
- data.horizontalAlignment = GridData.FILL;
-
-
- /*
- // Include Folders check box
- subdirCheckBox = SystemWidgetHelpers.createCheckBox(composite_prompts, gridColumns, null,
- rb, RESID_FILEFILTERSTRING_INCFOLDERS_ROOT);
- subdirCheckBox.addSelectionListener(this);
-
- // Include Files check box
- fileCheckBox = SystemWidgetHelpers.createCheckBox(composite_prompts, gridColumns, null,
- rb, RESID_FILEFILTERSTRING_INCFILES_ROOT);
- fileCheckBox.addSelectionListener(this);
- */
-
- // Show Files Only check box
- SystemWidgetHelpers.createLabel(composite_prompts," ",gridColumns); // FILLER //$NON-NLS-1$
- filesOnlyCheckBox = SystemWidgetHelpers.createCheckBox(composite_prompts, gridColumns, null,
- SystemFileResources.RESID_FILEFILTERSTRING_INCFILESONLY_LABEL, SystemFileResources.RESID_FILEFILTERSTRING_INCFILESONLY_TOOLTIP);
- SystemWidgetHelpers.setHelp(filesOnlyCheckBox, RSEUIPlugin.HELPPREFIX+"ffsd0006"); //$NON-NLS-1$
-
- // Test button
- /*
- if (showTestButton)
- {
- SystemWidgetHelpers.createLabel(composite_prompts," ",gridColumns); // FILLER
- SystemWidgetHelpers.createLabel(composite_prompts," ",gridColumns); // FILLER
- createTestButton(composite_prompts, RESID_FILEFILTERSTRING_TEST_ROOT);
- SystemWidgetHelpers.setHelp(testButton, RSEUIPlugin.HELPPREFIX+"ffsd0007");
- updateGridData(testButton, gridColumns);
- }
- */
-
- folderCombo.setFocus();
-
- if (refProvider != null)
- inputSubsystemConfiguration = (RemoteFileSubSystemConfiguration)((ISubSystem)refProvider).getSubSystemConfiguration();
- else if (provider != null)
- inputSubsystemConfiguration = (RemoteFileSubSystemConfiguration)provider;
- pathValidator = inputSubsystemConfiguration.getPathValidator();
- fileValidator = inputSubsystemConfiguration.getFileFilterStringValidator();
- if (refProvider != null)
- folderCombo.setSystemConnection(((ISubSystem)refProvider).getHost());
- else if (inputSubsystemConfiguration != null)
- folderCombo.setSystemTypes(inputSubsystemConfiguration.getSystemTypes());
- folderCombo.setSubSystem((IRemoteFileSubSystem)refProvider);
- folderCombo.setTextLimit(filterPathLength);
- textFile.setTextLimit(filterFileLength);
-
- resetFields();
- doInitializeFields();
-
- folderCombo.addModifyListener(
- new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- validateFolderInput();
- }
- }
- );
- textFile.addModifyListener(
- new ModifyListener() {
- public void modifyText(ModifyEvent e) {
- validateFileInput();
- }
- }
- );
-
- subsetByFileNameRadioButton.addSelectionListener(this);
- subsetByFileTypesRadioButton.addSelectionListener(this);
- selectTypesButton.addSelectionListener(this);
- filesOnlyCheckBox.addSelectionListener(this);
-
- setEditable(editable);
- return composite_prompts;
- }
- private void updateGridData(Control widget, int gridColumns)
- {
- GridData data = (GridData)widget.getLayoutData();
- data.horizontalSpan = gridColumns;
- data.grabExcessHorizontalSpace = true;
- data.horizontalAlignment = GridData.FILL;
- }
-
- /**
- * Return the control to recieve initial focus. Should be overridden if you override createContents
- */
- public Control getInitialFocusControl()
- {
- return folderCombo.getCombo();
- }
-
- /**
- * Override of parent.
- * Called after reset fields, at first create time or when input is reset to a non-null value.
- */
- protected void doInitializeFields()
- {
- if (folderCombo == null)
- return;
- //if (refProvider == null)
- //RSEUIPlugin.logError("Programming Error: input subsystem is not set for SystemFileFilterStringEditPane",null);
-
- if (inputFilterString != null)
- {
- RemoteFileFilterString rffs = new RemoteFileFilterString(inputSubsystemConfiguration, inputFilterString);
- String defaultPath = rffs.getPath();
- folderCombo.setText((defaultPath==null) ? "" : defaultPath); //$NON-NLS-1$
- String defaultFile = rffs.getFile();
- textFile.setText((defaultFile==null) ? "" : defaultFile); //$NON-NLS-1$
- String defaultTypes = rffs.getTypesAsString();
- textTypes.setText((defaultTypes==null) ? "" : defaultTypes); //$NON-NLS-1$
- boolean defaultIncludeFilesOnly = rffs.getShowFiles() && !rffs.getShowSubDirs();
- boolean defaultSubsetByFileName = !rffs.getFilterByTypes();
- // set appropriate radio button for subset type
- subsetByFileNameRadioButton.setSelection(defaultSubsetByFileName);
- subsetByFileTypesRadioButton.setSelection(!defaultSubsetByFileName);
- filesOnlyCheckBox.setSelection(defaultIncludeFilesOnly);
- enableFields(defaultSubsetByFileName);
- }
- }
- /**
- * This is called in the change filter dialog when the user selects "new", or selects another string.
- * You must override this if you override createContents. Be sure to test if the contents have even been created yet!
- */
- protected void resetFields()
- {
- if (folderCombo == null)
- return;
- folderCombo.setText(""); //$NON-NLS-1$
- textFile.setText("*"); //$NON-NLS-1$
- textTypes.setText(""); //$NON-NLS-1$
- subsetByFileNameRadioButton.setSelection(true);
- subsetByFileTypesRadioButton.setSelection(false);
- filesOnlyCheckBox.setSelection(false);
- enableFields(true);
- }
-
- /**
- * Must be overridden if createContents is overridden.
- * <p>
- * This is called by the isComplete, to decide if the default information
- * is complete enough to enable finish. It doesn't do validation, that will be done when
- * finish is pressed.
- */
- protected boolean areFieldsComplete()
- {
- if (folderCombo == null)
- return false;
- else
- {
- boolean filterGiven = false;
- boolean subsetByFileName = false;
- String fileNameText = null;
-
- if (subsetByFileNameRadioButton.getSelection()) {
- fileNameText = textFile.getText().trim();
- filterGiven = fileNameText.length() > 0;
- subsetByFileName = true;
- }
- else {
- filterGiven = textTypes.getText().trim().length() > 0;
- subsetByFileName = false;
- }
-
- String folderText = folderCombo.getText().trim();
-
- if (inputSubsystemConfiguration != null) {
-
- // KM: defect 53009.
- // if input subsystem factory is Unix, then we can not allow empty path
- if (inputSubsystemConfiguration.isUnixStyle()) {
- return folderText.length() > 0 && filterGiven;
- }
- // otherwise, if it is Windows
- else {
-
- // check if folder path is empty
- if (folderText.length() == 0) {
-
- // KM: defect 53210
- // if folder path empty, only valid filter is subset by file name and it
- // must be wild card
- if (subsetByFileName && fileNameText != null) {
- return fileNameText.equals("*"); //$NON-NLS-1$
- }
- // if we are not subsetting by file name, it is not valid
- else {
- return false;
- }
- }
- // if folder path is not empty, we just make sure a subset is given
- else {
- return filterGiven;
- }
- }
- }
- // otherwise don't care about folder path
- else {
- return filterGiven;
- }
- }
- }
- /**
- * Enable/disable fields dependent on radiobuttons
- */
- private void enableFields(boolean byFileName)
- {
- labelTypes.setEnabled(!byFileName);
- //textTypes.setEnabled(!byFileName);
- selectTypesButton.setEnabled(!byFileName);
- labelFile.setEnabled(byFileName);
- textFile.setEnabled(byFileName);
- }
-
- /**
- * Get the action to run when "Select Types..." is pressed by the user
- */
- private SystemSelectFileTypesAction getSelectTypesAction()
- {
- if (typesAction == null)
- typesAction = new SystemSelectFileTypesAction(selectTypesButton.getShell());
- return typesAction;
- }
-
-
- /**
- * Completes processing of the wizard page or dialog. If this
- * method returns true, the wizard/dialog will close;
- * otherwise, it will stay active.
- *
- * @return error, if there is one
- */
- public SystemMessage verify()
- {
- errorMessage = null;
- Control controlInError = null;
- calledFromVerify = true;
- skipEventFiring = true;
-
- errorMessage = validateFolderInput();
- if (errorMessage != null)
- {
- controlInError = folderCombo;
- }
- else
- {
- if (subsetByFileNameRadioButton.getSelection()) {
- errorMessage = validateFileInput();
- }
- else
- {
- if (textTypes.getText().trim().length() == 0)
- {
- errorMessage = new SimpleSystemMessage(Activator.PLUGIN_ID,
- ISystemFileConstants.FILEMSG_ERROR_NOFILETYPES,
- IStatus.ERROR, FileResources.FILEMSG_ERROR_NOFILETYPES, FileResources.FILEMSG_ERROR_NOFILETYPES_DETAILS);
- }
- }
- controlInError = textFile;
- }
- if ((errorMessage == null) && (inputFilterStrings!=null) && !skipUniquenessChecking)
- {
- boolean notUnique = false;
- String currFilterString = getFilterString();
- if (containsFilterString(currFilterString))
- notUnique = true;
- if (notUnique)
- {
- String msgTxt = NLS.bind(FileResources.FILEMSG_VALIDATE_FILEFILTERSTRING_NOTUNIQUE, currFilterString);
- errorMessage = new SimpleSystemMessage(Activator.PLUGIN_ID,
- ISystemFileConstants.FILEMSG_VALIDATE_FILEFILTERSTRING_NOTUNIQUE,
- IStatus.ERROR, msgTxt);
- }
- controlInError = textFile;
- }
-
- if (errorMessage != null)
- {
- if (!dontStealFocus)
- controlInError.setFocus();
- }
- else
- folderCombo.updateHistory(true);
-
- calledFromVerify = false;
- skipEventFiring = false;
- fireChangeEvent(errorMessage);
- return errorMessage;
- }
-
- /*
- *
- */
- private boolean containsFilterString(String newString)
- {
- if (inputFilterStrings == null)
- return false;
- else
- {
- for (int idx=0; idx<inputFilterStrings.length; idx++)
- {
- if (caseSensitive)
- {
- if (inputFilterStrings[idx].equals(newString))
- return true;
- }
- else
- {
- if (inputFilterStrings[idx].equalsIgnoreCase(newString))
- return true;
- }
- }
- }
- return false;
- }
-
- // ---------------------------------------------
- // METHODS FOR VERIFYING INPUT PER KEYSTROKE ...
- // ---------------------------------------------
- /**
- * This hook method is called whenever the text changes in the input field.
- * The default implementation delegates the request to an <code>ISystemValidator</code> object.
- * If the <code>ISystemValidator</code> reports an error the error message is displayed
- * in the Dialog's message line.
- */
- protected SystemMessage validateFileInput()
- {
- if (noValidation || ignoreChanges)
- return null;
-
- errorMessage = null;
-
- // first validate file name
- if (fileValidator != null)
- {
- if (fileValidator instanceof ValidatorFileFilterString)
- {
- ValidatorFileFilterString fv = (ValidatorFileFilterString)fileValidator;
- fv.setIsFileName(true);
- }
-
- errorMessage = fileValidator.validate(textFile.getText().trim());
- }
-
- // if there is no error message, then validate that folder name is correct
- // this fires a change event
- if (errorMessage == null) {
- errorMessage = validateFolderInput();
- }
- // otherwise, simply fire change event
- // Bug 142185: fire an event with null to erase any previously shown and saved error message
- else {
- fireChangeEvent(null);
- fireChangeEvent(errorMessage);
- }
-
- return errorMessage;
- }
- /**
- * This hook method is called whenever the text changes in the input field.
- * The default implementation delegates the request to an <code>ISystemValidator</code> object.
- * If the <code>ISystemValidator</code> reports an error the error message is displayed
- * in the Dialog's message line.
- */
- protected SystemMessage validateFolderInput()
- {
- if (noValidation || ignoreChanges)
- return null;
- errorMessage= null;
-
- String folderComboText = folderCombo.getText().trim();
-
- // first check if folder path is empty
- if (folderComboText.length() == 0) {
-
- // KM: defect 53009.
- // If the input subsystem factory is Unix, we do not allow empty folder path.
- // Note that for Windows, it is perfectly valid to have an empty folder path,
- // which indicates that the filter will resolve to show all the drives
- if (inputSubsystemConfiguration != null) {
-
- if (inputSubsystemConfiguration.isUnixStyle()) {
-
- // let error message come from path validator
- if (pathValidator != null) {
- errorMessage = pathValidator.validate(folderComboText);
- }
- // no path validator, so just use default path empty message
- else {
- errorMessage = new SimpleSystemMessage(Activator.PLUGIN_ID,
- ISystemFileConstants.MSG_VALIDATE_PATH_EMPTY,
- IStatus.ERROR, FileResources.MSG_VALIDATE_PATH_EMPTY, FileResources.MSG_VALIDATE_PATH_EMPTY_DETAILS);
- }
- }
- // KM: defect 53210
- // for Windows, check that subset by file name is selected
- // and that it is wild card character
- else {
-
- if (!subsetByFileNameRadioButton.getSelection() || !textFile.getText().trim().equals("*")) { //$NON-NLS-1$
-
- // let error message come from path validator
- if (pathValidator != null) {
- errorMessage = pathValidator.validate(folderComboText);
- }
- // no path validator, so just use default path empty message
- else {
- errorMessage = new SimpleSystemMessage(Activator.PLUGIN_ID,
- ISystemFileConstants.MSG_VALIDATE_PATH_EMPTY,
- IStatus.ERROR, FileResources.MSG_VALIDATE_PATH_EMPTY, FileResources.MSG_VALIDATE_PATH_EMPTY_DETAILS);
- }
- }
- }
- }
- }
- // otherwise go through path validator
- else if (pathValidator != null) {
- errorMessage = pathValidator.validate(folderComboText);
- }
-
- fireChangeEvent(errorMessage);
- return errorMessage;
- }
-
- // ------------------------------
- // DATA EXTRACTION METHODS
- // ------------------------------
-
- /**
- * Get the filter string in its current form.
- * This should be overridden if createContents is overridden.
- */
- public String getFilterString()
- {
- if (folderCombo == null)
- return inputFilterString;
- String folder = folderCombo.getText().trim();
- boolean subsetByFileName = subsetByFileNameRadioButton.getSelection();
- String file = null;
- if (subsetByFileName)
- file = textFile.getText().trim();
- else
- file = textTypes.getText().trim();
- boolean showFilesOnly = filesOnlyCheckBox.getSelection();
- boolean showSubDirs = !showFilesOnly; //subdirCheckBox.getSelection();
- boolean showFiles = true; //fileCheckBox.getSelection();
- RemoteFileFilterString rffs = new RemoteFileFilterString(inputSubsystemConfiguration, folder, file);
- rffs.setShowSubDirs(showSubDirs);
- rffs.setShowFiles(showFiles);
- //System.out.println("internalGetFilterString: showSubDirs = " + showSubDirs + ", showFiles = " + showFiles);
- //System.out.println("... resulting string: " + rffs.toString());
- return rffs.toString();
- }
-
- // ------------------
- // EVENT LISTENERS...
- // ------------------
-
- /**
- * User has selected something
- */
- public void widgetSelected(SelectionEvent event)
- {
- Object src = event.getSource();
- dontStealFocus = true;
- /*
- else if (src == subdirCheckBox)
- validateFileInput();
- else if (src == fileCheckBox)
- validateFileInput();
- */
- if (src == filesOnlyCheckBox)
- {
- verify();
- }
- else if (src == subsetByFileNameRadioButton)
- {
- verify();
- enableFields(true);
- textFile.setFocus();
- }
- else if (src == subsetByFileTypesRadioButton)
- {
- verify();
- enableFields(false);
- selectTypesButton.setFocus();
- }
- else if (src == selectTypesButton)
- {
- SystemSelectFileTypesAction typesAction = getSelectTypesAction();
- String typesString = textTypes.getText().trim();
- typesAction.setTypes(typesString);
- typesAction.run();
- if (!typesAction.wasCancelled())
- {
- typesString = typesAction.getTypesString();
- textTypes.setText(typesString);
- dontStealFocus = false;
- verify();
- }
- }
- dontStealFocus = false;
- }
-
- /**
- * Called by us or by owning dialog when common Test button is pressed
- */
- public void processTest(Shell shell)
- {
- if (refProvider == null)
- {
- SystemBasePlugin.logWarning("Programming Error: input subsystem is not set"); //$NON-NLS-1$
- return;
- }
- skipUniquenessChecking = true;
- if (verify() == null)
- {
- SystemTestFilterStringAction testAction = new SystemTestFilterStringAction(getShell());
- testAction.setSubSystem((ISubSystem)refProvider);
- testAction.setFilterString(getFilterString());
- try
- {
- testAction.run();
- }
- catch (Exception exc)
- {
-
- SystemMessage msg = SystemMessageDialog.getExceptionMessage(getShell(), exc);
- fireChangeEvent(msg);
- }
- }
- skipUniquenessChecking = false;
- }
-
- // ------------------------
- // STATIC HELPER METHODS...
- // ------------------------
-
- /**
- * Reusable method to return a name validator for creating/update a file system filter string
- * @param filter The system filter to which we are adding/updating a filter string.
- * @param filterString The current filter object on updates. Can be null for new string. Used
- * to remove from the existing string list the current filter string.
- */
- public static ValidatorFileFilterString getFileFilterStringValidator(ISystemFilter filter, String filterString)
- {
- String[] strings = filter.getFilterStrings();
- Vector v = new Vector(strings.length);
- v.addAll(Arrays.asList(strings));
- if (filterString != null)
- v.removeElement(filterString);
- IRemoteFileSubSystemConfiguration ssFactory = (IRemoteFileSubSystemConfiguration)filter.getProvider();
- ValidatorFileFilterString validator = new ValidatorFileFilterString(ssFactory,v);
- return validator;
- }
-
- /**
- * Reusable method to return a name validator for creating/update a file system filter string.
- * No unique checking.
- */
- public static ValidatorFileFilterString getFileFilterStringValidator(IRemoteFileSubSystemConfiguration ssFactory)
- {
- return new ValidatorFileFilterString(ssFactory);
- }
-
- /**
- * If the file filter string is in new mode, and we have a non-Unix system, then if
- * the folder name is empty and other fields are at default, we do not allow an implicit
- * save through changing of filter string or pressing Ok button in the change filter pane.
- * If in new mode for non-Unix system, and the user hasn't changed the other fields,
- * we force user to use the Create button to create the filter string explicitly.
- * @see org.eclipse.rse.ui.filters.SystemFilterStringEditPane#canSaveImplicitly()
- */
- public boolean canSaveImplicitly() {
-
- // KM: defect 53009.
- // check if subsystem factory is non Unix and we're in new mode
- if (newMode && inputSubsystemConfiguration != null && !inputSubsystemConfiguration.isUnixStyle()) {
-
- // check that folder combo is empty
- String folderComboText = folderCombo.getText().trim();
-
- // if so, return false if other fields haven't changed
- // So a user is not able to save with an empty folder path without
- // explicitly pressing Create.
- // Note that if we're changing an existing filter string, a user can save
- // implicitly (i.e. without pressing Apply), by changing the filter
- // string selection in the filter string list in SystemChangeFilterPane
- // or by pressing Ok with pending changes. Same goes for a new filter
- // string for which the user has changed the subset by file name
- // or subset by file type fields. KM: defect 53210
- if (folderComboText.length() == 0 &&
- subsetByFileNameRadioButton.getSelection() &&
- textFile.getText().trim().equals("*")) { //$NON-NLS-1$
- return false;
- }
- else {
- return super.canSaveImplicitly();
- }
- }
- else {
- return super.canSaveImplicitly();
- }
- }
-} \ No newline at end of file

Back to the top