blob: c3b249669123f74694e9e8922364c5d15a2d1c96 [file] [log] [blame]
«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.IFigure;
import org.eclipse.draw2d.Shape;
import org.eclipse.draw2d.ColorConstants;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.amp.agf.gef.IFigureProvider;
import org.eclipse.amp.agf.gef.DefaultFigureProvider;
import org.eclipse.amp.agf.gef.Shapes;
«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()-»
«IF SStyle.isInstance(this)-»
«FILE javaFileLoc().replaceFirst(".java", "FigureProvider.java")-»
«EXPAND metaabm::tmpl::Java::ClassText»
«ENDFILE
«ENDIF
«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()»FigureProvider«ENDAROUND»
«AROUND metaabm::tmpl::Java::ClassInheiritance FOR SStyle extends DefaultFigureProvider«ENDAROUND»
«AROUND metaabm::tmpl::Java::ActivityPotentialMethod (AAct within) FOR SContext-»«ENDAROUND»
«AROUND metaabm::tmpl::Java::SetterSideEffect 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»
«AROUND metaabm::tmpl::Java::Body FOR SStyle
«EXPAND metaabm::tmpl::Java::GenerateComment»
private static IFigureProvider singleton;
«REM»«IF !((AGroup) rootActivity).members.typeSelect(AEvaluate).exists(a | a.function.id().startsWith("shapeMarker"))»«ENDREM»
«EXPAND metaabm::tmpl::Java::GenerateComment»
public IFigure getFigure(Object object) {
IFigure figure = null;
Color color = null;
«EXPAND MethodSetup
return figure;
}
«REM»«ELSE»
public IFigure buildFigure(Object object, IFigure figure) {
Color color = null;
«EXPAND MethodSetup
return figure;
}
public IFigure getFigure(Object object) {
return buildFigure(object, null);
}
/**
* Does nothing.
*
* @param object
* @param figure
* @see org.eclipse.amp.agf.gef.IFigureProvider#updateFigure(java.lang.Object, org.eclipse.draw2d.IFigure)
*/
public void updateFigure(Object object, IFigure figure) {
buildFigure(object, figure);
}
/**
* True: The figure needs to be able to update itself because we are changing shape markers.
*/
public boolean isFigureUpdateable(Object object) {
return true;
}
«ENDIF»«ENDREM»
«EXPAND metaabm::tmpl::Java::GenerateComment»
public static IFigureProvider getDefault() {
if (singleton == null) {
singleton = new «typeName()»FigureProvider();
}
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() == "graphicFill" || function.id() == "graphicOutline"
«LET lastEval(path, "shape") AS shape
«LET lastEval(path, "color") AS color
«IF shape.function.id() == "shapeRectangle" && lastEval(path, "graphic") == null
if (figure == null) {
figure = Shapes.createRectangle();
}
«ELSEIF shape.function.id() == "shapeOval" && lastEval(path, "graphic") == null
if (figure == null) {
figure = Shapes.createOval();
}
«ELSEIF shape.function.id().startsWith("shapeMarker")-»
IFigure markerFigure = Shapes.getMarkerShape(figure, 0);
«ENDIF
color = «EXPAND metaabm::tmpl::Java::FunctionInnerBlock(path, inner) FOR color-»;
«LET lastEval(path, "shape").function.id().startsWith("shapeMarker") ? "markerFigure" : "figure" AS figureName»
«IF function.id().startsWith("graphicFill")-»
«figureName».setBackgroundColor(color);
((Shape) «figureName»).setFill(true);
«ELSEIF function.id().startsWith("graphicOutline")-»
«figureName».setForegroundColor(color);
((Shape) «figureName»).setOutline(true);
«ENDIF
«ENDLET
«ENDLET
«ENDLET
«ELSEIF !function.id().startsWith("color") && !function.id().startsWith("shape")-»
«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"
randomInRangeinputs.expression(path, inner).toString(", ")»);
«ELSEIF function.id() == "timeNow"
«path.last().accessPath(this, innergetScape().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")-»
ColorConstantsfunction.id().replaceFirst("color","").toFirstLower()»
«ELSE
«targetDef.proceed()»
«ENDIF
«ENDAROUND»