//------------------------------------------------------------------------------ // 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.migration.diagram.ad.wizards; import java.util.Map; import org.eclipse.epf.migration.diagram.DiagramMigrationPlugin; import org.eclipse.epf.migration.diagram.MigrationExportConstants; import org.eclipse.epf.migration.diagram.MigrationResources; import org.eclipse.epf.migration.diagram.util.MigrationUtil; import org.eclipse.epf.uma.Activity; 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.DirectoryDialog; 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.Shell; /** * Export wizard page for exporting diagrams * * @author Shilpa Toraskar * @since 1.2 * */ public class MigrationExportWizardPage extends WizardPage implements IWizardPage, Listener { public static final String PAGE_NAME = MigrationExportWizardPage.class .getName(); private static final String[] EMPTY_ARRAY = new String[0]; private Button capabilityPatternRadioButton; private Button deliveryProcessRadioButton; private Combo processCombo; // private Combo contextCombo; private Combo activityCombo; private Combo templateNameCombo; private Combo templateDirCombo; private Map capabilityPatterns; private Map deliveryProcesses; private Map activities; private ModifyListener modifyListener = new ModifyListener() { public void modifyText(ModifyEvent e) { setPageComplete(isPageComplete()); } }; protected MigrationExportWizardPage() { super(PAGE_NAME); setTitle(MigrationResources.workflow_export_wizard_title); setDescription(MigrationResources.workflow_export_wizard_text); setImageDescriptor(DiagramMigrationPlugin.getDefault() .getImageDescriptor("full/wizban/ExportXML.gif")); //$NON-NLS-1$ } public void createControl(Composite parent) { final Shell shell = parent.getShell(); // Create the composite to hold the widgets. 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(MigrationResources.workflow_export_wizard_processGroup_text); Composite buttonComposite = new Composite(processGroup, SWT.NULL); buttonComposite.setLayout(new GridLayout(2, false)); capabilityPatternRadioButton = new Button(buttonComposite, SWT.RADIO); capabilityPatternRadioButton .setText(MigrationResources.workflow_export_wizard_capabilityPatternRadioButton_text); capabilityPatternRadioButton .addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent event) { updateProcessCombo(capabilityPatterns); updateActivityCombo(getProcess()); } public void widgetDefaultSelected(SelectionEvent event) { } }); deliveryProcessRadioButton = new Button(buttonComposite, SWT.RADIO); deliveryProcessRadioButton .setText(MigrationResources.workflow_export_wizard_deliveryProcessRadioButton_text); deliveryProcessRadioButton .addSelectionListener(new SelectionListener() { public void widgetSelected(SelectionEvent event) { updateProcessCombo(deliveryProcesses); updateActivityCombo(getProcess()); } 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(MigrationResources.workflow_export_wizard_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()); // if (getProcessContextName() != null) { // String contextName = getProcessContextName(); // Map result = MigrationUtil.getContexts(getProcess()); // updateActivityCombo(getProcess(), // (MethodConfiguration) result.get(contextName)); // } updateActivityCombo(getProcess()); } public void widgetDefaultSelected(SelectionEvent event) { } }); // Label contextNameLabel = new Label(processComposite, SWT.NONE); // contextNameLabel // .setText(MigrationResources.workflow_export_wizard_contextNameLabel_text); // // contextCombo = new Combo(processComposite, SWT.BORDER | SWT.READ_ONLY); // contextCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); // contextCombo.addModifyListener(modifyListener); // // contextCombo.addSelectionListener(new SelectionListener() { // public void widgetSelected(SelectionEvent event) { // String contextName = getProcessContextName(); // Map result = MigrationUtil.getContexts(getProcess()); // updateActivityCombo(getProcess(), (MethodConfiguration) result // .get(contextName)); // } // // public void widgetDefaultSelected(SelectionEvent event) { // } // }); Label activitiesNameLabel = new Label(processComposite, SWT.NONE); activitiesNameLabel .setText(MigrationResources.workflow_export_wizard_activitiesNameLabel_text); activityCombo = new Combo(processComposite, SWT.BORDER | SWT.READ_ONLY); activityCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); activityCombo.addModifyListener(modifyListener); capabilityPatterns = MigrationUtil.getCapabilityPatterns(); deliveryProcesses = MigrationUtil.getDeliveryProcesses(); String savedProcessType = DiagramMigrationPlugin.getDefault() .getPreferenceStore().getString( MigrationExportConstants.PROCESS_TYPE); if (savedProcessType != null && savedProcessType.equals("DeliveryProcess") && deliveryProcesses.size() > 0) { //$NON-NLS-1$ deliveryProcessRadioButton.setSelection(true); updateProcessCombo(deliveryProcesses); } else if (savedProcessType != null && capabilityPatterns != null && capabilityPatterns.size() > 0) { capabilityPatternRadioButton.setSelection(true); updateProcessCombo(capabilityPatterns); } else if (capabilityPatterns != null && capabilityPatterns.size() > 0) { capabilityPatternRadioButton.setSelection(true); updateProcessCombo(capabilityPatterns); } else { deliveryProcessRadioButton.setSelection(true); updateProcessCombo(deliveryProcesses); } updateActivityCombo(getProcess()); // Create the Project Template group. Group templateGroup = new Group(composite, SWT.NULL); templateGroup.setLayout(new GridLayout(1, false)); templateGroup.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); templateGroup .setText(MigrationResources.workflow_export_wizard_templateGroup_text); Composite templateComposite = new Composite(templateGroup, SWT.NULL); templateComposite.setLayout(new GridLayout(3, false)); templateComposite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); Label templateNameLabel = new Label(templateComposite, SWT.NONE); templateNameLabel .setText(MigrationResources.workflow_export_wizard_templateNameLabel_text); templateNameCombo = new Combo(templateComposite, SWT.BORDER); templateNameCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); String prevName = DiagramMigrationPlugin.getDefault() .getPreferenceStore().getString( MigrationExportConstants.TEMPLATE_NAMES); if (prevName != null) { templateNameCombo.add(prevName); } templateNameCombo.addModifyListener(modifyListener); new Label(templateComposite, SWT.NONE); Label dirLabel = new Label(templateComposite, SWT.NONE); dirLabel .setText(MigrationResources.workflow_export_wizard_dirLabel_text); templateDirCombo = new Combo(templateComposite, SWT.BORDER); templateDirCombo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); String savedDir = DiagramMigrationPlugin.getDefault() .getPreferenceStore().getString( MigrationExportConstants.TARGET_DIRECTORIES); if (savedDir != null) { templateDirCombo.add(savedDir); templateDirCombo.setText(savedDir); } templateDirCombo.addModifyListener(modifyListener); Button browseButton = new Button(templateComposite, SWT.NONE); browseButton .setText(MigrationResources.workflow_export_wizard_browseButton_text); browseButton.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent event) { try { DirectoryDialog dialog = new DirectoryDialog(shell, SWT.NONE); String selectedDir = dialog.open(); if (selectedDir != null) { templateDirCombo.add(selectedDir, 0); templateDirCombo.setText(selectedDir); } } catch (Exception e) { e.printStackTrace(); } } }); setControl(composite); } public void handleEvent(Event event) { } /** * 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 = DiagramMigrationPlugin.getDefault() .getPreferenceStore().getString( MigrationExportConstants.PROCESS_NAME); if (savedProcess != null && processes.containsKey(savedProcess)) { processCombo.setText(savedProcess); } else { processCombo.setText(processCombo.getItem(0)); } // updateContextCombo(getProcess()); } else { processCombo.setItems(EMPTY_ARRAY); } } /** * Updates the Context Combo. */ // protected void updateContextCombo(Process process) { // try { // Map contexts = MigrationUtil.getContexts(process); // if (contexts != null && contexts.size() > 0) { // String[] names = new String[contexts.size()]; // contexts.keySet().toArray(names); // contextCombo.setItems(names); // String savedContext = DiagrammingMigrationPlugin.getDefault() // .getPreferenceStore().getString( // MigrationExportConstants.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) { // } // } /** * Updates the activitity Combo. */ protected void updateActivityCombo(Process process) { try { activities = MigrationUtil.getActivities(process); if (activities != null && activities.size() > 0) { String[] names = new String[activities.size()]; activities.keySet().toArray(names); activityCombo.setItems(names); // String savedContext = WorkflowExpPlugin.getDefault() // .getPreferenceStore().getString( // WorkflowExportConstants.ACTIVITY_CONTEXT); // if (savedContext != null && // contexts.containsKey(savedContext)) { // activityCombo.setText(savedContext); // } else { // String defaultContext = process.getDefaultContext() // .getName(); // activityCombo.setText(defaultContext); // } activityCombo.setText(names[0]); } else { activityCombo.setItems(EMPTY_ARRAY); } } catch (Exception e) { } } /** * Returns the 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 selected Process context. */ // public String getProcessContextName() { // return (String) contextCombo.getText(); // } /** * Returns the template name. */ public String getTemplateName() { return templateNameCombo.getText(); } /** * Returns the target directory. */ public String getTargetDirectory() { return templateDirCombo.getText(); } /** * @see org.eclipse.jface.wizard.WizardPage#isCompleted() */ public boolean isPageComplete() { if (processCombo.getText().trim().length() > 0 // && contextCombo.getText().trim().length() > 0 && templateNameCombo.getText().trim().length() > 0 && templateDirCombo.getText().trim().length() > 0 && activityCombo.getText().trim().length() > 0) { return true; } return false; } public Activity getActivity() { if (activityCombo.getSelectionIndex() != -1) { String activityName = activityCombo.getText(); Activity activity = (Activity) activities.get(activityName); return activity; } return null; } // public MethodConfiguration getContext() { // if (getProcessContextName() != null) { // String contextName = getProcessContextName(); // Map result = MigrationUtil.getContexts(getProcess()); // return (MethodConfiguration) result.get(contextName); // } // return null; // } }