//------------------------------------------------------------------------------ // 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.authoring.ui.dialogs; import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; import org.eclipse.emf.common.notify.AdapterFactory; import org.eclipse.epf.authoring.ui.filters.ProcessActivityFilter; import org.eclipse.epf.authoring.ui.filters.ProcessRoleFilter; import org.eclipse.epf.authoring.ui.filters.VariabilityProcessRoleFilter; import org.eclipse.epf.authoring.ui.filters.VariabilityProcessTaskFilter; import org.eclipse.epf.authoring.ui.filters.VariabilityProcessWorkProductFilter; import org.eclipse.epf.library.edit.IFilter; import org.eclipse.epf.library.edit.TngAdapterFactory; import org.eclipse.epf.library.edit.itemsfilter.FilterConstants; import org.eclipse.epf.uma.Activity; import org.eclipse.epf.uma.BreakdownElement; import org.eclipse.epf.uma.MethodConfiguration; import org.eclipse.epf.uma.Process; import org.eclipse.epf.uma.ProcessComponent; import org.eclipse.epf.uma.TeamProfile; import org.eclipse.ui.PlatformUI; /** * Helper class to collect input data from users using dialog boxes * * @author Phong Nguyen Le * @author Shilpa Toraskar * @since 1.0 */ public class DialogHelper { public static List selectElementsFor(BreakdownElement e, IFilter filter, MethodConfiguration config, String tabName) { ItemsFilterDialog fd = new ItemsFilterDialog(PlatformUI.getWorkbench() .getActiveWorkbenchWindow().getShell(), filter, tabName, null, config); fd.setBlockOnOpen(true); fd.setViewerSelectionSingle(false); fd.setTitle(tabName); fd.open(); return fd.getSelectedItems(); } public static List selectTasksFor(Activity act, MethodConfiguration config) { String tabName = FilterConstants.TASKS; IFilter filter = new VariabilityProcessTaskFilter(config, null, FilterConstants.TASKS, act); return selectElementsFor(act, filter, config, tabName); } public static List selectElementsFor(Object object, MethodConfiguration config, AdapterFactory adapterFactory) { if (object instanceof Activity) { if (adapterFactory == TngAdapterFactory.INSTANCE .getWBS_ComposedAdapterFactory()) { return selectTasksFor((Activity) object, config); } else if (adapterFactory == TngAdapterFactory.INSTANCE .getOBS_ComposedAdapterFactory()) { String tabName = FilterConstants.ROLES; IFilter filter = new VariabilityProcessRoleFilter(config, null, FilterConstants.ROLES, (Activity) object); return selectElementsFor((BreakdownElement) object, filter, config, tabName); } else if (adapterFactory == TngAdapterFactory.INSTANCE .getPBS_ComposedAdapterFactory()) { String tabName = FilterConstants.WORKPRODUCTS; IFilter filter = new VariabilityProcessWorkProductFilter( config, null, FilterConstants.WORKPRODUCTS, (Activity) object); return selectElementsFor((BreakdownElement) object, filter, config, tabName); } } if (object instanceof TeamProfile) { if (adapterFactory == TngAdapterFactory.INSTANCE .getOBS_ComposedAdapterFactory()) { String tabName = FilterConstants.ROLES; IFilter filter = new ProcessRoleFilter(config, null, FilterConstants.ROLES); return selectElementsFor((BreakdownElement) object, filter, config, tabName); } } return Collections.EMPTY_LIST; } public static List selectActivitiesFor(Activity act, MethodConfiguration config, int command) { // return null; String tabName = FilterConstants.PROCESSES; IFilter filter = new ProcessActivityFilter(config, null, FilterConstants.PROCESSES, act, command); List selection = selectElementsFor(act, filter, config, tabName); ArrayList activities = new ArrayList(); for (Iterator iter = selection.iterator(); iter.hasNext();) { Object element = iter.next(); if (element instanceof Activity) { activities.add(element); } else if (element instanceof ProcessComponent) { Process proc = ((ProcessComponent) element).getProcess(); if (proc != null) { activities.add(proc); } } } return activities; } }