]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.issues.ui/src/org/simantics/issues/ui/IssueView2.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.issues.ui / src / org / simantics / issues / ui / IssueView2.java
1 /*******************************************************************************\r
2  * Copyright (c) 2007, 2011 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.issues.ui;\r
13 \r
14 import org.eclipse.ui.IWorkbenchPart;\r
15 import org.simantics.Simantics;\r
16 import org.simantics.db.ReadGraph;\r
17 import org.simantics.db.Resource;\r
18 import org.simantics.db.common.request.ResourceRead;\r
19 import org.simantics.db.common.utils.NameUtils;\r
20 import org.simantics.db.exception.DatabaseException;\r
21 import org.simantics.db.management.ISessionContext;\r
22 import org.simantics.diagram.stubs.DiagramResource;\r
23 import org.simantics.issues.ui.ontology.IssueUIResource;\r
24 import org.simantics.modeling.ModelingResources;\r
25 import org.simantics.ui.workbench.IPropertyPage;\r
26 import org.simantics.views.swt.ModelledView;\r
27 \r
28 /**\r
29  * @author Antti Villberg\r
30  */\r
31 public class IssueView2 extends ModelledView {\r
32 \r
33     @Override\r
34     protected String configurationURI() {\r
35         return IssueUIResource.URIs.IssueView;\r
36     }\r
37 \r
38     @Override\r
39     protected void inputChanged(IWorkbenchPart part, Object input) {\r
40         //System.out.println("input: " + input);\r
41         updateViewDescription(input);\r
42         super.inputChanged(part, input);\r
43     }\r
44 \r
45     private void updateViewDescription(Object input) {\r
46         if (input instanceof Resource) {\r
47             Resource r = (Resource) input;\r
48             ISessionContext ctx = getSessionContext();\r
49             if (ctx != null) {\r
50                 try {\r
51                     String desc = ctx.getSession().syncRequest(new ResourceRead<String>(r) {\r
52                         @Override\r
53                         public String perform(ReadGraph graph) throws DatabaseException {\r
54                             Resource r = resource;\r
55                             Resource config = getConfiguration(graph, r);\r
56                             if (config != null)\r
57                                 r = config;\r
58 \r
59                             return formName(graph, r);\r
60                         }\r
61 \r
62                         private String formName(ReadGraph graph, Resource r) throws DatabaseException {\r
63                             String name = NameUtils.getSafeName(graph, r);\r
64                             final Resource project = Simantics.getProjectResource();\r
65                             String projectUri = project != null ? graph.getPossibleURI(project) : "";\r
66                             String uri = graph.getPossibleURI(r);\r
67                             if (uri != null) {\r
68                                 if (uri.startsWith(projectUri))\r
69                                     uri = uri.substring(projectUri.length());\r
70                             }\r
71                             return uri != null ? name + " (" + uri + ")" : name;\r
72                         }\r
73 \r
74                         private Resource getConfiguration(ReadGraph graph, Resource r) throws DatabaseException {\r
75                             DiagramResource DIA = DiagramResource.getInstance(graph);\r
76                             Resource diagram = graph.getPossibleObject(r, DIA.RuntimeDiagram_HasConfiguration);\r
77                             if (diagram == null)\r
78                                 return r;\r
79                             ModelingResources MOD = ModelingResources.getInstance(graph);\r
80                             Resource config = graph.getPossibleObject(diagram, MOD.DiagramToComposite);\r
81                             if (config == null)\r
82                                 return diagram;\r
83                             return config;\r
84                         }\r
85                     });\r
86                     setContentDescription(desc);\r
87                 } catch (DatabaseException e) {\r
88                     setContentDescription(e.getMessage());\r
89                 }\r
90             }\r
91             setVisible(true);\r
92         } else {\r
93             setContentDescription("Issues not available.");\r
94             setVisible(false);\r
95         }\r
96     }\r
97 \r
98     @Override\r
99     protected IPropertyPage getPropertyPage() {\r
100         //return new PropertyPage(getSite());\r
101         return null;\r
102     }\r
103 \r
104 }\r