| //------------------------------------------------------------------------------ |
| // 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.library.ui.dialogs; |
| |
| import java.util.ArrayList; |
| import java.util.Iterator; |
| import java.util.List; |
| |
| import org.eclipse.epf.common.utils.StrUtil; |
| import org.eclipse.epf.library.LibraryResources; |
| import org.eclipse.epf.library.edit.command.DeleteMethodElementCommand; |
| import org.eclipse.epf.library.edit.util.TngUtil; |
| import org.eclipse.epf.library.ui.LibraryUIPlugin; |
| import org.eclipse.epf.library.ui.LibraryUIResources; |
| import org.eclipse.epf.library.ui.LibraryUIText; |
| import org.eclipse.epf.library.util.ConvertActivityType; |
| import org.eclipse.epf.library.util.TypeConverter; |
| import org.eclipse.epf.uma.Activity; |
| import org.eclipse.epf.uma.UmaPackage; |
| import org.eclipse.jface.dialogs.Dialog; |
| import org.eclipse.jface.viewers.ArrayContentProvider; |
| import org.eclipse.jface.viewers.LabelProvider; |
| import org.eclipse.swt.widgets.Display; |
| import org.eclipse.swt.widgets.Shell; |
| import org.eclipse.ui.dialogs.ListDialog; |
| |
| /** |
| * Dialog to convert activity type |
| * |
| * @author Jeff Hardy |
| * @since 1.0 |
| */ |
| public class ConvertActivityDialog { |
| |
| /** |
| * Query user and convert the old activity into new one |
| * |
| * @param oldActivity |
| * @param shell |
| * @param command |
| * |
| * @return Newly converted activity |
| */ |
| public static Activity queryUserAndConvert(Activity oldActivity, Shell shell, |
| DeleteMethodElementCommand command) { |
| |
| if (shell == null) |
| shell = Display.getCurrent().getActiveShell(); |
| ListDialog dlg = new ListDialog(shell); |
| dlg.setHeightInChars(5); |
| dlg.setContentProvider(new ArrayContentProvider()); |
| dlg.setLabelProvider(new LabelProvider() { |
| public String getText(Object element) { |
| switch (((Integer) element).intValue()) { |
| // TODO: refactor these strings (and this whole dialog) into |
| // library.ui |
| case UmaPackage.ACTIVITY: |
| return LibraryUIText.TEXT_ACTIVITY; |
| case UmaPackage.ITERATION: |
| return LibraryUIText.TEXT_ITERATION; |
| case UmaPackage.PHASE: |
| return LibraryUIText.TEXT_PHASE; |
| default: |
| return LibraryResources.unknownGuidance_text; //$NON-NLS-1$ |
| } |
| |
| } |
| }); |
| List newActivityTypeList = getValidNewActivityTypes(oldActivity); |
| if (newActivityTypeList == null) { |
| LibraryUIPlugin |
| .getDefault() |
| .getMsgDialog() |
| .displayError( |
| LibraryResources.convertActivityError_title, //$NON-NLS-1$ |
| LibraryUIResources.unsupportedActivityType_msg, |
| LibraryUIResources.bind(LibraryUIResources.unsupportedActivityType_reason, StrUtil.toLower(TngUtil.getTypeText(oldActivity)))); |
| return null; |
| } |
| dlg.setInput(newActivityTypeList); |
| dlg.setTitle(LibraryUIResources.convertActivityDialog_title); |
| dlg.setMessage(LibraryUIResources.convertActivityDialog_text); |
| if (dlg.open() == Dialog.CANCEL) |
| return null; |
| |
| Object[] selectionResult = dlg.getResult(); |
| if (selectionResult == null) |
| return null; |
| int chosenActivity = ((Integer) selectionResult[0]).intValue(); |
| |
| // return ConvertActivityType.convertActivity(oldActivity, chosenActivity, command); |
| |
| return TypeConverter.convertActivity(oldActivity, TypeConverter.getActivityType(chosenActivity)); |
| } |
| |
| /** |
| * Gets list of valid new activity types based on old activity type |
| * |
| * @param oldActivity |
| * |
| * @return list of valid activity types |
| * |
| */ |
| public static List getValidNewActivityTypes(Activity oldActivity) { |
| if (oldActivity == null) |
| return null; |
| Integer oldActivityClassID = new Integer(oldActivity.eClass() |
| .getClassifierID()); |
| if (!ConvertActivityType.compatibleActivitiesList.contains(oldActivityClassID)) |
| return null; |
| List activityList = new ArrayList(); |
| for (Iterator iter = ConvertActivityType.compatibleActivitiesList.iterator(); iter.hasNext();) { |
| Integer compatibleActivityTypeClassID = (Integer)iter.next(); |
| if (!oldActivityClassID.equals(compatibleActivityTypeClassID) && |
| compatibleActivityTypeClassID.intValue() != UmaPackage.CAPABILITY_PATTERN && |
| compatibleActivityTypeClassID.intValue() != UmaPackage.DELIVERY_PROCESS) |
| activityList.add(compatibleActivityTypeClassID); |
| } |
| return activityList; |
| } |
| |
| |
| } |