| //------------------------------------------------------------------------------ |
| // 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.library.LibraryService; |
| import org.eclipse.epf.library.LibraryServiceUtil; |
| import org.eclipse.epf.library.edit.util.ProcessScopeUtil; |
| import org.eclipse.epf.publishing.ui.PublishingUIResources; |
| import org.eclipse.epf.ui.wizards.BaseWizardPage; |
| import org.eclipse.epf.uma.MethodConfiguration; |
| import org.eclipse.epf.uma.MethodLibrary; |
| import org.eclipse.epf.uma.Process; |
| import org.eclipse.epf.uma.util.Scope; |
| import org.eclipse.jface.wizard.IWizardPage; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.events.ModifyEvent; |
| import org.eclipse.swt.events.ModifyListener; |
| 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.Text; |
| |
| /** |
| * A wizard page that prompts the user to select the export options. |
| * |
| * @author Kelvin Low |
| * @since 1.2 |
| */ |
| public class SelectExportOptionsPage extends BaseWizardPage { |
| |
| public static final String PAGE_NAME = SelectExportOptionsPage.class |
| .getName(); |
| |
| protected Composite composite; |
| |
| protected Composite configComposite; |
| |
| protected Text processText; |
| |
| protected Combo configCombo; |
| |
| protected Composite optionsComposite; |
| |
| protected Button publishWebSiteRadioButton; |
| |
| protected Composite publishOptionsComposite; |
| |
| protected Button publishConfigRadioButton; |
| |
| protected Button publishProcessRadioButton; |
| |
| protected Button exportOnlyPlannedWBSElementsCheckBox; |
| |
| /** |
| * Creates a new instance. |
| */ |
| public SelectExportOptionsPage(String pageName) { |
| super(pageName); |
| setTitle(ExportMSPUIResources.selectExportOptionsWizardPage_title); |
| setDescription(ExportMSPUIResources.selectExportOptionsWizardPage_text); |
| setImageDescriptor(ExportMSPUIPlugin.getDefault().getImageDescriptor( |
| "full/wizban/exp_ms_prj_wizban.gif")); //$NON-NLS-1$ |
| } |
| |
| /** |
| * Creates a new instance. |
| */ |
| public SelectExportOptionsPage() { |
| this(PAGE_NAME); |
| } |
| |
| /** |
| * @see org.eclipse.jface.dialogs.IDialogPage#createControl(Composite) |
| */ |
| public void createControl(Composite parent) { |
| composite = createGridLayoutComposite(parent, 1); |
| |
| configComposite = createGridLayoutComposite(composite, 2); |
| |
| createLabel(configComposite, |
| ExportMSPUIResources.selectedProcessLabel_text); |
| |
| processText = createText(configComposite, ""); //$NON-NLS-1$ |
| |
| createLabel(configComposite, |
| ExportMSPUIResources.configurationLabel_text); |
| |
| configCombo = new Combo(configComposite, SWT.BORDER | SWT.READ_ONLY); |
| configCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); |
| |
| optionsComposite = createGridLayoutComposite(composite, 1); |
| |
| publishWebSiteRadioButton = createCheckbox(optionsComposite, |
| ExportMSPUIResources.publishWebSiteCheckBox_text); |
| |
| publishOptionsComposite = createGridLayoutComposite(optionsComposite, 1); |
| GridLayout layout = (GridLayout) publishOptionsComposite.getLayout(); |
| layout.marginTop = -5; |
| layout.marginLeft = 12; |
| |
| publishConfigRadioButton = createRadioButton(publishOptionsComposite, |
| ExportMSPUIResources.publishConfigButton_text); |
| |
| publishProcessRadioButton = createRadioButton(publishOptionsComposite, |
| ExportMSPUIResources.publishProcessButton_text); |
| |
| exportOnlyPlannedWBSElementsCheckBox = createCheckbox(optionsComposite, |
| ExportMSPUIResources.exportOnlyPlannedElementsCheckBox_text); |
| |
| initControls(); |
| |
| addListeners(); |
| |
| setControl(composite); |
| } |
| |
| /** |
| * Initializes the wizard page controls with data. |
| */ |
| protected void initControls() { |
| if (ExportMSPUIPreferences.getPublishWebSite()) { |
| publishWebSiteRadioButton.setSelection(true); |
| } |
| |
| boolean publishConfig = ExportMSPUIPreferences |
| .getPublishConfiguration(); |
| publishConfigRadioButton.setSelection(publishConfig); |
| publishProcessRadioButton.setSelection(!publishConfig); |
| |
| updatePublishOptionsButtons(); |
| |
| exportOnlyPlannedWBSElementsCheckBox |
| .setSelection(ExportMSPUIPreferences |
| .getExportOnlyPlannedWBSElements()); |
| } |
| |
| /** |
| * Adds event handlers to the wizard page controls. |
| */ |
| protected void addListeners() { |
| configCombo.addModifyListener(new ModifyListener() { |
| public void modifyText(ModifyEvent e) { |
| setPageComplete(isPageComplete()); |
| } |
| }); |
| |
| publishWebSiteRadioButton.addSelectionListener(new SelectionListener() { |
| public void widgetSelected(SelectionEvent event) { |
| updatePublishOptionsButtons(); |
| } |
| |
| public void widgetDefaultSelected(SelectionEvent event) { |
| } |
| }); |
| } |
| |
| |
| private Process selectedProcess; |
| /** |
| * Updates the Configuration Combo. |
| */ |
| protected void updateConfigCombo(Process process) { |
| String[] contextNames = LibraryServiceUtil.getContexts(process); |
| configCombo.setItems(contextNames); |
| String defaultContext = process.getDefaultContext().getName(); |
| configCombo.setText(defaultContext); |
| selectedProcess = process; |
| } |
| |
| /** |
| * Updates the publishing options radio buttons. |
| */ |
| protected void updatePublishOptionsButtons() { |
| boolean enabled = getPublishWebSiteSelection(); |
| publishConfigRadioButton.setEnabled(enabled); |
| publishProcessRadioButton.setEnabled(enabled); |
| setPageComplete(isPageComplete()); |
| } |
| |
| /** |
| * @see org.eclipse.epf.ui.wizards.BaseWizardPage#onEnterPage(Object) |
| */ |
| public void onEnterPage(Object obj) { |
| if (obj != null && obj instanceof Process) { |
| Process process = (Process) obj; |
| processText.setText(process.getName()); |
| updateConfigCombo(process); |
| } |
| } |
| |
| /** |
| * @see org.eclipse.jface.wizard.WizardPage#isPageCompleted() |
| */ |
| public boolean isPageComplete() { |
| MethodConfiguration config = getMethodConfiguration(); |
| if (config == null) { |
| return false; |
| } |
| |
| if (getPublishWebSiteSelection() |
| && config.getProcessViews().size() == 0 && !(config instanceof Scope)) { |
| setErrorMessage(PublishingUIResources.missingViewError_msg); |
| return false; |
| } |
| |
| setErrorMessage(null); |
| |
| return true; |
| } |
| |
| /** |
| * @see org.eclipse.epf.ui.wizards.BaseWizardPage#getNextPageData() |
| */ |
| public Object getNextPageData() { |
| return getMethodConfiguration(); |
| } |
| |
| /** |
| * @see org.eclipse.jface.wizard.WizardPage#getNextPage() |
| */ |
| public IWizardPage getNextPage() { |
| IWizardPage nextPage = null; |
| |
| if (getPublishWebSiteSelection()) { |
| nextPage = super.getNextPage(); |
| } else { |
| nextPage = super.getNextPage().getNextPage(); |
| } |
| |
| return nextPage; |
| } |
| |
| /** |
| * Gets the user selected method configuration. |
| */ |
| public MethodConfiguration getMethodConfiguration() { |
| String configName = configCombo.getText().trim(); |
| Scope scope = selectedProcess == null ? null : ProcessScopeUtil |
| .getInstance().loadScope(selectedProcess); |
| if (scope != null) { |
| if (scope.getName().equals(configName)) { |
| return scope; |
| } |
| } |
| MethodLibrary library = LibraryService.getInstance() |
| .getCurrentMethodLibrary(); |
| return LibraryServiceUtil.getMethodConfiguration(library, configName); |
| } |
| |
| /** |
| * Gets the publish web site selection. |
| */ |
| public boolean getPublishWebSiteSelection() { |
| return publishWebSiteRadioButton.getSelection(); |
| } |
| |
| /** |
| * Gets the publish configuration selection. |
| */ |
| public boolean getPublishConfigSelection() { |
| return publishConfigRadioButton.getSelection(); |
| } |
| |
| /** |
| * Gets the publish process selection. |
| */ |
| public boolean getPublishProcessSelection() { |
| return publishProcessRadioButton.getSelection(); |
| } |
| |
| /** |
| * Gets the publish configuration selection. |
| */ |
| public boolean getExportOnlyPlannedWBSElementsSelection() { |
| return exportOnlyPlannedWBSElementsCheckBox.getSelection(); |
| } |
| |
| /** |
| * @see org.eclipse.jface.wizard.WizardPage#dispose() |
| */ |
| public void dispose() { |
| ExportMSPUIPreferences.setPublishWebSite(getPublishWebSiteSelection()); |
| ExportMSPUIPreferences |
| .setPublishConfiguration(getPublishConfigSelection()); |
| ExportMSPUIPreferences |
| .setExportOnlyPlannedWBSElements(getExportOnlyPlannedWBSElementsSelection()); |
| MethodConfiguration config = getMethodConfiguration(); |
| if (config != null) { |
| ExportMSPUIPreferences.setConfigurationName(config.getName()); |
| } |
| super.dispose(); |
| } |
| |
| } |