package it.isislab.sof.client.application.ui.newsimulation;
import it.isislab.sof.core.engine.hadoop.sshclient.utils.simulation.Simulation;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import javax.swing.*;
import javax.swing.border.*;
public class NewSimulationPanel extends JPanel {
private String sim_name="";
public NewSimulationPanel(String sim_name, NewSimulationProcess newSimulationProcess) {
this.sim_name=sim_name;
this.sproc=newSimulationProcess;
initComponents();
initMyComponents();
}
private NewSimulationProcess sproc=null;
private void initComponents() {
panel1 = new JPanel();
label1 = new JLabel();
label2 = new JLabel();
label3 = new JLabel();
textFieldAuthor = new JTextField();
comboBoxToolkit = new JComboBox<>();
comboBoxMode = new JComboBox<>();
label4 = new JLabel();
scrollPane1 = new JScrollPane();
textArea1 = new JTextArea();
panel3 = new JPanel();
labelModelFile = new JLabel();
label6 = new JLabel();
label7 = new JLabel();
label8 = new JLabel();
label9 = new JLabel();
label10 = new JLabel();
textFieldSimCommand = new JTextField();
textFieldSelectionCommand = new JTextField();
textFieldEvaluateCommand = new JTextField();
textFieldSelectionFunctionFIle = new JTextField();
textFieldModelFile = new JTextField();
textFieldEvaluateFunctionFile = new JTextField();
panel4 = new JPanel();
buttonNext = new JButton();
//======== this ========
//======== panel1 ========
{
panel1.setBorder(new TitledBorder("Simulation details"));
//---- label1 ----
label1.setText("Author:");
//---- label2 ----
label2.setText("Simulation toolkit:");
//---- label3 ----
label3.setText("Mode:");
//---- comboBoxToolkit ----
comboBoxToolkit.setModel(new DefaultComboBoxModel<>(new String[] {
"MASON",
"NetLogo",
"Generic"
}));
//---- comboBoxMode ----
comboBoxMode.setModel(new DefaultComboBoxModel<>(new String[] {
"Parameters Space Exploration (PSE)",
"SImulation Optimization (SO)"
}));
//---- label4 ----
label4.setText("Description:");
//======== scrollPane1 ========
{
scrollPane1.setViewportView(textArea1);
}
GroupLayout panel1Layout = new GroupLayout(panel1);
panel1.setLayout(panel1Layout);
panel1Layout.setHorizontalGroup(
panel1Layout.createParallelGroup()
.addGroup(panel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(panel1Layout.createParallelGroup()
.addGroup(panel1Layout.createSequentialGroup()
.addGroup(panel1Layout.createParallelGroup()
.addComponent(label2)
.addComponent(label3))
.addGroup(panel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
.addGroup(panel1Layout.createSequentialGroup()
.addGap(7, 7, 7)
.addGroup(panel1Layout.createParallelGroup()
.addComponent(comboBoxMode, GroupLayout.DEFAULT_SIZE, 288, Short.MAX_VALUE)
.addComponent(scrollPane1, GroupLayout.PREFERRED_SIZE, 283, GroupLayout.PREFERRED_SIZE)))
.addGroup(panel1Layout.createSequentialGroup()
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panel1Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
.addComponent(comboBoxToolkit, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 285, Short.MAX_VALUE)
.addComponent(textFieldAuthor, GroupLayout.Alignment.TRAILING, GroupLayout.DEFAULT_SIZE, 285, Short.MAX_VALUE)))))
.addComponent(label4)
.addComponent(label1))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panel1Layout.setVerticalGroup(
panel1Layout.createParallelGroup()
.addGroup(panel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(panel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label1)
.addComponent(textFieldAuthor, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(panel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label2)
.addComponent(comboBoxToolkit, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(panel1Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label3)
.addComponent(comboBoxMode, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addPreferredGap(LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(panel1Layout.createParallelGroup()
.addComponent(label4)
.addComponent(scrollPane1, GroupLayout.PREFERRED_SIZE, 117, GroupLayout.PREFERRED_SIZE))
.addContainerGap())
);
}
//======== panel3 ========
{
panel3.setBorder(new TitledBorder("Simulation Optimization details"));
//---- label5 ----
labelModelFile.setText("Simulation model:");
//---- label6 ----
label6.setText("Simulation toolkit command:");
//---- label7 ----
label7.setText("Selection function:");
//---- label8 ----
label8.setText("Selection command:");
//---- label9 ----
label9.setText("Evaluate function:");
//---- label10 ----
label10.setText("Evaluate command:");
GroupLayout panel3Layout = new GroupLayout(panel3);
panel3.setLayout(panel3Layout);
panel3Layout.setHorizontalGroup(
panel3Layout.createParallelGroup()
.addGroup(panel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(panel3Layout.createParallelGroup()
.addComponent(label6)
.addComponent(label8)
.addComponent(label10)
.addComponent(label7)
.addComponent(labelModelFile)
.addComponent(label9))
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
.addComponent(textFieldSelectionCommand, GroupLayout.DEFAULT_SIZE, 205, Short.MAX_VALUE)
.addComponent(textFieldEvaluateCommand)
.addComponent(textFieldSelectionFunctionFIle)
.addComponent(textFieldModelFile)
.addComponent(textFieldEvaluateFunctionFile)
.addComponent(textFieldSimCommand, GroupLayout.DEFAULT_SIZE, 205, Short.MAX_VALUE))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
panel3Layout.setVerticalGroup(
panel3Layout.createParallelGroup()
.addGroup(panel3Layout.createSequentialGroup()
.addGap(10, 10, 10)
.addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(labelModelFile)
.addComponent(textFieldModelFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label6)
.addComponent(textFieldSimCommand, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label7)
.addComponent(textFieldSelectionFunctionFIle, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label8)
.addComponent(textFieldSelectionCommand, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label9)
.addComponent(textFieldEvaluateFunctionFile, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addGap(18, 18, 18)
.addGroup(panel3Layout.createParallelGroup(GroupLayout.Alignment.BASELINE)
.addComponent(label10)
.addComponent(textFieldEvaluateCommand, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE))
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}
//======== panel4 ========
{
//---- button1 ----
buttonNext.setText("Next");
GroupLayout panel4Layout = new GroupLayout(panel4);
panel4.setLayout(panel4Layout);
panel4Layout.setHorizontalGroup(
panel4Layout.createParallelGroup()
.addGroup(GroupLayout.Alignment.TRAILING, panel4Layout.createSequentialGroup()
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonNext)
.addContainerGap())
);
panel4Layout.setVerticalGroup(
panel4Layout.createParallelGroup()
.addGroup(GroupLayout.Alignment.TRAILING, panel4Layout.createSequentialGroup()
.addGap(0, 0, Short.MAX_VALUE)
.addComponent(buttonNext))
);
}
GroupLayout layout = new GroupLayout(this);
setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup()
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(GroupLayout.Alignment.LEADING, false)
.addComponent(panel1, GroupLayout.PREFERRED_SIZE, 450, GroupLayout.PREFERRED_SIZE)
.addComponent(panel3, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(panel4, GroupLayout.DEFAULT_SIZE, GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(25, Short.MAX_VALUE))
);
layout.setVerticalGroup(
layout.createParallelGroup()
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(panel1, GroupLayout.PREFERRED_SIZE, 292, GroupLayout.PREFERRED_SIZE)
.addGap(14, 14, 14)
.addComponent(panel3, GroupLayout.PREFERRED_SIZE, 301, GroupLayout.PREFERRED_SIZE)
.addPreferredGap(LayoutStyle.ComponentPlacement.RELATED)
.addComponent(panel4, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
.addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}
private void initMyComponents()
{
// DefaultComboBoxModel<String> model_mode=new DefaultComboBoxModel<String>();
// model_mode.addElement("Parameters Space Exploration (PSE)");
// model_mode.addElement("Simulaiton Optimization (SO)");
// comboBoxMode.setModel(model_mode);
//
//
//
// DefaultComboBoxModel<String> model_Toolkit=new DefaultComboBoxModel<String>();
// model_Toolkit.addElement("MASON");
// model_Toolkit.addElement("NetLogo");
// model_Toolkit.addElement("Generic");
//
// comboBoxToolkit.setModel(model_Toolkit);
comboBoxToolkit.setSelectedIndex(0);
comboBoxToolkit.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if(((String)comboBoxToolkit.getSelectedItem()).equalsIgnoreCase("generic")){
textFieldSimCommand.setEnabled(true);
}else{
textFieldSimCommand.setEnabled(false);
}
}
});
comboBoxMode.setSelectedIndex(0);
comboBoxMode.addActionListener (new ActionListener () {
public void actionPerformed(ActionEvent e) {
if(((String)comboBoxMode.getSelectedItem()).contains("SO"))
{
switchSOPanel(true);
}
else{
switchSOPanel(false);
}
}
});
switchSOPanel(false);
buttonNext.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
buttonNextActionPerformed(e);
}
});
textFieldModelFile.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser fc = new JFileChooser();
fc.setDialogTitle("Select your simulation model");
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
if(textFieldModelFile.getText().isEmpty())
fc.setCurrentDirectory(new File("."));
else
fc.setCurrentDirectory(new File(textFieldModelFile.getText()));
fc.setMultiSelectionEnabled(false);
if (fc.showOpenDialog(textFieldModelFile)== JFileChooser.APPROVE_OPTION)
textFieldModelFile.setText(fc.getSelectedFile().getAbsolutePath());
else
JOptionPane.showMessageDialog(textFieldModelFile, "Selection failed!\nPlease select your simulation model");
}
});
textFieldSelectionFunctionFIle.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser fc = new JFileChooser();
fc.setDialogTitle("Select your Selection function executable");
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
if(textFieldSelectionFunctionFIle.getText().isEmpty())
fc.setCurrentDirectory(new File("."));
else
fc.setCurrentDirectory(new File(textFieldSelectionFunctionFIle.getText()));
fc.setMultiSelectionEnabled(false);
if (fc.showOpenDialog(textFieldSelectionFunctionFIle)== JFileChooser.APPROVE_OPTION)
textFieldSelectionFunctionFIle.setText(fc.getSelectedFile().getAbsolutePath());
else
JOptionPane.showMessageDialog(textFieldSelectionFunctionFIle, "Selection failed!\nPlease select your selection function executable");
}
});
textFieldEvaluateFunctionFile.addMouseListener(new MouseListener() {
@Override
public void mouseReleased(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mousePressed(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseExited(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseEntered(MouseEvent e) {
// TODO Auto-generated method stub
}
@Override
public void mouseClicked(MouseEvent e) {
JFileChooser fc = new JFileChooser();
fc.setDialogTitle("Select your evaluate function executable");
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
if(textFieldEvaluateFunctionFile.getText().isEmpty())
fc.setCurrentDirectory(new File("."));
else
fc.setCurrentDirectory(new File(textFieldEvaluateFunctionFile.getText()));
fc.setMultiSelectionEnabled(false);
if (fc.showOpenDialog(textFieldEvaluateFunctionFile)== JFileChooser.APPROVE_OPTION)
textFieldEvaluateFunctionFile.setText(fc.getSelectedFile().getAbsolutePath());
else
JOptionPane.showMessageDialog(textFieldEvaluateFunctionFile, "Selection failed!\nPlease select your evaluate function executable");
}
});
}
private void switchSOPanel(boolean status)
{
// boolean status=!panel3.isEnabled();
//panel3.setEnabled(status);
textFieldSimCommand.setEnabled(status);
textFieldSelectionCommand.setEnabled(status);
textFieldEvaluateCommand.setEnabled(status);
textFieldSelectionFunctionFIle.setEnabled(status);
//textFieldModelFile.setEnabled(status);
textFieldEvaluateFunctionFile.setEnabled(status);
//labelModelFile.setEnabled(status);
label6.setEnabled(status);
label7.setEnabled(status);
label8.setEnabled(status);
label9.setEnabled(status);
label10.setEnabled(status);
}
protected void buttonNextActionPerformed(ActionEvent e) {
sim = new Simulation();
author=textFieldAuthor.getText();
mode=(String) comboBoxMode.getSelectedItem();
toolkit=(String) comboBoxToolkit.getSelectedItem();
descr=textArea1.getText();
if( author.isEmpty() )
{
JOptionPane.showMessageDialog(this, "You must fulfill all fields.");
return;
}
sim.setAuthor(author);
sim.setToolkit(toolkit);
sim.setDescription(descr);
sim.setLoop(isLoop());
sim.setName(sim_name);
sproc.setDomainView();
simdirpath=textFieldModelFile.getText();
if(isLoop())
{
simcommand=textFieldSimCommand.getText();
//simdirpath=textFieldModelFile.getText();
selcommand=textFieldSelectionCommand.getText();
selpath=textFieldSelectionFunctionFIle.getText();
evalcomma=textFieldEvaluateCommand.getText();
evalpath=textFieldEvaluateFunctionFile.getText();
if( simcommand.isEmpty() || simdirpath.isEmpty() || selcommand.isEmpty() || selpath.isEmpty()
|| evalcomma.isEmpty() || evalpath.isEmpty())
{
JOptionPane.showMessageDialog(this, "You must fulfill all fields.");
return;
}
}
}
private boolean isLoop(){
return (((String)comboBoxMode.getSelectedItem()).contains("SO"))?true:false;
}
public Simulation getSim(){
return sim;
}
public String author;
public String mode;
public String toolkit;
public String descr;
public String simcommand;
public String simdirpath;
public String selcommand;
public String selpath;
public String evalcomma;
public String evalpath;
private JPanel panel1;
private Simulation sim;
private JLabel label1;
private JLabel label2;
private JLabel label3;
private JTextField textFieldAuthor;
private JComboBox comboBoxToolkit;
private JComboBox comboBoxMode;
private JLabel label4;
private JScrollPane scrollPane1;
private JTextArea textArea1;
private JPanel panel3;
private JLabel labelModelFile;
private JLabel label6;
private JLabel label7;
private JLabel label8;
private JLabel label9;
private JLabel label10;
private JTextField textFieldSimCommand;
private JTextField textFieldSelectionCommand;
private JTextField textFieldEvaluateCommand;
private JTextField textFieldSelectionFunctionFIle;
private JTextField textFieldModelFile;
private JTextField textFieldEvaluateFunctionFile;
private JPanel panel4;
private JButton buttonNext;
}