]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.modeling.template2d.ui/src/org/simantics/modeling/template2d/ui/function/DrawingTemplateInfo.java
Fixed all line endings of the repository
[simantics/platform.git] / bundles / org.simantics.modeling.template2d.ui / src / org / simantics / modeling / template2d / ui / function / DrawingTemplateInfo.java
index 4cd822e32b9a739b18979a345280a10f64502698..5ebe240c6a8768966c029bbb13d8cea1875fa088 100644 (file)
-/*******************************************************************************\r
- * Copyright (c) 2012 Association for Decentralized Information Management in\r
- * Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- *\r
- * Contributors:\r
- *     VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.modeling.template2d.ui.function;\r
-\r
-import java.awt.geom.AffineTransform;\r
-import java.util.Collection;\r
-import java.util.List;\r
-import java.util.TreeMap;\r
-\r
-import org.simantics.databoard.Bindings;\r
-import org.simantics.datatypes.literal.Font;\r
-import org.simantics.datatypes.literal.RGB;\r
-import org.simantics.db.ReadGraph;\r
-import org.simantics.db.Resource;\r
-import org.simantics.db.common.request.ResourceRead;\r
-import org.simantics.db.common.utils.ListUtils;\r
-import org.simantics.db.exception.DatabaseException;\r
-import org.simantics.diagram.stubs.DiagramResource;\r
-import org.simantics.layer0.Layer0;\r
-import org.simantics.modeling.template2d.ontology.Template2dResource;\r
-import org.simantics.scenegraph.ontology.ScenegraphResources;\r
-\r
-public class DrawingTemplateInfo extends ResourceRead<TreeMap<String, FlagTableInfo>> {\r
-    public static final Integer ALIGN_LEFT  = 0;\r
-    public static final Integer ALIGN_RIGHT = 1;\r
-    public static final float BASELINE_VERTICAL_OFFSET = 0.8F; // percent of line height\r
-//     private String digest = "";\r
-//\r
-//Column\r
-//     public String getDigest() {\r
-//             return digest;\r
-//     }\r
-\r
-       public DrawingTemplateInfo(Resource template) {\r
-        super(template);\r
-    }\r
-\r
-       /**\r
-        * The byte[] returned by MessageDigest does not have a nice\r
-        * textual representation, so some form of encoding is usually performed.\r
-        *\r
-        * This implementation follows the example of David Flanagan's book\r
-        * "Java In A Nutshell", and converts a byte array into a String\r
-        * of hex characters.\r
-        *\r
-        * Another popular alternative is to use a "Base64" encoding.\r
-        */\r
-//     static private String hexEncode( byte[] aInput){\r
-//             StringBuilder result = new StringBuilder();\r
-//             char[] digits = {'0', '1', '2', '3', '4','5','6','7','8','9','a','b','c','d','e','f'};\r
-//             for ( int idx = 0; idx < aInput.length; ++idx) {\r
-//                     byte b = aInput[idx];\r
-//                     result.append( digits[ (b&0xf0) >> 4 ] );\r
-//                     result.append( digits[ b&0x0f] );\r
-//             }\r
-//             return result.toString();\r
-//     }\r
-\r
-       @Override\r
-       public TreeMap<String, FlagTableInfo> perform(ReadGraph g) throws DatabaseException {\r
-        TreeMap<String,FlagTableInfo> entries = new TreeMap<String,FlagTableInfo>();\r
-       try {\r
-        Layer0 L0 = Layer0.getInstance(g);\r
-        Template2dResource TEMPLATE2D = Template2dResource.getInstance(g);\r
-               DiagramResource DIA = DiagramResource.getInstance(g);\r
-               ScenegraphResources SG = ScenegraphResources.getInstance(g);\r
-               //DatatypeResource DTR = DatatypeResource.getInstance(g);\r
-\r
-//        MessageDigest sha;\r
-//        sha = MessageDigest.getInstance("SHA-1");\r
-//        byte[] result =  sha.digest(info.serialize());\r
-//        System.err.println(hexEncode(result));\r
-\r
-\r
-        Collection<Resource> slotTables = g.getObjects(resource, L0.ConsistsOf);\r
-        for (Resource slotTable:slotTables){\r
-               if (!g.isInstanceOf(slotTable, TEMPLATE2D.FlagTable))\r
-                       continue;\r
-               \r
-               String name = g.getPossibleRelatedValue(slotTable, L0.HasName, Bindings.STRING);\r
-            double[] transform = g.getPossibleRelatedValue2(slotTable, DIA.Scenegraph_Composite_transform, Bindings.getBindingUnchecked(double[].class));\r
-               Resource align = g.getPossibleObject(slotTable, TEMPLATE2D.FlagTable_HasAlignment);\r
-               Float width = g.getPossibleRelatedValue(slotTable, TEMPLATE2D.FlagTable_HasWidth, Bindings.FLOAT);\r
-               Float rowHeight = g.getPossibleRelatedValue(slotTable, TEMPLATE2D.FlagTable_HasRowHeigth, Bindings.FLOAT);\r
-               Integer rowCount = g.getPossibleRelatedValue(slotTable, TEMPLATE2D.FlagTable_HasRowCount, Bindings.INTEGER);\r
-               if (name == null || width == null || rowCount == null)\r
-                       continue;\r
-\r
-               FlagTableInfo table = new FlagTableInfo();\r
-               table.setWidth(width);\r
-               table.setRowCount(rowCount);\r
-               table.setRowHeight(rowHeight);\r
-               table.setTransform(transform);\r
-               table.affineTransform = (transform != null) ? new AffineTransform(transform) : new AffineTransform();\r
-               if (align != null) {\r
-                   if (align.equals(TEMPLATE2D.FlagTable_Alignment_Left))\r
-                       table.setAlignment(ALIGN_LEFT);\r
-                   if (align.equals(TEMPLATE2D.FlagTable_Alignment_Right))\r
-                       table.setAlignment(ALIGN_RIGHT);\r
-               }\r
-               entries.put(name, table);\r
-\r
-               // Columns information\r
-                       Resource res = g.getPossibleObject(slotTable, SG.Node_children);\r
-                       if(res == null || !g.isInstanceOf(res, L0.List))\r
-                               continue;\r
-                       List<Resource> columns = ListUtils.toList(g, res);\r
-\r
-                       Float weightTotal = 0.0F;\r
-               for (Resource column:columns){\r
-                       if (!(g.isInstanceOf(column, TEMPLATE2D.FlagTable_Column) || g.isInstanceOf(column, TEMPLATE2D.FlagTable_RowNumberColumn)))\r
-                               continue;\r
-\r
-                       Float weight = g.getPossibleRelatedValue(column, TEMPLATE2D.FlagTable_Column_HasWeight, Bindings.FLOAT);\r
-                       if (weight == null)\r
-                               continue;\r
-                       \r
-                       FlagTableColumnInfo col = new FlagTableColumnInfo(weight);\r
-                       table.addColumn(col);\r
-                       if (g.isInstanceOf(column, TEMPLATE2D.FlagTable_RowNumberColumn)) {\r
-                               col.setType(FlagTableColumnInfo.TYPE_ROW_NUMBERING);\r
-\r
-                               Integer start = g.getPossibleRelatedValue(column, TEMPLATE2D.FlagTable_RowNumberColumn_start, Bindings.INTEGER);\r
-                               col.setStartOffset(start);\r
-                       }\r
-                       \r
-                       weightTotal = weightTotal + weight; \r
-                               //sha.update(weight.toString().getBytes());\r
-                       \r
-                       // Header and Data information\r
-                               Resource res2 = g.getPossibleObject(column, SG.Node_children);\r
-                               if(res2 == null || !g.isInstanceOf(res2, L0.List))\r
-                                       continue;\r
-                               List<Resource> columnDatas = ListUtils.toList(g, res2);\r
-                       for (Resource columnData:columnDatas){\r
-                               if (g.isInstanceOf(columnData, TEMPLATE2D.FlagTable_Column_Data)){\r
-                               MonitorInfo monitorInfo = new MonitorInfo();\r
-                                       Font font = g.getPossibleRelatedValue2(columnData, DIA.Scenegraph_AbstractText_font, Bindings.getBindingUnchecked(Font.class));\r
-                                       if (font != null){\r
-                                               monitorInfo.setFont(font);\r
-                                               //sha.update(font.serialize());\r
-                                       }\r
-\r
-                                       RGB.Integer color = g.getPossibleRelatedValue2(columnData, DIA.Scenegraph_AbstractText_color, RGB.Integer.BINDING/*Bindings.getBindingUnchecked(RGB.Integer.class)*/);\r
-                                       if (color != null){\r
-                                               monitorInfo.setColor(color);\r
-                                               //sha.update(color.serialize());\r
-                                       }\r
-\r
-                               String path = g.getRelatedValue(columnData, DIA.Scenegraph_Monitor_reference, Bindings.STRING);\r
-                               if (path != null && path.length() > 0){\r
-                                       monitorInfo.setText(path);\r
-                                               //sha.update(path.getBytes());\r
-                               }\r
-                               \r
-                           double[] dataTransform = g.getPossibleRelatedValue2(columnData, DIA.Scenegraph_AbstractText_transform, Bindings.getBindingUnchecked(double[].class));\r
-                               if (dataTransform != null){\r
-                                       monitorInfo.setTransform(dataTransform);\r
-                                               //sha.update(path.getBytes());\r
-                               }\r
-\r
-                               monitorInfo.setResource(columnData);\r
-                               //col.setColumnData(monitorInfo);\r
-                               col.addColumnData(monitorInfo);\r
-                               }\r
-                               if (g.isInstanceOf(columnData, TEMPLATE2D.FlagTable_Column_Header)){\r
-                               MonitorInfo monitorInfo = new MonitorInfo();\r
-                                       Font font = g.getPossibleRelatedValue2(columnData, DIA.Scenegraph_AbstractText_font, Bindings.getBindingUnchecked(Font.class));\r
-                                       if (font != null){\r
-                                               monitorInfo.setFont(font);\r
-                                               //sha.update(font.serialize());\r
-                                       }\r
-\r
-                                       RGB.Integer color = g.getPossibleRelatedValue2(columnData, DIA.Scenegraph_AbstractText_color, RGB.Integer.BINDING/*Bindings.getBindingUnchecked(RGB.Integer.class)*/);\r
-                                       if (color != null){\r
-                                               monitorInfo.setColor(color);\r
-                                               //sha.update(color.serialize());\r
-                                       }\r
-\r
-                               String path = g.getRelatedValue(columnData, DIA.Scenegraph_Monitor_reference, Bindings.STRING);\r
-                               if (path != null && path.length() > 0){\r
-                                       monitorInfo.setText(path);\r
-                                               //sha.update(path.getBytes());\r
-                               }\r
-                               \r
-                           double[] dataTransform = g.getPossibleRelatedValue2(columnData, DIA.Scenegraph_AbstractText_transform, Bindings.getBindingUnchecked(double[].class));\r
-                               if (dataTransform != null){\r
-                                       monitorInfo.setTransform(dataTransform);\r
-                                               //sha.update(path.getBytes());\r
-                               }\r
-\r
-                               monitorInfo.setResource(columnData);\r
-                               //col.setColumnHeader(monitorInfo);\r
-                               col.addColumnHeader(monitorInfo);\r
-                               }\r
-                       }\r
-               }\r
-               table.setWeightTotal(weightTotal);\r
-        }\r
-        //digest = hexEncode(sha.digest());\r
-       } catch (Throwable e){\r
-               e.printStackTrace(System.err);\r
-       }\r
-        return entries;\r
-    }\r
-}\r
+/*******************************************************************************
+ * Copyright (c) 2012 Association for Decentralized Information Management in
+ * Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ *     VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.modeling.template2d.ui.function;
+
+import java.awt.geom.AffineTransform;
+import java.util.Collection;
+import java.util.List;
+import java.util.TreeMap;
+
+import org.simantics.databoard.Bindings;
+import org.simantics.datatypes.literal.Font;
+import org.simantics.datatypes.literal.RGB;
+import org.simantics.db.ReadGraph;
+import org.simantics.db.Resource;
+import org.simantics.db.common.request.ResourceRead;
+import org.simantics.db.common.utils.ListUtils;
+import org.simantics.db.exception.DatabaseException;
+import org.simantics.diagram.stubs.DiagramResource;
+import org.simantics.layer0.Layer0;
+import org.simantics.modeling.template2d.ontology.Template2dResource;
+import org.simantics.scenegraph.ontology.ScenegraphResources;
+
+public class DrawingTemplateInfo extends ResourceRead<TreeMap<String, FlagTableInfo>> {
+    public static final Integer ALIGN_LEFT  = 0;
+    public static final Integer ALIGN_RIGHT = 1;
+    public static final float BASELINE_VERTICAL_OFFSET = 0.8F; // percent of line height
+//     private String digest = "";
+//
+//Column
+//     public String getDigest() {
+//             return digest;
+//     }
+
+       public DrawingTemplateInfo(Resource template) {
+        super(template);
+    }
+
+       /**
+        * The byte[] returned by MessageDigest does not have a nice
+        * textual representation, so some form of encoding is usually performed.
+        *
+        * This implementation follows the example of David Flanagan's book
+        * "Java In A Nutshell", and converts a byte array into a String
+        * of hex characters.
+        *
+        * Another popular alternative is to use a "Base64" encoding.
+        */
+//     static private String hexEncode( byte[] aInput){
+//             StringBuilder result = new StringBuilder();
+//             char[] digits = {'0', '1', '2', '3', '4','5','6','7','8','9','a','b','c','d','e','f'};
+//             for ( int idx = 0; idx < aInput.length; ++idx) {
+//                     byte b = aInput[idx];
+//                     result.append( digits[ (b&0xf0) >> 4 ] );
+//                     result.append( digits[ b&0x0f] );
+//             }
+//             return result.toString();
+//     }
+
+       @Override
+       public TreeMap<String, FlagTableInfo> perform(ReadGraph g) throws DatabaseException {
+        TreeMap<String,FlagTableInfo> entries = new TreeMap<String,FlagTableInfo>();
+       try {
+        Layer0 L0 = Layer0.getInstance(g);
+        Template2dResource TEMPLATE2D = Template2dResource.getInstance(g);
+               DiagramResource DIA = DiagramResource.getInstance(g);
+               ScenegraphResources SG = ScenegraphResources.getInstance(g);
+               //DatatypeResource DTR = DatatypeResource.getInstance(g);
+
+//        MessageDigest sha;
+//        sha = MessageDigest.getInstance("SHA-1");
+//        byte[] result =  sha.digest(info.serialize());
+//        System.err.println(hexEncode(result));
+
+
+        Collection<Resource> slotTables = g.getObjects(resource, L0.ConsistsOf);
+        for (Resource slotTable:slotTables){
+               if (!g.isInstanceOf(slotTable, TEMPLATE2D.FlagTable))
+                       continue;
+               
+               String name = g.getPossibleRelatedValue(slotTable, L0.HasName, Bindings.STRING);
+            double[] transform = g.getPossibleRelatedValue2(slotTable, DIA.Scenegraph_Composite_transform, Bindings.getBindingUnchecked(double[].class));
+               Resource align = g.getPossibleObject(slotTable, TEMPLATE2D.FlagTable_HasAlignment);
+               Float width = g.getPossibleRelatedValue(slotTable, TEMPLATE2D.FlagTable_HasWidth, Bindings.FLOAT);
+               Float rowHeight = g.getPossibleRelatedValue(slotTable, TEMPLATE2D.FlagTable_HasRowHeigth, Bindings.FLOAT);
+               Integer rowCount = g.getPossibleRelatedValue(slotTable, TEMPLATE2D.FlagTable_HasRowCount, Bindings.INTEGER);
+               if (name == null || width == null || rowCount == null)
+                       continue;
+
+               FlagTableInfo table = new FlagTableInfo();
+               table.setWidth(width);
+               table.setRowCount(rowCount);
+               table.setRowHeight(rowHeight);
+               table.setTransform(transform);
+               table.affineTransform = (transform != null) ? new AffineTransform(transform) : new AffineTransform();
+               if (align != null) {
+                   if (align.equals(TEMPLATE2D.FlagTable_Alignment_Left))
+                       table.setAlignment(ALIGN_LEFT);
+                   if (align.equals(TEMPLATE2D.FlagTable_Alignment_Right))
+                       table.setAlignment(ALIGN_RIGHT);
+               }
+               entries.put(name, table);
+
+               // Columns information
+                       Resource res = g.getPossibleObject(slotTable, SG.Node_children);
+                       if(res == null || !g.isInstanceOf(res, L0.List))
+                               continue;
+                       List<Resource> columns = ListUtils.toList(g, res);
+
+                       Float weightTotal = 0.0F;
+               for (Resource column:columns){
+                       if (!(g.isInstanceOf(column, TEMPLATE2D.FlagTable_Column) || g.isInstanceOf(column, TEMPLATE2D.FlagTable_RowNumberColumn)))
+                               continue;
+
+                       Float weight = g.getPossibleRelatedValue(column, TEMPLATE2D.FlagTable_Column_HasWeight, Bindings.FLOAT);
+                       if (weight == null)
+                               continue;
+                       
+                       FlagTableColumnInfo col = new FlagTableColumnInfo(weight);
+                       table.addColumn(col);
+                       if (g.isInstanceOf(column, TEMPLATE2D.FlagTable_RowNumberColumn)) {
+                               col.setType(FlagTableColumnInfo.TYPE_ROW_NUMBERING);
+
+                               Integer start = g.getPossibleRelatedValue(column, TEMPLATE2D.FlagTable_RowNumberColumn_start, Bindings.INTEGER);
+                               col.setStartOffset(start);
+                       }
+                       
+                       weightTotal = weightTotal + weight; 
+                               //sha.update(weight.toString().getBytes());
+                       
+                       // Header and Data information
+                               Resource res2 = g.getPossibleObject(column, SG.Node_children);
+                               if(res2 == null || !g.isInstanceOf(res2, L0.List))
+                                       continue;
+                               List<Resource> columnDatas = ListUtils.toList(g, res2);
+                       for (Resource columnData:columnDatas){
+                               if (g.isInstanceOf(columnData, TEMPLATE2D.FlagTable_Column_Data)){
+                               MonitorInfo monitorInfo = new MonitorInfo();
+                                       Font font = g.getPossibleRelatedValue2(columnData, DIA.Scenegraph_AbstractText_font, Bindings.getBindingUnchecked(Font.class));
+                                       if (font != null){
+                                               monitorInfo.setFont(font);
+                                               //sha.update(font.serialize());
+                                       }
+
+                                       RGB.Integer color = g.getPossibleRelatedValue2(columnData, DIA.Scenegraph_AbstractText_color, RGB.Integer.BINDING/*Bindings.getBindingUnchecked(RGB.Integer.class)*/);
+                                       if (color != null){
+                                               monitorInfo.setColor(color);
+                                               //sha.update(color.serialize());
+                                       }
+
+                               String path = g.getRelatedValue(columnData, DIA.Scenegraph_Monitor_reference, Bindings.STRING);
+                               if (path != null && path.length() > 0){
+                                       monitorInfo.setText(path);
+                                               //sha.update(path.getBytes());
+                               }
+                               
+                           double[] dataTransform = g.getPossibleRelatedValue2(columnData, DIA.Scenegraph_AbstractText_transform, Bindings.getBindingUnchecked(double[].class));
+                               if (dataTransform != null){
+                                       monitorInfo.setTransform(dataTransform);
+                                               //sha.update(path.getBytes());
+                               }
+
+                               monitorInfo.setResource(columnData);
+                               //col.setColumnData(monitorInfo);
+                               col.addColumnData(monitorInfo);
+                               }
+                               if (g.isInstanceOf(columnData, TEMPLATE2D.FlagTable_Column_Header)){
+                               MonitorInfo monitorInfo = new MonitorInfo();
+                                       Font font = g.getPossibleRelatedValue2(columnData, DIA.Scenegraph_AbstractText_font, Bindings.getBindingUnchecked(Font.class));
+                                       if (font != null){
+                                               monitorInfo.setFont(font);
+                                               //sha.update(font.serialize());
+                                       }
+
+                                       RGB.Integer color = g.getPossibleRelatedValue2(columnData, DIA.Scenegraph_AbstractText_color, RGB.Integer.BINDING/*Bindings.getBindingUnchecked(RGB.Integer.class)*/);
+                                       if (color != null){
+                                               monitorInfo.setColor(color);
+                                               //sha.update(color.serialize());
+                                       }
+
+                               String path = g.getRelatedValue(columnData, DIA.Scenegraph_Monitor_reference, Bindings.STRING);
+                               if (path != null && path.length() > 0){
+                                       monitorInfo.setText(path);
+                                               //sha.update(path.getBytes());
+                               }
+                               
+                           double[] dataTransform = g.getPossibleRelatedValue2(columnData, DIA.Scenegraph_AbstractText_transform, Bindings.getBindingUnchecked(double[].class));
+                               if (dataTransform != null){
+                                       monitorInfo.setTransform(dataTransform);
+                                               //sha.update(path.getBytes());
+                               }
+
+                               monitorInfo.setResource(columnData);
+                               //col.setColumnHeader(monitorInfo);
+                               col.addColumnHeader(monitorInfo);
+                               }
+                       }
+               }
+               table.setWeightTotal(weightTotal);
+        }
+        //digest = hexEncode(sha.digest());
+       } catch (Throwable e){
+               e.printStackTrace(System.err);
+       }
+        return entries;
+    }
+}