blob: 33b6b4dc6c5f7dbfe924ac15fe4c0e9fae5af96f [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::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()»;
import org.eclipse.amp.escape.ascape.agf3d.GEF3DView;
import org.eclipse.amp.escape.ascape.adapt.Ascape3DPartFactory;
import org.eclipse.amp.agf3d.I3DModelFactoryProvider;
import org.eclipse.amp.escape.ascape.agf3d.GEF3DView;
import org.eclipse.swt.widgets.Display;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.gef.EditPartFactory;
/**
«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()-»Color
«ELSE-»«typeName()»«ENDIF
«ENDAROUND»
«AROUND metaabm::tmpl::Java::ClassName FOR IID-»«typeName()»«IF SStyle.isInstance(thisColorProvider«ELSE»3D«ENDIF»«ENDAROUND»
«AROUND metaabm::tmpl::Java::ClassInheiritance FOR SStyle implements IColorProvider«ENDAROUND»
«AROUND metaabm::tmpl::Java::ClassInheiritance FOR SContext extends «typeName()» implements 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 GEF3DView());
}
public EditPartFactory getEditPart3DFactory() {
return new Ascape3DPartFactory() {
public 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 Color getForeground(Object object) {
«EXPAND MethodSetup
if (outlineColor != null) {
return outlineColor;
} else if (fillColor != null) {
return fillColor;
}
return 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 Color getBackground(Object object) {
«EXPAND MethodSetup
if (fillColor != null) {
return fillColor;
} else if (outlineColor != null) {
return outlineColor;
}
return ColorFeature.BLACK;
}
«ENDAROUND»
«DEFINE MethodSetup FOR SStyle»
//todo separate out this functionality
Color color = null;
Color fillColor = null;
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
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")-»
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"
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»