Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'rse/plugins/org.eclipse.rse.importexport/src/org/eclipse/rse/internal/importexport/files/RemoteExportWizardPage1.java')
-rw-r--r--rse/plugins/org.eclipse.rse.importexport/src/org/eclipse/rse/internal/importexport/files/RemoteExportWizardPage1.java928
1 files changed, 0 insertions, 928 deletions
diff --git a/rse/plugins/org.eclipse.rse.importexport/src/org/eclipse/rse/internal/importexport/files/RemoteExportWizardPage1.java b/rse/plugins/org.eclipse.rse.importexport/src/org/eclipse/rse/internal/importexport/files/RemoteExportWizardPage1.java
deleted file mode 100644
index e6a2d8d93..000000000
--- a/rse/plugins/org.eclipse.rse.importexport/src/org/eclipse/rse/internal/importexport/files/RemoteExportWizardPage1.java
+++ /dev/null
@@ -1,928 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 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
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- * Martin Oberhuber (Wind River) - [174945] split importexport icons from rse.ui
- * 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) - [216252] MessageFormat.format -> NLS.bind
- * David McKnight (IBM) - [220547] [api][breaking] SimpleSystemMessage needs to specify a message id and some messages should be shared
- *******************************************************************************/
-package org.eclipse.rse.internal.importexport.files;
-
-import java.io.File;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.IWorkspaceRoot;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.dialogs.IDialogSettings;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.window.Window;
-import org.eclipse.osgi.util.NLS;
-import org.eclipse.rse.core.model.IHost;
-import org.eclipse.rse.files.ui.actions.SystemSelectRemoteFolderAction;
-import org.eclipse.rse.internal.importexport.IRemoteImportExportConstants;
-import org.eclipse.rse.internal.importexport.RemoteImportExportPlugin;
-import org.eclipse.rse.internal.importexport.RemoteImportExportResources;
-import org.eclipse.rse.internal.importexport.RemoteImportExportUtil;
-import org.eclipse.rse.internal.importexport.SystemImportExportResources;
-import org.eclipse.rse.services.clientserver.messages.CommonMessages;
-import org.eclipse.rse.services.clientserver.messages.ICommonMessageIds;
-import org.eclipse.rse.services.clientserver.messages.SimpleSystemMessage;
-import org.eclipse.rse.services.clientserver.messages.SystemMessage;
-import org.eclipse.rse.subsystems.files.core.subsystems.IRemoteFile;
-import org.eclipse.rse.ui.SystemBasePlugin;
-import org.eclipse.rse.ui.SystemWidgetHelpers;
-import org.eclipse.rse.ui.messages.SystemMessageDialog;
-import org.eclipse.rse.ui.messages.SystemMessageLine;
-import org.eclipse.rse.ui.wizards.ISystemWizardPage;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Button;
-import org.eclipse.swt.widgets.Combo;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Group;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Listener;
-import org.eclipse.swt.widgets.Text;
-import org.eclipse.swt.widgets.Widget;
-import org.eclipse.ui.dialogs.SaveAsDialog;
-import org.eclipse.ui.dialogs.WizardExportResourcesPage;
-
-/**
- * Page 1 of the base resource export-to-file-system Wizard
- *
- * 040510 AR Fix "Create folder" question. Previous fix changed the way we were
- * asking user if they wanted target folder created, to use RSE
- * widgets. But introduced error.
- */
-class RemoteExportWizardPage1 extends WizardExportResourcesPage implements Listener, ISystemWizardPage {
- private Object destinationFolder = null;
- private String helpId;
- private Composite parentComposite;
- private SystemMessageLine msgLine;
- private SystemMessage pendingMessage, pendingErrorMessage;
- // widgets
- private Combo destinationNameField;
- private Button destinationBrowseButton;
- protected Button overwriteExistingFilesCheckbox;
- protected Button createDirectoryStructureButton;
- protected Button createSelectionOnlyButton;
- protected Button saveSettingsButton;
- protected Label descFilePathLabel;
- protected Text descFilePathField;
- protected Button descFileBrowseButton;
- // input object
- protected Object inputObject = null;
- // constants
- private static final int MY_SIZING_TEXT_FIELD_WIDTH = 250;
- // dialog store id constants
- private static final String STORE_DESTINATION_NAMES_ID = "RemoteExportWizard.STORE_DESTINATION_NAMES_ID"; //$NON-NLS-1$
- private static final String STORE_OVERWRITE_EXISTING_FILES_ID = "RemoteExportWizard.STORE_OVERWRITE_EXISTING_FILES_ID"; //$NON-NLS-1$
- private static final String STORE_CREATE_STRUCTURE_ID = "RemoteExportWizard.STORE_CREATE_STRUCTURE_ID"; //$NON-NLS-1$
- private static final String STORE_CREATE_DESCRIPTION_FILE_ID = "RemoteExportWizard.STORE_CREATE_DESCRIPTION_FILE_ID"; //$NON-NLS-1$
- private static final String STORE_DESCRIPTION_FILE_NAME_ID = "RemoteExportWizard.STORE_DESCRIPTION_FILE_NAME_ID"; //$NON-NLS-1$
- //messages
- private static final SystemMessage DESTINATION_EMPTY_MESSAGE = new SimpleSystemMessage(RemoteImportExportPlugin.PLUGIN_ID,
- IRemoteImportExportConstants.FILEMSG_DESTINATION_EMPTY,
- IStatus.ERROR,
- RemoteImportExportResources.FILEMSG_DESTINATION_EMPTY,
- RemoteImportExportResources.FILEMSG_DESTINATION_EMPTY_DETAILS);
-
-
- /**
- * Create an instance of this class
- */
- protected RemoteExportWizardPage1(String name, IStructuredSelection selection) {
- super(name, selection);
- setInputObject(selection);
- }
-
- /**
- * Create an instance of this class
- */
- public RemoteExportWizardPage1(IStructuredSelection selection) {
- this("fileSystemExportPage1", selection); //$NON-NLS-1$
- setTitle(SystemImportExportResources.RESID_FILEEXPORT_PAGE1_TITLE);
- setDescription(SystemImportExportResources.RESID_FILEEXPORT_PAGE1_DESCRIPTION);
- }
-
- /**
- * Add the passed value to self's destination widget's history
- *
- * @param value java.lang.String
- */
- protected void addDestinationItem(String value) {
- destinationNameField.add(value);
- }
-
- /** (non-Javadoc)
- * Method declared on IDialogPage.
- */
- public void createControl(Composite parent) {
- parentComposite = new Composite(parent, SWT.NONE);
- parentComposite.setLayout(new GridLayout(1, false));
- parentComposite.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true));
- super.createControl(parentComposite);
- msgLine = new SystemMessageLine(parentComposite);
- msgLine.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, true));
- if (pendingMessage != null) setMessage(pendingMessage);
- if (pendingErrorMessage != null) setErrorMessage(pendingErrorMessage);
- giveFocusToDestination();
- SystemWidgetHelpers.setWizardPageMnemonics(parentComposite);
- if (helpId != null) {
- SystemWidgetHelpers.setHelp(parentComposite, helpId);
- } else {
- SystemWidgetHelpers.setHelp(parentComposite, RemoteImportExportPlugin.HELPPREFIX + "import_context"); //$NON-NLS-1$
- }
- setControl(parentComposite);
- // super.createControl(parent);
- // parentComposite = parent;
- // giveFocusToDestination();
- // SystemWidgetHelpers.setHelp(getControl(), RemoteImportExportPlugin.HELPPREFIX + "export_context");
- // Control c = getControl();
- // if (c instanceof Composite)
- // {
- // SystemWidgetHelpers.setWizardPageMnemonics((Composite)c);
- // parentComposite = (Composite)c;
- // if (helpId != null)
- // SystemWidgetHelpers.setHelp(parentComposite, helpId);
- // }
- // else if (c instanceof Button)
- // {
- // Mnemonics ms = new Mnemonics();
- // ms.setMnemonic((Button)c);
- // }
- // configureMessageLine();
- }
-
- /**
- * Create the export destination specification widgets
- *
- * @param parent org.eclipse.swt.widgets.Composite
- */
- protected void createDestinationGroup(Composite parent) {
- // destination specification group
- Composite destinationSelectionGroup = SystemWidgetHelpers.createComposite(parent, 3);
- ((GridData) destinationSelectionGroup.getLayoutData()).verticalAlignment = GridData.FILL;
- destinationNameField = SystemWidgetHelpers.createLabeledReadonlyCombo(destinationSelectionGroup, null, SystemImportExportResources.RESID_FILEEXPORT_DESTINATION_LABEL,
- SystemImportExportResources.RESID_FILEEXPORT_DESTINATION_TOOLTIP);
- ((GridData) destinationNameField.getLayoutData()).widthHint = MY_SIZING_TEXT_FIELD_WIDTH;
- ((GridData) destinationNameField.getLayoutData()).grabExcessHorizontalSpace = true;
- destinationNameField.addListener(SWT.Modify, this);
- destinationNameField.addListener(SWT.Selection, this);
- // destination browse button
- destinationBrowseButton = SystemWidgetHelpers.createPushButton(destinationSelectionGroup, null, SystemImportExportResources.RESID_FILEEXPORT_DESTINATION_BROWSE_LABEL,
- SystemImportExportResources.RESID_FILEEXPORT_DESTINATION_BROWSE_TOOLTIP);
- ((GridData) destinationBrowseButton.getLayoutData()).grabExcessHorizontalSpace = false;
- destinationBrowseButton.addListener(SWT.Selection, this);
- new Label(parent, SWT.NONE); // vertical spacer
- }
-
- /**
- * Create the export options specification widgets.
- * @param optionsGroup the group into which the option buttons will be placed
- */
- protected void createOptionsGroupButtons(Group optionsGroup) {
- overwriteExistingFilesCheckbox = SystemWidgetHelpers.createCheckBox(optionsGroup, 1, null, SystemImportExportResources.RESID_FILEEXPORT_OPTION_OVERWRITE_LABEL,
- SystemImportExportResources.RESID_FILEEXPORT_OPTION_OVERWRITE_TOOLTIP);
- createDirectoryStructureButton = SystemWidgetHelpers.createRadioButton(optionsGroup, null, SystemImportExportResources.RESID_FILEEXPORT_OPTION_CREATEALL_LABEL,
- SystemImportExportResources.RESID_FILEEXPORT_OPTION_CREATEALL_TOOLTIP);
- createSelectionOnlyButton = SystemWidgetHelpers.createRadioButton(optionsGroup, null, SystemImportExportResources.RESID_FILEEXPORT_OPTION_CREATESEL_LABEL,
- SystemImportExportResources.RESID_FILEEXPORT_OPTION_CREATESEL_TOOLTIP);
- createSelectionOnlyButton.setSelection(true);
- Composite comp = SystemWidgetHelpers.createComposite(optionsGroup, 3);
- GridLayout layout = new GridLayout();
- layout.numColumns = 3;
- layout.marginWidth = 0;
- comp.setLayout(layout);
- comp.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_FILL | GridData.GRAB_HORIZONTAL));
- saveSettingsButton = SystemWidgetHelpers.createCheckBox(comp, 3, null, SystemImportExportResources.RESID_FILEEXPORT_OPTION_SETTINGS_LABEL,
- SystemImportExportResources.RESID_FILEEXPORT_OPTION_SETTINGS_TOOLTIP);
- saveSettingsButton.addListener(SWT.Selection, this);
- descFilePathLabel = new Label(comp, SWT.NONE);
- descFilePathLabel.setText(SystemImportExportResources.RESID_FILEEXPORT_OPTION_SETTINGS_DESCFILE_LABEL);
- GridData data = new GridData();
- descFilePathLabel.setLayoutData(data);
- descFilePathField = new Text(comp, SWT.SINGLE | SWT.BORDER);
- descFilePathField.setToolTipText(SystemImportExportResources.RESID_FILEEXPORT_OPTION_SETTINGS_DESCFILE_PATH_TOOLTIP);
- data = new GridData();
- data.horizontalAlignment = GridData.HORIZONTAL_ALIGN_FILL;
- data.grabExcessHorizontalSpace = true;
- data.widthHint = convertWidthInCharsToPixels(80);
- descFilePathField.setLayoutData(data);
- descFilePathField.addListener(SWT.Modify, this);
- descFileBrowseButton = SystemWidgetHelpers.createPushButton(comp, null, SystemImportExportResources.RESID_FILEEXPORT_OPTION_SETTINGS_DESCFILE_BROWSE_LABEL,
- SystemImportExportResources.RESID_FILEEXPORT_OPTION_SETTINGS_DESCFILE_BROWSE_TOOLTIP);
- descFileBrowseButton.addListener(SWT.Selection, this);
- }
-
- /**
- * @see org.eclipse.ui.dialogs.WizardExportResourcesPage#setupBasedOnInitialSelections()
- */
- protected void setupBasedOnInitialSelections() {
- Object input = getInputObject();
- boolean allResource = true;
- // ensure initial input, i.e. selection, comprises of IResources only
- if ((input != null) && (input instanceof IStructuredSelection)) {
- IStructuredSelection sel = (IStructuredSelection) input;
- if (sel.size() > 0) {
- Iterator z = sel.iterator();
- while (z.hasNext()) {
- Object obj = z.next();
- if (!(obj instanceof IResource)) {
- allResource = false;
- break;
- }
- }
- } else {
- allResource = false;
- }
- } else {
- allResource = false;
- }
- // if selections are all resources, call super method to setup
- if (allResource) {
- super.setupBasedOnInitialSelections();
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.dialogs.WizardDataTransferPage#updateWidgetEnablements()
- */
- protected void updateWidgetEnablements() {
- boolean isSaveSettings = isSaveSettings();
- descFilePathLabel.setEnabled(isSaveSettings);
- descFilePathField.setEnabled(isSaveSettings);
- descFileBrowseButton.setEnabled(isSaveSettings);
- }
-
- /**
- * Attempts to ensure that the specified directory exists on the local file system.
- * Answers a boolean indicating success.
- *
- * @return boolean
- * @param directory java.io.File
- */
- protected boolean ensureDirectoryExists(File directory) {
- if (!directory.exists()) {
-
- String msgTxt = RemoteImportExportResources.FILEMSG_TARGET_EXISTS;
- String msgDetails = NLS.bind(RemoteImportExportResources.FILEMSG_TARGET_EXISTS_DETAILS, directory.getAbsolutePath());
-
- SystemMessage msg = new SimpleSystemMessage(RemoteImportExportPlugin.PLUGIN_ID,
- IRemoteImportExportConstants.FILEMSG_TARGET_EXISTS,
- IStatus.ERROR, msgTxt, msgDetails);
- SystemMessageDialog dlg = new SystemMessageDialog(getContainer().getShell(), msg);
- if (!dlg.openQuestionNoException()) return false;
- if (!directory.mkdirs()) {
- msgTxt = RemoteImportExportResources.FILEMSG_CREATE_FOLDER_FAILED;
- msgDetails = NLS.bind(RemoteImportExportResources.FILEMSG_CREATE_FOLDER_FAILED_DETAILS, directory.getAbsolutePath());
-
- msg = new SimpleSystemMessage(RemoteImportExportPlugin.PLUGIN_ID,
- IRemoteImportExportConstants.FILEMSG_CREATE_FOLDER_FAILED,
- IStatus.ERROR, msgTxt, msgDetails);
- msg.makeSubstitution(directory.getAbsolutePath());
- setErrorMessage(msg);
- giveFocusToDestination();
- return false;
- }
- }
- return true;
- }
-
- /**
- * If the target for export does not exist then attempt to create it.
- * Answer a boolean indicating whether the target exists (ie.- if it
- * either pre-existed or this method was able to create it)
- *
- * @return boolean
- */
- protected boolean ensureTargetIsValid(File targetDirectory) {
- if (targetDirectory.exists() && !targetDirectory.isDirectory()) {
- String msgTxt = RemoteImportExportResources.FILEMSG_SOURCE_IS_FILE;
- String msgDetails = NLS.bind(RemoteImportExportResources.FILEMSG_SOURCE_IS_FILE_DETAILS, targetDirectory.getAbsolutePath());
-
- SystemMessage msg = new SimpleSystemMessage(RemoteImportExportPlugin.PLUGIN_ID,
- IRemoteImportExportConstants.FILEMSG_SOURCE_IS_FILE,
- IStatus.ERROR, msgTxt, msgDetails);
-
- setErrorMessage(msg);
- giveFocusToDestination();
- return false;
- }
- return ensureDirectoryExists(targetDirectory);
- }
-
- /**
- * Set up and execute the passed Operation. Answer a boolean indicating success.
- *
- * @return boolean
- */
- protected boolean executeExportOperation(RemoteFileExportOperation op) {
- try {
- getContainer().run(true, true, op);
- } catch (InterruptedException e) {
- return false;
- } catch (InvocationTargetException e) { // Display error dialog if exception is NullPointer, assume this means
- // communication failure. See RemoteFileExportOperation.exportFile()
- if (!NullPointerException.class.isInstance(e.getTargetException())) {
- displayErrorDialog(e.getTargetException());
- return false;
- }
- } catch (Exception e) {
- displayErrorDialog(e.getMessage());
- return false;
- }
- IStatus status = op.getStatus();
- if (!status.isOK()) {
- String msgTxt = NLS.bind(RemoteImportExportResources.FILEMSG_EXPORT_FAILED, status);
- SystemMessage msg = new SimpleSystemMessage(RemoteImportExportPlugin.PLUGIN_ID,
- IRemoteImportExportConstants.FILEMSG_EXPORT_FAILED,
- IStatus.ERROR, msgTxt);
- SystemMessageDialog dlg = new SystemMessageDialog(getContainer().getShell(), msg);
- dlg.openWithDetails();
- return false;
- }
- return true;
- }
-
- /**
- * The Finish button was pressed. Try to do the required work now and answer
- * a boolean indicating success. If false is returned then the wizard will
- * not close.
- *
- * @return boolean
- */
- public boolean finish() {
- clearMessage();
- clearErrorMessage();
- boolean ret = false;
- setDestinationValue(destinationNameField.getText().trim());
- if (Utilities.isConnectionValid(destinationNameField.getText().trim(), getShell()) && isDestinationFolder()) {
- if (!ensureTargetIsValid((File) destinationFolder)) return false;
- List resourcesToExport = getWhiteCheckedResources();
- //Save dirty editors if possible but do not stop if not all are saved
- saveDirtyEditors();
- // about to invoke the operation so save our state
- saveWidgetValues();
- if (resourcesToExport.size() > 0) {
- // export data
- RemoteFileExportData data = new RemoteFileExportData();
- data.setElements(resourcesToExport);
- data.setCreateDirectoryStructure(createDirectoryStructureButton.getSelection());
- data.setCreateSelectionOnly(createSelectionOnlyButton.getSelection());
- data.setOverWriteExistingFiles(overwriteExistingFilesCheckbox.getSelection());
- data.setSaveSettings(saveSettingsButton.getSelection());
- data.setDescriptionFilePath(getDescriptionLocation());
- data.setDestination(getDestinationValue());
- // execute export
- ret = executeExportOperation(new RemoteFileExportOperation(data, this));
- return ret;
- }
-
- String msgTxt = RemoteImportExportResources.FILEMSG_EXPORT_NONE_SELECTED;
- String msgDetails = RemoteImportExportResources.FILEMSG_EXPORT_NONE_SELECTED_DETAILS;
-
- SystemMessage msg = new SimpleSystemMessage(RemoteImportExportPlugin.PLUGIN_ID,
- IRemoteImportExportConstants.FILEMSG_EXPORT_NONE_SELECTED,
- IStatus.ERROR, msgTxt, msgDetails);
- setErrorMessage(msg);
- return false;
- }
- return false;
- }
-
- /**
- * Gets the destination.
- * @return the desstionation.
- */
- protected String getDestinationValue() {
- return destinationNameField.getText().trim();
- }
-
- /**
- * Gets the description.
- * @return the description.
- */
- protected String getDescriptionLocation() {
- return descFilePathField.getText().trim();
- }
-
- /**
- * Returns whether the settings should be saved.
- * @return whether settings should be saved.
- */
- protected boolean isSaveSettings() {
- return saveSettingsButton.getSelection();
- }
-
- /**
- * Set the current input focus to self's destination entry field
- */
- protected void giveFocusToDestination() {
- destinationNameField.setFocus();
- }
-
- /**
- * Open an appropriate destination browser so that the user can specify a source
- * to import from
- */
- protected void handleDestinationBrowseButtonPressed() {
- SystemSelectRemoteFolderAction action = new SystemSelectRemoteFolderAction(this.getShell());
- action.setShowNewConnectionPrompt(true);
- action.setFoldersOnly(true);
- action.setShowPropertySheet(true, false);
- String destValue = getDestinationValue();
- if (destValue != null)
- {
- IHost host = Utilities.parseForSystemConnection(destValue);
- IRemoteFile path = Utilities.parseForIRemoteFile(destValue);
- action.setDefaultConnection(host);
- action.setPreSelection(path);
- }
-
- action.run();
- IRemoteFile folder = action.getSelectedFolder();
-
- if (folder != null) {
- destinationFolder = new UniFilePlus(folder);
- destValue = Utilities.getAsString((UniFilePlus)destinationFolder);
- setDestinationValue(destValue);
- }
- }
-
- /**
- * Open an appropriate destination browser so that the user can specify a source
- * to import from.
- */
- protected void handleDescriptionFileBrowseButtonPressed() {
- SaveAsDialog dialog = new SaveAsDialog(getContainer().getShell());
- dialog.create();
- dialog.getShell().setText(RemoteImportExportResources.IMPORT_EXPORT_DESCRIPTION_FILE_DIALOG_TITLE);
- dialog.setMessage(RemoteImportExportResources.IMPORT_EXPORT_DESCRIPTION_FILE_DIALOG_MESSAGE);
- dialog.setOriginalFile(createFileHandle(new Path(getDescriptionLocation())));
- if (dialog.open() == Window.OK) {
- IPath path = dialog.getResult();
- path = path.removeFileExtension().addFileExtension(Utilities.EXPORT_DESCRIPTION_EXTENSION);
- descFilePathField.setText(path.toString());
- }
- }
-
- /**
- * Creates a file resource handle for the file with the given workspace path.
- * This method does not create the file resource; this is the responsibility
- * of <code>createFile</code>.
- *
- * @param filePath the path of the file resource to create a handle for
- * @return the new file resource handle
- */
- protected IFile createFileHandle(IPath filePath) {
- if (filePath.isValidPath(filePath.toString()) && filePath.segmentCount() >= 2)
- return SystemBasePlugin.getWorkspace().getRoot().getFile(filePath);
- else
- return null;
- }
-
- /**
- * Handle all events and enablements for widgets in this page
- * @param e Event
- */
- public void handleEvent(Event e) {
- Widget source = e.widget;
- if (source == destinationBrowseButton) {
- handleDestinationBrowseButtonPressed();
- } else if (source == descFileBrowseButton) {
- handleDescriptionFileBrowseButtonPressed();
- }
- updateWidgetEnablements();
- updatePageCompletion();
- }
-
- /**
- * Hook method for saving widget values for restoration by the next instance
- * of this class.
- */
- protected void internalSaveWidgetValues() {
- // update directory names history
- IDialogSettings settings = getDialogSettings();
- if (settings != null) {
- String[] directoryNames = settings.getArray(STORE_DESTINATION_NAMES_ID);
- if (directoryNames == null) directoryNames = new String[0];
- directoryNames = addToHistory(directoryNames, getDestinationValue());
- settings.put(STORE_DESTINATION_NAMES_ID, directoryNames);
- // options
- settings.put(STORE_OVERWRITE_EXISTING_FILES_ID, overwriteExistingFilesCheckbox.getSelection());
- settings.put(STORE_CREATE_STRUCTURE_ID, createDirectoryStructureButton.getSelection());
- settings.put(STORE_CREATE_DESCRIPTION_FILE_ID, isSaveSettings());
- settings.put(STORE_DESCRIPTION_FILE_NAME_ID, getDescriptionLocation());
- }
- }
-
- /**
- * Method will return boolean value, will issue error if destination is
- * null
- */
- protected boolean isDestinationFolder() {
- boolean ret = destinationFolder != null;
- if (!ret) {
- String msgTxt = RemoteImportExportResources.MSG_IMPORT_EXPORT_UNABLE_TO_USE_CONNECTION;
- String msgDetails = RemoteImportExportResources.MSG_IMPORT_EXPORT_UNABLE_TO_USE_CONNECTION_DETAILS;
- SystemMessage msg = new SimpleSystemMessage(RemoteImportExportPlugin.PLUGIN_ID,
- IRemoteImportExportConstants.MSG_IMPORT_EXPORT_UNABLE_TO_USE_CONNECTION,
- IStatus.ERROR, msgTxt, msgDetails);
- SystemMessageDialog.show(getShell(), msg);
- }
- return ret;
- }
-
- /**
- * Hook method for restoring widget values to the values that they held
- * last time this wizard was used to completion.
- */
- protected void restoreWidgetValues() {
- IDialogSettings settings = getDialogSettings();
- if (settings != null) {
- // destination chosen on previous export
- String lastDestination = null;
- String[] directoryNames = settings.getArray(STORE_DESTINATION_NAMES_ID);
- if (directoryNames != null) {
- for (int i = 0; i < directoryNames.length; i++) {
- // because of the way we add destination items to history, the
- // destination for the previous export would be first
- if (i == 0) {
- lastDestination = directoryNames[i];
- }
- addDestinationItem(directoryNames[i]);
- }
- }
- RemoteExportWizard parentWizard = (RemoteExportWizard) getWizard();
- boolean isInitializingFromExportData = parentWizard.getInitializeFromExportData();
- // options
- // no export data to initialize from, so prefill from previous export
- if (!isInitializingFromExportData) {
- overwriteExistingFilesCheckbox.setSelection(settings.getBoolean(STORE_OVERWRITE_EXISTING_FILES_ID));
- boolean createDirectories = settings.getBoolean(STORE_CREATE_STRUCTURE_ID);
- createDirectoryStructureButton.setSelection(createDirectories);
- createSelectionOnlyButton.setSelection(!createDirectories);
- boolean saveSettings = settings.getBoolean(STORE_CREATE_DESCRIPTION_FILE_ID);
- saveSettingsButton.setSelection(saveSettings);
- String descFilePathStr = settings.get(STORE_DESCRIPTION_FILE_NAME_ID);
- if (descFilePathStr == null) {
- descFilePathStr = ""; //$NON-NLS-1$
- }
- descFilePathField.setText(descFilePathStr);
- // select previous export destination
- if (lastDestination != null) {
- setDestinationValue(lastDestination);
- }
- }
- // initialize from export data
- else {
- RemoteFileExportData data = parentWizard.getExportData();
- overwriteExistingFilesCheckbox.setSelection(data.isOverWriteExistingFiles());
- createDirectoryStructureButton.setSelection(data.isCreateDirectoryStructure());
- createSelectionOnlyButton.setSelection(data.isCreateSelectionOnly());
- saveSettingsButton.setSelection(data.isSaveSettings());
- String descFilePathStr = data.getDescriptionFilePath();
- if (descFilePathStr == null) {
- descFilePathStr = ""; //$NON-NLS-1$
- }
- descFilePathField.setText(descFilePathStr);
- String destinationPath = data.getDestination();
- if (destinationPath != null) {
- setDestinationValue(destinationPath);
- }
- }
- }
- // check if there was an initial selection
- // if it is a remote directory, then set the absolute path in the source name field
- Object initSelection = getInputObject();
- if ((initSelection != null) && (initSelection instanceof IStructuredSelection)) {
- IStructuredSelection sel = (IStructuredSelection) initSelection;
- if (sel.size() == 1) {
- Object theSel = sel.getFirstElement();
- if (theSel instanceof IRemoteFile) {
- IRemoteFile file = (IRemoteFile) theSel;
- // set source name if the input is a folder
- if (file.isDirectory()) {
- destinationFolder = new UniFilePlus(file);
- setDestinationValue(Utilities.getAsString((UniFilePlus) destinationFolder));
- }
- }
- }
- }
- }
-
- /**
- * Set the contents of the receivers destination specification widget to
- * the passed value
- *
- */
- protected void setDestinationValue(String path) {
- if (path.length() > 0) {
- String[] currentItems = destinationNameField.getItems();
- int selectionIndex = -1;
- for (int i = 0; i < currentItems.length && selectionIndex < 0; i++) {
- if (currentItems[i].equals(path)) selectionIndex = i;
- }
- if (selectionIndex < 0) {
- // need to add a new one.
- int oldLength = currentItems.length;
- String[] newItems = new String[oldLength + 1];
- System.arraycopy(currentItems, 0, newItems, 0, oldLength);
- newItems[oldLength] = path;
- destinationNameField.setText(path);
- destinationNameField.setItems(newItems);
- selectionIndex = oldLength;
- } else {
- }
- destinationNameField.select(selectionIndex);
- }
- destinationFolder = null; // clear destination
- IHost conn = Utilities.parseForSystemConnection(path);
- if (conn != null) {
- IRemoteFile rf = Utilities.parseForIRemoteFile(path);
- if (rf != null) destinationFolder = new UniFilePlus(rf);
- }
- }
-
- /**
- * Answer a boolean indicating whether the receivers destination specification
- * widgets currently all contain valid values.
- */
- protected boolean validateDestinationGroup() {
- String destinationValue = getDestinationValue();
- if (destinationValue.length() == 0) {
- setMessage(DESTINATION_EMPTY_MESSAGE);
- return false;
- }
- String conflictingContainer = getConflictingContainerNameFor(destinationValue);
- if (conflictingContainer != null) {
- String msgTxt = NLS.bind(RemoteImportExportResources.FILEMSG_DESTINATION_CONFLICTING, conflictingContainer);
- String msgDetails = RemoteImportExportResources.FILEMSG_DESTINATION_CONFLICTING_DETAILS;
-
- SystemMessage msg = new SimpleSystemMessage(RemoteImportExportPlugin.PLUGIN_ID,
- IRemoteImportExportConstants.FILEMSG_DESTINATION_CONFLICTING,
- IStatus.ERROR, msgTxt, msgDetails);
- setErrorMessage(msg);
- giveFocusToDestination();
- return false;
- }
- return true;
- }
-
- /**
- * @see org.eclipse.ui.dialogs.WizardDataTransferPage#validateOptionsGroup()
- */
- protected boolean validateOptionsGroup() {
- if (isSaveSettings()) {
- IPath location = new Path(getDescriptionLocation());
- // if location is empty, no error message, but it's not valid
- if (location.toString().length() == 0) {
- setErrorMessage((String) null);
- return false;
- }
- // location must start with '/'
- if (!location.toString().startsWith("/")) { //$NON-NLS-1$
- setErrorMessage(RemoteImportExportResources.IMPORT_EXPORT_ERROR_DESCRIPTION_ABSOLUTE);
- return false;
- }
- // find the resource, including a variant if any
- IResource resource = findResource(location);
- // if resource is not a file, it must be a container. So location is pointing to a container, which is an error
- if (resource != null && resource.getType() != IResource.FILE) {
- setErrorMessage(RemoteImportExportResources.IMPORT_EXPORT_ERROR_DESCRIPTION_EXISTING_CONTAINER);
- return false;
- }
- // get the resource (or any variant of it) after removing the last segment
- // this gets the parent resource
- resource = findResource(location.removeLastSegments(1));
- // if parent resource does not exist, or if it is a file, then it is not valid
- if (resource == null || resource.getType() == IResource.FILE) {
- setErrorMessage(RemoteImportExportResources.IMPORT_EXPORT_ERROR_DESCRIPTION_NO_CONTAINER);
- return false;
- }
- // get the file extension
- String fileExtension = location.getFileExtension();
- // ensure that file extension is valid
- if (fileExtension == null || !fileExtension.equals(Utilities.EXPORT_DESCRIPTION_EXTENSION)) {
- setErrorMessage(NLS.bind(RemoteImportExportResources.IMPORT_EXPORT_ERROR_DESCRIPTION_INVALID_EXTENSION, Utilities.EXPORT_DESCRIPTION_EXTENSION ));
- return false;
- }
- }
- return true;
- }
-
- /**
- * Returns the resource for the specified path.
- *
- * @param path the path for which the resource should be returned
- * @return the resource specified by the path or <code>null</code>
- */
- protected IResource findResource(IPath path) {
- IWorkspace workspace = SystemBasePlugin.getWorkspace();
- // validate path
- IStatus result = workspace.validatePath(path.toString(), IResource.ROOT | IResource.PROJECT | IResource.FOLDER | IResource.FILE);
- // if path valid
- if (result.isOK()) {
- // get the workspace root
- IWorkspaceRoot root = workspace.getRoot();
- // see if path exists. If it does, return the resource at the path
- if (root.exists(path)) {
- return root.findMember(path);
- }
- // see if a variant of the path exists
- else {
- // look for variant
- IResource variant = RemoteImportExportUtil.getInstance().findExistingResourceVariant(path);
- // if a variant does exist, return it
- if (variant != null) {
- return variant;
- }
- }
- }
- return null;
- }
-
- /**
- * Returns the name of a container with a location that encompasses targetDirectory.
- * Returns null if there is no conflict.
- *
- * @param targetDirectory the path of the directory to check.
- * @return the conflicting container name or <code>null</code>
- */
- protected String getConflictingContainerNameFor(String targetDirectory) {
- IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
- IPath testPath = new Path(targetDirectory);
- if (root.getLocation().isPrefixOf(testPath)) return "workspace root"; //UniversalSystemPlugin.getString("IFSexport.rootName"); //$NON-NLS-1$
- IProject[] projects = root.getProjects();
- for (int i = 0; i < projects.length; i++) {
- IPath loc = projects[i].getLocation();
- if (loc != null && loc.isPrefixOf(testPath))
- return projects[i].getName();
- }
- return null;
- }
-
- /* (non-Javadoc)
- * @see com.ibm.etools.systems.core.ui.wizards.ISystemWizardPage#setInputObject(java.lang.Object)
- */
- public void setInputObject(Object inputObject) {
- this.inputObject = inputObject;
- }
-
- /* (non-Javadoc)
- * @see com.ibm.etools.systems.core.ui.wizards.ISystemWizardPage#getInputObject()
- */
- public Object getInputObject() {
- return inputObject;
- }
-
- /* (non-Javadoc)
- * @see com.ibm.etools.systems.core.ui.wizards.ISystemWizardPage#performFinish()
- */
- public boolean performFinish() {
- return finish();
- }
-
- /* (non-Javadoc)
- * @see com.ibm.etools.systems.core.ui.wizards.ISystemWizardPage#setHelp(java.lang.String)
- */
- public void setHelp(String id) {
- if (parentComposite != null) SystemWidgetHelpers.setHelp(parentComposite, helpId);
- this.helpId = id;
- }
-
- /* (non-Javadoc)
- * @see com.ibm.etools.systems.core.ui.wizards.ISystemWizardPage#getHelpContextId()
- */
- public String getHelpContextId() {
- return helpId;
- }
-
- /**
- * ISystemMessageLine method. <br>
- * Clears the currently displayed error message and redisplayes
- * the message which was active before the error message was set.
- */
- public void clearErrorMessage() {
- if (msgLine != null)
- msgLine.clearErrorMessage();
- else
- super.setErrorMessage(null);
- }
-
- /**
- * ISystemMessageLine method. <br>
- * Clears the currently displayed message.
- */
- public void clearMessage() {
- if (msgLine != null)
- msgLine.clearMessage();
- else
- super.setMessage(null);
- }
-
- /**
- * ISystemMessageLine method. <br>
- * Get the currently displayed error text.
- * @return The error message. If no error message is displayed <code>null</code> is returned.
- */
- public SystemMessage getSystemErrorMessage() {
- if (msgLine != null)
- return msgLine.getSystemErrorMessage();
- else
- return null;
- }
-
- /**
- * ISystemMessageLine method. <br>
- * Display the given error message. A currently displayed message
- * is saved and will be redisplayed when the error message is cleared.
- */
- public void setErrorMessage(SystemMessage message) {
- if (msgLine != null) {
- if (message != null)
- msgLine.setErrorMessage(message);
- else
- msgLine.clearErrorMessage();
- } else // not configured yet
- {
- pendingErrorMessage = message;
- super.setErrorMessage(message.getLevelOneText());
- }
- }
-
- /**
- * ISystemMessageLine method. <br>
- * Convenience method to set an error message from an exception
- */
- public void setErrorMessage(Throwable exc) {
- if (msgLine != null)
- msgLine.setErrorMessage(exc);
- else {
- String msgTxt = CommonMessages.MSG_ERROR_UNEXPECTED;
- SystemMessage msg = new SimpleSystemMessage(RemoteImportExportPlugin.PLUGIN_ID,
- ICommonMessageIds.MSG_ERROR_UNEXPECTED,
- IStatus.ERROR, msgTxt, exc);
-
- pendingErrorMessage = msg;
- super.setErrorMessage(msg.getLevelOneText());
- }
- }
-
- /**
- * ISystemMessageLine method. <br>
- * Display the given error message. A currently displayed message
- * is saved and will be redisplayed when the error message is cleared.
- */
- public void setErrorMessage(String message) {
- if (msgLine != null) msgLine.setErrorMessage(message);
- // super.setErrorMessage(message);
- // if (msgLine != null)
- // ((SystemDialogPageMessageLine)msgLine).internalSetErrorMessage(message);
- }
-
- /**
- * ISystemMessageLine method. <br>
- * If the message line currently displays an error,
- * the message is stored and will be shown after a call to clearErrorMessage
- */
- public void setMessage(SystemMessage message) {
- if (msgLine != null)
- msgLine.setMessage(message);
- else // not configured yet
- {
- pendingMessage = message;
- super.setMessage(message.getLevelOneText());
- }
- }
-
- /**
- * ISystemMessageLine method. <br>
- * Set the non-error message text. If the message line currently displays an error,
- * the message is stored and will be shown after a call to clearErrorMessage
- */
- public void setMessage(String message) {
- if (msgLine != null) msgLine.setMessage(message);
- // super.setMessage(message);
- // if (msgLine!=null)
- // ((SystemDialogPageMessageLine)msgLine).internalSetMessage(message);
- }
-}

Back to the top