| /******************************************************************************* |
| * Licensed Materials - Property of IBM |
| * (c) Copyright IBM Corporation 2007,2011. All Rights Reserved. |
| * |
| * Note to U.S. Government Users Restricted Rights: |
| * Use, duplication or disclosure restricted by GSA ADP Schedule |
| * Contract with IBM Corp. |
| *******************************************************************************/ |
| |
| package org.eclipse.epf.library.util; |
| |
| import java.util.ArrayList; |
| import java.util.Collection; |
| import java.util.Collections; |
| import java.util.Comparator; |
| import java.util.List; |
| |
| import org.eclipse.emf.edit.command.CommandParameter; |
| import org.eclipse.epf.library.ILibraryManager; |
| import org.eclipse.epf.library.LibraryPlugin; |
| import org.eclipse.epf.library.LibraryService; |
| import org.eclipse.epf.library.edit.util.PracticePropUtil; |
| import org.eclipse.epf.uma.Practice; |
| import org.eclipse.epf.uma.UmaFactory; |
| import org.eclipse.epf.uma.UmaPackage; |
| import org.eclipse.epf.uma.util.UserDefinedTypeMeta; |
| import org.eclipse.jface.action.Separator; |
| |
| public class UserDefinedTypeContextMenuUtil { |
| private static final UserDefinedTypeContextMenuUtil INSTNACE = new UserDefinedTypeContextMenuUtil(); |
| |
| private UserDefinedTypeContextMenuUtil() { |
| // |
| } |
| |
| public static UserDefinedTypeContextMenuUtil getInstance() { |
| return INSTNACE; |
| } |
| |
| public void addDescriptorsForUserDefinedType(Collection<Object> newChildDescriptors) { |
| ILibraryManager libMgr = LibraryService.getInstance().getCurrentLibraryManager(); |
| Collection<UserDefinedTypeMeta> udtMetas = libMgr.getUserDefinedTypes(); |
| |
| if (udtMetas == null) { |
| return; |
| } |
| |
| newChildDescriptors.add(new Separator()); |
| |
| List<UserDefinedTypeMeta> udtMetaList = new ArrayList<UserDefinedTypeMeta>(); |
| for (UserDefinedTypeMeta udtMeta : udtMetas) { |
| udtMetaList.add(udtMeta); |
| } |
| Collections.sort(udtMetaList, new UdtMetaComparator()); |
| |
| try { |
| for (UserDefinedTypeMeta udtMeta : udtMetaList) { |
| Practice prac = UmaFactory.eINSTANCE.createPractice(); |
| PracticePropUtil.getPracticePropUtil().storeUtdData(prac, udtMeta); |
| newChildDescriptors.add(new CommandParameter(null, UmaPackage.eINSTANCE |
| .getContentPackage_ContentElements(), prac)); |
| } |
| } catch (Exception e) { |
| LibraryPlugin.getDefault().getLogger().logError(e); |
| } |
| } |
| |
| private class UdtMetaComparator implements Comparator<UserDefinedTypeMeta> { |
| public int compare(UserDefinedTypeMeta obj1, UserDefinedTypeMeta obj2) { |
| String name1 = obj1.getRteNameMap().get(UserDefinedTypeMeta._typeName); |
| String name2 = obj2.getRteNameMap().get(UserDefinedTypeMeta._typeName); |
| |
| return name1.compareTo(name2); |
| } |
| } |
| |
| } |