Interfaces #112

Merged s-yamagiwa merged 20 commits into nitta-lab:dynamicResourceCreation from nitta-lab:interfaces on 7 Oct
Showing 40 changed files
View
2
■■■
AlgebraicDataflowArchitectureModel/models/Accounts.model
channel CIO1 {
out accounts(l:Map, signup(id:Int, name:Str)) = append(l, {"name": name})
out accounts(l:List, signup(name:Str)) = append(l, {"name": name})
}
 
channel CIO2(uid:Int) {
out accounts.{uid}.name(n:Str, changeName(name)) = name
View
68
AlgebraicDataflowArchitectureModel/models/SimpleUI.model
init {
screen := {"widgets": {"001": {"type": "button", "text": "OK", "state": 0},
"002": {"type": "textInput", "text": "", "state": 0}},
"layout": true}
}
 
native channel ScreenUpdate {
in screen(curSc: Json, update(nextSc)) = nextSc
in screen(curSc: Json, update(curSc, nextSc)) = nextSc
}
 
native channel SetLayout {
in screen.layout(curLayout: Bool, setLayout(nextLayout)) = nextLayout
}
 
native channel SetVisible(wid: Str) {
in screen.widgets.{wid}.visible(curVisible: Bool, setVisible(nextVisible)) = nextVisible
native channel SetText(wid: Str) {
in screen.widgets.{wid}.text(curText: Str, setText(nextText)) = nextText
}
 
native channel SetX(wid: Str) {
in screen.widgets.{wid}.x(curX: Int, setX(nextX)) = nextX
}
 
native channel SetY(wid: Str) {
in screen.widgets.{wid}.y(curY: Int, setY(nextY)) = nextY
}
 
native channel SetWidth(wid: Str) {
in screen.widgets.{wid}.width(curWidth: Int, setWidth(nextWidth)) = nextWidth
}
 
native channel SetHeight(wid: Str) {
in screen.widgets.{wid}.height(curHeight: Int, setHeight(nextHeight)) = nextHeight
}
 
native channel MouseEvent(wid: Str) {
out screen.widgets.{wid}.state(curState: Int, mouseEvent(nextState)) = nextState
}
 
native channel TextEvent(wid: Str) {
out screen.widgets.{wid}.text(curText: Str, textEvent(nextText)) = nextText
}
 
channel ChangeLayout {
out screen.layout(curLayout: Bool, changeLayout(layout)) = layout
}
 
channel ChangeX(wid: Str) {
out screen.widgets.{wid}.x(curX: Int, changeX(x)) = x
}
 
channel ChangeY(wid: Str) {
out screen.widgets.{wid}.y(curY: Int, changeY(y)) = y
}
 
channel AddButton {
out screen.widgets(widgets: Map, addButton(wid: Str, text: Str)) = insert(widgets, wid, {"type": "button", "text": text, "state": 0})
}
 
channel AddLabel {
out screen.widgets(widgets: Map, addLabel(wid: Str, text: Str)) = insert(widgets, wid, {"type": "label", "text": text, "state": 0})
}
 
channel AddTextInput {
out screen.widgets(widgets: Map, addTextInput(wid: Str)) = insert(widgets, wid, {"type": "textInput", "text": "", "state": 0})
}
 
channel AddMovableButton {
out screen.widgets(widgets: Map, addMovableButton(wid: Str, text: Str, x: Int, y: Int, width: Int, height: Int)) = insert(widgets, wid, {"type": "button", "text": text, "x": x, "y": y, "width": width, "height": height, "state": 0})
}
 
channel AddMovableLabel {
out screen.widgets(widgets: Map, addMovableLabel(wid: Str, text: Str, x: Int, y: Int, width: Int, height: Int)) = insert(widgets, wid, {"type": "label", "text": text, "x": x, "y": y, "width": width, "height": height, "state": 0})
}
 
channel AddMovableTextInput {
out screen.widgets(widgets: Map, addMovableTextInput(wid: Str, x: Int, y: Int, width: Int, height: Int)) = insert(widgets, wid, {"type": "textInput", "text": "", "x": x, "y": y, "width": width, "height": height, "state": 0})
}
View
16
AlgebraicDataflowArchitectureModel/models/Timer.model 0 → 100644
native channel TimersUpdated {
in timers(curTimers: Map, update(curTimers, nextTimers)) = nextTimers
}
 
native channel TimerEvent(tid: Str) {
out timers.{tid}.count(count: Long, tick()) = count + 1
}
 
channel StartTimer {
out timers(timers: Map, startTimer(tid: Str, interval: Long)) = insert(timers, tid, {"interval": interval, "count": 0})
}
 
channel ClearTimer {
out timers(timers: Map, clearTimer(tid: Str)) = delete(timers, tid)
}
View
199
AlgebraicDataflowArchitectureModel/src/application/SimulatorWindow.java 100644 → 0
package application;
 
import java.io.BufferedReader;
import java.io.FileReader;
import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
 
import javax.swing.JFrame;
 
import com.mxgraph.model.mxCell;
import com.mxgraph.model.mxGeometry;
import com.mxgraph.model.mxGraphModel;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.swing.handler.mxRubberband;
import com.mxgraph.util.mxEvent;
import com.mxgraph.util.mxEventObject;
import com.mxgraph.util.mxPoint;
import com.mxgraph.util.mxEventSource.mxIEventListener;
import com.mxgraph.view.mxGraph;
 
import algorithms.TypeInference;
import application.actions.SimulateAction;
import application.editor.DataTransferModelingCellEditor;
import application.editor.Editor;
import application.editor.InputEventCellEditor;
import application.layouts.DAGLayout;
import generators.JavaCodeGenerator;
import models.Edge;
import models.EdgeAttribute;
import models.algebra.Expression;
import models.algebra.InvalidMessage;
import models.algebra.ParameterizedIdentifierIsFutureWork;
import models.algebra.UnificationFailed;
import models.algebra.ValueUndefined;
import models.dataConstraintModel.Channel;
import models.dataConstraintModel.ChannelMember;
import models.dataConstraintModel.ResourcePath;
import models.dataConstraintModel.Selector;
import models.dataFlowModel.ChannelNode;
import models.dataFlowModel.DataFlowEdge;
import models.dataFlowModel.DataFlowGraph;
import models.dataFlowModel.DataTransferChannel;
import models.dataFlowModel.DataTransferModel;
import models.dataFlowModel.ResolvingMultipleDefinitionIsFutureWork;
import models.dataFlowModel.ResourceNode;
import parser.Parser;
import parser.ParserDTRAM;
import parser.exceptions.ExpectedColon;
import parser.exceptions.ExpectedRightBracket;
import parser.exceptions.WrongJsonExpression;
import parser.Parser.TokenStream;
import simulator.Event;
import simulator.Resource;
import simulator.ResourceIdentifier;
import simulator.Simulator;
 
public class SimulatorWindow extends JFrame{
 
/**
*
*/
private static final long serialVersionUID = -2425820512017088254L;
public static final String title = "Simulation Tool";
 
final int PORT_DIAMETER = 8;
final int PORT_RADIUS = PORT_DIAMETER / 2;
private Editor editor = null;
private mxGraph graph = null;
private mxGraphComponent graphComponent = null;
private Simulator simulator = null;
private boolean bReflectingArchitectureModel = false;
private double x = 20;
private double y = 20;
public SimulatorWindow(Editor editor) {
setTitle(title);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.graph = new mxGraph() {
public boolean isPort(Object cell) {
mxGeometry geo = getCellGeometry(cell);
return (geo != null) ? geo.isRelative() : false;
}
public boolean isCellFoldable(Object cell, boolean collapse) {
return false;
}
};
this.graphComponent = new mxGraphComponent(graph);
this.editor = editor;
graph.getModel().addListener(mxEvent.CHANGE, new mxIEventListener() {
public void invoke(Object sender, mxEventObject evt) {
List<mxCell> terminals = new ArrayList<>();
mxCell cell = null;
for (Object change: ((List) evt.getProperties().get("changes"))) {
if (change instanceof mxGraphModel.mxTerminalChange) {
mxGraphModel.mxTerminalChange terminalChange = (mxGraphModel.mxTerminalChange) change;
cell = (mxCell) terminalChange.getCell();
mxCell terminal = (mxCell) terminalChange.getTerminal();
terminals.add(terminal);
}
}
if (terminals.size() == 2) {
if (!editor.connectEdge(cell, terminals.get(0), terminals.get(1))) {
graph.removeCells(new mxCell[] {cell});
}
}
}
});
getContentPane().add(graphComponent);
new mxRubberband(graphComponent);
graph.setAllowDanglingEdges(false);
graph.setCellsDisconnectable(true);
setTitle(title);
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setSize(870,640);
setVisible(true);
DataTransferModel model = this.editor.getModel();
TypeInference.infer(model);
simulator = new Simulator(model);
constructSimulateGraph(simulator.getCurState().getRootResources(), this.editor.getModel(),this.editor.getDataFlowGraph());
graphComponent.setCellEditor(new InputEventCellEditor(graphComponent, simulator, this.editor, graph));
}
public mxGraph constructSimulateGraph(Set<Resource> simulateRes, DataTransferModel model, DataFlowGraph dataFlowGraph) {
bReflectingArchitectureModel = true;
((mxGraphModel) graph.getModel()).clear();
Object parent = graph.getDefaultParent();
graph.getModel().beginUpdate();
try {
Map<Resource, Object> resources = new HashMap<>();
// create resource vertices
for (Resource resNode: simulateRes) {
int w = 80;
int h = 30;
ResourcePath res = resNode.getResourceIdentifier();
Object resource = graph.insertVertex(parent, null,
res.toString(), x, y, w, h,
"shape=ellipse;perimeter=ellipsePerimeter;verticalAlign=top;"); // insert a resource as a vertex
resources.put(resNode, resource);
createChildSimulateResourceVerticies(resource, resNode, resources, w, h);
x+=80;
}
} finally {
graph.getModel().endUpdate();
}
bReflectingArchitectureModel = false;
return graph;
}
public void createChildSimulateResourceVerticies(Object resource, Resource resNode, Map<Resource, Object> resources, int w, int h) { //sample
if(resNode.getChildren() != null) {
for (Resource childNode: resNode.getChildren()) {
ResourcePath childRes = childNode.getResourceIdentifier();
Object childResource = graph.insertVertex(resource, null,
childRes.toString(), 0, 0, w/2, h/2,
"shape=ellipse;perimeter=ellipsePerimeter;verticalAlign=top;"); // insert a resource as a vertex
resources.put(childNode, childResource);
createChildSimulateResourceVerticies(childResource, childNode, resources, w, h);
}
}
if (resNode.getChildren() == null || resNode.getChildren().size() == 0) {
Object state = graph.insertVertex(resource, null,
resNode.getState().getValue().toString(), 0.5, 0.5, 0.25, 0.25, "opacity=0;verticalAlign=down;", true); // insert a state label as a vertex
}
}
public mxGraphComponent getGraphComponent() {
return graphComponent;
}
 
public Editor getEditor() {
return editor;
}
 
public void setEditor(Editor editor) {
this.editor = editor;
}
 
}
View
2
■■■
AlgebraicDataflowArchitectureModel/src/application/actions/SimulateAction.java
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
 
import application.ApplicationWindow;
import application.SimulatorWindow;
import application.editor.Editor;
import application.simulator.SimulatorWindow;
import models.dataFlowModel.DataTransferChannel;
 
public class SimulateAction extends AbstractSystemAction {
View
342
AlgebraicDataflowArchitectureModel/src/application/editor/InputEventCellEditor.java 100644 → 0
package application.editor;
 
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Rectangle;
import java.util.EventObject;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Set;
 
import javax.swing.BorderFactory;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JTextField;
 
import com.mxgraph.model.mxCell;
import com.mxgraph.model.mxGraphModel;
import com.mxgraph.model.mxIGraphModel;
import com.mxgraph.swing.mxGraphComponent;
import com.mxgraph.swing.view.mxICellEditor;
import com.mxgraph.util.mxConstants;
import com.mxgraph.util.mxUtils;
import com.mxgraph.view.mxCellState;
import com.mxgraph.view.mxGraph;
import com.mxgraph.view.mxGraphView;
 
import application.SimulatorWindow;
import application.layouts.DAGLayout;
import models.algebra.Expression;
import models.algebra.InvalidMessage;
import models.algebra.ParameterizedIdentifierIsFutureWork;
import models.algebra.Term;
import models.algebra.UnificationFailed;
import models.algebra.ValueUndefined;
import models.algebra.Variable;
import models.dataConstraintModel.Channel;
import models.dataConstraintModel.ChannelMember;
import models.dataConstraintModel.ResourceHierarchy;
import models.dataConstraintModel.ResourcePath;
import models.dataFlowModel.DataTransferModel;
import models.dataFlowModel.DataFlowGraph;
import models.dataFlowModel.DataTransferChannel;
import models.dataFlowModel.PushPullAttribute;
import models.dataFlowModel.PushPullValue;
import models.dataFlowModel.ResolvingMultipleDefinitionIsFutureWork;
import models.visualModel.FormulaChannel;
import parser.Parser;
import parser.Parser.TokenStream;
import parser.exceptions.ExpectedColon;
import parser.exceptions.ExpectedRightBracket;
import parser.exceptions.WrongJsonExpression;
import simulator.ChannelState;
import simulator.Resource;
import simulator.ResourceIdentifier;
import simulator.Simulator;
import simulator.Event;
import simulator.SystemState;
 
public class InputEventCellEditor implements mxICellEditor {
public int DEFAULT_MIN_WIDTH = 70;
public int DEFAULT_MIN_HEIGHT = 30;
public double DEFAULT_MINIMUM_EDITOR_SCALE = 1;
private double x = 20;
private double y = 20;
 
protected double minimumEditorScale = DEFAULT_MINIMUM_EDITOR_SCALE;
protected int minimumWidth = DEFAULT_MIN_WIDTH;
protected int minimumHeight = DEFAULT_MIN_HEIGHT;
 
private Object editingCell;
private EventObject trigger;
private JComboBox<String> comboBox;
private mxGraphComponent graphComponent;
private Simulator simulator;
private JComboBox<String> pulldownMenu;
private Editor editor;
private boolean bReflectingArchitectureModel = false;
private mxGraph graph;
public InputEventCellEditor(mxGraphComponent graphComponent, Simulator simulator, Editor editor, mxGraph graph) {
this.graphComponent = graphComponent;
this.simulator = simulator;
this.editor = editor;
this.graph = graph;
}
 
@Override
public Object getEditingCell() {
return editingCell;
}
 
@Override
public void startEditing(Object cell, EventObject evt) {
if (editingCell != null) {
stopEditing(true);
}
if (!graphComponent.getGraph().getModel().isEdge(cell)) {
Resource res = simulator.getCurState().getResource((String) ((mxCell) cell).getValue());
ResourceIdentifier resId = res.getResourceIdentifier();//resource
ArrayList<DataTransferChannel> eventChs = new ArrayList<>();//iOchannelList
ArrayList<String> messages = new ArrayList<>();//ADLmessage
ArrayList<Expression> eventMessages = new ArrayList<>();//messageList
ResourcePath eventResPath = null;
 
for(Channel ch : simulator.getModel().getInputChannels()) {//all channel
if(((DataTransferChannel)ch).getInputResources().size()== 0) {//ioch Or normalch
for(ChannelMember out: ((DataTransferChannel)ch).getOutputChannelMembers()) {
ResourcePath resPath = out.getResource();
if(resId.isInstanceOf(resPath)) {//account.uid == acounts.123
eventResPath = resPath;
eventChs.add(((DataTransferChannel)ch));
String message = null;
Expression mesExp = out.getStateTransition().getMessageExpression();//sync(a,b)
eventMessages.add(mesExp);
if(mesExp instanceof Term) {
message = ((Term) mesExp).getSymbol().toString();//sync
}else if(mesExp instanceof Variable) {
message = ((Variable) mesExp).getName();//x,y,z..
}
messages.add(message);//pulldown
}
}
}
}
if(messages.isEmpty()) {
return;
}
String[] eventList = messages.toArray(new String[messages.size()]);
JComboBox<String> event = new JComboBox<String>(eventList);
JPanel eventChoice = new JPanel();
eventChoice.add(event);//FirstEventChoice
int ret = JOptionPane.showConfirmDialog(null, eventChoice, "Event Choice", JOptionPane.OK_CANCEL_OPTION);
if (ret == JOptionPane.OK_OPTION) {
JPanel inputEvent = new JPanel();
int i , eventNum;
i = eventNum = 0;
for(String eventString : eventList) {
if(eventString.equals(event.getSelectedItem().toString())) {
eventNum = i;
}
i++;
}
JTextArea textArea = new JTextArea(eventMessages.get(eventNum).toString(), 10, 30);//EventInput
inputEvent.add(textArea);
int approve = JOptionPane.showConfirmDialog(null, inputEvent, "Event Code", JOptionPane.OK_CANCEL_OPTION);
if (approve == JOptionPane.OK_OPTION) {
try {
TokenStream stream = new Parser.TokenStream();
Parser parser = new Parser(stream);
stream.addLine(textArea.getText());
Expression eventMessage = parser.parseTerm(stream,simulator.getModel());
Event newEvent = new Event(eventChs.get(eventNum), eventMessage, eventResPath, simulator.getCurState().getResource(resId));
simulator.transition(newEvent);
constructNextSimulateGraph(simulator.getCurState().getRootResources(), simulator.getModel(),simulator.getModel().getDataFlowGraph(), graph);
graphComponent.setCellEditor(new InputEventCellEditor(graphComponent, simulator, this.editor, graph));
} catch (ParameterizedIdentifierIsFutureWork | ResolvingMultipleDefinitionIsFutureWork
| InvalidMessage | UnificationFailed | ValueUndefined | ExpectedRightBracket | WrongJsonExpression | ExpectedColon e) {
e.printStackTrace();
}
}
}
//resource
return;
}
 
mxCellState state = graphComponent.getGraph().getView().getState(cell);
if (state != null && state.getLabel() != null && !state.getLabel().equals("")) {
editingCell = cell;
trigger = evt;
 
double scale = Math.max(minimumEditorScale, graphComponent.getGraph().getView().getScale());
Object value = graphComponent.getGraph().getModel().getValue(cell);
if (value != null && value instanceof PushPullAttribute) {
PushPullAttribute attr = (PushPullAttribute) value;
comboBox = new JComboBox<>(attr.getOptionStrings());
comboBox.setBorder(BorderFactory.createEmptyBorder());
comboBox.setOpaque(false);
comboBox.setBounds(getEditorBounds(state, scale));
comboBox.setVisible(true);
graphComponent.getGraphControl().add(comboBox, 0);
comboBox.updateUI();
}
}
}
 
private mxGraph constructNextSimulateGraph(Set<Resource> simulateRes, DataTransferModel model,DataFlowGraph dataFlowGraph, mxGraph nextGraph) {
bReflectingArchitectureModel = true;
((mxGraphModel) nextGraph.getModel()).clear();
Object parent = nextGraph.getDefaultParent();
nextGraph.getModel().beginUpdate();
try {
Map<Resource, Object> resources = new HashMap<>();
// create resource vertices
for (Resource resNode: simulateRes) {
int w = 400;
int h = 150;
ResourcePath res = resNode.getResourceIdentifier();
Object resource = nextGraph.insertVertex(parent, null,
res.toString(), x, y, w, h,
"shape=ellipse;perimeter=ellipsePerimeter;verticalAlign=top;"); // insert a resource as a vertex
resources.put(resNode, resource);
createNextChildSimulateResourceVerticies(resource, resNode, resources, w, h);
x+=400;
}
} finally {
nextGraph.getModel().endUpdate();
}
bReflectingArchitectureModel = false;
return nextGraph;
}
 
private void createNextChildSimulateResourceVerticies(Object resource, Resource resNode, Map<Resource, Object> resources, int w, int h) { //sample
if(resNode.getChildren() != null) {
for (Resource childNode: resNode.getChildren()) {
int i = 1;
ResourcePath childRes = childNode.getResourceIdentifier();
Object childResource = graph.insertVertex(resource, null,
childRes.toString(), x/i, y, w/(i+1), h/(i+2),
"shape=ellipse;perimeter=ellipsePerimeter;verticalAlign=top;"); // insert a resource as a vertex
resources.put(childNode, childResource);
i++;
createNextChildSimulateResourceVerticies(childResource, childNode, resources, w, h);
}
}
if (resNode.getChildren() == null || resNode.getChildren().size() == 0) {
Object state = graph.insertVertex(resource, null,
resNode.getState().getValue().toString(), 0.5, 0.5, 0.25, 0.25, "opacity=0;verticalAlign=down;", true); // insert a state label as a vertex
}
}
 
@Override
public void stopEditing(boolean cancel) {
if (editingCell != null) {
comboBox.transferFocusUpCycle();
Object cell = editingCell;
editingCell = null;
if (!cancel) {
EventObject trig = trigger;
trigger = null;
Object value = graphComponent.getGraph().getModel().getValue(cell);
if (value != null && value instanceof PushPullAttribute) {
PushPullAttribute attr = (PushPullAttribute) value;
List<PushPullValue> options = attr.getOptions();
PushPullValue selected = null;
for (PushPullValue option: options) {
if (option.toString().equals(getCurrentValue())) {
selected = option;
break;
}
}
if (selected != null) {
options.remove(selected);
options.add(0, selected);
}
graphComponent.labelChanged(cell, attr, trig);
}
} else {
mxCellState state = graphComponent.getGraph().getView().getState(cell);
graphComponent.redraw(state);
}
 
if (comboBox.getParent() != null) {
comboBox.setVisible(false);
comboBox.getParent().remove(comboBox);
}
 
graphComponent.requestFocusInWindow();
}
}
 
public String getCurrentValue() {
return (String) comboBox.getSelectedItem();
}
 
/**
* Returns the bounds to be used for the editor.
*/
public Rectangle getEditorBounds(mxCellState state, double scale) {
mxIGraphModel model = state.getView().getGraph().getModel();
Rectangle bounds = null;
 
bounds = state.getLabelBounds().getRectangle();
bounds.height += 10;
 
// Applies the horizontal and vertical label positions
if (model.isVertex(state.getCell())) {
String horizontal = mxUtils.getString(state.getStyle(), mxConstants.STYLE_LABEL_POSITION, mxConstants.ALIGN_CENTER);
 
if (horizontal.equals(mxConstants.ALIGN_LEFT)) {
bounds.x -= state.getWidth();
} else if (horizontal.equals(mxConstants.ALIGN_RIGHT)) {
bounds.x += state.getWidth();
}
 
String vertical = mxUtils.getString(state.getStyle(),
mxConstants.STYLE_VERTICAL_LABEL_POSITION,
mxConstants.ALIGN_MIDDLE);
 
if (vertical.equals(mxConstants.ALIGN_TOP)) {
bounds.y -= state.getHeight();
} else if (vertical.equals(mxConstants.ALIGN_BOTTOM)) {
bounds.y += state.getHeight();
}
}
 
bounds.setSize(
(int) Math.max(bounds.getWidth(),
Math.round(minimumWidth * scale)),
(int) Math.max(bounds.getHeight(),
Math.round(minimumHeight * scale)));
 
return bounds;
}
 
}
View
AlgebraicDataflowArchitectureModel/src/application/simulator/InputEventCellEditor.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/application/simulator/SimulationLayout.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/application/simulator/SimulatorMenuBar.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/application/simulator/SimulatorWindow.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/application/simulator/UISimulatorWindow.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/application/simulator/actions/ShowUISimulatorAction.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/models/algebra/Term.java
View
AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/DataConstraintModel.java
View
AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/JsonTerm.java
View
AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/ListTerm.java
View
AlgebraicDataflowArchitectureModel/src/models/dataConstraintModel/MapTerm.java
View
AlgebraicDataflowArchitectureModel/src/parser/Parser.java
View
AlgebraicDataflowArchitectureModel/src/simulator/ChannelState.java
View
AlgebraicDataflowArchitectureModel/src/simulator/Event.java
View
AlgebraicDataflowArchitectureModel/src/simulator/Resource.java
View
AlgebraicDataflowArchitectureModel/src/simulator/Simulator.java
View
AlgebraicDataflowArchitectureModel/src/simulator/SystemState.java
View
AlgebraicDataflowArchitectureModel/src/simulator/interfaces/INativeReceiver.java
View
AlgebraicDataflowArchitectureModel/src/simulator/interfaces/swing/ComponentHeightReceiver.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/simulator/interfaces/swing/ComponentTextReceiver.java
View
AlgebraicDataflowArchitectureModel/src/simulator/interfaces/swing/ComponentTextSender.java
View
AlgebraicDataflowArchitectureModel/src/simulator/interfaces/swing/ComponentVisibilityReceiver.java
View
AlgebraicDataflowArchitectureModel/src/simulator/interfaces/swing/ComponentWidthReceiver.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/simulator/interfaces/swing/ComponentXReceiver.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/simulator/interfaces/swing/ComponentYReceiver.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/simulator/interfaces/swing/SwingPresenter.java
View
AlgebraicDataflowArchitectureModel/src/simulator/interfaces/timers/TimerEventSender.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/simulator/interfaces/timers/TimerService.java 0 → 100644
View
AlgebraicDataflowArchitectureModel/src/simulator/states/JsonResourceState.java
View
AlgebraicDataflowArchitectureModel/src/simulator/states/ListResourceState.java
View
AlgebraicDataflowArchitectureModel/src/simulator/states/MapResourceState.java
View
AlgebraicDataflowArchitectureModel/src/simulator/states/PrimitiveResourceState.java
View
AlgebraicDataflowArchitectureModel/src/simulator/states/State.java
View
AlgebraicDataflowArchitectureModel/src/tests/NativeAccessTest.java