| «IMPORT emf» |
| «IMPORT metaabm» |
| «IMPORT metaabm::act» |
| «IMPORT metaabm::function» |
| |
| «EXTENSION metaabm::tmpl::types» |
| «EXTENSION metaabm::tmpl::names» |
| «EXTENSION metaabm::tmpl::infer» |
| «EXTENSION metaabm::tmpl::util» |
| «EXTENSION metaabm::tmpl::projections» |
| «EXTENSION metaabm::ascape::tmpl::namesascape» |
| «EXTENSION metaabm::ascape::tmpl::inferascape» |
| |
| «AROUND metaabm::tmpl::Java::Imports FOR SStyle-» |
| import org.ascape.util.vis.ColorFeature; |
| import org.ascape.model.CellOccupant; |
| import org.ascape.model.HostCell; |
| import org.eclipse.swt.graphics.Color; |
| import org.eclipse.swt.widgets.Display; |
| import org.eclipse.draw2d.Shape; |
| import org.eclipse.draw2d.ColorConstants; |
| |
| import org.eclipse.jface.viewers.IColorProvider; |
| «ENDAROUND» |
| |
| «AROUND metaabm::tmpl::Java::Files FOR SAgent-» |
| «EXPAND metaabm::tmpl::Java::ClassFile FOREACH styles-» |
| «ENDAROUND» |
| |
| «AROUND metaabm::tmpl::Java::ClassFile FOR IID-» |
| «IF generate()-» |
| «FILE javaFileLoc().replaceFirst(".java", "ColorProvider.java")-» |
| «EXPAND metaabm::tmpl::Java::ClassText» |
| «ENDFILE-» |
| «ENDIF-» |
| «ENDAROUND» |
| |
| «AROUND metaabm::tmpl::Java::ExtendType FOR ASink-» |
| «IF function.color()-»Color |
| «ELSE-»«typeName()»«ENDIF-» |
| «ENDAROUND» |
| |
| «AROUND metaabm::tmpl::Java::ClassName FOR IID-»«typeName()»«IF SStyle.isInstance(this)-»ColorProvider«ELSE»3D«ENDIF-»«ENDAROUND» |
| |
| «AROUND metaabm::tmpl::Java::ClassInheiritance FOR SStyle-» implements IColorProvider«ENDAROUND» |
| |
| «AROUND metaabm::tmpl::Java::Body FOR SStyle-» |
| «EXPAND metaabm::tmpl::Java::GenerateComment» |
| private static IColorProvider singleton; |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Provides a color for «agent.label» based on wether we want to fill or not. |
| * |
| * @param object the agent |
| * @return the foreground color for the element, or <code>null</code> |
| * to use the default foreground color |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public Color getColor(Object object, boolean fill) { |
| Color color = null; |
| Color fillColor = null; |
| Color outlineColor = null; |
| «EXPAND MethodSetup-» |
| if (fill) { |
| return fillColor; |
| } else { |
| return outlineColor; |
| } |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Provides a foreground color for the given «agent.label». |
| * |
| * @param object the agent |
| * @return the foreground color for the element, or <code>null</code> |
| * to use the default foreground color |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public Color getForeground(Object object) { |
| Color color = getColor(object, false); |
| if (color != null) { |
| return color; |
| } |
| //try to see if we have a fill color, if we do, we'll paint the whole agent that color. |
| color = getColor(object, true); |
| if (color != null) { |
| return color; |
| } |
| return ColorFeature.BLACK; |
| } |
| |
| /** |
| * <!-- begin-user-doc --> |
| * Provides a background color for the given «agent.label». |
| * |
| * @param object the agent |
| * @return the background color for the element, or <code>null</code> |
| * to use the default background color |
| * <!-- end-user-doc --> |
| * @generated |
| */ |
| public Color getBackground(Object object) { |
| Color color = getColor(object, true); |
| if (color != null) { |
| return color; |
| } |
| //if no fill color, just return white |
| return ColorFeature.WHITE; |
| } |
| «EXPAND metaabm::tmpl::Java::GenerateComment» |
| public static IColorProvider getDefault() { |
| if (singleton == null) { |
| singleton = new «typeName()»ColorProvider(); |
| } |
| return singleton; |
| } |
| «ENDAROUND» |
| |
| «DEFINE MethodSetup FOR SStyle» |
| «agent.typeName()» «rootActivity.id()» = («agent.typeName()») object; |
| «FOREACH ((AGroup) rootActivity).roots AS act»«agent.typeName()» «act.id()» = «rootActivity.id()»;«ENDFOREACH» |
| «EXPAND metaabm::tmpl::Java::ActionBody-» |
| «ENDDEFINE» |
| |
| «DEFINE DrawStyle FOR AAct-» |
| «IF reference.isHost()-» |
| «reference.typeName()» «selector().id()» = («reference.typeName()») object; |
| «EXPAND metaabm::tmpl::Java::Block ({}, false, true)-» |
| «ELSE-» |
| HostCell «selector().id()»Cell = (HostCell) object; |
| if («selector().id()»Cell.getOccupant() instanceof «reference.typeName()») { |
| «reference.typeName()» «selector().id()» = («reference.typeName()») «selector().id()»Cell.getOccupant(); |
| «EXPAND metaabm::tmpl::Java::Block ({}, false, true)-»} |
| «ENDIF-» |
| «ENDDEFINE» |
| «DEFINE DrawStyle FOR IAct-»«ENDDEFINE» |
| «DEFINE DrawStyle FOR AGroup-» |
| «EXPAND DrawStyle FOREACH roots-» |
| «ENDDEFINE» |
| |
| «AROUND metaabm::tmpl::Java::InnerBlock (List[metaabm::act::AAct] path, Boolean inner) FOR AEvaluate-» |
| «IF function.id().startsWith("shapeRectangle")-» |
| «ELSEIF function.id().startsWith("shapeOval")-» |
| «ELSEIF function.id().startsWith("shapeMarker")-» |
| «ELSEIF function.id().startsWith("color") || function.id().startsWith("graphic")-» |
| «IF function.id().startsWith("color")-» |
| «ELSEIF function.id().startsWith("graphicFill") && !lastEval(path, "shape").function.id().startsWith("shapeMarker")-» |
| fillColor = «EXPAND metaabm::tmpl::Java::FunctionInnerBlock(path, inner) FOR lastEval(path, "color")»; |
| «ELSEIF function.id().startsWith("graphicOutline") && !lastEval(path, "shape").function.id().startsWith("shapeMarker")-» |
| outlineColor = «EXPAND metaabm::tmpl::Java::FunctionInnerBlock(path, inner) FOR lastEval(path, "color")»; |
| «ENDIF-» |
| «ELSE-» |
| «targetDef.proceed()» |
| «ENDIF-» |
| «ENDAROUND» |
| |
| «AROUND metaabm::tmpl::Java::FunctionInnerBlock (List[metaabm::act::AAct] path, Boolean inner) FOR ASink-» |
| «IF function.id() == "randomUnit"-» |
| getRandom().nextDouble() |
| «ELSEIF function.id() == "randomIs"-» |
| getRandom().nextBoolean() |
| «ELSEIF function.id() == "uniformDistribution"-» |
| randomInRange(«inputs.expression(path, inner).toString(", ")»); |
| «ELSEIF function.id() == "timeNow"-» |
| «path.last().accessPath(this, inner)»getScape().getPeriod() |
| «ELSEIF function.id() == "available"-» |
| isAvailable() |
| «ELSEIF function.id() == "withinBoundaries"-» |
| «expressionSink(path, function, inner)» |
| «ELSEIF function.id() == "colorRGB"-» |
| new Color(Display.getCurrent(), (int) («inputs.expression(path, inner).toString(" * 255), (int) (")» * 255)) |
| «ELSEIF function.id().startsWith("color")-» |
| ColorConstants.«function.id().replaceFirst("color","").toFirstLower()» |
| «ELSE-» |
| «targetDef.proceed()» |
| «ENDIF-» |
| «ENDAROUND» |