//------------------------------------------------------------------------------ // Copyright (c) 2005, 2007 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.msp.ui.wizards; import org.eclipse.epf.export.msp.ui.ExportMSPUIPlugin; import org.eclipse.epf.export.msp.ui.ExportMSPUIResources; import org.eclipse.epf.export.msp.ui.preferences.ExportMSPUIPreferences; import org.eclipse.epf.ui.wizards.BaseWizardPage; 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.widgets.Button; import org.eclipse.swt.widgets.Combo; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.DirectoryDialog; import org.eclipse.swt.widgets.Shell; /** * A wizard page that prompts the user to specify the Microsoft Project name and * export directory. * * @author Kelvin Low * @since 1.2 */ public class SelectExportDirectoryPage extends BaseWizardPage { public static final String PAGE_NAME = SelectExportDirectoryPage.class .getName(); protected Shell shell; protected Composite composite; protected Composite templateComposite; protected Combo projectNameCombo; protected Combo exportDirCombo; protected Button browseButton; protected ModifyListener modifyListener = new ModifyListener() { public void modifyText(ModifyEvent e) { setPageComplete(isPageComplete()); } }; /** * Creates a new instance. */ public SelectExportDirectoryPage(String pageName) { super(pageName); setTitle(ExportMSPUIResources.selectExportDirWizardPage_title); setDescription(ExportMSPUIResources.selectExportDirWizardPage_text); setImageDescriptor(ExportMSPUIPlugin.getDefault().getImageDescriptor( "full/wizban/exp_ms_prj_wizban.gif")); //$NON-NLS-1$ } /** * Creates a new instance. */ public SelectExportDirectoryPage() { this(PAGE_NAME); } /** * @see org.eclipse.jface.dialogs.IDialogPage#createControl(Composite) */ public void createControl(Composite parent) { shell = parent.getShell(); composite = createGridLayoutComposite(parent, 1); templateComposite = createGridLayoutComposite(composite, 3); createLabel(templateComposite, ExportMSPUIResources.projectNameLabel_text); projectNameCombo = createCombobox(templateComposite, 2); createLabel(templateComposite, ExportMSPUIResources.dirLabel_text); exportDirCombo = createCombobox(templateComposite); browseButton = createButton(templateComposite, ExportMSPUIResources.browseButton_text); initControls(); addListeners(); setControl(composite); } /** * Initializes the wizard page controls with data. */ protected void initControls() { String[] templateNames = ExportMSPUIPreferences.getMSProjectNames(); if (templateNames != null && templateNames.length > 0) { projectNameCombo.setItems(templateNames); projectNameCombo.setText(templateNames[0]); } String[] exportDirs = ExportMSPUIPreferences.getExportDirectories(); if (exportDirs != null && exportDirs.length > 0) { exportDirCombo.setItems(exportDirs); exportDirCombo.setText(exportDirs[0]); } browseButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { try { DirectoryDialog dialog = new DirectoryDialog(shell, SWT.NONE); String selectedDir = dialog.open(); if (selectedDir != null) { exportDirCombo.add(selectedDir, 0); exportDirCombo.setText(selectedDir); } } catch (Exception e) { ExportMSPUIPlugin.getDefault().getLogger().logError(e); } } }); } /** * Adds event handlers to the wizard page controls. */ protected void addListeners() { projectNameCombo.addModifyListener(modifyListener); exportDirCombo.addModifyListener(modifyListener); } /** * @see org.eclipse.jface.wizard.WizardPage#isPageComplete() */ public boolean isPageComplete() { return getMSProjectName().length() > 0 && getExportDirectory().length() > 0; } /** * Returns the Microsoft Project name. */ public String getMSProjectName() { return projectNameCombo.getText().trim(); } /** * Returns the export directory. */ public String getExportDirectory() { return exportDirCombo.getText().trim(); } /** * @see org.eclipse.jface.wizard.WizardPage#dispose() */ public void dispose() { ExportMSPUIPreferences.addMSProjectName(getMSProjectName()); ExportMSPUIPreferences.addExportDir(getExportDirectory()); modifyListener = null; super.dispose(); } }