blob: a4071ecb36a7da86966cb6c10395d0e2b755dbdd [file] [log] [blame]
//------------------------------------------------------------------------------
// Copyright (c) 2005, 2006 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 implementation
//------------------------------------------------------------------------------
package org.eclipse.epf.export.xml.wizards;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.epf.export.xml.ExportXMLPlugin;
import org.eclipse.epf.export.xml.ExportXMLResources;
import org.eclipse.epf.export.xml.preferences.ExportXMLPreferences;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
/**
* A wizard page that prompts the user to specify a XML file to store the
* exported method library content.
*
* @author Jinhua Xi
* @author Kelvin Low
* @since 1.0
*/
public class SelectXMLFilePage extends WizardPage {
public static final String PAGE_NAME = SelectXMLFilePage.class.getName();
private Text pathText;
private String path;
/**
* Creates a new instance.
*/
public SelectXMLFilePage() {
super(PAGE_NAME);
setTitle(ExportXMLResources.selectXMLFilePage_title);
setDescription(ExportXMLResources.selectXMLFilePage_desc);
setImageDescriptor(ExportXMLPlugin.getDefault().getImageDescriptor(
"full/wizban/ExportXML.gif")); //$NON-NLS-1$
}
/**
* @see org.eclipse.jface.dialogs.IDialogPage#createControl(Composite)
*/
public void createControl(Composite parent) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(3, false));
composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
Label fileLabel = new Label(composite, SWT.NONE);
fileLabel.setText(ExportXMLResources.fileLabel_text);
pathText = new Text(composite, SWT.BORDER);
pathText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
pathText.setText(ExportXMLPreferences.getXMLFile());
pathText.addModifyListener(new ModifyListener() {
public void modifyText(ModifyEvent e) {
if (isValidPath(pathText.getText().trim())) {
setPageComplete(true);
setErrorMessage(null);
} else {
setPageComplete(false);
setErrorMessage(ExportXMLResources.invalidXMLFile_error);
}
}
});
Button browseButton = new Button(composite, SWT.PUSH);
browseButton.setLayoutData(new GridData(GridData.END));
browseButton.setText(ExportXMLResources.browseButton_text);
browseButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
FileDialog fd = new FileDialog(Display.getCurrent()
.getActiveShell(), SWT.SAVE);
fd.setFilterExtensions(new String[] { "*.xml", "*.*" }); //$NON-NLS-1$ //$NON-NLS-2$
String path = fd.open();
boolean ok = false;
if (path != null) {
pathText.setText(path);
ok = isValidPath(path);
}
setPageComplete(ok);
getWizard().getContainer().updateButtons();
}
});
setControl(composite);
setPageComplete(isValidPath(pathText.getText().trim()));
}
/**
* Checks whether the user specific path is valid.
*
* @param path
* the user specific path
* @return <code>true</code> if the user specified path is valid.
*/
private boolean isValidPath(String path) {
IPath ecPath = Path.fromOSString(path);
if (ecPath.isValidPath(path) && path.endsWith(".xml")) { //$NON-NLS-1$
this.path = path;
return true;
}
return false;
}
/**
* @see org.eclipse.jface.wizard.WizardPage#isCompleted()
*/
public IWizardPage getNextPage() {
return null; // no more page
}
/**
* Gets the user specified XML file.
*
* @return an absolute path to the XML file
*/
public String getPath() {
return this.path;
}
}