blob: 098de9ef7a19d1514af58aceb4bfc8dadff0f6da [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.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"
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»