]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.ui/src/org/simantics/ui/workbench/action/ResourceEditorAdapterAction.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.ui / src / org / simantics / ui / workbench / action / ResourceEditorAdapterAction.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2010 Association for Decentralized Information Management\r
3  * in Industry THTH ry.\r
4  * All rights reserved. This program and the accompanying materials\r
5  * are made available under the terms of the Eclipse Public License v1.0\r
6  * which accompanies this distribution, and is available at\r
7  * http://www.eclipse.org/legal/epl-v10.html\r
8  *\r
9  * Contributors:\r
10  *     VTT Technical Research Centre of Finland - initial API and implementation\r
11  *******************************************************************************/\r
12 package org.simantics.ui.workbench.action;\r
13 \r
14 import org.eclipse.core.runtime.SafeRunner;\r
15 import org.eclipse.jface.util.SafeRunnable;\r
16 import org.simantics.db.Resource;\r
17 import org.simantics.ui.workbench.editor.EditorAdapter;\r
18 import org.simantics.utils.ui.action.IPriorityAction;\r
19 import org.simantics.utils.ui.action.PriorityAction;\r
20 \r
21 /**\r
22  * @author Tuukka Lehtonen\r
23  */\r
24 public class ResourceEditorAdapterAction extends PriorityAction {\r
25 \r
26     private static final boolean DEBUG = false;\r
27 \r
28     protected EditorAdapter      adapter;\r
29 \r
30     protected Object             resource;\r
31 \r
32     public ResourceEditorAdapterAction(EditorAdapter adapter, Object r) {\r
33         super(makeName(adapter), adapter.getIcon());\r
34         this.adapter = adapter;\r
35         this.resource = r;\r
36     }\r
37 \r
38     public static String makeName(EditorAdapter adapter) {\r
39         if (DEBUG) {\r
40             return adapter.getName() + " (" + adapter.getClass().getName() + ")[" + adapter.getPriority() + "]";\r
41         }\r
42         return adapter.getName();\r
43     }\r
44 \r
45     @Override\r
46     public final void run() {\r
47         SafeRunner.run(new SafeRunnable() {\r
48             @Override\r
49             public void run() throws Exception {\r
50                 safeRun();\r
51             }\r
52         });\r
53     }\r
54 \r
55     protected void safeRun() throws Exception {\r
56         adapter.openEditor(resource);\r
57     }\r
58 \r
59     public EditorAdapter getAdapter() {\r
60         return adapter;\r
61     }\r
62 \r
63     public Object getResource() {\r
64         return resource;\r
65     }\r
66 \r
67     @Override\r
68     public int getPriority() {\r
69         return adapter.getPriority();\r
70     }\r
71 \r
72     public static IPriorityAction[] toActions(EditorAdapter[] adapters, Resource forResource) {\r
73         IPriorityAction[] actions = new IPriorityAction[adapters.length];\r
74         for (int i = 0; i < adapters.length; ++i) {\r
75             actions[i] = new ResourceEditorAdapterAction(adapters[i], forResource);\r
76         }\r
77         return actions;\r
78     }\r
79 \r
80 }\r