2 * Copyright (C) 2015 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
6 * The contents of this file are subject to the Mozilla Public License Version 1.1
7 * See LICENSE.TXT at the top of this package for the full license terms.
9 package eu
.etaxonomy
.taxeditor
.view
;
11 import java
.util
.HashMap
;
14 import org
.eclipse
.core
.commands
.Command
;
15 import org
.eclipse
.core
.runtime
.IConfigurationElement
;
16 import org
.eclipse
.core
.runtime
.IExtensionRegistry
;
17 import org
.eclipse
.core
.runtime
.Platform
;
18 import org
.eclipse
.jface
.viewers
.TreeNode
;
19 import org
.eclipse
.ui
.PlatformUI
;
20 import org
.eclipse
.ui
.commands
.ICommandService
;
22 import eu
.etaxonomy
.cdm
.persistence
.dto
.UuidAndTitleCache
;
23 import eu
.etaxonomy
.taxeditor
.model
.MessagingUtils
;
24 import eu
.etaxonomy
.taxeditor
.store
.CdmStore
;
27 * Scans eu.etaxonomy.taxeditor.store.cdmViewer extension point.
32 public class CdmViewerUtil
{
35 * Returns a map of available commands to open the given input.
36 * Keys are the command IDs and values are their string representations.
39 * the object which should be handled by the available commands
40 * @return a key-value map of available commands and their string
43 public static Map
<Command
, String
> getAvailableViewers(Object input
){
44 Map
<Command
, String
> commandViewerNameMap
= new HashMap
<Command
, String
>();
47 //for generic UuidAndTitleCache objects try to load the object
48 if (input
instanceof UuidAndTitleCache
){
49 UuidAndTitleCache uuidAndTitleCache
= (UuidAndTitleCache
)input
;
50 input
= CdmStore
.getCommonService().find(uuidAndTitleCache
.getType(), uuidAndTitleCache
.getUuid());
52 //for tree nodes get the value resp. the object of the node
53 else if (input
instanceof TreeNode
){
54 TreeNode treeNode
= (TreeNode
)input
;
55 input
= treeNode
.getValue();
58 return commandViewerNameMap
;
60 IExtensionRegistry reg
= Platform
.getExtensionRegistry();
61 IConfigurationElement
[] extensions
= reg
62 .getConfigurationElementsFor("eu.etaxonomy.taxeditor.store.cdmViewer"); //$NON-NLS-1$
63 for (IConfigurationElement configElement
: extensions
) {
64 if(configElement
.getName().equals("viewCommandMapping")){ //$NON-NLS-1$
66 String commandId
= configElement
.getAttribute("commandId"); //$NON-NLS-1$
67 String viewerName
= configElement
.getAttribute("viewerName"); //$NON-NLS-1$
68 Class
<?
> selectionClass
= Class
.forName(configElement
.getAttribute("selection")); //$NON-NLS-1$
69 if(selectionClass
.isAssignableFrom(input
.getClass())){
70 ICommandService commandService
= PlatformUI
.getWorkbench().getService(ICommandService
.class);
71 Command command
= commandService
.getCommand(commandId
);
72 if(command
.isEnabled()){
73 commandViewerNameMap
.put(command
, viewerName
);
76 } catch (ClassNotFoundException e
) {
77 MessagingUtils
.error(CdmViewerChooser
.class, "Could not initalize selection class element of cdmViewer extension", e
); //$NON-NLS-1$
82 return commandViewerNameMap
;