]> gerrit.simantics Code Review - simantics/platform.git/blob - bundles/org.simantics.modeling.ui/src/org/simantics/modeling/ui/diagram/monitor/ObtainedFontAdapter.java
Migrated source code from Simantics SVN
[simantics/platform.git] / bundles / org.simantics.modeling.ui / src / org / simantics / modeling / ui / diagram / monitor / ObtainedFontAdapter.java
1 package org.simantics.modeling.ui.diagram.monitor;\r
2 \r
3 import java.util.ArrayList;\r
4 import java.util.Collections;\r
5 \r
6 import org.simantics.databoard.Bindings;\r
7 import org.simantics.db.ReadGraph;\r
8 import org.simantics.db.RelationContext;\r
9 import org.simantics.db.Resource;\r
10 import org.simantics.db.Statement;\r
11 import org.simantics.db.common.adaption.SimpleContextualAdapter;\r
12 import org.simantics.db.exception.DatabaseException;\r
13 import org.simantics.db.layer0.property.OrderedResource;\r
14 import org.simantics.diagram.stubs.DiagramResource;\r
15 import org.simantics.operation.Layer0X;\r
16 import org.simantics.ui.fonts.FontDescriptor;\r
17 \r
18 public class ObtainedFontAdapter extends SimpleContextualAdapter<FontDescriptor, RelationContext> {\r
19 \r
20         @Override\r
21         public FontDescriptor adapt(ReadGraph graph, Resource source, RelationContext context) throws DatabaseException {\r
22                 \r
23             Layer0X L0X = Layer0X.getInstance(graph);\r
24                 DiagramResource DIA = DiagramResource.getInstance(graph);\r
25                 ArrayList<OrderedResource> order = new ArrayList<OrderedResource>();\r
26                 for(Statement stm : graph.getStatements(context.getSubject(), L0X.ObtainsProperty)) {\r
27                         Integer position = graph.getRelatedValue(stm.getPredicate(), L0X.NaturalNumberOrderRelation, Bindings.INTEGER);\r
28                         order.add(new OrderedResource(position, stm.getObject()));\r
29                 }\r
30                 if (order.size() > 1)\r
31                         Collections.sort(order);\r
32                 for(OrderedResource or : order) {\r
33                         FontDescriptor result = graph.getPossibleRelatedAdapter(or.r, DIA.HasFont, FontDescriptor.class);\r
34                         if(result != null) return result;\r
35                 }\r
36                 \r
37                 return null;\r
38                 \r
39         }\r
40 \r
41 }\r