| «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::ClassFile FOR IID-» |
| «IF generate()» |
| «IF SStyle.isInstance(this)» |
| «FILE javaFileLoc().replaceFirst(".java", "ColorProvider.java")-» |
| «EXPAND metaabm::tmpl::Java::ClassText» |
| «ENDFILE-» |
| «ENDIF» |
| «IF SContext.isInstance(this)» |
| «FILE javaFileLoc().replaceFirst(".java", "3D.java")-» |
| package «package()»; |
| |
| /** |
| «EXPAND metaabm::tmpl::Java::ClassComments-» |
| * Generated by metaabm system: «timestamp()» in project: «buildProject()» «IF testing()-» (testing)«ENDIF-» |
| */ |
| public «EXPAND metaabm::tmpl::Java::ClassKeyword» «EXPAND metaabm::tmpl::Java::ClassName» «EXPAND metaabm::tmpl::Java::ClassInheiritance» { |
| «EXPAND metaabm::tmpl::Java::Body» |
| } |
| «ENDFILE-» |
| «ENDIF» |
| «ENDIF» |
| «ENDAROUND» |
| |
| «AROUND metaabm::tmpl::Java::ExtendType FOR ASink-» |
| «IF function.color()-»org.eclipse.swt.graphics.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 org.eclipse.jface.viewers.IColorProvider«ENDAROUND» |
| «AROUND metaabm::tmpl::Java::ClassInheiritance FOR SContext-» extends «typeName()» implements org.eclipse.amp.agf3d.I3DModelFactoryProvider«ENDAROUND» |
| |
| «AROUND metaabm::tmpl::Java::ActivityPotentialMethod (AAct within) FOR SContext-»«ENDAROUND» |
| «AROUND metaabm::tmpl::Java::SetterClient FOR SContext-»«ENDAROUND» |
| «AROUND metaabm::tmpl::Java::OtherAccessors FOR SContext-»«ENDAROUND» |
| «AROUND metaabm::tmpl::Java::OtherFields FOR SContext-»«ENDAROUND» |
| «AROUND metaabm::tmpl::Java::Constructor FOR SContext-»«ENDAROUND» |
| |
| «DEFINE ColorProvider FOR SAgent» |
| «IF styles.size > 0» |
| if (model instanceof «implementation.className») { |
| return new «styles.get(0).implementation.qualifiedName»ColorProvider(); |
| } |
| «ENDIF-» |
| «ENDDEFINE» |
| «DEFINE RecurseAgentProviders FOR SAgent» |
| «EXPAND ColorProvider» |
| «ENDDEFINE» |
| «DEFINE RecurseAgentProviders FOR SContext» |
| «EXPAND ColorProvider» |
| «EXPAND RecurseAgentProviders FOREACH agents» |
| «ENDDEFINE» |
| |
| «AROUND metaabm::tmpl::Java::Body FOR SContext-» |
| public void createGraphicViews() { |
| addView(new org.eclipse.amp.escape.ascape.agf3d.GEF3DView()); |
| } |
| |
| public org.eclipse.gef.EditPartFactory getEditPart3DFactory() { |
| return new org.eclipse.amp.escape.ascape.adapt.Ascape3DPartFactory() { |
| public org.eclipse.jface.viewers.IColorProvider getColorProvider(Object model) { |
| «EXPAND RecurseAgentProviders FOREACH agents» |
| return null; |
| } |
| }; |
| } |
| «ENDAROUND» |
| |
| «AROUND metaabm::tmpl::Java::Body FOR SStyle-» |
| /** |
| * 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 |
| */ |
| public org.eclipse.swt.graphics.Color getForeground(Object object) { |
| «EXPAND MethodSetup-» |
| if (outlineColor != null) { |
| return outlineColor; |
| } else if (fillColor != null) { |
| return fillColor; |
| } |
| return org.ascape.util.vis.ColorFeature.BLACK; |
| } |
| |
| /** |
| * 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 |
| */ |
| public org.eclipse.swt.graphics.Color getBackground(Object object) { |
| «EXPAND MethodSetup-» |
| if (fillColor != null) { |
| return fillColor; |
| } else if (outlineColor != null) { |
| return outlineColor; |
| } |
| return org.ascape.util.vis.ColorFeature.BLACK; |
| } |
| «ENDAROUND» |
| |
| «DEFINE MethodSetup FOR SStyle» |
| //todo separate out this functionality |
| org.eclipse.swt.graphics.Color color = null; |
| org.eclipse.swt.graphics.Color fillColor = null; |
| org.eclipse.swt.graphics.Color outlineColor = null; |
| «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-» |
| «pkgm()»HostCell «selector().id()»Cell = («pkgm()»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")-» |
| color = «EXPAND metaabm::tmpl::Java::FunctionInnerBlock(path, inner)»; |
| «ELSEIF function.id().startsWith("graphicFill")-» |
| fillColor = color; |
| «ELSEIF function.id().startsWith("graphicOutline")-» |
| outlineColor = 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 org.eclipse.swt.graphics.Color(org.eclipse.swt.widgets.Display.getCurrent(), (int) («inputs.expression(path, inner).toString(" * 255), (int) (")» * 255)) |
| «ELSEIF function.id().startsWith("color")-» |
| org.eclipse.draw2d.ColorConstants.«function.id().replaceFirst("color","").toFirstLower()» |
| «ELSE-» |
| «targetDef.proceed()» |
| «ENDIF-» |
| «ENDAROUND» |