| //------------------------------------------------------------------------------ |
| // 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.msp.ui.wizards; |
| |
| import java.util.Map; |
| |
| import org.eclipse.epf.export.msp.ExportMSPPlugin; |
| import org.eclipse.epf.export.msp.ExportMSPResources; |
| import org.eclipse.epf.export.msp.ExportMSPUtil; |
| import org.eclipse.epf.export.msp.ExportOptions; |
| import org.eclipse.epf.export.msp.ui.preferences.ExportMSPPreferences; |
| import org.eclipse.epf.uma.Process; |
| 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.events.SelectionListener; |
| 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; |
| |
| /** |
| * A wizard page that prompts the user to select a process to export. |
| * |
| * @author Kelvin Low |
| * @since 1.0 |
| */ |
| public class SelectProcessPage extends WizardPage implements Listener { |
| |
| public static final String PAGE_NAME = SelectProcessPage.class.getName(); |
| |
| protected static final String[] EMPTY_ARRAY = new String[0]; |
| |
| protected ExportOptions exportOptions = new ExportOptions(); |
| |
| protected Button capabilityPatternRadioButton; |
| |
| protected Button deliveryProcessRadioButton; |
| |
| protected Combo processCombo; |
| |
| protected Combo contextCombo; |
| |
| protected Button publishConfigurationCheckBox; |
| |
| protected Button exportOnlyPlannedElementsCheckBox; |
| |
| protected Button[] exportOptionCheckBoxes; |
| |
| protected Map capabilityPatterns; |
| |
| protected Map deliveryProcesses; |
| |
| protected ModifyListener modifyListener = new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| setPageComplete(isPageComplete()); |
| } |
| }; |
| |
| /** |
| * Creates a new instance. |
| * |
| * @param name |
| * the name of the wizard page |
| */ |
| public SelectProcessPage(String name) { |
| super(name); |
| setTitle(ExportMSPResources.selectProcessWizardPage_title); |
| setDescription(ExportMSPResources.selectProcessWizardPage_text); |
| setImageDescriptor(ExportMSPPlugin.getDefault().getImageDescriptor( |
| "full/wizban/ExportMSProject.gif")); //$NON-NLS-1$ |
| } |
| |
| /** |
| * Creates a new instance. |
| */ |
| public SelectProcessPage() { |
| this(PAGE_NAME); |
| } |
| |
| /** |
| * @see org.eclipse.jface.dialogs.IDialogPage#createControl(Composite) |
| */ |
| public void createControl(Composite parent) { |
| Composite composite = new Composite(parent, SWT.NULL); |
| composite.setLayout(new GridLayout(1, false)); |
| |
| // Create the Process group. |
| Group processGroup = new Group(composite, SWT.NULL); |
| processGroup.setLayout(new GridLayout(1, false)); |
| processGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| processGroup.setText(ExportMSPResources.processGroup_text); |
| |
| Composite buttonComposite = new Composite(processGroup, SWT.NULL); |
| buttonComposite.setLayout(new GridLayout(2, false)); |
| |
| capabilityPatternRadioButton = new Button(buttonComposite, SWT.RADIO); |
| capabilityPatternRadioButton |
| .setText(ExportMSPResources.capabilityPatternRadioButton_text); |
| capabilityPatternRadioButton |
| .addSelectionListener(new SelectionListener() { |
| public void widgetSelected(SelectionEvent event) { |
| updateProcessCombo(capabilityPatterns); |
| } |
| |
| public void widgetDefaultSelected(SelectionEvent event) { |
| } |
| }); |
| |
| deliveryProcessRadioButton = new Button(buttonComposite, SWT.RADIO); |
| deliveryProcessRadioButton |
| .setText(ExportMSPResources.deliveryProcessRadioButton_text); |
| deliveryProcessRadioButton |
| .addSelectionListener(new SelectionListener() { |
| public void widgetSelected(SelectionEvent event) { |
| updateProcessCombo(deliveryProcesses); |
| } |
| |
| public void widgetDefaultSelected(SelectionEvent event) { |
| } |
| }); |
| |
| Composite processComposite = new Composite(processGroup, SWT.NULL); |
| processComposite.setLayout(new GridLayout(2, false)); |
| processComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| |
| Label processNameLabel = new Label(processComposite, SWT.NONE); |
| processNameLabel.setText(ExportMSPResources.processNameLabel_text); |
| |
| processCombo = new Combo(processComposite, SWT.BORDER | SWT.READ_ONLY); |
| processCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| processCombo.addSelectionListener(new SelectionListener() { |
| public void widgetSelected(SelectionEvent event) { |
| updateContextCombo(getProcess()); |
| } |
| |
| public void widgetDefaultSelected(SelectionEvent event) { |
| } |
| }); |
| |
| Label contextNameLabel = new Label(processComposite, SWT.NONE); |
| contextNameLabel.setText(ExportMSPResources.contextNameLabel_text); |
| |
| contextCombo = new Combo(processComposite, SWT.BORDER | SWT.READ_ONLY); |
| contextCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| contextCombo.addModifyListener(modifyListener); |
| |
| capabilityPatterns = ExportMSPUtil.getCapabilityPatterns(); |
| deliveryProcesses = ExportMSPUtil.getDeliveryProcesses(); |
| String savedProcessType = ExportMSPPlugin.getDefault() |
| .getPreferenceStore().getString( |
| ExportMSPPreferences.PROCESS_TYPE); |
| if (savedProcessType != null |
| && savedProcessType.equals("DeliveryProcess") && deliveryProcesses.size() > 0) { //$NON-NLS-1$ |
| deliveryProcessRadioButton.setSelection(true); |
| updateProcessCombo(deliveryProcesses); |
| } else if (savedProcessType != null && capabilityPatterns.size() > 0) { |
| capabilityPatternRadioButton.setSelection(true); |
| updateProcessCombo(capabilityPatterns); |
| } else if (capabilityPatterns.size() > 0) { |
| capabilityPatternRadioButton.setSelection(true); |
| updateProcessCombo(capabilityPatterns); |
| } else { |
| deliveryProcessRadioButton.setSelection(true); |
| updateProcessCombo(deliveryProcesses); |
| } |
| |
| // Create the Export options group. |
| Group optionsGroup = new Group(composite, SWT.NULL); |
| optionsGroup.setLayout(new GridLayout(1, false)); |
| optionsGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| optionsGroup.setText(ExportMSPResources.optionsGroup_text); |
| |
| Composite checkBoxComposite = new Composite(optionsGroup, SWT.NULL); |
| checkBoxComposite.setLayout(new GridLayout(1, false)); |
| |
| publishConfigurationCheckBox = new Button(checkBoxComposite, SWT.CHECK); |
| publishConfigurationCheckBox |
| .setText(ExportMSPResources.publishConfigurationCheckBox_text); |
| publishConfigurationCheckBox |
| .addSelectionListener(new SelectionAdapter() { |
| public void widgetSelected(SelectionEvent event) { |
| exportOptions.remove(ExportOptions.PUBLISH_CONFIG); |
| exportOptions.put(ExportOptions.PUBLISH_CONFIG, |
| new Boolean(publishConfigurationCheckBox |
| .getSelection())); |
| setPageComplete(isPageComplete()); |
| } |
| }); |
| |
| exportOnlyPlannedElementsCheckBox = new Button(checkBoxComposite, |
| SWT.CHECK); |
| exportOnlyPlannedElementsCheckBox |
| .setText(ExportMSPResources.exportOnlyPlannedElementsCheckBox_text); |
| exportOnlyPlannedElementsCheckBox |
| .addSelectionListener(new SelectionAdapter() { |
| public void widgetSelected(SelectionEvent event) { |
| exportOptions |
| .remove(ExportOptions.EXPORT_ONLY_PLANNED_ELEMENTS); |
| exportOptions.put( |
| ExportOptions.EXPORT_ONLY_PLANNED_ELEMENTS, |
| new Boolean(exportOnlyPlannedElementsCheckBox |
| .getSelection())); |
| setPageComplete(isPageComplete()); |
| } |
| }); |
| |
| addExportOptions(checkBoxComposite); |
| |
| setControl(composite); |
| } |
| |
| /** |
| * Provides an opportunity for a wizard extender to add more export options |
| * to this wizard page. |
| * |
| * @param parent |
| * the parent composite |
| */ |
| public void addExportOptions(Composite parent) { |
| } |
| |
| /** |
| * @see org.eclipse.swt.widgets.Listener#handleEvent(Event) |
| */ |
| public void handleEvent(Event event) { |
| setPageComplete(isPageComplete()); |
| getWizard().getContainer().updateButtons(); |
| } |
| |
| /** |
| * @see org.eclipse.jface.wizard.WizardPage#isCompleted() |
| */ |
| public boolean isPageComplete() { |
| return processCombo.getText().trim().length() > 0 |
| && contextCombo.getText().trim().length() > 0; |
| } |
| |
| /** |
| * @see org.eclipse.jface.wizard.WizardPage#getNextPage() |
| */ |
| public IWizardPage getNextPage() { |
| ExportMSPWizard wizard = (ExportMSPWizard) getWizard(); |
| IExportMSPWizardExtender wizardExtender = wizard.getWizardExtender(); |
| if (wizardExtender != null) { |
| IWizardPage page = wizardExtender.getNextPage(this); |
| if (page != null) { |
| return page; |
| } |
| } |
| |
| if (getPublishConfigOption()) { |
| return super.getNextPage(); |
| } else { |
| return wizard.getSelectExportDirectoryPage(); |
| } |
| } |
| |
| /** |
| * Returns the user selected Process. |
| */ |
| public Process getProcess() { |
| if (capabilityPatternRadioButton.getSelection()) { |
| String name = processCombo.getText(); |
| return (Process) capabilityPatterns.get(name); |
| } else { |
| String name = processCombo.getText(); |
| return (Process) deliveryProcesses.get(name); |
| } |
| } |
| |
| /** |
| * Returns the name of the user selected process context. |
| */ |
| public String getProcessContextName() { |
| return (String) contextCombo.getText(); |
| } |
| |
| /** |
| * Returns the user specified export options. |
| * |
| * @return the user specified export options |
| */ |
| public ExportOptions getExportOptions() { |
| return exportOptions; |
| } |
| |
| /** |
| * Returns the export only workbreakdown elements that have are planned. |
| */ |
| public boolean getExportOnlyPlannedElements() { |
| return exportOnlyPlannedElementsCheckBox.getSelection(); |
| } |
| |
| /** |
| * Returns the publish configuration selection. |
| */ |
| public boolean getPublishConfigOption() { |
| return publishConfigurationCheckBox.getSelection(); |
| } |
| |
| /** |
| * Updates the Process Combo. |
| */ |
| protected void updateProcessCombo(Map processes) { |
| if (processes != null && processes.size() > 0) { |
| String[] names = new String[processes.size()]; |
| processes.keySet().toArray(names); |
| processCombo.setItems(names); |
| String savedProcess = ExportMSPPlugin.getDefault() |
| .getPreferenceStore().getString( |
| ExportMSPPreferences.PROCESS_NAME); |
| if (savedProcess != null && processes.containsKey(savedProcess)) { |
| processCombo.setText(savedProcess); |
| } else { |
| processCombo.setText(processCombo.getItem(0)); |
| } |
| updateContextCombo(getProcess()); |
| } |
| } |
| |
| /** |
| * Updates the Context Combo. |
| */ |
| protected void updateContextCombo(Process process) { |
| try { |
| Map contexts = ExportMSPUtil.getContexts(process); |
| if (contexts != null && contexts.size() > 0) { |
| String[] names = new String[contexts.size()]; |
| contexts.keySet().toArray(names); |
| contextCombo.setItems(names); |
| String savedContext = ExportMSPPlugin.getDefault() |
| .getPreferenceStore().getString( |
| ExportMSPPreferences.PROCESS_CONTEXT); |
| if (savedContext != null && contexts.containsKey(savedContext)) { |
| contextCombo.setText(savedContext); |
| } else { |
| String defaultContext = process.getDefaultContext() |
| .getName(); |
| contextCombo.setText(defaultContext); |
| } |
| } else { |
| contextCombo.setItems(EMPTY_ARRAY); |
| } |
| } catch (Exception e) { |
| } |
| } |
| |
| } |