diff --git a/src/main/java/ddtranslatorSoclib/toTopCell/NetList.java b/src/main/java/ddtranslatorSoclib/toTopCell/NetList.java index 9cc066dae4a72218bb9081e78bbec320f97650e3..540f5654cc2c32298282b831f64b5b99acb9a924 100644 --- a/src/main/java/ddtranslatorSoclib/toTopCell/NetList.java +++ b/src/main/java/ddtranslatorSoclib/toTopCell/NetList.java @@ -1086,29 +1086,6 @@ public class NetList "sc_trace(tf,signal_from_ams" + amsCluster.getNo_amsCluster () + ",\"signal_from_ams" + amsCluster.getNo_amsCluster () + "\");" + CR; } - - //Call trace function from the AMS cluster. - int tracefile_present=0;//only one trace file for all AMS clusters - for (AvatarAmsCluster amsCluster:TopCellGenerator.avatardd.getAllAmsCluster()) - { - if(tracefile_present==0){ - - netlist += CR + - "sca_util::sca_trace_file *tfp = sca_util::sca_create_tabular_trace_file(\"my_trace_analog\");" + CR;tracefile_present=1;} - netlist += - "sca_util::sca_trace(tfp,signal_to_ams" + amsCluster.getNo_amsCluster() + - ",\"signal_to_ams" + amsCluster.getNo_amsCluster() + "\");" + CR; - netlist += - "sca_util::sca_trace(tfp,signal_from_ams" + amsCluster.getNo_amsCluster() + - ",\"signal_from_ams" + amsCluster.getNo_amsCluster() + "\");" + CR; - - netlist += - amsCluster.getAmsClusterName() + amsCluster.getNo_amsCluster() + - ".trace_" + amsCluster.getAmsClusterName() + "(tfp);" + CR; - } - - netlist += CR; - } netlist = @@ -1123,7 +1100,6 @@ public class NetList if (tracing) { netlist += "sc_close_vcd_trace_file(tf);" + CR; - netlist += "sca_util::sca_close_tabular_trace_file(tfp);" + CR; } netlist = netlist + CR + " return EXIT_SUCCESS;" + CR; netlist = netlist + "}" + CR; diff --git a/src/main/java/ui/ActionPerformer.java b/src/main/java/ui/ActionPerformer.java index d9ad4ea3531d977dd8362f54c08ff2efbcbd8efd..8550f8bdd14d4db218aa550b54ee959719496337 100644 --- a/src/main/java/ui/ActionPerformer.java +++ b/src/main/java/ui/ActionPerformer.java @@ -857,10 +857,7 @@ public class ActionPerformer { mgui.actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.TMLARCHI_CPUNODE); } else if (command.equals(mgui.actions[TGUIAction.TMLARCHI_FPGANODE].getActionCommand())) { mgui.actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.TMLARCHI_FPGANODE); - } else if (command.equals(mgui.actions[TGUIAction.TMLARCHI_ANALOGNODE].getActionCommand())) { - mgui.actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.TMLARCHI_ANALOGNODE); - } - else if (command.equals(mgui.actions[TGUIAction.TMLARCHI_BUSNODE].getActionCommand())) { + } else if (command.equals(mgui.actions[TGUIAction.TMLARCHI_BUSNODE].getActionCommand())) { mgui.actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.TMLARCHI_BUSNODE); } else if (command.equals(mgui.actions[TGUIAction.TMLARCHI_CPNODE].getActionCommand())) { mgui.actionOnButton(TGComponentManager.COMPONENT, TGComponentManager.TMLARCHI_CPNODE); diff --git a/src/main/java/ui/GTMLModeling.java b/src/main/java/ui/GTMLModeling.java index 69243fa7adba93a1b55d218cb3161fba1d5655b3..510f643acdb3f5be69dc059849ab59e3d3fe47b3 100644 --- a/src/main/java/ui/GTMLModeling.java +++ b/src/main/java/ui/GTMLModeling.java @@ -89,7 +89,6 @@ import ui.tmldd.TMLArchiCrossbarNode; import ui.tmldd.TMLArchiDMANode; import ui.tmldd.TMLArchiEventArtifact; import ui.tmldd.TMLArchiFPGANode; -import ui.tmldd.TMLArchiAnalogNode; import ui.tmldd.TMLArchiFirewallNode; import ui.tmldd.TMLArchiHWANode; import ui.tmldd.TMLArchiKey; @@ -2782,7 +2781,6 @@ public class GTMLModeling { TMLArchiCPUNode node; TMLArchiFPGANode fpgaNode; - TMLArchiAnalogNode analogNode; TMLArchiHWANode hwanode; TMLArchiBUSNode busnode; TMLArchiVGMNNode vgmnnode; @@ -2794,7 +2792,6 @@ public class GTMLModeling { TMLArchiRouterNode routerNode; HwCPU cpu; HwFPGA fpga; - HwAnalog analog; HwA hwa; HwBus bus; HwVGMN vgmn; @@ -2871,36 +2868,6 @@ public class GTMLModeling { } } - if (tgc instanceof TMLArchiAnalogNode) { - analogNode = (TMLArchiAnalogNode) tgc; - if (nameInUse(names, analogNode.getName())) { - // Node with the same name - UICheckingError ce = new UICheckingError(CheckingError.STRUCTURE_ERROR, "Two nodes have the same name: " + analogNode.getName()); - ce.setTDiagramPanel(tmlap.tmlap); - ce.setTGComponent(analogNode); - checkingErrors.add(ce); - } else { - names.add(analogNode.getName()); - analog = new HwAnalog(analogNode.getName()); - analog.capacity = analogNode.getCapacity(); - analog.byteDataSize = analogNode.getByteDataSize(); - analog.mappingPenalty = analogNode.getMappingPenalty(); - analog.goIdleTime = analogNode.getGoIdleTime(); - analog.maxConsecutiveIdleCycles = analogNode.getMaxConsecutiveIdleCycles(); - analog.reconfigurationTime = analogNode.getReconfigurationTime(); - analog.execiTime = analogNode.getExeciTime(); - analog.execcTime = analogNode.getExeccTime(); - analog.clockRatio = analogNode.getClockRatio(); - analog.setOperation(analogNode.getOperation()); - analog.setScheduling(analogNode.getScheduling()); - - listE.addCor(analog, analogNode); - archi.addHwNode(analog); - //TraceManager.addDev("Analog node added: " + analogNode.getName()); - } - } - - if (tgc instanceof TMLArchiHWANode) { hwanode = (TMLArchiHWANode) tgc; if (nameInUse(names, hwanode.getName())) { diff --git a/src/main/java/ui/TGComponentManager.java b/src/main/java/ui/TGComponentManager.java index a9b2441d42717ddb0178960d7e1ad160d4ba0cc6..a42b1b98b344837368c62a07dc44f7d99a42d9f1 100644 --- a/src/main/java/ui/TGComponentManager.java +++ b/src/main/java/ui/TGComponentManager.java @@ -280,7 +280,6 @@ public class TGComponentManager { public static final int TMLARCHI_CROSSBARNODE = 1113; public static final int TMLARCHI_FIREWALL = 1114; public static final int TMLARCHI_FPGANODE = 1116; - public static final int TMLARCHI_ANALOGNODE = 5720; public static final int TMLARCHI_ROUTERNODE = 1117; public static final int TMLCTD_CCOMPONENT = 1200; @@ -1241,9 +1240,6 @@ public class TGComponentManager { case TMLARCHI_FPGANODE: tgc = new TMLArchiFPGANode(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp); break; - case TMLARCHI_ANALOGNODE: - tgc = new TMLArchiAnalogNode(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp); - break; case TMLARCHI_BUSNODE: tgc = new TMLArchiBUSNode(x, y, tdp.getMinX(), tdp.getMaxX(), tdp.getMinY(), tdp.getMaxY(), false, null, tdp); break; @@ -2164,8 +2160,6 @@ public class TGComponentManager { return TMLARCHI_CPUNODE; } else if (tgc instanceof TMLArchiFPGANode) { return TMLARCHI_FPGANODE; - } else if (tgc instanceof TMLArchiAnalogNode) { - return TMLARCHI_ANALOGNODE; } else if (tgc instanceof TMLArchiBUSNode) { return TMLARCHI_BUSNODE; } else if (tgc instanceof TMLArchiVGMNNode) { diff --git a/src/main/java/ui/TGUIAction.java b/src/main/java/ui/TGUIAction.java index dc580d18e71d991f867a965d10b0cdbdb2dc73df..d0940e93e1202bc33bf2cb0d0fde34502f6fae9c 100644 --- a/src/main/java/ui/TGUIAction.java +++ b/src/main/java/ui/TGUIAction.java @@ -251,8 +251,7 @@ public class TGUIAction extends AbstractAction { public static final int TMLARCHI_KEY = 435; public static final int TMLARCHI_FIREWALL = 436; public static final int TMLARCHI_FPGANODE = 474; - public static final int TMLARCHI_ANALOGNODE = 519; - + public static final int TMLCP_EDIT = 378; public static final int TMLCP_CONNECTOR = 379; public static final int TMLCP_REF_SD = 380; @@ -674,7 +673,7 @@ public class TGUIAction extends AbstractAction { public static final int MOVE_ENABLED = 463; public static final int FIRST_DIAGRAM = 464; - public static final int NB_ACTION = 520; + public static final int NB_ACTION = 519; private static final TAction [] actions = new TAction[NB_ACTION]; @@ -1138,7 +1137,6 @@ public class TGUIAction extends AbstractAction { actions[TMLARCHI_LINK] = new TAction("add-tmlarchi-link", "Add a link", IconManager.imgic202, IconManager.imgic202, "Link", "Add a link between two nodes of the currently opened DIPLODOCUS architecture diagram", 0); actions[TMLARCHI_CPUNODE] = new TAction("add-tmlarchi-cpunode", "Add a CPU node", IconManager.imgic1100, IconManager.imgic1100, "CPU node", "Add a cpu node to the currently opened DIPLODOCUS architecture diagram", 0); actions[TMLARCHI_FPGANODE] = new TAction("add-tmlarchi-fpganode", "Add a FPGA node", IconManager.imgic1120, IconManager.imgic1120, "FPGA node", "Add a fpga node to the currently opened DIPLODOCUS architecture diagram", 0); - actions[TMLARCHI_ANALOGNODE] = new TAction("add-tmlarchi-analognode", "Add an analog node", IconManager.imgic8006, IconManager.imgic8006, "Analog node", "Add an analog node to the currently opened DIPLODOCUS architecture diagram", 0); actions[TMLARCHI_BUSNODE] = new TAction("add-tmlarchi-busnode", "Add a Bus node", IconManager.imgic1102, IconManager.imgic1102, "Bus node", "Add a bus node to the currently opened DIPLODOCUS architecture diagram", 0); actions[TMLARCHI_CPNODE] = new TAction("add-tmlarchi-cpnode", "Add a Communication pattern node", IconManager.imgic1102, IconManager.imgic1102, "CP node", "Add a communication pattern node to the currently opened DIPLODOCUS architecture diagram", 0); actions[TMLARCHI_ARTIFACT] = new TAction("add-tmlarchi-artifact", "Map a task", IconManager.imgic702, IconManager.imgic702, "Map a task", "Map a task onto a node in the currently opened DIPLODOCUS architecture diagram", 0); diff --git a/src/main/java/ui/avatardd/ADDMemoryNode.java-new b/src/main/java/ui/avatardd/ADDMemoryNode.java-new new file mode 100755 index 0000000000000000000000000000000000000000..403be2baafa54577a1e8dfff2ff509583a11cb56 --- /dev/null +++ b/src/main/java/ui/avatardd/ADDMemoryNode.java-new @@ -0,0 +1,335 @@ +/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + * + * ludovic.apvrille AT enst.fr + * + * This software is a computer program whose purpose is to allow the + * edition of TURTLE analysis, design and deployment diagrams, to + * allow the generation of RT-LOTOS or Java code from this diagram, + * and at last to allow the analysis of formal validation traces + * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + * from INRIA Rhone-Alpes. + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited + * liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + */ + +package ui.avatardd; + +import myutil.GraphicLib; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import tmltranslator.HwMemory; +import ui.*; +import ui.util.IconManager; +import ui.window.JDialogADDMemoryNode; + +import javax.swing.*; +import java.awt.*; + +/** + * Class ADDMemoryNode + * Node. To be used in avatar deployment diagrams. + * Creation: 21/08/2014 + * @version 1.0 21/08/2014 + * @author Ludovic APVRILLE + */ + +public abstract class ADDMemoryNode extends ADDCommunicationNode implements WithAttributes { + protected int textY1 = 15; + protected int textY2 = 30; + protected int derivationx = 2; + protected int derivationy = 3; + protected String stereotype = "RAM"; + + protected int index = 0; + protected int cluster_index = 0; + protected int monitored = 0; + protected int byteDataSize = HwMemory.DEFAULT_BYTE_DATA_SIZE; + + private String processCode; + + public ADDMemoryNode(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); + + setProcessCode(""); + } + + public void internalDrawing(Graphics g) { + Color c = g.getColor(); + g.draw3DRect(x, y, width, height, true); + + // Top lines + g.drawLine(x, y, x + derivationx, y - derivationy); + g.drawLine(x + width, y, x + width + derivationx, y - derivationy); + g.drawLine(x + derivationx, y - derivationy, x + width + derivationx, y - derivationy); + + // Right lines + g.drawLine(x + width, y + height, x + width + derivationx, y - derivationy + height); + g.drawLine(x + derivationx + width, y - derivationy, x + width + derivationx, y - derivationy + height); + + // Filling color + g.setColor(ColorManager.MEMORY_BOX); + g.fill3DRect(x+1, y+1, width-1, height-1, true); + g.setColor(c); + + // Strings + String ster = "<<" + stereotype + ">>"; + int w = g.getFontMetrics().stringWidth(ster); + Font f = g.getFont(); + g.setFont(f.deriveFont(Font.BOLD)); + g.drawString(ster, x + (width - w)/2, y + textY1); + w = g.getFontMetrics().stringWidth(name); + g.setFont(f); + g.drawString(name, x + (width - w)/2, y + textY2); + + // Icon + //g.drawImage(IconManager.imgic1108.getImage(), x + width - 20, y + 4, null); + g.drawImage(IconManager.imgic1108.getImage(), x + 4, y + 4, null); + g.drawImage(IconManager.img9, x + width - 20, y + 4, null); + } + + public TGComponent isOnOnlyMe(int x1, int y1) { + Polygon pol = new Polygon(); + pol.addPoint(x, y); + pol.addPoint(x + derivationx, y - derivationy); + pol.addPoint(x + derivationx + width, y - derivationy); + pol.addPoint(x + derivationx + width, y + height - derivationy); + pol.addPoint(x + width, y + height); + pol.addPoint(x, y + height); + if (pol.contains(x1, y1)) { + return this; + } + return null; + } + + public String getStereotype() { + return stereotype; + } + + public String getNodeName() { + return name; + } + + public int getIndex() { + return index; + } + + public int getClusterIndex() { + return cluster_index; + } + + public int getDataSize() { + return byteDataSize; + } + + public int getMonitored() { + return monitored; + } + + public boolean editOndoubleClick(JFrame frame) { + boolean error = false; + String errors = ""; + int tmp; + String tmpName; + + JDialogADDMemoryNode dialog = new JDialogADDMemoryNode(frame, "Setting " + stereotype + " attributes", this); + // dialog.setSize(500, 450); + GraphicLib.centerOnParent(dialog, 500, 450); + dialog.setVisible( true ); // blocked until dialog has been closed + + if (!dialog.isRegularClose()) { + return false; + } + + if (dialog.getNodeName().length() != 0) { + tmpName = dialog.getNodeName(); + tmpName = tmpName.trim(); + if (!TAttribute.isAValidId(tmpName, false, false)) { + error = true; + errors += "Name of the node "; + } else { + name = tmpName; + } + } + + if (dialog.getIndex().length() != 0) { + try { + tmp = index; + index = Integer.decode(dialog.getIndex()).intValue(); + if (index < 0) { + index = tmp; + error = true; + errors += "index "; + } + } catch (Exception e) { + error = true; + errors += "index "; + } + } + + if (dialog.getClusterIndex().length() != 0) { + try { + tmp = cluster_index; + index = Integer.decode(dialog.getClusterIndex()).intValue(); + if (index < 0) { + index = tmp; + error = true; + errors += "cluster index "; + } + } catch (Exception e) { + error = true; + errors += "cluster index "; + } + } + + + + if (dialog.getDataSize().length() != 0) { + try { + tmp = byteDataSize; + byteDataSize = Integer.decode(dialog.getDataSize()).intValue(); + if (index < 0) { + byteDataSize = tmp; + error = true; + errors += "byteDataSize "; + } + } catch (Exception e) { + error = true; + errors += "byteDataSize "; + } + } + + //if (dialog.getMonitored().length() != 0) { + if (dialog.getMonitored() != 0) { + try { + tmp = monitored; + monitored = dialog.getMonitored();//Integer.decode(dialog.getMonitored()).intValue(); + if (index < 0) { + monitored = tmp; + error = true; + errors += "monitored "; + } + } catch (Exception e) { + error = true; + errors += "monitored "; + } + } + + if (error) { + JOptionPane.showMessageDialog(frame, + "Invalid value for the following attributes: " + errors, + "Error", + JOptionPane.INFORMATION_MESSAGE); + return false; + } + return true; + } + + protected String translateExtraParam() { + StringBuffer sb = new StringBuffer("<extraparam>\n"); + sb.append("<info stereotype=\"" + stereotype + "\" nodeName=\"" + name); + sb.append("\" />\n"); + sb.append("<attributes byteDataSize=\"" + byteDataSize + "\" "); + sb.append(" index=\"" + index + "\" "); + sb.append(" cluster_index=\"" + cluster_index + "\" "); + if (stereotype.equals("RAM")) { + sb.append(" processCode=\"" + getProcessCode() + "\" "); + } + sb.append("/>\n"); + sb.append("</extraparam>\n"); + return new String(sb); + } + + public void loadExtraParam(NodeList nl, int decX, int decY, int decId) throws MalformedModelingException{ + // + try { + NodeList nli; + Node n1, n2; + Element elt; + //int t1id; + String sstereotype = null, snodeName = null; + monitored = 0; + String processCode; + + for(int i=0; i<nl.getLength(); i++) { + n1 = nl.item(i); + // + if (n1.getNodeType() == Node.ELEMENT_NODE) { + nli = n1.getChildNodes(); + for(int j=0; j<nli.getLength(); j++) { + n2 = nli.item(j); + // + if (n2.getNodeType() == Node.ELEMENT_NODE) { + elt = (Element) n2; + if (elt.getTagName().equals("info")) { + sstereotype = elt.getAttribute("stereotype"); + snodeName = elt.getAttribute("nodeName"); + } + if (sstereotype != null) { + stereotype = sstereotype; + } + if (snodeName != null){ + name = snodeName; + } + if (elt.getTagName().equals("attributes")) { + byteDataSize = Integer.decode(elt.getAttribute("byteDataSize")).intValue(); + //monitored = Integer.decode(elt.getAttribute("monitored")).intValue(); + index = Integer.decode(elt.getAttribute("index")).intValue(); + //cluster_index = Integer.decode(elt.getAttribute("cluster_index")).intValue(); + if (sstereotype.equals("RAM")) { + processCode = elt.getAttribute("processCode"); + setProcessCode(processCode); + } + } + } + } + } + } + } catch (Exception e) { + throw new MalformedModelingException(); + } + } + + public int getByteDataSize(){ + return byteDataSize; + } + + public String getAttributes() { + String attr = ""; + attr += "Data size (in byte) = " + byteDataSize + "\n"; + attr += "Index = " + index + "\n"; + return attr; + } + + public String getProcessCode() { + return processCode; + } + + public void setProcessCode(String _processCode) { + processCode = _processCode; + } +} diff --git a/src/main/java/ui/avatardd/ADDRAMNode.java-new b/src/main/java/ui/avatardd/ADDRAMNode.java-new new file mode 100755 index 0000000000000000000000000000000000000000..6fee322b5a6ac5216cf1e846c1413d81acf4cc36 --- /dev/null +++ b/src/main/java/ui/avatardd/ADDRAMNode.java-new @@ -0,0 +1,167 @@ +/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + * + * ludovic.apvrille AT enst.fr + * + * This software is a computer program whose purpose is to allow the + * edition of TURTLE analysis, design and deployment diagrams, to + * allow the generation of RT-LOTOS or Java code from this diagram, + * and at last to allow the analysis of formal validation traces + * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + * from INRIA Rhone-Alpes. + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited + * liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + */ + +package ui.avatardd; + +import ui.*; +import ui.util.IconManager; + +import java.util.Vector; + +/** + * Class ADDRAMNode + * Node. To be used in avatar deployment diagrams. + * Creation: 01/07/2014 + * @version 1.0 01/07/2014 + * @author Ludovic APVRILLE + */ + +public class ADDRAMNode extends ADDMemoryNode implements SwallowTGComponent, WithAttributes { + + protected int monitored = 0; + protected int index = 0; + protected int cluster_index = 0; + + public ADDRAMNode(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); + + width = 200; + height = 200; + minWidth = 100; + minHeight = 35; + + nbConnectingPoint = 16; + connectingPoint = new TGConnectingPoint[16]; + + connectingPoint[0] = new ADDConnectingPoint(this, 0, 0, false, true, 0.0, 0.0); + connectingPoint[1] = new ADDConnectingPoint(this, 0, 0, false, true, 0.5, 0.0); + connectingPoint[2] = new ADDConnectingPoint(this, 0, 0, false, true, 1.0, 0.0); + connectingPoint[3] = new ADDConnectingPoint(this, 0, 0, false, true, 0.0, 0.5); + connectingPoint[4] = new ADDConnectingPoint(this, 0, 0, false, true, 1.0, 0.5); + connectingPoint[5] = new ADDConnectingPoint(this, 0, 0, false, true, 0.0, 1.0); + connectingPoint[6] = new ADDConnectingPoint(this, 0, 0, false, true, 0.5, 1.0); + connectingPoint[7] = new ADDConnectingPoint(this, 0, 0, false, true, 1.0, 1.0); + + connectingPoint[8] = new ADDConnectingPoint(this, 0, 0, false, true, 0.25, 0.0); + connectingPoint[9] = new ADDConnectingPoint(this, 0, 0, false, true, 0.75, 0.0); + connectingPoint[10] = new ADDConnectingPoint(this, 0, 0, false, true, 0.0, 0.25); + connectingPoint[11] = new ADDConnectingPoint(this, 0, 0, false, true, 1.0, 0.25); + connectingPoint[12] = new ADDConnectingPoint(this, 0, 0, false, true, 0.0, 0.75); + connectingPoint[13] = new ADDConnectingPoint(this, 0, 0, false, true, 1.0, 0.75); + connectingPoint[14] = new ADDConnectingPoint(this, 0, 0, false, true, 0.25, 1.0); + connectingPoint[15] = new ADDConnectingPoint(this, 0, 0, false, true, 0.75, 1.0); + + addTGConnectingPointsComment(); + + nbInternalTGComponent = 0; + + moveable = true; + editable = true; + removable = true; + userResizable = true; + + stereotype = "RAM"; + + name = tdp.findNodeName("Memory"); + value = "name"; + + myImageIcon = IconManager.imgic700; + } + + public int getType() { + return TGComponentManager.ADD_RAMNODE; + } + + public boolean acceptSwallowedTGComponent(TGComponent tgc) { + //TraceManager.addDev("Accept swallowed?"); + return tgc instanceof ADDBlockArtifact; + } + + public boolean addSwallowedTGComponent(TGComponent tgc, int x, int y) { + //TraceManager.addDev("Add swallowed?"); + //Set its coordinates + if (tgc instanceof ADDChannelArtifact) { + tgc.setFather(this); + tgc.setDrawingZone(true); + tgc.resizeWithFather(); + //TraceManager.addDev("Add swallowed!!!"); + addInternalComponent(tgc, 0); + return true; + } + return false; + } + + public void removeSwallowedTGComponent(TGComponent tgc) { + removeInternalComponent(tgc); + } + + public Vector<ADDChannelArtifact> getArtifactList() { + Vector<ADDChannelArtifact> v = new Vector<ADDChannelArtifact>(); + + for(int i=0; i<nbInternalTGComponent; i++) { + if (tgcomponent[i] instanceof ADDChannelArtifact) { + v.add( (ADDChannelArtifact) tgcomponent[i] ); + } + } + return v; + } + + public void hasBeenResized() { + for(int i=0; i<nbInternalTGComponent; i++) { + if (tgcomponent[i] instanceof ADDChannelArtifact) { + tgcomponent[i].resizeWithFather(); + } + } + } + + public int getIndex() { + return index; + } + + public int getClusterIndex() { + return cluster_index; + } + + public int getMonitored() { + return monitored; + } + + public void setMonitored(int _monitored){ + monitored = _monitored; + } +} diff --git a/src/main/java/ui/avatardd/ADDTTYNode.java-new b/src/main/java/ui/avatardd/ADDTTYNode.java-new new file mode 100755 index 0000000000000000000000000000000000000000..234c60314ecd88aa1385959de8069b4441133235 --- /dev/null +++ b/src/main/java/ui/avatardd/ADDTTYNode.java-new @@ -0,0 +1,328 @@ +/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille + * + * ludovic.apvrille AT enst.fr + * + * This software is a computer program whose purpose is to allow the + * edition of TURTLE analysis, design and deployment diagrams, to + * allow the generation of RT-LOTOS or Java code from this diagram, + * and at last to allow the analysis of formal validation traces + * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP + * from INRIA Rhone-Alpes. + * + * This software is governed by the CeCILL license under French law and + * abiding by the rules of distribution of free software. You can use, + * modify and/ or redistribute the software under the terms of the CeCILL + * license as circulated by CEA, CNRS and INRIA at the following URL + * "http://www.cecill.info". + * + * As a counterpart to the access to the source code and rights to copy, + * modify and redistribute granted by the license, users are provided only + * with a limited warranty and the software's author, the holder of the + * economic rights, and the successive licensors have only limited + * liability. + * + * In this respect, the user's attention is drawn to the risks associated + * with loading, using, modifying and/or developing or reproducing the + * software by the user in light of its specific status of free software, + * that may mean that it is complicated to manipulate, and that also + * therefore means that it is reserved for developers and experienced + * professionals having in-depth computer knowledge. Users are therefore + * encouraged to load and test the software's suitability as regards their + * requirements in conditions enabling the security of their systems and/or + * data to be ensured and, more generally, to use and operate it in the + * same conditions as regards security. + * + * The fact that you are presently reading this means that you have had + * knowledge of the CeCILL license and that you accept its terms. + */ + + + + +package ui.avatardd; + +import myutil.GraphicLib; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; +import ui.*; +import ui.util.IconManager; +import ui.window.JDialogADDTTYNode; + +import javax.swing.*; +import java.awt.*; + +/** +* Class ADDTTYNode +* Node. To be used in Avatar deployment diagrams. +* Creation: 01/07/2014 +* @version 1.0 01/07/2014 +* @author Ludovic APVRILLE + */ +public class ADDTTYNode extends ADDNode implements WithAttributes { + private int textY1 = 15; + private int textY2 = 30; + private int derivationx = 2; + private int derivationy = 3; + private String stereotype = "TTY"; + + private int index = 0; + protected int cluster_index = 0; + + public ADDTTYNode(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); + + width = 250; + height = 200; + minWidth = 150; + minHeight = 100; + + nbConnectingPoint = 16; + connectingPoint = new TGConnectingPoint[16]; + + connectingPoint[0] = new ADDConnectingPoint(this, 0, 0, false, true, 0.0, 0.0); + connectingPoint[1] = new ADDConnectingPoint(this, 0, 0, false, true, 0.5, 0.0); + connectingPoint[2] = new ADDConnectingPoint(this, 0, 0, false, true, 1.0, 0.0); + connectingPoint[3] = new ADDConnectingPoint(this, 0, 0, false, true, 0.0, 0.5); + connectingPoint[4] = new ADDConnectingPoint(this, 0, 0, false, true, 1.0, 0.5); + connectingPoint[5] = new ADDConnectingPoint(this, 0, 0, false, true, 0.0, 1.0); + connectingPoint[6] = new ADDConnectingPoint(this, 0, 0, false, true, 0.5, 1.0); + connectingPoint[7] = new ADDConnectingPoint(this, 0, 0, false, true, 1.0, 1.0); + + connectingPoint[8] = new ADDConnectingPoint(this, 0, 0, false, true, 0.25, 0.0); + connectingPoint[9] = new ADDConnectingPoint(this, 0, 0, false, true, 0.75, 0.0); + connectingPoint[10] = new ADDConnectingPoint(this, 0, 0, false, true, 0.0, 0.25); + connectingPoint[11] = new ADDConnectingPoint(this, 0, 0, false, true, 1.0, 0.25); + connectingPoint[12] = new ADDConnectingPoint(this, 0, 0, false, true, 0.0, 0.75); + connectingPoint[13] = new ADDConnectingPoint(this, 0, 0, false, true, 1.0, 0.75); + connectingPoint[14] = new ADDConnectingPoint(this, 0, 0, false, true, 0.25, 1.0); + connectingPoint[15] = new ADDConnectingPoint(this, 0, 0, false, true, 0.75, 1.0); + + addTGConnectingPointsComment(); + + nbInternalTGComponent = 0; + + moveable = true; + editable = true; + removable = true; + userResizable = true; + + name = tdp.findNodeName("TTY"); + value = "name"; + + myImageIcon = IconManager.imgic700; + } + + public void internalDrawing(Graphics g) { + Color c = g.getColor(); + g.draw3DRect(x, y, width, height, true); + + + // Top lines + g.drawLine(x, y, x + derivationx, y - derivationy); + g.drawLine(x + width, y, x + width + derivationx, y - derivationy); + g.drawLine(x + derivationx, y - derivationy, x + width + derivationx, y - derivationy); + + // Right lines + g.drawLine(x + width, y + height, x + width + derivationx, y - derivationy + height); + g.drawLine(x + derivationx + width, y - derivationy, x + width + derivationx, y - derivationy + height); + + // Filling color + g.setColor(ColorManager.CPU_BOX_1); + g.fill3DRect(x+1, y+1, width-1, height-1, true); + g.setColor(c); + + // Strings + String ster = "<<" + stereotype + ">>"; + int w = g.getFontMetrics().stringWidth(ster); + Font f = g.getFont(); + g.setFont(f.deriveFont(Font.BOLD)); + g.drawString(ster, x + (width - w)/2, y + textY1); + g.setFont(f); + w = g.getFontMetrics().stringWidth(name); + g.drawString(name, x + (width - w)/2, y + textY2); + + // Icon + g.drawImage(IconManager.imgic1100.getImage(), x + 4, y + 4, null); + g.drawImage(IconManager.img9, x + width - 20, y + 4, null); + } + + public TGComponent isOnOnlyMe(int x1, int y1) { + + Polygon pol = new Polygon(); + pol.addPoint(x, y); + pol.addPoint(x + derivationx, y - derivationy); + pol.addPoint(x + derivationx + width, y - derivationy); + pol.addPoint(x + derivationx + width, y + height - derivationy); + pol.addPoint(x + width, y + height); + pol.addPoint(x, y + height); + if (pol.contains(x1, y1)) { + return this; + } + + return null; + } + + public String getStereotype() { + return stereotype; + + } + + public String getNodeName() { + return name; + } + + public int getIndex() { + return index; + } + + public int getClusterIndex() { + return cluster_index; + } + + public boolean editOndoubleClick(JFrame frame) { + boolean error = false; + String errors = ""; + int tmp; + String tmpName; + + JDialogADDTTYNode dialog = new JDialogADDTTYNode(frame, "Setting TTY attributes", this); + // dialog.setSize(500, 450); + GraphicLib.centerOnParent(dialog, 500, 450); + dialog.setVisible( true ); // blocked until dialog has been closed + + if (!dialog.isRegularClose()) { + return false; + } + + if (dialog.getNodeName().length() != 0) { + tmpName = dialog.getNodeName(); + tmpName = tmpName.trim(); + if (!TAttribute.isAValidId(tmpName, false, false)) { + error = true; + errors += "Name of the node "; + } else { + name = tmpName; + } + } + + + + if (dialog.getIndex().length() != 0) { + try { + tmp = index; + index = Integer.decode(dialog.getIndex()).intValue(); + if (index < 0) { + index = tmp; + error = true; + errors += "index "; + } + } catch (Exception e) { + error = true; + errors += "index "; + } + } + + if (dialog.getClusterIndex().length() != 0) { + try { + tmp = cluster_index; + index = Integer.decode(dialog.getClusterIndex()).intValue(); + if (index < 0) { + index = tmp; + error = true; + errors += "cluster index "; + } + } catch (Exception e) { + error = true; + errors += "cluster index "; + } + } + + + if (error) { + JOptionPane.showMessageDialog(frame, + "Invalid value for the following attributes: " + errors, + "Error", + JOptionPane.INFORMATION_MESSAGE); + return false; + } + + return true; + } + + + public int getType() { + return TGComponentManager.ADD_TTYNODE; + } + + protected String translateExtraParam() { + StringBuffer sb = new StringBuffer("<extraparam>\n"); + sb.append("<info stereotype=\"" + stereotype + "\" nodeName=\"" + name); + sb.append("\" />\n"); + sb.append("<attributes index=\"" + index + "\" "); + sb.append("cluster_index=\"" + cluster_index + "\" "); + //sb.append(" clockRatio=\"" + clockRatio + "\""); + sb.append("/>\n"); + sb.append("</extraparam>\n"); + return new String(sb); + } + + @Override + public void loadExtraParam(NodeList nl, int decX, int decY, int decId) throws MalformedModelingException{ + // + try { + + NodeList nli; + Node n1, n2; + Element elt; + // int t1id; + String sstereotype = null, snodeName = null; + + for(int i=0; i<nl.getLength(); i++) { + n1 = nl.item(i); + // + if (n1.getNodeType() == Node.ELEMENT_NODE) { + nli = n1.getChildNodes(); + for(int j=0; j<nli.getLength(); j++) { + n2 = nli.item(j); + // + if (n2.getNodeType() == Node.ELEMENT_NODE) { + elt = (Element) n2; + if (elt.getTagName().equals("info")) { + sstereotype = elt.getAttribute("stereotype"); + snodeName = elt.getAttribute("nodeName"); + } + if (sstereotype != null) { + stereotype = sstereotype; + } + if (snodeName != null){ + name = snodeName; + } + + if (elt.getTagName().equals("attributes")) { + + index = Integer.decode(elt.getAttribute("index")).intValue(); + cluster_index = Integer.decode(elt.getAttribute("cluster_index")).intValue(); + } + } + } + } + } + + } catch (Exception e) { + throw new MalformedModelingException(); + } + } + + public int getDefaultConnector() { + return TGComponentManager.ADD_CONNECTOR; + } + + + public String getAttributes() { + String attr = ""; + attr += "index = " + index + "\n"; + return attr; + } + +} diff --git a/src/main/java/ui/tmldd/TMLArchiAnalogNode.java b/src/main/java/ui/tmldd/TMLArchiAnalogNode.java deleted file mode 100755 index 839af5165c0c883e3bc68238560c1b34567eca23..0000000000000000000000000000000000000000 --- a/src/main/java/ui/tmldd/TMLArchiAnalogNode.java +++ /dev/null @@ -1,585 +0,0 @@ -/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille - * - * ludovic.apvrille AT enst.fr - * - * This software is a computer program whose purpose is to allow the - * edition of TURTLE analysis, design and deployment diagrams, to - * allow the generation of RT-LOTOS or Java code from this diagram, - * and at last to allow the analysis of formal validation traces - * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP - * from INRIA Rhone-Alpes. - * - * This software is governed by the CeCILL license under French law and - * abiding by the rules of distribution of free software. You can use, - * modify and/ or redistribute the software under the terms of the CeCILL - * license as circulated by CEA, CNRS and INRIA at the following URL - * "http://www.cecill.info". - * - * As a counterpart to the access to the source code and rights to copy, - * modify and redistribute granted by the license, users are provided only - * with a limited warranty and the software's author, the holder of the - * economic rights, and the successive licensors have only limited - * liability. - * - * In this respect, the user's attention is drawn to the risks associated - * with loading, using, modifying and/or developing or reproducing the - * software by the user in light of its specific status of free software, - * that may mean that it is complicated to manipulate, and that also - * therefore means that it is reserved for developers and experienced - * professionals having in-depth computer knowledge. Users are therefore - * encouraged to load and test the software's suitability as regards their - * requirements in conditions enabling the security of their systems and/or - * data to be ensured and, more generally, to use and operate it in the - * same conditions as regards security. - * - * The fact that you are presently reading this means that you have had - * knowledge of the CeCILL license and that you accept its terms. - */ - - - - -package ui.tmldd; - -import myutil.GraphicLib; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import tmltranslator.HwAnalog; -//import tmltranslator.modelcompiler.ArchUnitMEC; -import ui.*; -import ui.util.IconManager; -import ui.window.JDialogAnalogNode; - -import javax.swing.*; -import java.awt.*; -import java.util.Vector; - -/** - * Class TMLAnalogNode - * Node. To be used in TML architecture diagrams. - * Creation: 07/02/2018 - * @version 1.1 07/02/2018 - * @author Ludovic APVRILLE, Matteo BERTOLINO - */ -public class TMLArchiAnalogNode extends TMLArchiNode implements SwallowTGComponent, WithAttributes, TMLArchiElementInterface { - private int textY1 = 15; - private int textY2 = 30; - private int derivationx = 2; - private int derivationy = 3; - private String stereotype = "Analog"; - - private int byteDataSize = HwAnalog.DEFAULT_BYTE_DATA_SIZE; - private int goIdleTime = HwAnalog.DEFAULT_GO_IDLE_TIME; - private int maxConsecutiveIdleCycles = HwAnalog.DEFAULT_MAX_CONSECUTIVE_IDLE_CYCLES; - private int execiTime = HwAnalog.DEFAULT_EXECI_TIME; - private int execcTime = HwAnalog.DEFAULT_EXECC_TIME; - private int capacity = HwAnalog.DEFAULT_CAPACITY; - private int mappingPenalty = HwAnalog.DEFAULT_MAPPING_PENALTY; - private int reconfigurationTime = HwAnalog.DEFAULT_RECONFIGURATION_TIME; - - private String operation = ""; - - private String scheduling = ""; - - - public TMLArchiAnalogNode(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); - - width = 250; - height = 200; - minWidth = 150; - minHeight = 100; - - nbConnectingPoint = 16; - connectingPoint = new TGConnectingPoint[16]; - - connectingPoint[0] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 0.0, 0.0); - connectingPoint[1] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 0.5, 0.0); - connectingPoint[2] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 1.0, 0.0); - connectingPoint[3] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 0.0, 0.5); - connectingPoint[4] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 1.0, 0.5); - connectingPoint[5] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 0.0, 1.0); - connectingPoint[6] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 0.5, 1.0); - connectingPoint[7] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 1.0, 1.0); - - connectingPoint[8] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 0.25, 0.0); - connectingPoint[9] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 0.75, 0.0); - connectingPoint[10] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 0.0, 0.25); - connectingPoint[11] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 1.0, 0.25); - connectingPoint[12] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 0.0, 0.75); - connectingPoint[13] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 1.0, 0.75); - connectingPoint[14] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 0.25, 1.0); - connectingPoint[15] = new TMLArchiConnectingPoint(this, 0, 0, false, true, 0.75, 1.0); - - addTGConnectingPointsComment(); - - nbInternalTGComponent = 0; - - moveable = true; - editable = true; - removable = true; - userResizable = true; - - name = tdp.findNodeName("Analog"); - value = "name"; - - myImageIcon = IconManager.imgic700;//DG ToDo image - } - - public void internalDrawing(Graphics g) { - Color c = g.getColor(); - g.draw3DRect(x, y, width, height, true); - - - // Top lines - g.drawLine(x, y, x + derivationx, y - derivationy); - g.drawLine(x + width, y, x + width + derivationx, y - derivationy); - g.drawLine(x + derivationx, y - derivationy, x + width + derivationx, y - derivationy); - - // Right lines - g.drawLine(x + width, y + height, x + width + derivationx, y - derivationy + height); - g.drawLine(x + derivationx + width, y - derivationy, x + width + derivationx, y - derivationy + height); - - // Filling color - g.setColor(ColorManager.CPU_BOX_1); - g.fill3DRect(x+1, y+1, width-1, height-1, true); - g.setColor(c); - - // Strings - String ster = "<<" + stereotype + ">>"; - int w = g.getFontMetrics().stringWidth(ster); - Font f = g.getFont(); - g.setFont(f.deriveFont(Font.BOLD)); - g.drawString(ster, x + (width - w)/2, y + textY1); - g.setFont(f); - w = g.getFontMetrics().stringWidth(name); - g.drawString(name, x + (width - w)/2, y + textY2); - - // Icon - g.drawImage(IconManager.imgic1120.getImage(), x + 4, y + 4, null); - //g.drawImage(IconManager.img9, x + width - 20, y + 4, null); - } - - public TGComponent isOnOnlyMe(int x1, int y1) { - - Polygon pol = new Polygon(); - pol.addPoint(x, y); - pol.addPoint(x + derivationx, y - derivationy); - pol.addPoint(x + derivationx + width, y - derivationy); - pol.addPoint(x + derivationx + width, y + height - derivationy); - pol.addPoint(x + width, y + height); - pol.addPoint(x, y + height); - if (pol.contains(x1, y1)) { - return this; - } - - return null; - } - - - public String getNodeName() { - return name; - } - - public boolean editOndoubleClick(JFrame frame) { - boolean error = false; - String errors = ""; - int tmp; - String tmpName; - - JDialogAnalogNode dialog = new JDialogAnalogNode(frame, "Setting Analog attributes", this); - dialog.setSize(500, 450); - GraphicLib.centerOnParent(dialog, 500, 450 ); - // dialog.show(); // blocked until dialog has been closed - dialog.setVisible( true ); - - if (!dialog.isRegularClose()) { - return false; - } - - if (dialog.getNodeName().length() != 0) { - tmpName = dialog.getNodeName(); - tmpName = tmpName.trim(); - if (!TAttribute.isAValidId(tmpName, false, false, false)) { - error = true; - errors += "Name of the node "; - } else { - name = tmpName; - } - } - - - if (dialog.getCapacity().length() != 0) { - try { - tmp = capacity; - capacity = Integer.decode(dialog.getCapacity()).intValue(); - if (capacity <= 0) { - capacity = tmp; - error = true; - errors += "Capacity "; - } - } catch (Exception e) { - error = true; - errors += "Capacity "; - } - } - - if (dialog.getMappingPenalty().length() != 0) { - try { - tmp = mappingPenalty; - mappingPenalty = Integer.decode(dialog.getMappingPenalty()).intValue(); - if (mappingPenalty < 0) { - mappingPenalty = tmp; - error = true; - errors += "Mapping penalty "; - } - } catch (Exception e) { - error = true; - errors += "Mapping penalty "; - } - } - - if (dialog.getReconfigurationTime().length() != 0) { - try { - tmp = reconfigurationTime; - reconfigurationTime = Integer.decode(dialog.getReconfigurationTime()).intValue(); - if (reconfigurationTime <= 0) { - reconfigurationTime = tmp; - error = true; - errors += "Reconfiguration time "; - } - } catch (Exception e) { - error = true; - errors += "Reconfiguration time "; - } - } - - if (dialog.getByteDataSize().length() != 0) { - try { - tmp = byteDataSize; - byteDataSize = Integer.decode(dialog.getByteDataSize()).intValue(); - if (byteDataSize <= 0) { - byteDataSize = tmp; - error = true; - errors += "Data size "; - } - } catch (Exception e) { - error = true; - errors += "Data size "; - } - } - - - if (dialog.getGoIdleTime().length() != 0) { - try { - tmp = goIdleTime; - goIdleTime = Integer.decode(dialog.getGoIdleTime()).intValue(); - if (goIdleTime < 0) { - goIdleTime = tmp; - error = true; - errors += "Go idle time "; - } - } catch (Exception e) { - error = true; - errors += "Go idle time "; - } - } - - if (dialog.getMaxConsecutiveIdleCycles().length() != 0) { - try { - tmp = goIdleTime; - maxConsecutiveIdleCycles = Integer.decode(dialog.getMaxConsecutiveIdleCycles()).intValue(); - if (maxConsecutiveIdleCycles < 0) { - maxConsecutiveIdleCycles = tmp; - error = true; - errors += "Max consecutive idle cycles "; - } - } catch (Exception e) { - error = true; - errors += "Max consecutive idle cycles "; - } - } - - if (dialog.getExeciTime().length() != 0) { - try { - tmp = execiTime; - execiTime = Integer.decode(dialog.getExeciTime()).intValue(); - if (execiTime < 0) { - execiTime = tmp; - error = true; - errors += "execi time "; - } - } catch (Exception e) { - error = true; - errors += "execi time "; - } - } - - if (dialog.getExeccTime().length() != 0) { - try { - tmp = execcTime; - execcTime = Integer.decode(dialog.getExeccTime()).intValue(); - if (execcTime < 0) { - execcTime = tmp; - error = true; - errors += "execc time "; - } - } catch (Exception e) { - error = true; - errors += "execc time "; - } - } - - - if (dialog.getClockRatio().length() != 0) { - try { - tmp = clockRatio; - clockRatio = Integer.decode(dialog.getClockRatio()).intValue(); - if (clockRatio < 1) { - clockRatio = tmp; - error = true; - errors += "Clock divider "; - } - } catch (Exception e) { - error = true; - errors += "Clock divider "; - } - } - - operation = dialog.getOperation().trim(); - scheduling = dialog.getScheduling().trim(); - - - if (error) { - JOptionPane.showMessageDialog(frame, - "Invalid value for the following attributes: " + errors, - "Error", - JOptionPane.INFORMATION_MESSAGE); - return false; - } - - return true; - } - - - public int getType() { - return TGComponentManager.TMLARCHI_ANALOGNODE; - } - - public boolean acceptSwallowedTGComponent(TGComponent tgc) { - return tgc instanceof TMLArchiArtifact; - - } - - public boolean addSwallowedTGComponent(TGComponent tgc, int x, int y) { - - //Set its coordinates - if (tgc instanceof TMLArchiArtifact) { - tgc.setFather(this); - tgc.setDrawingZone(true); - tgc.resizeWithFather(); - addInternalComponent(tgc, 0); - return true; - } - - return false; - } - - public void removeSwallowedTGComponent(TGComponent tgc) { - removeInternalComponent(tgc); - } - - public Vector<TMLArchiArtifact> getArtifactList() { - Vector<TMLArchiArtifact> v = new Vector<TMLArchiArtifact>(); - - for(int i=0; i<nbInternalTGComponent; i++) { - if (tgcomponent[i] instanceof TMLArchiArtifact) { - v.add( (TMLArchiArtifact) tgcomponent[i] ); - } - } - return v; - } - - public void hasBeenResized() { - for(int i=0; i<nbInternalTGComponent; i++) { - if (tgcomponent[i] instanceof TMLArchiArtifact) { - tgcomponent[i].resizeWithFather(); - } - } - } - - protected String translateExtraParam() { - StringBuffer sb = new StringBuffer("<extraparam>\n"); - sb.append("<info stereotype=\"" + stereotype + "\" nodeName=\"" + name); - sb.append("\" />\n"); - sb.append("<attributes capacity=\"" + capacity + "\" byteDataSize=\"" + byteDataSize + "\" "); - sb.append(" mappingPenalty=\"" + mappingPenalty + "\" "); - sb.append(" reconfigurationTime=\"" + reconfigurationTime + "\" "); - sb.append(" goIdleTime=\"" + goIdleTime + "\" "); - sb.append(" maxConsecutiveIdleCycles=\"" + maxConsecutiveIdleCycles + "\" "); - sb.append(" execiTime=\"" + execiTime + "\""); - sb.append(" execcTime=\"" + execcTime + "\""); - sb.append(" clockRatio=\"" + clockRatio + "\""); - sb.append(" operation =\"" + operation + "\" "); - sb.append(" scheduling =\"" + scheduling + "\" "); - sb.append("/>\n"); - sb.append("</extraparam>\n"); - return new String(sb); - } - - @Override - public void loadExtraParam(NodeList nl, int decX, int decY, int decId) throws MalformedModelingException{ - // - try { - - NodeList nli; - Node n1, n2; - Element elt; - // int t1id; - String sstereotype = null, snodeName = null; - String operationTypesTmp; - - for(int i=0; i<nl.getLength(); i++) { - n1 = nl.item(i); - // - - if (n1.getNodeType() == Node.ELEMENT_NODE) { - nli = n1.getChildNodes(); - - // Issue #17 copy-paste error on j index - for(int j=0; j<nli.getLength(); j++) { - n2 = nli.item(j); - // - if (n2.getNodeType() == Node.ELEMENT_NODE) { - elt = (Element) n2; - if (elt.getTagName().equals("info")) { - sstereotype = elt.getAttribute("stereotype"); - snodeName = elt.getAttribute("nodeName"); - } - if (sstereotype != null) { - stereotype = sstereotype; - } - if (snodeName != null){ - name = snodeName; - } - - if (elt.getTagName().equals("attributes")) { - try { - // the "try" statement is for retro compatibility - capacity = Integer.decode(elt.getAttribute("capacity")).intValue(); - } catch (Exception e) { - } - byteDataSize = Integer.decode(elt.getAttribute("byteDataSize")).intValue(); - mappingPenalty =Integer.decode(elt.getAttribute("mappingPenalty")).intValue(); - goIdleTime = Integer.decode(elt.getAttribute("goIdleTime")).intValue(); - reconfigurationTime = Integer.decode(elt.getAttribute("reconfigurationTime")).intValue(); - - if ((elt.getAttribute("execiTime") != null) && (elt.getAttribute("execiTime").length() > 0)){ - execiTime = Integer.decode(elt.getAttribute("execiTime")).intValue(); - } - if ((elt.getAttribute("execcTime") != null) && (elt.getAttribute("execcTime").length() > 0)){ - execcTime = Integer.decode(elt.getAttribute("execcTime")).intValue(); - } - if ((elt.getAttribute("maxConsecutiveIdleCycles") != null) && (elt.getAttribute("maxConsecutiveIdleCycles").length() > 0)){ - maxConsecutiveIdleCycles = Integer.decode(elt.getAttribute("maxConsecutiveIdleCycles")).intValue(); - } - if ((elt.getAttribute("clockRatio") != null) && (elt.getAttribute("clockRatio").length() > 0)){ - clockRatio = Integer.decode(elt.getAttribute("clockRatio")).intValue(); - } - /*if ((elt.getAttribute("MECType") != null) && (elt.getAttribute("MECType").length() > 0)){ - if( elt.getAttribute("MECType").length() > 1 ) { //old format - MECType = ArchUnitMEC.Types.get(0); - } - else { - MECType = ArchUnitMEC.Types.get( Integer.valueOf( elt.getAttribute("MECType") ) ); - } - }*/ - operation = elt.getAttribute("operation"); - if (operation == null) { - operation = ""; - } - - scheduling = elt.getAttribute("scheduling"); - if (scheduling == null) { - scheduling = ""; - } - - } - } - } - } - } - - } catch (Exception e) { - throw new MalformedModelingException(); - } - } - - public int getDefaultConnector() { - return TGComponentManager.CONNECTOR_NODE_TMLARCHI; - } - - public int getCapacity(){ - return capacity; - } - - public int getByteDataSize(){ - return byteDataSize; - } - - public int getReconfigurationTime(){ - return reconfigurationTime; - } - - public int getGoIdleTime(){ - return goIdleTime; - } - - public int getMaxConsecutiveIdleCycles(){ - return maxConsecutiveIdleCycles; - } - - public int getExeciTime(){ - return execiTime; - } - - public int getExeccTime(){ - return execcTime; - } - - public int getMappingPenalty(){ - return mappingPenalty; - } - - public String getOperation() { - return operation; - } - - public String getScheduling() { - return scheduling; - } - - - public String getAttributes() { - String attr = ""; - attr += "Data size (in byte) = " + byteDataSize + "\n"; - attr += "Capacity = " + capacity + "\n"; - attr += "Mapping penalty (percentage) = " + mappingPenalty + "\n"; - attr += "Reconfiguration time = " + reconfigurationTime + "\n"; - attr += "Go in idle mode (in cycle) = " + goIdleTime + "\n"; - attr += "Idle cycles to go idle = " + maxConsecutiveIdleCycles + "\n"; - attr += "EXECI exec. time (in cycle) = " + execiTime + "\n"; - attr += "EXECC exec. time (in cycle) = " + execcTime + "\n"; - attr += "Operation = " + operation + "\n"; - attr += "Scheduling = " + scheduling + "\n"; - attr += "Clock divider = " + clockRatio + "\n"; - return attr; - - } - - public int getComponentType() { - return CONTROLLER; - } - -} diff --git a/src/main/java/ui/tmldd/TMLArchiDiagramToolBar.java b/src/main/java/ui/tmldd/TMLArchiDiagramToolBar.java index ec03387239b388616181c8b798786aee508b3c43..bafabffb53668394b36c7fac7107305590de9e32 100755 --- a/src/main/java/ui/tmldd/TMLArchiDiagramToolBar.java +++ b/src/main/java/ui/tmldd/TMLArchiDiagramToolBar.java @@ -77,7 +77,6 @@ public class TMLArchiDiagramToolBar extends TToolBar implements ActionListener mgui.actions[TGUIAction.TMLARCHI_LINK].setEnabled(b); mgui.actions[TGUIAction.TMLARCHI_CPUNODE].setEnabled(b); mgui.actions[TGUIAction.TMLARCHI_FPGANODE].setEnabled(b); - mgui.actions[TGUIAction.TMLARCHI_ANALOGNODE].setEnabled(b); mgui.actions[TGUIAction.TMLARCHI_HWANODE].setEnabled(b); mgui.actions[TGUIAction.TMLARCHI_BUSNODE].setEnabled(b); mgui.actions[TGUIAction.TMLARCHI_CPNODE].setEnabled(b); @@ -134,11 +133,7 @@ public class TMLArchiDiagramToolBar extends TToolBar implements ActionListener button = this.add(mgui.actions[TGUIAction.TMLARCHI_FPGANODE]); button.addMouseListener(mgui.mouseHandler); } - - if (mgui.isExperimentalOn()) { - button = this.add(mgui.actions[TGUIAction.TMLARCHI_ANALOGNODE]); - button.addMouseListener(mgui.mouseHandler); - } + button = this.add(mgui.actions[TGUIAction.TMLARCHI_ARTIFACT]); button.addMouseListener(mgui.mouseHandler); diff --git a/src/main/java/ui/window/JDialogAnalogNode.java b/src/main/java/ui/window/JDialogAnalogNode.java deleted file mode 100644 index 7e86c34178de2850da16082edc60ca24cb50f9fe..0000000000000000000000000000000000000000 --- a/src/main/java/ui/window/JDialogAnalogNode.java +++ /dev/null @@ -1,300 +0,0 @@ -/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille - * - * ludovic.apvrille AT enst.fr - * - * This software is a computer program whose purpose is to allow the - * edition of TURTLE analysis, design and deployment diagrams, to - * allow the generation of RT-LOTOS or Java code from this diagram, - * and at last to allow the analysis of formal validation traces - * obtained from external tools, e.g. RTL from LAAS-CNRS and CADP - * from INRIA Rhone-Alpes. - * - * This software is governed by the CeCILL license under French law and - * abiding by the rules of distribution of free software. You can use, - * modify and/ or redistribute the software under the terms of the CeCILL - * license as circulated by CEA, CNRS and INRIA at the following URL - * "http://www.cecill.info". - * - * As a counterpart to the access to the source code and rights to copy, - * modify and redistribute granted by the license, users are provided only - * with a limited warranty and the software's author, the holder of the - * economic rights, and the successive licensors have only limited - * liability. - * - * In this respect, the user's attention is drawn to the risks associated - * with loading, using, modifying and/or developing or reproducing the - * software by the user in light of its specific status of free software, - * that may mean that it is complicated to manipulate, and that also - * therefore means that it is reserved for developers and experienced - * professionals having in-depth computer knowledge. Users are therefore - * encouraged to load and test the software's suitability as regards their - * requirements in conditions enabling the security of their systems and/or - * data to be ensured and, more generally, to use and operate it in the - * same conditions as regards security. - * - * The fact that you are presently reading this means that you have had - * knowledge of the CeCILL license and that you accept its terms. - */ - - -package ui.window; - -import myutil.GraphicLib; -import tmltranslator.modelcompiler.ArchUnitMEC; -import ui.ColorManager; -import ui.interactivesimulation.SimulationTransaction; -import ui.tmldd.TMLArchiAnalogNode; - -import javax.swing.*; -import java.awt.*; -import java.awt.event.*; -import java.math.BigDecimal; -import java.util.*; - -/** - * Class JDialogAnalog - * Dialog for managing attributes of cpu nodes - * Creation: 07/02/2018 - * - * @author Ludovic APVRILLE - * @version 2.0 05/03/2019 - */ -public class JDialogAnalogNode extends JDialogBase implements ActionListener { - - private boolean regularClose; - - private JPanel panel2, panel4, panel5; - // private Frame frame; - private TMLArchiAnalogNode node; - - - protected JTextField nodeName; - - // Panel2 - protected JTextField byteDataSize, goIdleTime, maxConsecutiveIdleCycles, clockRatio, execiTime, execcTime, - capacity, mappingPenalty, reconfigurationTime, operation, scheduling; - - // Tabbed pane for panel1 and panel2 - //private JTabbedPane tabbedPane; - - - /* - * Creates new form - */ - public JDialogAnalogNode(Frame _frame, String _title, TMLArchiAnalogNode _node) { - super(_frame, _title, true); - // frame = _frame; - node = _node; - initComponents(); - // myInitComponents(); - pack(); - } -// -// private void myInitComponents() { -// } - - private void initComponents() { - Container c = getContentPane(); - GridBagLayout gridbag0 = new GridBagLayout(); - GridBagLayout gridbag2 = new GridBagLayout(); - GridBagLayout gridbag4 = new GridBagLayout(); - GridBagConstraints c0 = new GridBagConstraints(); - //GridBagConstraints c1 = new GridBagConstraints(); - GridBagConstraints c2 = new GridBagConstraints(); - GridBagConstraints c4 = new GridBagConstraints(); - - setFont(new Font("Helvetica", Font.PLAIN, 14)); - c.setLayout(gridbag0); - - setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); - - - panel2 = new JPanel(); - panel2.setLayout(gridbag2); - panel2.setBorder(new javax.swing.border.TitledBorder("Attributes")); - panel2.setPreferredSize(new Dimension(400, 300)); - - // Issue #41 Ordering of tabbed panes - //tabbedPane = GraphicLib.createTabbedPane();//new JTabbedPane(); - - c2.gridwidth = 1; - c2.gridheight = 1; - c2.weighty = 1.0; - c2.weightx = 1.0; - c2.fill = GridBagConstraints.HORIZONTAL; - panel2.add(new JLabel("CPU name:"), c2); - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - nodeName = new JTextField(node.getNodeName(), 30); - nodeName.setEditable(true); - nodeName.setFont(new Font("times", Font.PLAIN, 12)); - panel2.add(nodeName, c2); - - - c2.gridwidth = 1; - panel2.add(new JLabel("Data size (in byte):"), c2); - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - byteDataSize = new JTextField("" + node.getByteDataSize(), 15); - panel2.add(byteDataSize, c2); - - c2.gridwidth = 1; - panel2.add(new JLabel("Overall mapping capacity:"), c2); - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - capacity = new JTextField("" + node.getCapacity(), 15); - panel2.add(capacity, c2); - - c2.gridwidth = 1; - panel2.add(new JLabel("Mapping penalty:"), c2); - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - mappingPenalty = new JTextField("" + node.getMappingPenalty(), 15); - panel2.add(mappingPenalty, c2); - - c2.gridwidth = 1; - panel2.add(new JLabel("Reconfiguration time:"), c2); - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - reconfigurationTime = new JTextField("" + node.getReconfigurationTime(), 15); - panel2.add(reconfigurationTime, c2); - - - c2.gridwidth = 1; - panel2.add(new JLabel("Go idle time (in cycle):"), c2); - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - goIdleTime = new JTextField("" + node.getGoIdleTime(), 15); - panel2.add(goIdleTime, c2); - - c2.gridwidth = 1; - panel2.add(new JLabel("Max consecutive cycles before idle (in cycle):"), c2); - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - maxConsecutiveIdleCycles = new JTextField("" + node.getMaxConsecutiveIdleCycles(), 15); - panel2.add(maxConsecutiveIdleCycles, c2); - - c2.gridwidth = 1; - panel2.add(new JLabel("EXECI execution time (in cycle):"), c2); - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - execiTime = new JTextField("" + node.getExeciTime(), 15); - panel2.add(execiTime, c2); - - c2.gridwidth = 1; - panel2.add(new JLabel("EXECC execution time (in cycle):"), c2); - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - execcTime = new JTextField("" + node.getExeccTime(), 15); - panel2.add(execcTime, c2); - - c2.gridwidth = 1; - panel2.add(new JLabel("Operation:"), c2); - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - operation = new JTextField(""+node.getOperation(), 15); - panel2.add(operation, c2); - - c2.gridwidth = 1; - panel2.add(new JLabel("Scheduling:"), c2); - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - scheduling = new JTextField(""+node.getScheduling(), 15); - panel2.add(scheduling, c2); - - c2.gridwidth = 1; - panel2.add(new JLabel("Clock divider:"), c2); - c2.gridwidth = GridBagConstraints.REMAINDER; //end row - clockRatio = new JTextField("" + node.getClockRatio(), 15); - panel2.add(clockRatio, c2); - - - // main panel; - c0.gridheight = 10; - c0.weighty = 1.0; - c0.weightx = 1.0; - c0.gridwidth = GridBagConstraints.REMAINDER; //end row - c0.fill = GridBagConstraints.BOTH; - c.add(panel2, c0); - - c0.gridwidth = 1; - c0.gridheight = 1; - c0.fill = GridBagConstraints.HORIZONTAL; - - initButtons(c0, c, this); - } - - public void actionPerformed(ActionEvent evt) { - /* if (evt.getSource() == typeBox) { - boolean b = ((Boolean)(initValues.elementAt(typeBox.getSelectedIndex()))).booleanValue(); - initialValue.setEnabled(b); - return; - }*/ - -// if (evt.getSource() == tracemode) { -// selectedTracemode = tracemode.getSelectedIndex(); -// } - - String command = evt.getActionCommand(); - - // Compare the action command to the known actions. - if (command.equals("Save and Close")) { - closeDialog(); - } else if (command.equals("Cancel")) { - cancelDialog(); - } - } - - public void closeDialog() { - regularClose = true; - dispose(); - } - - public void cancelDialog() { - dispose(); - } - - public boolean isRegularClose() { - return regularClose; - } - - public String getNodeName() { - return nodeName.getText(); - } - - public String getCapacity() { - return capacity.getText(); - } - - public String getByteDataSize() { - return byteDataSize.getText(); - } - - public String getReconfigurationTime() { - return reconfigurationTime.getText(); - } - - public String getMappingPenalty() { - return mappingPenalty.getText(); - } - - public String getGoIdleTime() { - return goIdleTime.getText(); - } - - public String getMaxConsecutiveIdleCycles() { - return maxConsecutiveIdleCycles.getText(); - } - - public String getExeciTime() { - return execiTime.getText(); - } - - public String getExeccTime() { - return execcTime.getText(); - } - - public String getOperation() { - return operation.getText(); - } - - public String getScheduling() { - return scheduling.getText(); - } - - - public String getClockRatio() { - return clockRatio.getText(); - } - - -}