blob: 098de9ef7a19d1514af58aceb4bfc8dadff0f6da [file] [log] [blame]
mparker8828c8d2009-07-16 20:59:17 +00001«IMPORT emf»
2«IMPORT metaabm»
3«IMPORT metaabm::act»
4«IMPORT metaabm::function»
mparker8828c8d2009-07-16 20:59:17 +00005
6«EXTENSION metaabm::tmpl::types»
7«EXTENSION metaabm::tmpl::names»
8«EXTENSION metaabm::tmpl::infer»
9«EXTENSION metaabm::tmpl::util»
10«EXTENSION metaabm::tmpl::projections»
11«EXTENSION metaabm::ascape::tmpl::namesascape»
12«EXTENSION metaabm::ascape::tmpl::inferascape»
13
mparker63538172010-03-25 03:03:05 +000014«AROUND metaabm::tmpl::Java::Imports FOR SStyle
15import org.ascape.util.vis.ColorFeature;
16import org.ascape.model.CellOccupant;
17import org.ascape.model.HostCell;
18import org.eclipse.swt.graphics.Color;
19import org.eclipse.swt.widgets.Display;
20import org.eclipse.draw2d.Shape;
21import org.eclipse.draw2d.ColorConstants;
22
23import org.eclipse.jface.viewers.IColorProvider;
24«ENDAROUND»
25
mparker5ad2c6a2010-05-06 04:29:23 +000026«AROUND metaabm::tmpl::Java::Files FOR SAgent
27 «EXPAND metaabm::tmpl::Java::ClassFile FOREACH styles
28«ENDAROUND»
29
mparker8828c8d2009-07-16 20:59:17 +000030«AROUND metaabm::tmpl::Java::ClassFile FOR IID
mparker30066d32010-05-12 01:17:20 +000031«IF generate()-»
mparkerdccc14c2009-11-14 02:46:18 +000032 «FILE javaFileLoc().replaceFirst(".java", "ColorProvider.java")-»
mparker8828c8d2009-07-16 20:59:17 +000033 «EXPAND metaabm::tmpl::Java::ClassText»
34 «ENDFILE
mparker30066d32010-05-12 01:17:20 +000035«ENDIF
mparker8828c8d2009-07-16 20:59:17 +000036«ENDAROUND»
37
38«AROUND metaabm::tmpl::Java::ExtendType FOR ASink
mparker63538172010-03-25 03:03:05 +000039 «IF function.color()-»Color
mparker8828c8d2009-07-16 20:59:17 +000040 «ELSE-»«typeName()»«ENDIF
41«ENDAROUND»
42
mparker30066d32010-05-12 01:17:20 +000043«AROUND metaabm::tmpl::Java::ClassName FOR IID-»«typeName()»«IF SStyle.isInstance(this)-»ColorProvider«ELSE»3D«ENDIF-»«ENDAROUND»
mparker8828c8d2009-07-16 20:59:17 +000044
mparker63538172010-03-25 03:03:05 +000045«AROUND metaabm::tmpl::Java::ClassInheiritance FOR SStyle implements IColorProvider«ENDAROUND»
mparker8828c8d2009-07-16 20:59:17 +000046
47«AROUND metaabm::tmpl::Java::Body FOR SStyle
Jonas Ruettimann595befa2011-04-13 11:52:27 +020048 «EXPAND metaabm::tmpl::Java::GenerateComment»
mparker5ad2c6a2010-05-06 04:29:23 +000049 private static IColorProvider singleton;
50
51 /**
Jonas Ruettimann595befa2011-04-13 11:52:27 +020052 * <!-- begin-user-doc -->
mparker5ad2c6a2010-05-06 04:29:23 +000053 * Provides a color for «agent.label» based on wether we want to fill or not.
54 *
55 * @param object the agent
56 * @return the foreground color for the element, or <code>null</code>
57 * to use the default foreground color
Jonas Ruettimann595befa2011-04-13 11:52:27 +020058 * <!-- end-user-doc -->
59 * @generated
mparker5ad2c6a2010-05-06 04:29:23 +000060 */
61 public Color getColor(Object object, boolean fill) {
62 Color color = null;
63 Color fillColor = null;
64 Color outlineColor = null;
65 «EXPAND MethodSetup
66 if (fill) {
67 return fillColor;
68 } else {
69 return outlineColor;
70 }
71 }
72
mparker8828c8d2009-07-16 20:59:17 +000073 /**
Jonas Ruettimann595befa2011-04-13 11:52:27 +020074 * <!-- begin-user-doc -->
mparker8828c8d2009-07-16 20:59:17 +000075 * Provides a foreground color for the given «agent.label».
76 *
77 * @param object the agent
78 * @return the foreground color for the element, or <code>null</code>
79 * to use the default foreground color
Jonas Ruettimann595befa2011-04-13 11:52:27 +020080 * <!-- end-user-doc -->
81 * @generated
mparker8828c8d2009-07-16 20:59:17 +000082 */
mparker63538172010-03-25 03:03:05 +000083 public Color getForeground(Object object) {
mparker5ad2c6a2010-05-06 04:29:23 +000084 Color color = getColor(object, false);
85 if (color != null) {
86 return color;
87 }
88 //try to see if we have a fill color, if we do, we'll paint the whole agent that color.
89 color = getColor(object, true);
90 if (color != null) {
91 return color;
92 }
mparker63538172010-03-25 03:03:05 +000093 return ColorFeature.BLACK;
mparker8828c8d2009-07-16 20:59:17 +000094 }
95
96 /**
Jonas Ruettimann595befa2011-04-13 11:52:27 +020097 * <!-- begin-user-doc -->
mparker8828c8d2009-07-16 20:59:17 +000098 * Provides a background color for the given «agent.label».
99 *
100 * @param object the agent
101 * @return the background color for the element, or <code>null</code>
102 * to use the default background color
Jonas Ruettimann595befa2011-04-13 11:52:27 +0200103 * <!-- end-user-doc -->
104 * @generated
mparker8828c8d2009-07-16 20:59:17 +0000105 */
mparker63538172010-03-25 03:03:05 +0000106 public Color getBackground(Object object) {
mparker5ad2c6a2010-05-06 04:29:23 +0000107 Color color = getColor(object, true);
108 if (color != null) {
109 return color;
110 }
111 //if no fill color, just return white
112 return ColorFeature.WHITE;
113 }
Jonas Ruettimann595befa2011-04-13 11:52:27 +0200114 «EXPAND metaabm::tmpl::Java::GenerateComment»
mparker5ad2c6a2010-05-06 04:29:23 +0000115 public static IColorProvider getDefault() {
mparkerafb006a2010-05-06 16:25:00 +0000116 if (singleton == null) {
117 singleton = new «typeName()»ColorProvider();
118 }
mparker5ad2c6a2010-05-06 04:29:23 +0000119 return singleton;
mparker8828c8d2009-07-16 20:59:17 +0000120 }
121«ENDAROUND»
122
mparkerdccc14c2009-11-14 02:46:18 +0000123«DEFINE MethodSetup FOR SStyle»
mparkerdccc14c2009-11-14 02:46:18 +0000124 «agent.typeName()» «rootActivity.id()» = agent.typeName()») object;
125 «FOREACH ((AGroup) rootActivity).roots AS act»«agent.typeName()» «act.id()» = «rootActivity.id()»;«ENDFOREACH»
126 «EXPAND metaabm::tmpl::Java::ActionBody
127«ENDDEFINE»
128
mparker8828c8d2009-07-16 20:59:17 +0000129«DEFINE DrawStyle FOR AAct
130 «IF reference.isHost()-»
131 «reference.typeName()» «selector().id()» = reference.typeName()») object;
132 «EXPAND metaabm::tmpl::Java::Block ({}, false, true)-»
133 «ELSE
mparker63538172010-03-25 03:03:05 +0000134 HostCell «selector().id()»Cell = (HostCell) object;
mparker8828c8d2009-07-16 20:59:17 +0000135 if selector().id()»Cell.getOccupant() instanceof «reference.typeName()») {
136 «reference.typeName()» «selector().id()» = reference.typeName()») «selector().id()»Cell.getOccupant();
137 «EXPAND metaabm::tmpl::Java::Block ({}, false, true)-»}
138 «ENDIF
139«ENDDEFINE»
140«DEFINE DrawStyle FOR IAct-»«ENDDEFINE»
141«DEFINE DrawStyle FOR AGroup
142 «EXPAND DrawStyle FOREACH roots
143«ENDDEFINE»
144
145«AROUND metaabm::tmpl::Java::InnerBlock (List[metaabm::act::AAct] path, Boolean inner) FOR AEvaluate
mparkerdccc14c2009-11-14 02:46:18 +0000146 «IF function.id().startsWith("shapeRectangle")-»
147 «ELSEIF function.id().startsWith("shapeOval")-»
148 «ELSEIF function.id().startsWith("shapeMarker")-»
mparker30066d32010-05-12 01:17:20 +0000149 «ELSEIF function.id().startsWith("color") || function.id().startsWith("graphic")-»
mparkerdccc14c2009-11-14 02:46:18 +0000150 «IF function.id().startsWith("color")-»
mparker30066d32010-05-12 01:17:20 +0000151 «ELSEIF function.id().startsWith("graphicFill") && !lastEval(path, "shape").function.id().startsWith("shapeMarker")-»
mparkerf92345f2010-05-11 01:43:47 +0000152 fillColor = «EXPAND metaabm::tmpl::Java::FunctionInnerBlock(path, inner) FOR lastEval(path, "color")»;
mparker30066d32010-05-12 01:17:20 +0000153 «ELSEIF function.id().startsWith("graphicOutline") && !lastEval(path, "shape").function.id().startsWith("shapeMarker")-»
mparkerf92345f2010-05-11 01:43:47 +0000154 outlineColor = «EXPAND metaabm::tmpl::Java::FunctionInnerBlock(path, inner) FOR lastEval(path, "color")»;
mparker30066d32010-05-12 01:17:20 +0000155 «ENDIF
mparker8828c8d2009-07-16 20:59:17 +0000156 «ELSE
mparkerdccc14c2009-11-14 02:46:18 +0000157 «targetDef.proceed()»
158 «ENDIF
mparker8828c8d2009-07-16 20:59:17 +0000159«ENDAROUND»
160
161«AROUND metaabm::tmpl::Java::FunctionInnerBlock (List[metaabm::act::AAct] path, Boolean inner) FOR ASink
162 «IF function.id() == "randomUnit"
163 getRandom().nextDouble()
164 «ELSEIF function.id() == "randomIs"
165 getRandom().nextBoolean()
166 «ELSEIF function.id() == "uniformDistribution"
167 randomInRangeinputs.expression(path, inner).toString(", ")»);
168 «ELSEIF function.id() == "timeNow"
169 «path.last().accessPath(this, innergetScape().getPeriod()
170 «ELSEIF function.id() == "available"
171 isAvailable()
172 «ELSEIF function.id() == "withinBoundaries"
173 «expressionSink(path, function, inner
174 «ELSEIF function.id() == "colorRGB"
mparker63538172010-03-25 03:03:05 +0000175 new Color(Display.getCurrent(), (int) inputs.expression(path, inner).toString(" * 255), (int) (" * 255))
mparker8828c8d2009-07-16 20:59:17 +0000176 «ELSEIF function.id().startsWith("color")-»
mparker63538172010-03-25 03:03:05 +0000177 ColorConstantsfunction.id().replaceFirst("color","").toFirstLower()»
mparker8828c8d2009-07-16 20:59:17 +0000178 «ELSE
179 «targetDef.proceed()»
180 «ENDIF
181«ENDAROUND»