mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 1 | «IMPORT emf» |
| 2 | «IMPORT metaabm» |
| 3 | «IMPORT metaabm::act» |
| 4 | «IMPORT metaabm::function» |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 5 | |
| 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 | |
mparker | 6353817 | 2010-03-25 03:03:05 +0000 | [diff] [blame] | 14 | «AROUND metaabm::tmpl::Java::Imports FOR SStyle-» |
| 15 | import org.ascape.util.vis.ColorFeature; |
| 16 | import org.ascape.model.CellOccupant; |
| 17 | import org.ascape.model.HostCell; |
| 18 | import org.eclipse.swt.graphics.Color; |
| 19 | import org.eclipse.swt.widgets.Display; |
| 20 | import org.eclipse.draw2d.Shape; |
| 21 | import org.eclipse.draw2d.ColorConstants; |
| 22 | |
| 23 | import org.eclipse.jface.viewers.IColorProvider; |
| 24 | «ENDAROUND» |
| 25 | |
mparker | 5ad2c6a | 2010-05-06 04:29:23 +0000 | [diff] [blame] | 26 | «AROUND metaabm::tmpl::Java::Files FOR SAgent-» |
| 27 | «EXPAND metaabm::tmpl::Java::ClassFile FOREACH styles-» |
| 28 | «ENDAROUND» |
| 29 | |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 30 | «AROUND metaabm::tmpl::Java::ClassFile FOR IID-» |
mparker | 30066d3 | 2010-05-12 01:17:20 +0000 | [diff] [blame] | 31 | «IF generate()-» |
mparker | dccc14c | 2009-11-14 02:46:18 +0000 | [diff] [blame] | 32 | «FILE javaFileLoc().replaceFirst(".java", "ColorProvider.java")-» |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 33 | «EXPAND metaabm::tmpl::Java::ClassText» |
| 34 | «ENDFILE-» |
mparker | 30066d3 | 2010-05-12 01:17:20 +0000 | [diff] [blame] | 35 | «ENDIF-» |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 36 | «ENDAROUND» |
| 37 | |
| 38 | «AROUND metaabm::tmpl::Java::ExtendType FOR ASink-» |
mparker | 6353817 | 2010-03-25 03:03:05 +0000 | [diff] [blame] | 39 | «IF function.color()-»Color |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 40 | «ELSE-»«typeName()»«ENDIF-» |
| 41 | «ENDAROUND» |
| 42 | |
mparker | 30066d3 | 2010-05-12 01:17:20 +0000 | [diff] [blame] | 43 | «AROUND metaabm::tmpl::Java::ClassName FOR IID-»«typeName()»«IF SStyle.isInstance(this)-»ColorProvider«ELSE»3D«ENDIF-»«ENDAROUND» |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 44 | |
mparker | 6353817 | 2010-03-25 03:03:05 +0000 | [diff] [blame] | 45 | «AROUND metaabm::tmpl::Java::ClassInheiritance FOR SStyle-» implements IColorProvider«ENDAROUND» |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 46 | |
| 47 | «AROUND metaabm::tmpl::Java::Body FOR SStyle-» |
Jonas Ruettimann | 595befa | 2011-04-13 11:52:27 +0200 | [diff] [blame^] | 48 | «EXPAND metaabm::tmpl::Java::GenerateComment» |
mparker | 5ad2c6a | 2010-05-06 04:29:23 +0000 | [diff] [blame] | 49 | private static IColorProvider singleton; |
| 50 | |
| 51 | /** |
Jonas Ruettimann | 595befa | 2011-04-13 11:52:27 +0200 | [diff] [blame^] | 52 | * <!-- begin-user-doc --> |
mparker | 5ad2c6a | 2010-05-06 04:29:23 +0000 | [diff] [blame] | 53 | * 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 Ruettimann | 595befa | 2011-04-13 11:52:27 +0200 | [diff] [blame^] | 58 | * <!-- end-user-doc --> |
| 59 | * @generated |
mparker | 5ad2c6a | 2010-05-06 04:29:23 +0000 | [diff] [blame] | 60 | */ |
| 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 | |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 73 | /** |
Jonas Ruettimann | 595befa | 2011-04-13 11:52:27 +0200 | [diff] [blame^] | 74 | * <!-- begin-user-doc --> |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 75 | * 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 Ruettimann | 595befa | 2011-04-13 11:52:27 +0200 | [diff] [blame^] | 80 | * <!-- end-user-doc --> |
| 81 | * @generated |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 82 | */ |
mparker | 6353817 | 2010-03-25 03:03:05 +0000 | [diff] [blame] | 83 | public Color getForeground(Object object) { |
mparker | 5ad2c6a | 2010-05-06 04:29:23 +0000 | [diff] [blame] | 84 | 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 | } |
mparker | 6353817 | 2010-03-25 03:03:05 +0000 | [diff] [blame] | 93 | return ColorFeature.BLACK; |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 94 | } |
| 95 | |
| 96 | /** |
Jonas Ruettimann | 595befa | 2011-04-13 11:52:27 +0200 | [diff] [blame^] | 97 | * <!-- begin-user-doc --> |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 98 | * 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 Ruettimann | 595befa | 2011-04-13 11:52:27 +0200 | [diff] [blame^] | 103 | * <!-- end-user-doc --> |
| 104 | * @generated |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 105 | */ |
mparker | 6353817 | 2010-03-25 03:03:05 +0000 | [diff] [blame] | 106 | public Color getBackground(Object object) { |
mparker | 5ad2c6a | 2010-05-06 04:29:23 +0000 | [diff] [blame] | 107 | 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 Ruettimann | 595befa | 2011-04-13 11:52:27 +0200 | [diff] [blame^] | 114 | «EXPAND metaabm::tmpl::Java::GenerateComment» |
mparker | 5ad2c6a | 2010-05-06 04:29:23 +0000 | [diff] [blame] | 115 | public static IColorProvider getDefault() { |
mparker | afb006a | 2010-05-06 16:25:00 +0000 | [diff] [blame] | 116 | if (singleton == null) { |
| 117 | singleton = new «typeName()»ColorProvider(); |
| 118 | } |
mparker | 5ad2c6a | 2010-05-06 04:29:23 +0000 | [diff] [blame] | 119 | return singleton; |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 120 | } |
| 121 | «ENDAROUND» |
| 122 | |
mparker | dccc14c | 2009-11-14 02:46:18 +0000 | [diff] [blame] | 123 | «DEFINE MethodSetup FOR SStyle» |
mparker | dccc14c | 2009-11-14 02:46:18 +0000 | [diff] [blame] | 124 | «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 | |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 129 | «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-» |
mparker | 6353817 | 2010-03-25 03:03:05 +0000 | [diff] [blame] | 134 | HostCell «selector().id()»Cell = (HostCell) object; |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 135 | 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-» |
mparker | dccc14c | 2009-11-14 02:46:18 +0000 | [diff] [blame] | 146 | «IF function.id().startsWith("shapeRectangle")-» |
| 147 | «ELSEIF function.id().startsWith("shapeOval")-» |
| 148 | «ELSEIF function.id().startsWith("shapeMarker")-» |
mparker | 30066d3 | 2010-05-12 01:17:20 +0000 | [diff] [blame] | 149 | «ELSEIF function.id().startsWith("color") || function.id().startsWith("graphic")-» |
mparker | dccc14c | 2009-11-14 02:46:18 +0000 | [diff] [blame] | 150 | «IF function.id().startsWith("color")-» |
mparker | 30066d3 | 2010-05-12 01:17:20 +0000 | [diff] [blame] | 151 | «ELSEIF function.id().startsWith("graphicFill") && !lastEval(path, "shape").function.id().startsWith("shapeMarker")-» |
mparker | f92345f | 2010-05-11 01:43:47 +0000 | [diff] [blame] | 152 | fillColor = «EXPAND metaabm::tmpl::Java::FunctionInnerBlock(path, inner) FOR lastEval(path, "color")»; |
mparker | 30066d3 | 2010-05-12 01:17:20 +0000 | [diff] [blame] | 153 | «ELSEIF function.id().startsWith("graphicOutline") && !lastEval(path, "shape").function.id().startsWith("shapeMarker")-» |
mparker | f92345f | 2010-05-11 01:43:47 +0000 | [diff] [blame] | 154 | outlineColor = «EXPAND metaabm::tmpl::Java::FunctionInnerBlock(path, inner) FOR lastEval(path, "color")»; |
mparker | 30066d3 | 2010-05-12 01:17:20 +0000 | [diff] [blame] | 155 | «ENDIF-» |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 156 | «ELSE-» |
mparker | dccc14c | 2009-11-14 02:46:18 +0000 | [diff] [blame] | 157 | «targetDef.proceed()» |
| 158 | «ENDIF-» |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 159 | «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 | randomInRange(«inputs.expression(path, inner).toString(", ")»); |
| 168 | «ELSEIF function.id() == "timeNow"-» |
| 169 | «path.last().accessPath(this, inner)»getScape().getPeriod() |
| 170 | «ELSEIF function.id() == "available"-» |
| 171 | isAvailable() |
| 172 | «ELSEIF function.id() == "withinBoundaries"-» |
| 173 | «expressionSink(path, function, inner)» |
| 174 | «ELSEIF function.id() == "colorRGB"-» |
mparker | 6353817 | 2010-03-25 03:03:05 +0000 | [diff] [blame] | 175 | new Color(Display.getCurrent(), (int) («inputs.expression(path, inner).toString(" * 255), (int) (")» * 255)) |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 176 | «ELSEIF function.id().startsWith("color")-» |
mparker | 6353817 | 2010-03-25 03:03:05 +0000 | [diff] [blame] | 177 | ColorConstants.«function.id().replaceFirst("color","").toFirstLower()» |
mparker | 8828c8d | 2009-07-16 20:59:17 +0000 | [diff] [blame] | 178 | «ELSE-» |
| 179 | «targetDef.proceed()» |
| 180 | «ENDIF-» |
| 181 | «ENDAROUND» |