From 8e09f90669b080febe3443fdcc84f54c88d7e7b0 Mon Sep 17 00:00:00 2001 From: Letitia Li <leli@enst.fr> Date: Wed, 25 May 2016 15:09:37 +0000 Subject: [PATCH] Simulator UI changes --- src/ui/MainGUI.java | 30 ++++++++++++ src/ui/TGComponent.java | 46 ++++++++++++++----- .../JFrameInteractiveSimulation.java | 10 ++-- .../interactivesimulation/TaskTableModel.java | 2 +- src/ui/tmldd/TMLArchiArtifact.java | 8 ++++ 5 files changed, 81 insertions(+), 15 deletions(-) diff --git a/src/ui/MainGUI.java b/src/ui/MainGUI.java index 32fda55f59..ac5b6a10f1 100755 --- a/src/ui/MainGUI.java +++ b/src/ui/MainGUI.java @@ -303,6 +303,7 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Pe private ArrayList<RunningInfo> runningIDs; private ArrayList<LoadInfo> loadIDs; private Map<Integer, ArrayList<SimulationTransaction>> transactionMap = new HashMap<Integer, ArrayList<SimulationTransaction>>(); + private Map<String, String> statusMap = new HashMap<String, String>(); private JFrameInteractiveSimulation jfis; private JFrameAvatarInteractiveSimulation jfais; @@ -7605,7 +7606,13 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Pe return transactionMap.get(id); } + public synchronized Map<String,String> getStatus(int id){ + if (statusMap == null) { + return null; + } + return statusMap; + } public synchronized LoadInfo isLoadID(int id) { if (loadIDs == null) { return null; @@ -7641,6 +7648,20 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Pe tdp.repaint(); } } + public synchronized void resetTransactions() { + transactionMap.clear(); + TDiagramPanel tdp = getCurrentTDiagramPanel(); + if (tdp != null) { + tdp.repaint(); + } + } + public synchronized void resetStatus() { + statusMap.clear(); + TDiagramPanel tdp = getCurrentTDiagramPanel(); + if (tdp != null) { + tdp.repaint(); + } + } public synchronized void addRunningIDTaskState(int _id, String _state) { if (runningIDs == null) { @@ -7702,6 +7723,15 @@ public class MainGUI implements ActionListener, WindowListener, KeyListener, Pe tdp.repaint(); } } + + public synchronized void addStatus(String task, String stat){ + statusMap.put(task, stat); + TDiagramPanel tdp = getCurrentTDiagramPanel(); + if (tdp != null) { + tdp.repaint(); + } + } + public synchronized void addLoadInfo(int _id, double _load, long _energy) { if (loadIDs == null) { loadIDs = new ArrayList<LoadInfo>(); diff --git a/src/ui/TGComponent.java b/src/ui/TGComponent.java index 33f312cfac..5844025f79 100755 --- a/src/ui/TGComponent.java +++ b/src/ui/TGComponent.java @@ -154,6 +154,9 @@ public abstract class TGComponent implements CDElement, GenericTree { public String transaction=""; public ArrayList<SimulationTransaction> transactions; + //If task + public String runningStatus=""; + protected String value; //applies if editable protected String name = "TGComponent"; @@ -752,9 +755,10 @@ public abstract class TGComponent implements CDElement, GenericTree { } + public void drawRunningDiploID(Graphics g, RunningInfo ri) { //System.out.println("Drawing running DIPLO"); - int wb = 30; + int wb = 50; int hb = 10; int wh = 15; int hh = 20; @@ -810,7 +814,7 @@ public abstract class TGComponent implements CDElement, GenericTree { int ww = g.getFontMetrics().stringWidth(s); if (ri.startTime != null) { - g.drawString(ri.startTime, x - sep - wb -wh, y + ((height-hb) / 2) - 1); + g.drawString("startTime:"+ri.startTime, x - sep - wb -wh, y + ((height-hb) / 2) - 1); } g.drawString(s, x - sep - wb -wh -ww, y + 4 + ((height) / 2)); if (ri.finishTime != null) { @@ -818,7 +822,7 @@ public abstract class TGComponent implements CDElement, GenericTree { if (s.compareTo("-1") == 0) { s = "?"; } - g.drawString(s, x - sep - wb -wh, y + ((height+hb) / 2) + 10); + g.drawString("endTime:" +s, x - sep - wb -wh, y + ((height+hb) / 2) + 10); } // Transaction @@ -839,7 +843,7 @@ public abstract class TGComponent implements CDElement, GenericTree { } } } - g.drawString("Transactions " +s1, x - sep - wb -wh + 2, y + 4 + ((height) / 2)); + //g.drawString("Transactions " +s1, x - sep - wb -wh + 2, y + 4 + ((height) / 2)); } } @@ -870,12 +874,18 @@ public abstract class TGComponent implements CDElement, GenericTree { //Draw transactions too??? } public void drawTransaction(Graphics g){ - g.drawString(transaction, x, y+100); - int i=0; - for (SimulationTransaction t:transactions){ - // g.drawString(t.taskName + " "+t.command, x, y+100+10*i); - i++; - } + Color c=g.getColor(); + Color textColor=Color.BLACK; + g.setColor(textColor); + g.drawString(transaction, x, y+height+10); + g.setColor(c); + } + public void drawStatus(Graphics g){ + Color c=g.getColor(); + Color textColor=Color.BLACK; + g.setColor(textColor); + g.drawString(runningStatus, x+width, y); + g.setColor(c); } public void draw(Graphics g) { RunningInfo ri; @@ -1001,10 +1011,24 @@ public abstract class TGComponent implements CDElement, GenericTree { } ArrayList<SimulationTransaction> ts= tdp.getMGUI().getTransactions(getDIPLOID()); if (ts !=null){ - transaction = ""; + transaction = ts.get(0).taskName+ ":" +ts.get(0).command; transactions=ts; drawTransaction(g); } + Map<String, String> statMap = tdp.getMGUI().getStatus(getDIPLOID()); + for (String name:statMap.keySet()){ + String stat =statMap.get(name); + for (int i=0; i< nbInternalTGComponent; i++){ + Object ob = getChild(i); + if (ob instanceof TMLArchiArtifact){ + TMLArchiArtifact art = (TMLArchiArtifact) ob; + if (art.getValue().replaceAll(":", "_").equals(name)){ + art.runningStatus=stat; + art.drawStatus(g); + } + } + } + } } /*if (this instanceof TMLArchiCPUNode) { diff --git a/src/ui/interactivesimulation/JFrameInteractiveSimulation.java b/src/ui/interactivesimulation/JFrameInteractiveSimulation.java index 70b1e6c4a9..b497a16045 100755 --- a/src/ui/interactivesimulation/JFrameInteractiveSimulation.java +++ b/src/ui/interactivesimulation/JFrameInteractiveSimulation.java @@ -1291,7 +1291,9 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen } } } - + protected void addStatusToNode(String status, String task){ + mgui.addStatus(task,status); + } protected boolean loadConfiguration(Node node1) { NodeList diagramNl = node1.getChildNodes(); if (diagramNl == null) { @@ -1493,6 +1495,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen } if ((id != null) && ((extime != null) || (state != null))) { + addStatusToNode(state, name); updateTaskCyclesAndState(id, extime, state); } @@ -2375,7 +2378,6 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen Integer i = getInteger(_id); Integer ex = getInteger(_extime); int row; - String s = ""; if (_state != null) { s += _state; @@ -2385,7 +2387,7 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen s+= _extime; } - + if ((i != null) && (ex != null)) { try { @@ -2590,6 +2592,8 @@ public class JFrameInteractiveSimulation extends JFrame implements ActionListen } else if (command.equals(actions[InteractiveSimulationActions.ACT_RESET_SIMU].getActionCommand())) { mgui.resetRunningID(); mgui.resetLoadID(); + mgui.resetTransactions(); + mgui.resetStatus(); sendCommand("reset"); askForUpdate(); } else if (command.equals(actions[InteractiveSimulationActions.ACT_STOP_SIMU].getActionCommand())) { diff --git a/src/ui/interactivesimulation/TaskTableModel.java b/src/ui/interactivesimulation/TaskTableModel.java index 37f1bf1403..1f86334b63 100755 --- a/src/ui/interactivesimulation/TaskTableModel.java +++ b/src/ui/interactivesimulation/TaskTableModel.java @@ -197,4 +197,4 @@ public class TaskTableModel extends AbstractTableModel { return; } -} \ No newline at end of file +} diff --git a/src/ui/tmldd/TMLArchiArtifact.java b/src/ui/tmldd/TMLArchiArtifact.java index 34e77d1aa2..f4e4a2c474 100755 --- a/src/ui/tmldd/TMLArchiArtifact.java +++ b/src/ui/tmldd/TMLArchiArtifact.java @@ -75,6 +75,8 @@ public class TMLArchiArtifact extends TGCWithoutInternalComponent implements Swa private ArchUnitMEC fatherArchUnitMECType = new CpuMEC(); + public String status=""; + public String lastTransaction=""; public TMLArchiArtifact(int _x, int _y, int _minX, int _maxX, int _minY, int _maxY, boolean _pos, TGComponent _father, TDiagramPanel _tdp) { super(_x, _y, _minX, _maxX, _minY, _maxY, _pos, _father, _tdp); @@ -114,7 +116,13 @@ public class TMLArchiArtifact extends TGCWithoutInternalComponent implements Swa g.drawRect(x, y, width, height); Color c = g.getColor(); + + if (status.equals("running")){ + g.setColor(ColorManager.CURRENT_COMMAND_RUNNING); + } + else { g.setColor(ColorManager.CPU_BOX_2); + } g.fillRect(x+1, y+1, width-1, height-1); g.setColor(c); -- GitLab