Java tutorial
//------------------------------------------------------------------------------ // 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.wizards; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.epf.authoring.ui.wizards.ConfigurationTableLabelProvider; import org.eclipse.epf.export.ExportPlugin; import org.eclipse.epf.export.ExportResources; import org.eclipse.epf.export.services.PluginExportData; import org.eclipse.epf.library.ui.LibraryUIImages; import org.eclipse.epf.library.util.LibraryUtil; import org.eclipse.epf.ui.wizards.BaseWizardPage; import org.eclipse.epf.uma.MethodPlugin; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.wizard.IWizardPage; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Table; /** * A wizard page that prompts the user to review the dependencies of the method * plug-ins that have been selected for export. * * @author Jinhua Xi * @author Kelvin Low * @since 1.0 */ public class PluginInfoPage extends BaseWizardPage implements ISelectionChangedListener, Listener { public static final String PAGE_NAME = PluginInfoPage.class.getName(); private Table table; private TableViewer ctrl_tableViewer; private TableViewer ctrl_dependPluginsViewer; private TableViewer ctrl_associatedConfigViewer; private List dependentPluginList = new ArrayList(); private List associatedConfigList = new ArrayList(); private PluginExportData data; /** * Creates a new instance. */ public PluginInfoPage(PluginExportData data) { super(PAGE_NAME); setTitle(ExportResources.reviewPluginsPage_title); setDescription(ExportResources.reviewPluginsPage_desc); setImageDescriptor(ExportPlugin.getDefault().getImageDescriptor("full/wizban/exp_meth_plugin_wizban.gif")); //$NON-NLS-1$ this.data = data; } /** * @see org.eclipse.jface.dialogs.IDialogPage#createControl(Composite) */ public void createControl(Composite parent) { Composite container = new Composite(parent, SWT.NONE); container.setLayout(new GridLayout()); createLabel(container, ExportResources.reviewPluginsPage_pluginsLabel_text); ctrl_tableViewer = createTableViewer(container, 360, 60, 1); table = ctrl_tableViewer.getTable(); ILabelProvider labelProvider = new LabelProvider() { public Image getImage(Object element) { return LibraryUIImages.IMG_METHOD_PLUGIN; } public String getText(Object element) { if (element instanceof MethodPlugin) { return ((MethodPlugin) element).getName(); } else { return element.toString(); } } }; ctrl_tableViewer.setLabelProvider(labelProvider); ctrl_tableViewer.setContentProvider(new ArrayContentProvider()); if (data.getSelectedPlugins() != null) { ctrl_tableViewer.setInput(data.getSelectedPlugins().toArray()); } createLabel(container, ExportResources.reviewPluginsPage_dependentPluginsLabel_text); ctrl_dependPluginsViewer = createTableViewer(container, 360, 60, 1); ctrl_dependPluginsViewer.setLabelProvider(labelProvider); ctrl_dependPluginsViewer.setContentProvider(new ArrayContentProvider()); ctrl_dependPluginsViewer.setInput(dependentPluginList); createLabel(container, ExportResources.reviewPluginsPage_associatedConfigsLabel_text); ctrl_associatedConfigViewer = createTableViewer(container, 360, 60, 1); ctrl_associatedConfigViewer.setLabelProvider(new ConfigurationTableLabelProvider()); ctrl_associatedConfigViewer.setContentProvider(new ArrayContentProvider()); ctrl_associatedConfigViewer.setInput(associatedConfigList); if (data.getSelectedPlugins() != null && !data.getSelectedPlugins().isEmpty()) { table.select(0); displayRelatedInfo(data.getSelectedPlugins().iterator().next()); } addListeners(); setControl(container); setPageComplete(false); } private void addListeners() { ctrl_tableViewer.addSelectionChangedListener(this); } /** * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent) */ public void selectionChanged(SelectionChangedEvent event) { StructuredSelection selection = (StructuredSelection) event.getSelection(); if (!selection.isEmpty()) { Object[] plugin = selection.toArray(); displayRelatedInfo((MethodPlugin) plugin[0]); } } /** * @see org.eclipse.swt.widgets.Listener#handleEvent(org.eclipse.swt.widgets.Event) */ public void handleEvent(Event event) { setPageComplete(isPageComplete()); getWizard().getContainer().updateButtons(); } /** * @see org.eclipse.epf.ui.wizards.BaseWizardPage#onEnterPage(Object) */ public void onEnterPage(Object obj) { if (data.getSelectedPlugins() != null && !data.getSelectedPlugins().isEmpty()) { ctrl_tableViewer.setInput(data.getSelectedPlugins().toArray()); table.select(0); displayRelatedInfo(data.getSelectedPlugins().iterator().next()); } } private void displayRelatedInfo(MethodPlugin plugin) { if (plugin == null) return; dependentPluginList = plugin.getBases(); ctrl_dependPluginsViewer.setInput(dependentPluginList.toArray()); associatedConfigList = LibraryUtil.getAssociatedConfigurations(plugin); ctrl_associatedConfigViewer.setInput(associatedConfigList.toArray()); } /** * @see org.eclipse.jface.wizard.WizardPage#isPageComplete() */ public boolean isPageComplete() { return true; } protected void saveDataToModel() { // FIXME! Refactor to use: data.buildAssociatedConfigMap() if (data.getSelectedPlugins() != null) { data.associatedConfigMap.clear(); for (Iterator iter = data.getSelectedPlugins().iterator(); iter.hasNext();) { MethodPlugin element = (MethodPlugin) iter.next(); data.associatedConfigMap.put(element, LibraryUtil.getAssociatedConfigurations(element)); } } } /** * @see org.eclipse.jface.wizard.WizardPage#getNextPage() */ public IWizardPage getNextPage() { saveDataToModel(); ExportPluginSummaryPage page = ((ExportPluginWizard) getWizard()).page3; page.onEnterPage(null); return page; } }