Commit 27b624e0 authored by Come Demarigny [l3]'s avatar Come Demarigny [l3]
Browse files

add of System C-AMS Graphical UI

parent a2e03f11
/* 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 heterogeneoustranslator.systemCAMStranslator;
import javax.swing.*;
import java.awt.*;
import java.util.LinkedList;
import java.util.Vector;
import ui.*;
/**
* Class CAMSBlocks
* Simulation Block for SystemC-AMS Diagrams
* Creation: 28/08/2017
* @version 1.0 28/08/2017
* @author Côme DEMARIGNY
*/
public class CAMSBlocks{
private String name;
private int nbOfIn;
private int nbOfOut;
private LinkedList<TAttribute> myAttributes;
private LinkedList<CAMSSignal> mySignals;
private String [] processCode;
public CAMSBlocks(String _name, int _nbOfIn, int _nbOfOut, LinkedList<TAttribute> _myAttributes, LinkedList<CAMSSignal> _mySignals, String [] _processCode){
name=_name;
nbOfIn=_nbOfIn;
nbOfOut=_nbOfOut;
myAttributes=_myAttributes;
mySignals=_mySignals;
processCode=_processCode;
}
public void setBlockName(String newName){
name = newName;
}
public void setNbOfIn(int newIn){
nbOfIn = newIn;
}
public void setNbOfOut(int newOut){
nbOfOut = newOut;
}
public void setMyAttributes(LinkedList<TAttribute> newMyAttributes){
myAttributes = newMyAttributes;
}
public void setMySignals(LinkedList<CAMSSignal> newMySignals){
mySignals = newMySignals;
}
public void setProcessCode(String[] newProcessCode){
processCode = newProcessCode;
}
public String getBlockName(){
return name;
}
public int getNbOfIn() {
return nbOfIn;
}
public int getNbOfOut() {
return nbOfOut;
}
public LinkedList<TAttribute> getMyAttributes(){
return myAttributes;
}
public LinkedList<CAMSSignal> getMySignals(){
return mySignals;
}
public String[] getProcessCode(){
return processCode;
}
}
\ No newline at end of file
/* 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 heterogeneoustranslator.systemCAMStranslator;
import javax.swing.*;
import java.awt.*;
import java.util.LinkedList;
import java.util.Vector;
import ui.*;
/**
* Class CAMSConnection
* Connection beetwen blocks for SystemC-AMS Diagrams
* Creation: 30/08/2017
* @version 1.0 30/08/2017
* @author Côme DEMARIGNY
*/
public class CAMSConnection{
public String name;
public CAMSBlocks inputBlock, outputBlock;
public int rate;
public int type;
public CAMSConnection(CAMSBlocks _inputBlock, CAMSBlock _outputBlock){
inputBlock = _inputBlock;
outputBlock = _outputBlock;
}
public CAMSBlock getInputBlock(){
return inputBlock;
}
public CAMSBlock getOutputBlock(){
return outputBlock;
}
}
\ No newline at end of file
/* 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 heterogeneoustranslator.systemCAMStranslator;
import myutil.GraphicLib;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import ui.*;
import ui.het.*;
import ui.util.IconManager;
import ui.window.JDialogCAMSBlocks;
import javax.swing.*;
import java.awt.*;
import java.util.LinkedList;
import java.util.Vector;
/**
* Class CAMSSignal
* Signals for SystemC-AMS Diagrams
* Creation: 27/06/2017
* @version 1.0 27/06/2017
* @author Côme DEMARIGNY
*/
public class CAMSSignal {
public final static int IN = 0;
public final static int OUT= 1;
public final static int INCORRECT=-1;
private static int i=0;
private String name;
public int inout;
public CAMSSignal (String _name, int _inout) {
inout = _inout;
}
public CAMSSignal makeclone(){
return this;
}
public static CAMSSignal isAValidSignal(String _name, int _inout) {
if (_inout==INCORRECT) {
return null;
}
String s = signalName(_name);
CAMSSignal cs = new CAMSSignal(s, _inout);
return cs;
}
public int getInout(){
return inout;
}
public static String signalName(String _n){
String s="";
s+= _n + ": " + signalID();
return s;
}
public static int signalID(){i++;return i;}
}
\ No newline at end of file
/* Copyright or (C) or Copr. GET / ENST, Telecom-Paris, Ludovic Apvrille
* Daniela Genius, Lip6, UMR 7606
*
* ludovic.apvrille AT enst.fr
* daniela.genius@lip6.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.
*/
/* * @version 1.0 04/09/2017
* @author Côme Demarigny */
package heterogeneoustranslator.systemCAMStranslator;
import java.util.LinkedList;
import java.util.List;
public class CAMSSpecification{
private List<CAMSBlocks> blocks;
private List<CAMSSignal> signals;
private List<CAMSConnection> connections;
public CAMSSpecification( List<CAMSBlocks> _blocks, List<CAMSSignal> _signals, List<CAMSConnection> _connections, int _nb_target, int _nb_init){
blocks = _blocks ;
signals = _signals ;
connections = _connections ;
nb_target = _nb_target;
nb_init = _nb_init;
}
public List<CAMSBlock> getBlock(){
return blocks;
}
public List<CAMSSignals> getSignals(){
return signals;
}
public List<CAMSConnection> getConnection(){
return connections;
}
public List<CAMSBlocks> getUnconnectedBlocks(){
List<CAMSBlocks> unconnectedBlocks;
for(CAMSBlocks block : blocks){
for(CAMSConnections connection : connections){
if (block == connection.getInputBlock() || block == connection.getOutputBlock()){
break;
}
else {
unconnectedBlocks.add(block);
}
}
}
return unconnectedBlocks;
}
public list<CAMSSignals> getunconnectedSignals(){
list<CAMSSignals> unconnectedSignals;
return unconnectedSignals;
}
}
/* 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;
import myutil.GraphicLib;
import ui.het.CAMSBlockDiagramToolBar;
import ui.het.CAMSBlockDiagramPanel;
import ui.util.IconManager;
import ui.TDiagramPanel;
import ui.window.JDialogCAMSBlocks;
import javax.swing.*;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import java.awt.*;
import java.util.Vector;
/**
* Class SystemCAMSPanel
* Managenemt of TML architecture panels
* Creation: 23/06/2017
* @version 0.1 23/06/2107
* @author Côme DEMARIGNY
* @see MainGUI
*/
public class SystemCAMSPanel extends TURTLEPanel {
public SystemCAMSPanel scp;
public CAMSBlockDiagramPanel camsbdp;
public TURTLEPanel tp;
public TDiagramPanel tdp;
public Vector<TGComponent> validated, ignored;
public SystemCAMSPanel(MainGUI _mgui) {
super(_mgui);
tabbedPane = GraphicLib.createTabbedPane();//new JTabbedPane();
cl = new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e){
mgui.paneDesignAction(e);
}
};
tabbedPane.addChangeListener(cl);
tabbedPane.addMouseListener(new TURTLEPanelPopupListener(this, mgui));
}
public void init() {
// Class Diagram toolbar
CAMSBlockDiagramToolBar camstoolBar = new CAMSBlockDiagramToolBar(mgui);
toolbars.add(camstoolBar);
toolBarPanel = new JPanel();
toolBarPanel.setLayout(new BorderLayout());
//Class Diagram Panel
camsbdp = new CAMSBlockDiagramPanel(mgui, camstoolBar);
camsbdp.setName("SystemC-AMS Diagram");
// Diagram toolbar
camsbdp.tp = this;
tp = scp;
panels.add(camsbdp); // Always first in list
JScrollDiagramPanel jsp = new JScrollDiagramPanel(camsbdp);
camsbdp.jsp = jsp;
jsp.setWheelScrollingEnabled(true);
jsp.getVerticalScrollBar().setUnitIncrement( MainGUI.INCREMENT );
toolBarPanel.add(camstoolBar, BorderLayout.NORTH);
toolBarPanel.add(jsp, BorderLayout.CENTER);
tabbedPane.addTab("SystemC-AMS Diagram", IconManager.imgic60, toolBarPanel, "opens SystemC-AMS diagram");
tabbedPane.setSelectedIndex(0);
mgui.changeMade(camsbdp, TDiagramPanel.NEW_COMPONENT);
}
public String saveHeaderInXml(String extensionToName) {
if (extensionToName == null) {
return "<Modeling type=\"SystemC-AMS\" nameTab=\"" + mgui.getTabName(this) + "\" >\n";
}
return "<Modeling type=\"SystemC-AMS\" nameTab=\"" + mgui.getTabName(this) + extensionToName +"\" >\n";
}
public String saveTailInXml() {
return "</Modeling>\n\n\n";
}
public String toString() {
return mgui.getTitleAt(this) + " (SystemC-AMS Diagram)";
}
public void renameMapping(String oldName, String newName) {
if (scp != null) {
scp.renameMapping(oldName, newName);
}
}
public CAMSBlockDiagramPanel getCAMSBlockDiagramPanel(){
return camsbdp;
}
}
/* 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