Skip to content
Snippets Groups Projects
Commit e1a8c0a4 authored by Daniela Genius's avatar Daniela Genius
Browse files

mainGUI

parent 4e3b776e
No related branches found
No related tags found
No related merge requests found
package ui.window;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;
import myutil.*;
import ui.*;
import avatartranslator.*;
import avatartranslator.toexecutable.*;
import launcher.*;
import ui.interactivesimulation.*;
import ddtranslatorSoclib.toSoclib.*;
import ddtranslatorSoclib.toTopCell.*;
import ddtranslatorSoclib.*;
import ui.avatardd.*;
import ui.avatarbd.*;
// -----------------------------------------------------
public class JDialogAvatarddExecutableCodeGeneration extends javax.swing.JFrame implements ActionListener, Runnable, MasterProcessInterface {
private static String[] unitTab = {"usec", "msec", "sec"};
protected Frame f;
protected MainGUI mgui;
private String textSysC1 = "Base directory of code generation code Soclib :";
private String textSysC2 = "Compile executable code in";
private String textSysC10 = "Base directory of code generation code TopCell";
private String textSysC3 = "Base directory of code generation code TopCell :";
private String textSysC4 = "Run code:";
private String textSysC5 = "Run code and trace events (if enabled at code generation):";
private String textSysC6 = "Run code in soclib / mutekh:";
private String textSysC8 = "Show trace from file:";
private String textSysC9 = "Show trace from soclib file:";
private static String unitCycle = "1";
//modif DG
private static String[] codes = {"AVATAR TOPCELL", "AVATAR TOPCELL, TASKS AND MAIN"};
private static int selectedItem = 0;
private static int selectedRun = 1;
private static int selectedCompile = 0;
private static int selectedViewTrace = 0;
private static boolean static_putUserCode = true;
protected static String pathCode;
protected static String pathCompiler;
protected static String pathExecute;
protected static String pathExecuteWithTracing;
protected static String pathCompileSoclib;
protected static String pathExecuteSoclib;
protected static String pathSoclibTraceFile;
protected static String pathCodeTopCell;
protected static String pathCodeSocLib;
protected static boolean optimizeModeSelected = true;
protected final static int NOT_STARTED = 1;
protected final static int STARTED = 2;
protected final static int STOPPED = 3;
private static
int mode;
//components
protected JTextArea jta;
protected JButton start;
protected JButton stop;
protected JButton close;
protected JRadioButton exe, exeint, exetrace, exesoclib, compile, compilesoclib, viewtrace, viewtracesoclib;
protected ButtonGroup compilegroup, exegroup, viewgroup;
protected JLabel gen;
protected JTextField code1, code2, compiler1, compiler2, exe1, exe2, exe3, exe4, exe2int, simulationTraceFile, simulationsoclibTraceFile;
protected JTabbedPane jp1;
protected JScrollPane jsp;
protected JComboBox versionCodeGenerator, units;
protected JButton showSimulationTrace;
private static int selectedUnit = 2;
private static boolean removeCFilesValue = true;
private static boolean removeXFilesValue = true;
private static boolean removeCCFilesValue = true;
private static boolean debugValue = false;
private static boolean tracingValue = true;
private static boolean optimizeValue = true;
private Thread t;
private boolean go = false;
private boolean hasError = false;
protected boolean startProcess = false;
private String hostExecute;
private RshClient rshc;
/** Creates new form */
public JDialogAvatarddExecutableCodeGeneration(Frame _f, MainGUI _mgui, String title, String _hostExecute, String _pathCodeSocLib , String _pathCodeTopCell, String _pathCompilerSoclib, String _pathSoclibTraceFile) {
super(title);
f = _f;
mgui = _mgui;
if (pathCodeSocLib == null) {
pathCodeSocLib = _pathCodeSocLib;
}
if (pathSoclibTraceFile == null){
pathSoclibTraceFile = _pathSoclibTraceFile;
}
if (pathCodeTopCell == null){
pathCodeTopCell = _pathCodeTopCell;
}
hostExecute = _hostExecute;
initComponents();
myInitComponents();
pack();
//getGlassPane().addMouseListener( new MouseAdapter() {});
getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
}
protected void myInitComponents() {
mode = NOT_STARTED;
setButtons();
}
protected void initComponents() {
Container c = getContentPane();
setFont(new Font("Helvetica", Font.PLAIN, 14));
c.setLayout(new BorderLayout());
//setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jp1 = new JTabbedPane();
JPanel jp01 = new JPanel();
GridBagLayout gridbag01 = new GridBagLayout();
GridBagConstraints c01 = new GridBagConstraints();
jp01.setLayout(gridbag01);
jp01.setBorder(new javax.swing.border.TitledBorder("Code generation"));
c01.gridheight = 1;
c01.weighty = 1.0;
c01.weightx = 1.0;
c01.gridwidth = GridBagConstraints.REMAINDER; //end row
c01.fill = GridBagConstraints.BOTH;
c01.gridheight = 1;
gen = new JLabel(textSysC1);
//genJava.addActionListener(this);
jp01.add(gen, c01);
code1 = new JTextField(pathCodeSocLib, 100);
jp01.add(code1, c01);
// -----------------------------------------------
// path code for TopCell
gen = new JLabel(textSysC10);
//genJava.addActionListener(this);
jp01.add(gen, c01);
code2 = new JTextField(pathCodeTopCell, 100);
jp01.add(code2, c01);
// ---------------------------------------------
jp01.add(new JLabel(" "), c01);
c01.gridwidth = GridBagConstraints.REMAINDER; //end row
jp01.add(new JLabel("Code generator used:"), c01);
versionCodeGenerator = new JComboBox(codes);
versionCodeGenerator.setSelectedIndex(selectedItem);
versionCodeGenerator.addActionListener(this);
jp01.add(versionCodeGenerator, c01);
jp01.add(new JLabel(" "), c01);
jp1.add("Generate code and topcell", jp01);
c.add(jp1, BorderLayout.NORTH);
jta = new ScrolledJTextArea();
jta.setEditable(false);
jta.setMargin(new Insets(10, 10, 10, 10));
jta.setTabSize(3);
jta.append("Select options and then, click on 'start' to launch code generation\n");
Font f = new Font("Courrier", Font.BOLD, 12);
jta.setFont(f);
jsp = new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
c.add(jsp, BorderLayout.CENTER);
start = new JButton("Start", IconManager.imgic53);
stop = new JButton("Stop", IconManager.imgic55);
close = new JButton("Close", IconManager.imgic27);
start.setPreferredSize(new Dimension(100, 30));
stop.setPreferredSize(new Dimension(100, 30));
close.setPreferredSize(new Dimension(100, 30));
start.addActionListener(this);
stop.addActionListener(this);
close.addActionListener(this);
JPanel jp2 = new JPanel();
jp2.add(start);
jp2.add(stop);
jp2.add(close);
c.add(jp2, BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent evt) {
String command = evt.getActionCommand();
// Compare the action command to the known actions.
if (command.equals("Start")) {
startProcess();
} else if (command.equals("Stop")) {
stopProcess();
} else if (command.equals("Close")) {
closeDialog();
} else if (evt.getSource() == versionCodeGenerator) {
selectedItem = versionCodeGenerator.getSelectedIndex();
} else if (evt.getSource() == units) {
selectedUnit = units.getSelectedIndex();
}else if ((evt.getSource() == exe) || (evt.getSource() == exetrace)|| (evt.getSource() == exesoclib)) {
makeSelectionExecute();
}
}
public void makeSelectionExecute() {
if (exe.isSelected()) {
selectedRun = 0;
} else {
if (exetrace.isSelected()) {
selectedRun = 1;
} /*else {
selectedRun = 2;
}*/
}
exe2.setEnabled(selectedRun == 0);
exe3.setEnabled(selectedRun == 1);
//exe4.setEnabled(selectedRun == 2);
}
public void closeDialog() {
if (mode == STARTED) {
stopProcess();
}
dispose();
}
public void stopProcess() {
System.err.println("stop process ! ");
try {
rshc.stopFillJTA();
} catch (LauncherException le) {
}
rshc = null;
mode = STOPPED;
setButtons();
go = false;
}
public void startProcess() {
startProcess = false;
t = new Thread(this);
mode = STARTED;
setButtons();
go = true;
t.start();
}
private void testGo() throws InterruptedException {
if (go == false) {
throw new InterruptedException("Stopped by user");
}
}
public void run() {
String cmd;
String list, data;
int cycle = 0;
hasError = false;
try {
selectedItem = versionCodeGenerator.getSelectedIndex();
if (selectedItem == 0) {
System.err.println("AVATAR ");
// Code generation
if (jp1.getSelectedIndex() == 0) {
jta.append("Generating TopCell \n");
System.err.println("AVATAR TOPCELL");
testGo();
selectedUnit = 1;//DG 29.10.
//selectedUnit = units.getSelectedIndex();
ADDDiagramPanel deploymentDiagramPanel = mgui.getFirstAvatarDeploymentPanelFound();
AvatarDeploymentPanelTranslator avdeploymenttranslator = new AvatarDeploymentPanelTranslator(deploymentDiagramPanel);
AvatarddSpecification avddspec = avdeploymenttranslator.getAvatarddSpecification();
// Generating code
if ( avddspec == null) {
jta.append("Error: No AVATAR Deployemnt specification\n");
} else {
System.err.println("AVATAR TOPCELL found");
TopCellGenerator topCellGenerator = new TopCellGenerator(avddspec);
testGo();
jta.append("Generation of TopCell executable code: done\n");
try {
jta.append("Saving code in files\n");
pathCode = code2.getText();
topCellGenerator.saveFile(pathCode);
jta.append("Code saved\n");
} catch (Exception e) {
jta.append("Could not generate files\n");
}
}
}
}
testGo();
// generation code Soclib ---------------------------------------
// generation Soclib / TopCell
if (selectedItem == 1) {
jta.append("Generating executable code (SOCLIB version)\n");
//testGo();
selectedUnit = 1;//DG 29.10.
//selectedUnit = units.getSelectedIndex();
//System.out.println("Selected item=" + selectedItem);
// get Design Panel
AvatarDesignPanel designDiagramPanel = mgui.getFirstAvatarDesignPanelFound();
AvatarDesignPanelTranslator avdesigntranslator = new AvatarDesignPanelTranslator( designDiagramPanel);
LinkedList<AvatarBDBlock> adp = designDiagramPanel.getAvatarBDPanel().getFullBlockList();
Vector blocks = new Vector(adp);
AvatarSpecification avaspec = avdesigntranslator.generateAvatarSpecification(blocks);
// get Deployment Panel
ADDDiagramPanel deploymentDiagramPanel = mgui.getFirstAvatarDeploymentPanelFound();
AvatarDeploymentPanelTranslator avdeploymenttranslator = new AvatarDeploymentPanelTranslator(deploymentDiagramPanel);
AvatarddSpecification avddspec = avdeploymenttranslator.getAvatarddSpecification();
// Generating code
if (avaspec == null) {
jta.append("Error: No AVATAR Design specification\n");
}else if( avddspec == null){
jta.append("Error: No AVATAR Deployment specification\n");
} else {
// julien -----------------------------------------
TopCellGenerator topCellGenerator = new TopCellGenerator(avddspec);
TasksAndMainGenerator gene = new TasksAndMainGenerator(avddspec,avaspec);
// gene.includeUserCode(putUserCode.isSelected());
// gene.setTimeUnit(selectedUnit);
// gene. generateSoclib(debugmode.isSelected(), tracemode.isSelected());
// --------------------------------------------------
//testGo();
jta.append("Generation of Soclib executable code: done\n");
try {
jta.append("Saving code in files\n");
pathCode = code2.getText();
gene.saveInFiles(pathCode);
pathCode = code2.getText();
topCellGenerator.saveFile(pathCode);
//tml2systc.saveFile(pathCode, "appmodel");
jta.append("Code saved\n");
} catch (Exception e) {
jta.append("Could not generate files\n");
}
}
}
}catch (InterruptedException ie) {
jta.append("Interrupted\n");
}
jta.append("\n\nReady to process next command\n");
checkMode();
setButtons();
}
protected void processCmd(String cmd, JTextArea _jta) throws LauncherException {
rshc.setCmd(cmd);
rshc.sendProcessRequest();
rshc.fillJTA(_jta);
return;
}
protected void checkMode() {
mode = NOT_STARTED;
}
protected void setButtons() {
switch(mode) {
case NOT_STARTED:
start.setEnabled(true);
stop.setEnabled(false);
close.setEnabled(true);
//setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
getGlassPane().setVisible(false);
break;
case STARTED:
start.setEnabled(false);
stop.setEnabled(true);
close.setEnabled(false);
getGlassPane().setVisible(true);
//setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
break;
case STOPPED:
default:
start.setEnabled(false);
stop.setEnabled(false);
close.setEnabled(true);
getGlassPane().setVisible(false);
break;
}
}
public boolean hasToContinue() {
return (go == true);
}
public void appendOut(String s) {
jta.append(s);
}
public void setError() {
hasError = true;
}
}
\ 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.
*
* /**
* Class JDialogAvatarExecutableCodeGeneration
* Dialog for managing the generation and compilation of AVATAR executable code
* Creation: 29/03/2011
* @version 1.1 29/03/2011
* @author Ludovic APVRILLE
* @author (added deployment diagrams) Julien Henon, Daniela GENIUS
* @see
*/
package ui.window;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;
import myutil.*;
import ui.*;
import avatartranslator.*;
import avatartranslator.toexecutable.*;
import launcher.*;
import ui.interactivesimulation.*;
import ddtranslatorSoclib.toSoclib.*;
import ddtranslatorSoclib.toTopCell.*;
import ddtranslatorSoclib.*;
import ui.avatardd.*;
public class JDialogAvatarddExecutableCodeGeneration extends javax.swing.JFrame implements ActionListener, Runnable, MasterProcessInterface {
private static String[] unitTab = {"usec", "msec", "sec"};
protected Frame f;
protected MainGUI mgui;
private String textSysC1 = "Base directory of code generation:";
private String textSysC2 = "Compile executable code in";
private String textSysC3 = "Compile soclib executable with";
//private String textSysC3 = "with";
private String textSysC4 = "Run code:";
private String textSysC5 = "Run code and trace events (if enabled at code generation):";
private String textSysC6 = "Run code in soclib / mutekh:";
private String textSysC8 = "Show trace from file:";
private String textSysC9 = "Show trace from soclib file:";
private static String unitCycle = "1";
//modif DG
//private static String[] codes = {"AVATAR CPOSIX", "AVATAR SOCLIB"};
private static String[] codes = {"AVATAR SOCLIB"};
private static int selectedItem = 0;
private static int selectedRun = 1;
private static int selectedCompile = 0;
private static int selectedViewTrace = 0;
private static boolean static_putUserCode = true;
protected static String pathCode;
//protected static String pathCompiler;
//protected static String pathExecute;
//protected static String pathExecuteWithTracing;
//protected static String pathCompileSoclib;
//protected static String pathExecuteSoclib;
//protected static String pathSoclibTraceFile;
protected static String pathCompileMPSoC;
protected static String pathExecuteMPSoC;
protected static boolean optimizeModeSelected = true;
protected final static int NOT_STARTED = 1;
protected final static int STARTED = 2;
protected final static int STOPPED = 3;
private static
int mode;
//components
protected JTextArea jta;
protected JButton start;
protected JButton stop;
protected JButton close;
protected JRadioButton exe, exeint, exetrace, exesoclib, compile, compilesoclib, viewtrace, viewtracesoclib;
protected ButtonGroup compilegroup, exegroup, viewgroup;
protected JLabel gen;
protected JTextField code1, code2, compiler1, compiler2, exe1, exe2, exe3, exe4, exe2int, simulationTraceFile, simulationsoclibTraceFile;
protected JTabbedPane jp1;
protected JScrollPane jsp;
protected JCheckBox removeCFiles, removeXFiles, debugmode, tracemode, optimizemode, putUserCode;
protected JComboBox versionCodeGenerator, units;
protected JButton showSimulationTrace;
private static int selectedUnit = 2;
private static boolean removeCFilesValue = true;
private static boolean removeXFilesValue = true;
private static boolean debugValue = false;
private static boolean tracingValue = true;
private static boolean optimizeValue = true;
private Thread t;
private boolean go = false;
private boolean hasError = false;
protected boolean startProcess = false;
private String hostExecute;
protected RshClient rshc;
/** Creates new form */
public JDialogAvatarddExecutableCodeGeneration(Frame _f, MainGUI _mgui, String title,
String _hostExecute,
String _pathCode,
String _pathCompileMPSoC,
String _pathExecuteMPSoC) {
super(title);
f = _f;
mgui = _mgui;
if (pathCode == null) {
pathCode = _pathCode;
}
if (pathCompileMPSoC == null) {
pathCompileMPSoC = _pathCompileMPSoC;
}
if (pathExecuteMPSoC == null) {
pathExecuteMPSoC = _pathExecuteMPSoC;
}
hostExecute = _hostExecute;
initComponents();
myInitComponents();
pack();
//getGlassPane().addMouseListener( new MouseAdapter() {});
getGlassPane().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
}
protected void myInitComponents() {
mode = NOT_STARTED;
setButtons();
makeSelectionCompile();
makeSelectionExecute();
makeSelectionViewTrace();
}
protected void initComponents() {
Container c = getContentPane();
setFont(new Font("Helvetica", Font.PLAIN, 14));
c.setLayout(new BorderLayout());
//setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jp1 = new JTabbedPane();
JPanel jp01 = new JPanel();
GridBagLayout gridbag01 = new GridBagLayout();
GridBagConstraints c01 = new GridBagConstraints();
jp01.setLayout(gridbag01);
jp01.setBorder(new javax.swing.border.TitledBorder("Code generation"));
JPanel jp02 = new JPanel();
GridBagLayout gridbag02 = new GridBagLayout();
GridBagConstraints c02 = new GridBagConstraints();
jp02.setLayout(gridbag02);
jp02.setBorder(new javax.swing.border.TitledBorder("Compilation"));
JPanel jp03 = new JPanel();
GridBagLayout gridbag03 = new GridBagLayout();
GridBagConstraints c03 = new GridBagConstraints();
jp03.setLayout(gridbag03);
jp03.setBorder(new javax.swing.border.TitledBorder("Execution"));
JPanel jp04 = new JPanel();
GridBagLayout gridbag04 = new GridBagLayout();
GridBagConstraints c04 = new GridBagConstraints();
jp04.setLayout(gridbag04);
jp04.setBorder(new javax.swing.border.TitledBorder("Simulation trace"));
c01.gridheight = 1;
c01.weighty = 1.0;
c01.weightx = 1.0;
c01.gridwidth = GridBagConstraints.REMAINDER; //end row
c01.fill = GridBagConstraints.BOTH;
c01.gridheight = 1;
gen = new JLabel(textSysC1);
//genJava.addActionListener(this);
jp01.add(gen, c01);
code1 = new JTextField(pathCode, 100);
jp01.add(code1, c01);
jp01.add(new JLabel(" "), c01);
c01.gridwidth = GridBagConstraints.REMAINDER; //end row
removeCFiles = new JCheckBox("Remove .c / .h files");
removeCFiles.setSelected(removeCFilesValue);
jp01.add(removeCFiles, c01);
removeXFiles = new JCheckBox("Remove .x files");
removeXFiles.setSelected(removeXFilesValue);
jp01.add(removeXFiles, c01);
debugmode = new JCheckBox("Put debug information in generated code");
debugmode.setSelected(debugValue);
jp01.add(debugmode, c01);
tracemode = new JCheckBox("Put tracing capabilities in generated code");
tracemode.setSelected(tracingValue);
jp01.add(tracemode, c01);
optimizemode = new JCheckBox("Optimize code");
optimizemode.setSelected(optimizeModeSelected);
jp01.add(optimizemode, c01);
putUserCode = new JCheckBox("Include user code");
putUserCode.setSelected(static_putUserCode);
jp01.add(putUserCode, c01);
jp01.add(new JLabel("1 time unit ="), c01);
units = new JComboBox(unitTab);
units.setSelectedIndex(selectedUnit);
units.addActionListener(this);
jp01.add(units, c01);
jp01.add(new JLabel("Code generator used:"), c01);
versionCodeGenerator = new JComboBox(codes);
versionCodeGenerator.setSelectedIndex(selectedItem);
versionCodeGenerator.addActionListener(this);
jp01.add(versionCodeGenerator, c01);
//System.out.println("selectedItem=" + selectedItem);
//devmode = new JCheckBox("Development version of the simulator");
//devmode.setSelected(true);
//jp01.add(devmode, c01);
jp01.add(new JLabel(" "), c01);
jp1.add("Generate code", jp01);
// Panel 02 -> compile
c02.gridheight = 1;
c02.weighty = 1.0;
c02.weightx = 1.0;
c02.gridwidth = GridBagConstraints.REMAINDER; //end row
c02.fill = GridBagConstraints.BOTH;
c02.gridheight = 1;
compilegroup = new ButtonGroup();
compile = new JRadioButton(textSysC2, false);
jp02.add(compile, c02);
compile.addActionListener(this);
compilegroup.add(compile);
//code2 = new JTextField(pathCode, 100);
//jp02.add(code2, c02);
//jp02.add(new JLabel("with"), c02);
compiler1 = new JTextField(pathCompileMPSoC, 100);
jp02.add(compiler1, c02);
jp02.add(new JLabel(" "), c02);
compilesoclib = new JRadioButton(textSysC3, false);
compilesoclib.addActionListener(this);
jp02.add(compilesoclib, c02);
compilegroup.add(compilesoclib);
compiler2 = new JTextField(pathCompileMPSoC, 100);
jp02.add(compiler2, c02);
compile.setSelected(selectedCompile == 0);
compilesoclib.setSelected(selectedCompile == 1);
jp1.add("Compile", jp02);
// Panel 03 -> Execute
c03.gridheight = 1;
c03.weighty = 1.0;
c03.weightx = 1.0;
c03.gridwidth = GridBagConstraints.REMAINDER; //end row
c03.fill = GridBagConstraints.BOTH;
c03.gridheight = 1;
exegroup = new ButtonGroup();
exe = new JRadioButton(textSysC4, false);
exe.addActionListener(this);
exegroup.add(exe);
jp03.add(exe, c03);
exe2 = new JTextField(pathExecuteMPSoC, 100);
jp03.add(exe2, c03);
exegroup.add(exe);
exetrace = new JRadioButton(textSysC5, false);
exetrace.addActionListener(this);
exegroup.add(exetrace);
jp03.add(exetrace, c03);
exe3 = new JTextField(pathExecuteMPSoC + " " + pathCode + File.separator + "trace.txt", 100);
jp03.add(exe3, c03);
exesoclib = new JRadioButton(textSysC6, false);
exesoclib.addActionListener(this);
exegroup.add(exesoclib);
jp03.add(exesoclib, c03);
exe4 = new JTextField(pathExecuteMPSoC, 100);
jp03.add(exe4, c03);
exe.setSelected(selectedRun == 0);
exetrace.setSelected(selectedRun == 1);
exesoclib.setSelected(selectedRun == 2);
/*exeint = new JRadioButton(textSysC5, true);
exeint.addActionListener(this);
exegroup.add(exeint);
//exeJava.addActionListener(this);
jp03.add(exeint, c03);
exe2int = new JTextField(pathInteractiveExecute, 100);
jp03.add(exe2int, c02);*/
jp03.add(new JLabel(" "), c03);
jp1.add("Execute", jp03);
// Panel 04 -> View trace
c04.gridheight = 1;
c04.weighty = 1.0;
c04.weightx = 1.0;
c04.gridwidth = GridBagConstraints.REMAINDER; //end row
c04.fill = GridBagConstraints.HORIZONTAL;
c04.gridheight = 1;
viewgroup = new ButtonGroup();
viewtrace = new JRadioButton(textSysC8, false);
viewgroup.add(viewtrace);
viewtrace.addActionListener(this);
jp04.add(viewtrace, c04);
simulationTraceFile = new JTextField(pathCode + File.separator + "trace.txt", 100);
jp04.add(simulationTraceFile, c04);
viewtracesoclib = new JRadioButton(textSysC9, false);
viewgroup.add(viewtracesoclib);
viewtracesoclib.addActionListener(this);
// jp04.add(viewtracesoclib, c04);
// simulationsoclibTraceFile = new JTextField(pathSoclibTraceFile, 100);
//jp04.add(simulationsoclibTraceFile, c04);
showSimulationTrace = new JButton("Show simulation trace");
showSimulationTrace.addActionListener(this);
jp04.add(showSimulationTrace, c04);
viewtrace.setSelected(selectedViewTrace == 0);
viewtracesoclib.setSelected(selectedViewTrace == 1);
jp1.add("Results", jp04);
c.add(jp1, BorderLayout.NORTH);
jta = new ScrolledJTextArea();
jta.setEditable(false);
jta.setMargin(new Insets(10, 10, 10, 10));
jta.setTabSize(3);
jta.append("Select options and then, click on 'start' to launch code generation / compilation / execution\n");
Font f = new Font("Courrier", Font.BOLD, 12);
jta.setFont(f);
jsp = new JScrollPane(jta, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS);
c.add(jsp, BorderLayout.CENTER);
start = new JButton("Start", IconManager.imgic53);
stop = new JButton("Stop", IconManager.imgic55);
close = new JButton("Close", IconManager.imgic27);
start.setPreferredSize(new Dimension(100, 30));
stop.setPreferredSize(new Dimension(100, 30));
close.setPreferredSize(new Dimension(100, 30));
start.addActionListener(this);
stop.addActionListener(this);
close.addActionListener(this);
JPanel jp2 = new JPanel();
jp2.add(start);
jp2.add(stop);
jp2.add(close);
c.add(jp2, BorderLayout.SOUTH);
}
public void actionPerformed(ActionEvent evt) {
String command = evt.getActionCommand();
// Compare the action command to the known actions.
if (command.equals("Start")) {
startProcess();
} else if (command.equals("Stop")) {
stopProcess();
} else if (command.equals("Close")) {
closeDialog();
} else if (evt.getSource() == versionCodeGenerator) {
selectedItem = versionCodeGenerator.getSelectedIndex();
} else if (evt.getSource() == units) {
selectedUnit = units.getSelectedIndex();
} else if (evt.getSource() == showSimulationTrace) {
showSimulationTrace();
} else if ((evt.getSource() == exe) || (evt.getSource() == exetrace)|| (evt.getSource() == exesoclib)) {
makeSelectionExecute();
} else if ((evt.getSource() == compile) || (evt.getSource() == compilesoclib)) {
makeSelectionCompile();
} else if ((evt.getSource() == viewtrace) || (evt.getSource() == viewtracesoclib)) {
makeSelectionViewTrace();
}
}
public void closeDialog() {
if (mode == STARTED) {
stopProcess();
}
optimizeModeSelected = optimizemode.isSelected();
removeCFilesValue = removeCFiles.isSelected();
removeXFilesValue = removeXFiles.isSelected();
debugValue = debugmode.isSelected();
tracingValue = tracemode.isSelected();
static_putUserCode = putUserCode.isSelected();
dispose();
}
public void makeSelectionExecute() {
if (exe.isSelected()) {
selectedRun = 0;
} else {
if (exetrace.isSelected()) {
selectedRun = 1;
} else {
selectedRun = 2;
}
}
exe2.setEnabled(selectedRun == 0);
exe3.setEnabled(selectedRun == 1);
exe4.setEnabled(selectedRun == 2);
}
public void makeSelectionCompile() {
if (compile.isSelected()) {
selectedCompile = 0;
} else {
selectedCompile = 1;
}
//code2.setEnabled(selectedCompile == 0);
compiler1.setEnabled(selectedCompile == 0);
compiler2.setEnabled(selectedCompile == 1);
}
public void makeSelectionViewTrace() {
if (viewtrace.isSelected()) {
selectedViewTrace = 0;
} else {
selectedViewTrace = 1;
}
simulationTraceFile.setEnabled(selectedViewTrace == 0);
// simulationsoclibTraceFile.setEnabled(selectedViewTrace == 1);
}
public void stopProcess() {
try {
rshc.stopFillJTA();
} catch (LauncherException le) {
}
rshc = null;
mode = STOPPED;
setButtons();
go = false;
}
public void startProcess() {
startProcess = false;
t = new Thread(this);
mode = STARTED;
setButtons();
go = true;
t.start();
}
private void testGo() throws InterruptedException {
if (go == false) {
throw new InterruptedException("Stopped by user");
}
}
public void run() {
String cmd;
String list, data;
int cycle = 0;
hasError = false;
try {
selectedItem = versionCodeGenerator.getSelectedIndex();
if (selectedItem == 0) {
// Code generation
if (jp1.getSelectedIndex() == 0) {
jta.append("Generating executable code (C-POSIX version)\n");
if (removeCFiles.isSelected()) {
jta.append("Removing all .h files\n");
list = FileUtils.deleteFiles(code1.getText() + AVATAR2CPOSIX.getGeneratedPath(), ".h");
if (list.length() == 0) {
jta.append("No files were deleted\n");
} else {
jta.append("Files deleted:\n" + list + "\n");
}
jta.append("Removing all .c files\n");
list = FileUtils.deleteFiles(code1.getText() + AVATAR2CPOSIX.getGeneratedPath(), ".c");
if (list.length() == 0) {
jta.append("No files were deleted\n");
} else {
jta.append("Files deleted:\n" + list + "\n");
}
}
if (removeXFiles.isSelected()) {
jta.append("Removing all .x files\n");
list = FileUtils.deleteFiles(code1.getText() , ".x");
if (list.length() == 0) {
jta.append("No files were deleted\n");
} else {
jta.append("Files deleted:\n" + list + "\n");
}
}
testGo();
selectedUnit = units.getSelectedIndex();
//System.out.println("Selected item=" + selectedItem);
AvatarSpecification avspec = mgui.gtm.getAvatarSpecification();
// Generating code
if (avspec == null) {
jta.append("Error: No AVATAR specification\n");
} else {
AVATAR2CPOSIX avatartocposix = new AVATAR2CPOSIX(avspec);
avatartocposix.includeUserCode(putUserCode.isSelected());
avatartocposix.setTimeUnit(selectedUnit);
avatartocposix.generateCPOSIX(debugmode.isSelected(), tracemode.isSelected());
testGo();
jta.append("Generation of C-POSIX executable code: done\n");
//t2j.printJavaClasses();
try {
jta.append("Saving code in files\n");
pathCode = code1.getText();
//gene.avatartocposix.saveInFiles(pathCode);//DG 27.11.
avatartocposix.saveInFiles(pathCode);
//tml2systc.saveFile(pathCode, "appmodel");
jta.append("Code saved\n");
} catch (Exception e) {
jta.append("Could not generate files\n");
}
}
}
testGo();
// Compilation
if (jp1.getSelectedIndex() == 1) {
if (selectedCompile == 0) {
cmd = compiler1.getText();
} else {
cmd = compiler2.getText();
}
jta.append("Compiling executable code with command: \n" + cmd + "\n");
rshc = new RshClient(hostExecute);
// Assuma data are on the remote host
// Command
try {
processCmd(cmd, jta);
//data = processCmd(cmd);
//jta.append(data);
jta.append("Compilation done\n");
} catch (LauncherException le) {
jta.append("Error: " + le.getMessage() + "\n");
mode = STOPPED;
setButtons();
return;
} catch (Exception e) {
mode = STOPPED;
setButtons();
return;
}
}
if (jp1.getSelectedIndex() == 2) {
try {
if (selectedRun == 0) {
cmd = exe2.getText();
} else {
if (selectedRun == 1) {
cmd = exe3.getText();
} else {
cmd = exe4.getText();
}
}
jta.append("Executing code with command: \n" + cmd + "\n");
rshc = new RshClient(hostExecute);
// Assume data are on the remote host
// Command
processCmd(cmd, jta);
//jta.append(data);
jta.append("Execution done\n");
} catch (LauncherException le) {
jta.append("Error: " + le.getMessage() + "\n");
mode = STOPPED;
setButtons();
return;
} catch (Exception e) {
mode = STOPPED;
setButtons();
return;
}
}
if ((hasError == false) && (jp1.getSelectedIndex() < 2)) {
jp1.setSelectedIndex(jp1.getSelectedIndex() + 1);
}
}
//ajoute DG
if (selectedItem == 1) {
// Code generation
if (jp1.getSelectedIndex() == 0) {
jta.append("Generating executable code (SOCLIB version)\n");
if (removeCFiles.isSelected()) {
jta.append("Removing all .h files\n");
//list = FileUtils.deleteFiles(code1.getText() + AVATAR2SOCLIB.getGeneratedPath(), ".h");
list = FileUtils.deleteFiles(code1.getText() + TasksAndMainGenerator.getGeneratedPath(), ".h");
if (list.length() == 0) {
jta.append("No files were deleted\n");
} else {
jta.append("Files deleted:\n" + list + "\n");
}
jta.append("Removing all .c files\n");
list = FileUtils.deleteFiles(code1.getText() + TasksAndMainGenerator.getGeneratedPath(), ".c");
//list = FileUtils.deleteFiles(code1.getText() + AVATAR2SOCLIB.getGeneratedPath(), ".c");
if (list.length() == 0) {
jta.append("No files were deleted\n");
} else {
jta.append("Files deleted:\n" + list + "\n");
}
}
if (removeXFiles.isSelected()) {
jta.append("Removing all .x files\n");
list = FileUtils.deleteFiles(code1.getText() , ".x");
if (list.length() == 0) {
jta.append("No files were deleted\n");
} else {
jta.append("Files deleted:\n" + list + "\n");
}
}
testGo();
selectedUnit = units.getSelectedIndex();
//System.out.println("Selected item=" + selectedItem);
AvatarSpecification avspec = mgui.gtm.getAvatarSpecification();
// Generating code
if (avspec == null) {
jta.append("Error: No AVATAR specification\n");
} else {
/* AVATAR2SOCLIB avatartocposix = new AVATAR2SOCLIB(avspec);
avatartocposix.includeUserCode(putUserCode.isSelected());
avatartocposix.setTimeUnit(selectedUnit);
avatartocposix.generateCPOSIX(debugmode.isSelected(), tracemode.isSelected());*/
// julien -----------------------------------------
ADDDiagramPanel deploymentDiagramPanel = mgui.getFirstAvatarDeploymentPanelFound();
AvatarDeploymentPanelTranslator avdeploymenttranslator = new AvatarDeploymentPanelTranslator(deploymentDiagramPanel);
AvatarddSpecification avddspec = avdeploymenttranslator.getAvatarddSpecification();
TasksAndMainGenerator gene = new TasksAndMainGenerator(avddspec,avspec);
gene.includeUserCode(putUserCode.isSelected());
gene.setTimeUnit(selectedUnit);
gene.generateSoclib(debugmode.isSelected(), tracemode.isSelected());
//DG 5.2.
TopCellGenerator topCellGenerator = new TopCellGenerator(avddspec);
testGo();
jta.append("Generation of TopCell executable code: done\n");
try {
jta.append("Saving code in files\n");
pathCode = code2.getText();
topCellGenerator.saveFile(pathCode);
jta.append("Code saved\n");
} catch (Exception e) {
jta.append("Could not generate files\n");
}
//end DG
// ----------end addition julien ----------------------------------------
testGo();
jta.append("Generation of C-SOCLIB executable code: done\n");
//t2j.printJavaClasses();
try {
jta.append("Saving code in files\n");
pathCode = code1.getText();
gene.saveInFiles(pathCode);//DG 27.11.
//avatartocposix.saveInFiles(pathCode);
//tml2systc.saveFile(pathCode, "appmodel");
jta.append("Code saved\n");
} catch (Exception e) {
jta.append("Could not generate files\n");
}
}
}
testGo();
// Compilation
if (jp1.getSelectedIndex() == 1) {
if (selectedCompile == 0) {
cmd = compiler1.getText();
} else {
cmd = compiler2.getText();
}
jta.append("Compiling executable code with command: \n" + cmd + "\n");
rshc = new RshClient(hostExecute);
// Assuma data are on the remote host
// Command
try {
processCmd(cmd, jta);
//data = processCmd(cmd);
//jta.append(data);
jta.append("Compilation done\n");
} catch (LauncherException le) {
jta.append("Error: " + le.getMessage() + "\n");
mode = STOPPED;
setButtons();
return;
} catch (Exception e) {
mode = STOPPED;
setButtons();
return;
}
}
if (jp1.getSelectedIndex() == 2) {
try {
if (selectedRun == 0) {
cmd = exe2.getText();
} else {
if (selectedRun == 1) {
cmd = exe3.getText();
} else {
cmd = exe4.getText();
}
}
jta.append("Executing code with command: \n" + cmd + "\n");
rshc = new RshClient(hostExecute);
// Assume data are on the remote host
// Command
processCmd(cmd, jta);
//jta.append(data);
jta.append("Execution done\n");
} catch (LauncherException le) {
jta.append("Error: " + le.getMessage() + "\n");
mode = STOPPED;
setButtons();
return;
} catch (Exception e) {
mode = STOPPED;
setButtons();
return;
}
}
if ((hasError == false) && (jp1.getSelectedIndex() < 2)) {
jp1.setSelectedIndex(jp1.getSelectedIndex() + 1);
}
}
//fin ajoute DG
} catch (InterruptedException ie) {
jta.append("Interrupted\n");
}
jta.append("\n\nReady to process next command\n");
checkMode();
setButtons();
//System.out.println("Selected item=" + selectedItem);
}
protected void processCmd(String cmd, JTextArea _jta) throws LauncherException {
rshc.setCmd(cmd);
rshc.sendProcessRequest();
rshc.fillJTA(_jta);
return;
}
protected void checkMode() {
mode = NOT_STARTED;
}
protected void setButtons() {
switch(mode) {
case NOT_STARTED:
start.setEnabled(true);
stop.setEnabled(false);
close.setEnabled(true);
//setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
getGlassPane().setVisible(false);
break;
case STARTED:
start.setEnabled(false);
stop.setEnabled(true);
close.setEnabled(false);
getGlassPane().setVisible(true);
//setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
break;
case STOPPED:
default:
start.setEnabled(false);
stop.setEnabled(false);
close.setEnabled(true);
getGlassPane().setVisible(false);
break;
}
}
public boolean hasToContinue() {
return (go == true);
}
public void appendOut(String s) {
jta.append(s);
}
public void setError() {
hasError = true;
}
public void showSimulationTrace() {
JFrameSimulationSDPanel jfssdp = new JFrameSimulationSDPanel(f, mgui, "Simulation trace of " + simulationTraceFile.getText());
jfssdp.setIconImage(IconManager.img8);
jfssdp.setSize(600, 600);
GraphicLib.centerOnParent(jfssdp);
if (selectedViewTrace == 0) {
jfssdp.setFileReference(simulationTraceFile.getText());
} else {
jfssdp.setFileReference(simulationsoclibTraceFile.getText());
}
jfssdp.setVisible(true);
TraceManager.addDev("Ok JFrame");
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment