package gui;
import gui.dialogs.CreateNeuralNet;
import gui.dialogs.NewSimulationDialog;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.Observable;
import java.util.Observer;
import java.util.Vector;
import org.apache.commons.io.FileUtils;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.custom.SashForm;
import org.eclipse.swt.events.PaintEvent;
import org.eclipse.swt.events.PaintListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.ShellAdapter;
import org.eclipse.swt.events.ShellEvent;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Canvas;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.FileDialog;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Scale;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.eclipse.swt.widgets.ToolBar;
import org.eclipse.swt.widgets.ToolItem;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import resources.PropertiesLoader;
import resources.digesters.ClassManager;
import resources.digesters.Plugin;
import utils.ErrorMessage;
import utils.defines.Defines;
import utils.images.ImageUtils;
import utils.logging.Logger;
import utils.logging.LoggerException;
import com.cloudgarden.resource.SWTResourceManager;
import components.gps.GPS;
import components.gps.RecognizedItems;
import components.gps.imagebased.ImageBasedGPS;
import components.neuralnetwork.ExternalNeuralNetwork;
import components.neuralnetwork.NeuralNetworkException;
import components.robot.Robot;
import components.robot.RobotGUI;
import core.simulation.Simulation;
import core.simulation.SimulationException;
/**
* <code>EasyBotApp</code> es la clase aplicaci�n, a partir de la
* cual se lanza todo el sistema. Tiene la responsabilidad de inicializar
* y recrear la interfaz gr�fica de usuario (GUI). <br><br>
*
* Esta clase no puede ser extendida.
*/
public final class EasyBotApp extends Composite implements Observer
{
// TODO: renombrar los atributos, usando nombres representativos
private Composite composite2;
private Composite customRobotStatus;
private Composite composite12;
private Composite composite5;
private Composite composite4;
private Composite composite11;
private Composite rigthTopPannel;
private Composite propertiesPannel;
private Composite composite10;
private Composite leftBottonPannel;
private Composite leftTopPannel;
private Composite leftMiddlePannel;
private Composite composite9;
private Composite composite8;
private Composite composite7;
private Composite composite6;
private Composite rightBottonPannel;
private Composite simulationPanel;
private Composite composite3;
private Composite robotStatus;
private Label label7;
private Label label6;
private Label label24;
private Label label22;
private Label label8;
private CLabel cSpeedTitle;
private Label label23;
private CLabel cLabel4;
private TableColumn simulationTableColumnDescription;
private TableColumn neuronalNetTableColumnDescription;
private Label label21;
private ToolBar toolBar4;
private Label label20;
private CLabel cLabel3;
private Label label19;
private Label label18;
private Label label17;
private Label label16;
private Label label15;
private Label label14;
private Label label13;
private Label label12;
private Label label11;
private Label label9;
private SashForm sashForm3;
private Label label5;
private Label label4;
private Label label3;
private Label label2;
private CLabel cLabel2;
private CLabel cLabel1;
private SashForm sashForm2;
private SashForm sashForm1;
private Label label1;
private Canvas sceneCanvas;
private Image background;
private GC backgroundGC;
private DecimalFormat formatter;
private RecognizedItems mazeItems;
private Image swtImage;
private SimulationBase simulationBase;
private NeuralNetworkBase neuralNetworksBase;
private boolean getStatusPanel;
private Button displayRealView;
private Button displaySchematicView;
private Composite simulationTableComposite;
private Table simulationTable;
private TableColumn simulationTableColumnPath;
private TableColumn simulationTableColumnDuration;
private TableColumn simulationTableColumnName;
private Composite neuronalNetTableComposite;
private Table neuronalNetTable;
private TableColumn neuronalNetTableColumnPath;
private TableColumn neuronalNetTableColumnName;
private TableColumn neuronalNetTableColumnType;
private TableColumn neuronalNetTableColumnSelected;
// �rbol de componentes.
private Tree worldTree;
private TreeItem rootItem;
// Controlores de simulaci�n/reproducci�n.
private ToolBar playControls;
private ToolItem playButton;
private ToolItem pauseButton;
private ToolItem stopButton;
private ToolItem recButton;
private Scale speedControl;
private Button speedReset;
private Label speedLabel;
private ToolItem newSimulationButton;
private ToolItem loadSimulationButton;
private ToolItem deleteSimulationButton;
private ToolItem newNeuronalNetButton;
private ToolItem loadNeuronalNetButton;
private ToolItem deleteNeuronalNetButton;
private static EasyBotApp inst;
private ExternalNeuralNetwork externalNN;
{
//Register as a resource user - SWTResourceManager will
//handle the obtaining and disposing of resources
SWTResourceManager.registerResourceUser(this);
}
/**
* Construye la interfaz gr�fica de usuario (GUI) principal.
* @param parent composite padre.
* @param style estilo.
* @throws EasyBotAppException
*/
public EasyBotApp(Composite parent, int style) throws EasyBotAppException
{
super(parent, style);
try
{
Logger.init();
Logger.info( "******** COMENZANDO LOGUEO ********" );
}
catch (LoggerException e)
{
ErrorMessage.customMessage( "Error inicializando el logger: " + e.getMessage() , ErrorMessage.ERROR_MESSAGE , parent );
throw new EasyBotAppException( "Error inicializando el logger: " + e.getMessage() );
}
background = new org.eclipse.swt.graphics.Image(Display.getDefault() ,
Defines.DEFAULT_IMAGE_RESOLUTION[0] ,
Defines.DEFAULT_IMAGE_RESOLUTION[1] );
backgroundGC = new GC(background);
formatter = new DecimalFormat( "##0" );
swtImage = null;
getStatusPanel = true;
externalNN = new ExternalNeuralNetwork();
inst = this;
try
{
simulationBase = new SimulationBase(PropertiesLoader.getInstance().getProperty("SimulationBaseFile"));
}
catch (SimulationException e)
{
throw new EasyBotAppException( e.getMessage() );
}
try
{
neuralNetworksBase = new NeuralNetworkBase(PropertiesLoader.getInstance().getProperty("NeuralNetworkBaseFile"));
}
catch (NeuralNetworkException e)
{
throw new EasyBotAppException( e.getMessage() );
}
initGUI();
}
/**
* Este m�todo inicializa la interfaz gr�fica de usuario (GUI). Es
* invocado por el constructor.
*/
private void initGUI()
{
try
{
this.setSize(1024, 768);
this.setBackground(SWTResourceManager.getColor(192, 192, 192));
GridLayout thisLayout = new GridLayout();
thisLayout.makeColumnsEqualWidth = true;
thisLayout.horizontalSpacing = 0;
thisLayout.marginWidth = 0;
thisLayout.marginHeight = 0;
thisLayout.verticalSpacing = 0;
this.setLayout(thisLayout);
this.setCursor(SWTResourceManager.getCursor(SWT.CURSOR_ARROW));
getShell().addShellListener( new ShellAdapter()
{
public void shellClosed(ShellEvent evt)
{
dispose();
}
});
this.addListener(SWT.Dispose,
new Listener()
{
public void handleEvent(Event evt)
{
// Este "handler" se invoca cuando se liberan
// los recursos de la ventana principal.
//applicationDisposed(evt);
}
});
{
label1 = new Label(this, SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label1LData = new GridData();
label1LData.horizontalAlignment = GridData.FILL;
label1LData.grabExcessHorizontalSpace = true;
label1.setLayoutData(label1LData);
label1.setText("label1");
}
{
composite2 = new Composite(this, SWT.NONE);
GridLayout composite2Layout = new GridLayout();
composite2Layout.makeColumnsEqualWidth = true;
GridData composite2LData = new GridData(SWT.FILL, SWT.FILL, true, true);
composite2LData.widthHint = 697;
composite2.setLayoutData(composite2LData);
composite2.setLayout(composite2Layout);
{
sashForm1 = new SashForm(composite2, SWT.HORIZONTAL | SWT.H_SCROLL);
GridLayout sashForm1Layout = new GridLayout();
sashForm1Layout.horizontalSpacing = 2;
sashForm1Layout.marginHeight = 0;
sashForm1Layout.marginWidth = 1;
sashForm1Layout.verticalSpacing = 1;
sashForm1Layout.numColumns = 2;
sashForm1.setLayout(sashForm1Layout);
GridData sashForm1LData = new GridData();
sashForm1LData.grabExcessHorizontalSpace = true;
sashForm1LData.grabExcessVerticalSpace = true;
sashForm1LData.horizontalAlignment = GridData.FILL;
sashForm1LData.verticalAlignment = GridData.FILL;
sashForm1.setLayoutData(sashForm1LData);
sashForm1.setSize(60, 30);
sashForm1.setCursor(SWTResourceManager.getCursor(SWT.CURSOR_ARROW));
{
composite3 = new Composite(
sashForm1,
SWT.NONE);
GridLayout composite3Layout = new GridLayout();
composite3Layout.horizontalSpacing = 0;
composite3Layout.marginHeight = 0;
composite3Layout.marginWidth = 0;
composite3Layout.verticalSpacing = 0;
GridData composite3LData = new GridData();
composite3LData.grabExcessHorizontalSpace = true;
composite3LData.grabExcessVerticalSpace = true;
composite3.setLayoutData(composite3LData);
composite3.setLayout(composite3Layout);
{
sashForm3 = new SashForm(
composite3,
SWT.NONE);
GridLayout sashForm3Layout = new GridLayout();
sashForm3Layout.horizontalSpacing = 0;
sashForm3Layout.marginHeight = 0;
sashForm3Layout.marginWidth = 0;
sashForm3Layout.verticalSpacing = 0;
sashForm3.setLayout(sashForm3Layout);
GridData sashForm3LData = new GridData();
sashForm3LData.horizontalAlignment = GridData.FILL;
sashForm3LData.verticalAlignment = GridData.FILL;
sashForm3LData.grabExcessHorizontalSpace = true;
sashForm3LData.grabExcessVerticalSpace = true;
sashForm3.setLayoutData(sashForm3LData);
sashForm3.setSize(60, 30);
sashForm3.setOrientation(SWT.VERTICAL);
{
leftTopPannel = new Composite(
sashForm3,
SWT.NONE);
GridLayout composite4Layout = new GridLayout();
composite4Layout.numColumns = 3;
composite4Layout.horizontalSpacing = 0;
composite4Layout.marginHeight = 0;
composite4Layout.marginWidth = 0;
composite4Layout.verticalSpacing = 0;
GridData composite4LData = new GridData();
composite4LData.horizontalSpan = 0;
leftTopPannel.setLayoutData(composite4LData);
leftTopPannel.setLayout(composite4Layout);
{
label17 = new Label(
leftTopPannel,
SWT.SEPARATOR);
GridData label17LData = new GridData();
label17LData.verticalAlignment = GridData.FILL;
label17LData.grabExcessVerticalSpace = true;
label17.setLayoutData(label17LData);
label17.setText("label17");
}
{
composite10 = new Composite(
leftTopPannel,
SWT.NONE);
GridLayout composite10Layout = new GridLayout();
composite10Layout.makeColumnsEqualWidth = true;
composite10Layout.horizontalSpacing = 0;
composite10Layout.marginHeight = 0;
composite10Layout.marginWidth = 0;
composite10Layout.verticalSpacing = 0;
GridData composite10LData = new GridData();
composite10LData.horizontalAlignment = GridData.FILL;
composite10LData.verticalAlignment = GridData.FILL;
composite10LData.grabExcessHorizontalSpace = true;
composite10LData.grabExcessVerticalSpace = true;
composite10LData.verticalSpan = 0;
composite10.setLayoutData(composite10LData);
composite10.setLayout(composite10Layout);
{
label16 = new Label(
composite10,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label16LData = new GridData();
label16LData.grabExcessHorizontalSpace = true;
label16LData.horizontalAlignment = GridData.FILL;
label16LData.horizontalSpan = 0;
label16.setLayoutData(label16LData);
label16
.setText("label16");
}
{
composite11 = new Composite(
composite10,
SWT.NONE);
GridLayout composite11Layout = new GridLayout();
composite11Layout.horizontalSpacing = 0;
composite11Layout.marginHeight = 0;
composite11Layout.marginWidth = 0;
composite11Layout.verticalSpacing = 0;
GridData composite11LData = new GridData();
composite11LData.verticalAlignment = GridData.FILL;
composite11LData.horizontalAlignment = GridData.FILL;
composite11LData.grabExcessHorizontalSpace = true;
composite11LData.grabExcessVerticalSpace = true;
composite11.setLayoutData(composite11LData);
composite11.setLayout(composite11Layout);
{
composite12 = new Composite(
composite11,
SWT.NONE);
FillLayout composite12Layout1 = new FillLayout(
org.eclipse.swt.SWT.HORIZONTAL);
composite12.setLayout(composite12Layout1);
GridData composite12LData1 = new GridData();
composite12.setLayoutData(composite12LData1);
composite12
.setFont(SWTResourceManager
.getFont(
"Tahoma",
8,
1,
false,
false));
{
cLabel4 = new CLabel(composite12, SWT.SHADOW_NONE);
cLabel4.setFont(SWTResourceManager.getFont("Tahoma",9,1,false,false));
cLabel4.setText("Explorador de Componentes");
cLabel4.setImage(SWTResourceManager.getImage("resources/icons/icon32x32/enable/draw.png"));
cLabel4.setForeground(SWTResourceManager.getColor(91, 91, 91));
}
}
{
label23 = new Label(
composite11,
SWT.SEPARATOR
| SWT.HORIZONTAL);
label23
.setText("label21");
GridData label23LData = new GridData();
label23LData.horizontalAlignment = GridData.FILL;
label23LData.grabExcessHorizontalSpace = true;
label23.setLayoutData(label23LData);
}
{
GridData tree1LData = new GridData();
tree1LData.verticalAlignment = GridData.FILL;
tree1LData.horizontalAlignment = GridData.FILL;
tree1LData.grabExcessVerticalSpace = true;
tree1LData.grabExcessHorizontalSpace = true;
worldTree = new Tree(composite11, SWT.NONE);
worldTree.setLayoutData(tree1LData);
worldTree.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent evt)
{
worldTreeWidgetSelected(evt);
}
});
{
rootItem = new TreeItem(
worldTree,
SWT.NONE);
rootItem.setText("World");
rootItem.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/earth.png"));
}
}
}
{
label15 = new Label(
composite10,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label15LData = new GridData();
label15LData.grabExcessHorizontalSpace = true;
label15LData.horizontalAlignment = GridData.FILL;
label15.setLayoutData(label15LData);
label15
.setText("label15");
}
}
{
label9 = new Label(
leftTopPannel,
SWT.SEPARATOR
| SWT.VERTICAL);
GridData label9LData = new GridData(SWT.RIGHT, SWT.FILL, false, true);
label9
.setLayoutData(label9LData);
label9.setText("label9");
}
}
{
leftMiddlePannel = new Composite(
sashForm3,
SWT.NONE);
GridLayout composite1Layout = new GridLayout();
composite1Layout.numColumns = 3;
composite1Layout.verticalSpacing = 0;
composite1Layout.marginWidth = 0;
composite1Layout.marginHeight = 0;
composite1Layout.horizontalSpacing = 0;
leftMiddlePannel.setLayout(composite1Layout);
leftMiddlePannel.setSize(505, 100);
{
label19 = new Label(
leftMiddlePannel,
SWT.SEPARATOR
| SWT.VERTICAL);
GridData label19LData = new GridData();
label19LData.grabExcessVerticalSpace = true;
label19LData.verticalAlignment = GridData.FILL;
label19.setLayoutData(label19LData);
label19.setText("label19");
}
{
neuronalNetTableComposite = new Composite(leftMiddlePannel, SWT.NONE);
GridLayout composite12Layout = new GridLayout();
composite12Layout.makeColumnsEqualWidth = true;
composite12Layout.horizontalSpacing = 0;
composite12Layout.marginHeight = 0;
composite12Layout.marginWidth = 0;
composite12Layout.verticalSpacing = 0;
GridData composite12LData = new GridData(SWT.FILL, SWT.TOP, true, false);
composite12LData.heightHint=200;
neuronalNetTableComposite.setLayoutData(composite12LData);
neuronalNetTableComposite.setLayout(composite12Layout);
{
label20 = new Label(neuronalNetTableComposite, SWT.SEPARATOR | SWT.HORIZONTAL);
GridData label20LData = new GridData();
label20LData.grabExcessHorizontalSpace = true;
label20LData.horizontalAlignment = GridData.FILL;
label20.setLayoutData(label20LData);
label20.setText("label20");
}
{
composite5 = new Composite(
neuronalNetTableComposite,
SWT.NONE);
FillLayout composite5Layout1 = new FillLayout(
org.eclipse.swt.SWT.HORIZONTAL);
composite5
.setLayout(composite5Layout1);
GridData composite5LData1 = new GridData();
composite5
.setLayoutData(composite5LData1);
composite5
.setFont(SWTResourceManager
.getFont(
"Tahoma",
8,
1,
false,
false));
{
cLabel3 = new CLabel(
composite5,
SWT.SHADOW_NONE);
cLabel3.setFont(SWTResourceManager.getFont("Tahoma", 9, 1, false, false));
cLabel3.setText("Redes neuronales");
cLabel3.setImage(SWTResourceManager.getImage("resources/icons/icon32x32/enable/neuron.png"));
cLabel3.setForeground(SWTResourceManager.getColor(91, 91, 91));
}
}
{
label21 = new Label(
neuronalNetTableComposite,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label21LData = new GridData();
label21LData.grabExcessHorizontalSpace = true;
label21LData.horizontalAlignment = GridData.FILL;
label21
.setLayoutData(label21LData);
label21
.setText("label21");
}
{
GridData toolBar4LData = new GridData();
toolBar4LData.grabExcessHorizontalSpace = true;
toolBar4LData.horizontalAlignment = GridData.FILL;
toolBar4LData.verticalAlignment = GridData.FILL;
toolBar4 = new ToolBar(
neuronalNetTableComposite,
SWT.FLAT);
toolBar4.setLayoutData(toolBar4LData);
{
newNeuronalNetButton = new ToolItem(
toolBar4,
SWT.NONE);
newNeuronalNetButton.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/db-create.png"));
newNeuronalNetButton.setToolTipText("Crear red");
newNeuronalNetButton.setEnabled(true);
newNeuronalNetButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent evt)
{
newNeuronalNetWidgetSelected(evt);
}
});
}
{
loadNeuronalNetButton = new ToolItem(toolBar4, SWT.NONE);
loadNeuronalNetButton.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/db-add.png"));
loadNeuronalNetButton.setDisabledImage(SWTResourceManager.getImage("resources/icons/icon24x24/disable/db-add-des.png"));
loadNeuronalNetButton.setToolTipText("Agregar red");
loadNeuronalNetButton.setEnabled(true);
loadNeuronalNetButton
.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(
SelectionEvent evt) {
loadNeuronalNetWidgetSelected(evt);
}
});
}
{
deleteNeuronalNetButton = new ToolItem(
toolBar4,
SWT.NONE);
deleteNeuronalNetButton.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/db-remove.png"));
deleteNeuronalNetButton.setToolTipText("Eliminar Red");
deleteNeuronalNetButton.setDisabledImage(SWTResourceManager.getImage("resources/icons/icon24x24/disable/db-remove-des.png"));
deleteNeuronalNetButton.setEnabled(false);
deleteNeuronalNetButton
.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(
SelectionEvent evt) {
deleteNeuronalNetWidgetSelected(evt);
}
});
}
}
{
label13 = new Label(
neuronalNetTableComposite,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label13LData = new GridData();
label13LData.grabExcessHorizontalSpace = true;
label13LData.horizontalAlignment = GridData.FILL;
label13.setLayoutData(label13LData);
label13
.setText("label13");
}
{
composite4 = new Composite(
neuronalNetTableComposite,
SWT.NONE);
GridLayout composite4Layout = new GridLayout();
composite4Layout.makeColumnsEqualWidth = true;
GridData composite4LData = new GridData();
composite4LData.verticalAlignment = GridData.FILL;
composite4LData.horizontalAlignment = GridData.FILL;
composite4LData.grabExcessHorizontalSpace = true;
composite4LData.grabExcessVerticalSpace = true;
composite4.setLayoutData(composite4LData);
composite4.setLayout(composite4Layout);
{
GridData Table1LData = new GridData();
Table1LData.grabExcessVerticalSpace = true;
Table1LData.horizontalAlignment = GridData.FILL;
Table1LData.verticalAlignment = GridData.FILL;
Table1LData.grabExcessHorizontalSpace = true;
neuronalNetTable = new Table(
composite4,
SWT.SINGLE
| SWT.FULL_SELECTION
| SWT.EMBEDDED);
neuronalNetTable.setLayoutData(Table1LData);
neuronalNetTable.setLinesVisible(true);
neuronalNetTable.setHeaderVisible(true);
neuronalNetTable.setItemCount(0);
neuronalNetTable.setLayoutDeferred(true);
neuronalNetTable
.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(
SelectionEvent evt) {
neuronalNetWidgetSelected(evt);
}
});
neuronalNetTable.addListener(SWT.MouseDoubleClick, new Listener() {
public void handleEvent(Event event) {
if (neuronalNetTable.getSelectionIndex()!=-1)
{
selectNeuronalNet(neuronalNetTable.getSelectionIndex());
}
}
});
{
neuronalNetTableColumnName = new TableColumn(
neuronalNetTable,
SWT.NONE);
neuronalNetTableColumnName.setText("Nombre");
neuronalNetTableColumnName.setWidth(130);
}
{
neuronalNetTableColumnPath = new TableColumn(
neuronalNetTable,
SWT.NONE);
neuronalNetTableColumnPath.setText("Ruta");
neuronalNetTableColumnPath.setWidth(169);
}
{
neuronalNetTableColumnDescription = new TableColumn(
neuronalNetTable,
SWT.NONE);
neuronalNetTableColumnDescription.setText("Descripci�n");
neuronalNetTableColumnDescription.setWidth(106);
}
{
neuronalNetTableColumnType = new TableColumn(
neuronalNetTable,
SWT.NONE);
neuronalNetTableColumnType.setText("Tipo");
neuronalNetTableColumnType.setWidth(106);
}
{
neuronalNetTableColumnSelected = new TableColumn(
neuronalNetTable,
SWT.NONE);
neuronalNetTableColumnSelected.setText("Seleccionada");
neuronalNetTableColumnSelected.setWidth(106);
}
}
}
{
label18 = new Label(
neuronalNetTableComposite,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label18LData = new GridData();
label18LData.grabExcessHorizontalSpace = true;
label18LData.horizontalAlignment = GridData.FILL;
label18.setLayoutData(label18LData);
label18
.setText("label18");
}
}
{
label12 = new Label(
leftMiddlePannel,
SWT.SEPARATOR
| SWT.VERTICAL);
GridData label12LData = new GridData();
label12LData.grabExcessVerticalSpace = true;
label12LData.verticalAlignment = GridData.FILL;
label12.setLayoutData(label12LData);
label12.setText("label12");
}
}
{
leftBottonPannel = new Composite(
sashForm3,
SWT.NONE);
GridLayout composite5Layout = new GridLayout();
composite5Layout.numColumns = 3;
composite5Layout.verticalSpacing = 0;
composite5Layout.marginWidth = 0;
composite5Layout.marginHeight = 0;
composite5Layout.horizontalSpacing = 0;
leftBottonPannel.setLayout(composite5Layout);
leftBottonPannel.setSize(505, 200);
{
label19 = new Label(
leftBottonPannel,
SWT.SEPARATOR
| SWT.VERTICAL);
GridData label19LData = new GridData();
label19LData.grabExcessVerticalSpace = true;
label19LData.verticalAlignment = GridData.FILL;
label19.setLayoutData(label19LData);
label19.setText("label19");
}
{
simulationTableComposite = new Composite(leftBottonPannel, SWT.NONE);
GridLayout composite12Layout = new GridLayout();
composite12Layout.makeColumnsEqualWidth = true;
composite12Layout.horizontalSpacing = 0;
composite12Layout.marginHeight = 0;
composite12Layout.marginWidth = 0;
composite12Layout.verticalSpacing = 0;
GridData composite12LData = new GridData(SWT.FILL, SWT.TOP, true, false);
simulationTableComposite.setLayoutData(composite12LData);
simulationTableComposite.setLayout(composite12Layout);
{
label20 = new Label(simulationTableComposite, SWT.SEPARATOR | SWT.HORIZONTAL);
GridData label20LData = new GridData();
label20LData.grabExcessHorizontalSpace = true;
label20LData.horizontalAlignment = GridData.FILL;
label20.setLayoutData(label20LData);
label20.setText("label20");
}
{
composite5 = new Composite(
simulationTableComposite,
SWT.NONE);
FillLayout composite5Layout1 = new FillLayout(
org.eclipse.swt.SWT.HORIZONTAL);
composite5
.setLayout(composite5Layout1);
GridData composite5LData1 = new GridData();
composite5
.setLayoutData(composite5LData1);
composite5
.setFont(SWTResourceManager
.getFont(
"Tahoma",
8,
1,
false,
false));
{
cLabel3 = new CLabel(
composite5,
SWT.SHADOW_NONE);
cLabel3.setFont(SWTResourceManager.getFont("Tahoma", 9, 1, false, false));
cLabel3.setText("Simulaciones");
cLabel3.setImage(SWTResourceManager.getImage("resources/icons/icon32x32/enable/iCandy_Junior-060.png"));
cLabel3.setForeground(SWTResourceManager.getColor(91, 91, 91));
}
}
{
label21 = new Label(
simulationTableComposite,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label21LData = new GridData();
label21LData.grabExcessHorizontalSpace = true;
label21LData.horizontalAlignment = GridData.FILL;
label21
.setLayoutData(label21LData);
label21
.setText("label21");
}
{
GridData toolBar4LData = new GridData();
toolBar4LData.grabExcessHorizontalSpace = true;
toolBar4LData.horizontalAlignment = GridData.FILL;
toolBar4LData.verticalAlignment = GridData.FILL;
toolBar4 = new ToolBar(
simulationTableComposite,
SWT.FLAT);
toolBar4.setLayoutData(toolBar4LData);
{
newSimulationButton = new ToolItem(
toolBar4,
SWT.NONE);
newSimulationButton.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/db-add.png"));
newSimulationButton.setDisabledImage(SWTResourceManager.getImage("resources/icons/icon24x24/disable/db-add-des.png"));
newSimulationButton.setToolTipText("Nueva Simulaci�n");
newSimulationButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent evt)
{
newSimulationWidgetSelected(evt);
}
});
}
{
loadSimulationButton = new ToolItem(toolBar4, SWT.NONE);
loadSimulationButton.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/db-upload.png"));
loadSimulationButton.setToolTipText("Cargar Simulaci�n");
loadSimulationButton.setEnabled(false);
loadSimulationButton.setDisabledImage(SWTResourceManager.getImage("resources/icons/icon24x24/disable/db-upload-des.png"));
loadSimulationButton
.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(
SelectionEvent evt) {
loadSimulationWidgetSelected(evt);
}
});
}
{
deleteSimulationButton = new ToolItem(
toolBar4,
SWT.NONE);
deleteSimulationButton.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/db-remove.png"));
deleteSimulationButton.setToolTipText("Eliminar Simulaci�n");
deleteSimulationButton.setDisabledImage(SWTResourceManager.getImage("resources/icons/icon24x24/disable/db-remove-des.png"));
deleteSimulationButton.setEnabled(false);
deleteSimulationButton
.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(
SelectionEvent evt) {
deleteSimulationWidgetSelected(evt);
}
});
}
}
{
label13 = new Label(
simulationTableComposite,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label13LData = new GridData();
label13LData.grabExcessHorizontalSpace = true;
label13LData.horizontalAlignment = GridData.FILL;
label13.setLayoutData(label13LData);
label13
.setText("label13");
}
{
composite4 = new Composite(
simulationTableComposite,
SWT.NONE);
GridLayout composite4Layout = new GridLayout();
composite4Layout.makeColumnsEqualWidth = true;
GridData composite4LData = new GridData();
composite4LData.verticalAlignment = GridData.FILL;
composite4LData.horizontalAlignment = GridData.FILL;
composite4LData.grabExcessHorizontalSpace = true;
composite4LData.grabExcessVerticalSpace = true;
composite4.setLayoutData(composite4LData);
composite4.setLayout(composite4Layout);
{
GridData Table1LData = new GridData();
Table1LData.grabExcessVerticalSpace = true;
Table1LData.horizontalAlignment = GridData.FILL;
Table1LData.verticalAlignment = GridData.FILL;
Table1LData.grabExcessHorizontalSpace = true;
simulationTable = new Table(
composite4,
SWT.SINGLE
| SWT.FULL_SELECTION
| SWT.EMBEDDED);
simulationTable.setLayoutData(Table1LData);
simulationTable.setLinesVisible(true);
simulationTable.setHeaderVisible(true);
simulationTable.setItemCount(2);
simulationTable.setLayoutDeferred(true);
simulationTable
.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(
SelectionEvent evt) {
simulationTableWidgetSelected(evt);
}
});
{
simulationTableColumnName = new TableColumn(
simulationTable,
SWT.NONE);
simulationTableColumnName.setText("Nombre");
simulationTableColumnName.setWidth(130);
}
{
simulationTableColumnDuration = new TableColumn(
simulationTable,
SWT.NONE);
simulationTableColumnDuration.setText("Duraci�n");
simulationTableColumnDuration.setWidth(87);
}
{
simulationTableColumnPath = new TableColumn(
simulationTable,
SWT.NONE);
simulationTableColumnPath.setText("Ruta");
simulationTableColumnPath.setWidth(169);
}
{
simulationTableColumnDescription = new TableColumn(
simulationTable,
SWT.NONE);
simulationTableColumnDescription.setText("Descripci�n");
simulationTableColumnDescription.setWidth(106);
}
}
{
}
}
{
label18 = new Label(
simulationTableComposite,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label18LData = new GridData();
label18LData.grabExcessHorizontalSpace = true;
label18LData.horizontalAlignment = GridData.FILL;
label18.setLayoutData(label18LData);
label18
.setText("label18");
}
}
{
label12 = new Label(
leftBottonPannel,
SWT.SEPARATOR
| SWT.VERTICAL);
GridData label12LData = new GridData();
label12LData.grabExcessVerticalSpace = true;
label12LData.verticalAlignment = GridData.FILL;
label12.setLayoutData(label12LData);
label12.setText("label12");
}
}
}
}
{
sashForm2 = new SashForm(
sashForm1,
SWT.VERTICAL | SWT.V_SCROLL);
GridData sashForm2LData = new GridData();
sashForm2LData.grabExcessVerticalSpace = true;
sashForm2LData.grabExcessHorizontalSpace = true;
sashForm2LData.horizontalAlignment = GridData.FILL;
sashForm2LData.verticalAlignment = GridData.FILL;
sashForm2.setLayoutData(sashForm2LData);
{
rigthTopPannel = new Composite(
sashForm2,
SWT.NONE);
GridLayout composite11Layout = new GridLayout();
composite11Layout.verticalSpacing = 0;
composite11Layout.marginWidth = 0;
composite11Layout.marginHeight = 0;
composite11Layout.horizontalSpacing = 0;
composite11Layout.numColumns = 3;
rigthTopPannel.setLayout(composite11Layout);
{
label14 = new Label(
rigthTopPannel,
SWT.SEPARATOR
| SWT.VERTICAL);
GridData label14LData = new GridData();
label14LData.grabExcessVerticalSpace = true;
label14LData.verticalAlignment = GridData.FILL;
label14.setLayoutData(label14LData);
label14.setText("label14");
}
{
simulationPanel = new Composite(
rigthTopPannel,
SWT.NONE);
GridLayout composite4Layout = new GridLayout();
composite4Layout.horizontalSpacing = 0;
composite4Layout.marginHeight = 0;
composite4Layout.verticalSpacing = 0;
composite4Layout.marginWidth = 0;
composite4Layout.makeColumnsEqualWidth = true;
GridData simulationPanelLData = new GridData();
simulationPanelLData.grabExcessHorizontalSpace = true;
simulationPanelLData.grabExcessVerticalSpace = true;
simulationPanelLData.horizontalAlignment = GridData.FILL;
simulationPanelLData.verticalAlignment = GridData.FILL;
simulationPanelLData.horizontalSpan = 0;
simulationPanel.setLayoutData(simulationPanelLData);
simulationPanel.setLayout(composite4Layout);
{
label7 = new Label(
simulationPanel,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label7LData = new GridData();
label7LData.grabExcessHorizontalSpace = true;
label7LData.horizontalAlignment = GridData.FILL;
label7LData.verticalAlignment = GridData.BEGINNING;
label7
.setLayoutData(label7LData);
label7.setText("label7");
}
{
composite7 = new Composite(
simulationPanel,
SWT.NONE);
GridLayout composite7Layout = new GridLayout();
composite7Layout.horizontalSpacing = 0;
composite7Layout.marginHeight = 0;
composite7Layout.marginWidth = 0;
composite7Layout.numColumns = 3;
composite7Layout.verticalSpacing = 0;
GridData composite7LData = new GridData();
composite7LData.grabExcessHorizontalSpace = true;
composite7LData.horizontalAlignment = GridData.FILL;
composite7.setLayoutData(composite7LData);
composite7.setLayout(composite7Layout);
{
cLabel2 = new CLabel(composite7, SWT.SHADOW_NONE);
cLabel2.setFont(SWTResourceManager.getFont("Tahoma",9,1,false,false));
cLabel2.setText("Vista Representaci�n 2D");
cLabel2.setImage(SWTResourceManager.getImage("resources/icons/icon32x32/enable/Toolbar-_Public.png"));
cLabel2.setForeground(SWTResourceManager.getColor(91, 91, 91));
GridData cLabel2LData = new GridData();
cLabel2LData.verticalAlignment = GridData.FILL;
cLabel2LData.horizontalAlignment = GridData.FILL;
cLabel2LData.grabExcessHorizontalSpace = true;
cLabel2LData.grabExcessVerticalSpace = true;
cLabel2.setLayoutData(cLabel2LData);
}
{
displaySchematicView = new Button( composite7, SWT.RADIO | SWT.LEFT);
displaySchematicView.setText("Vista Esquematica");
displaySchematicView.setSelection(true);
displaySchematicView.setEnabled( false );
}
{
displayRealView = new Button( composite7, SWT.RADIO | SWT.LEFT);
displayRealView.setText("Vista Real");
displayRealView.setSelection(false);
displayRealView.setEnabled( false );
}
}
{
label6 = new Label(
simulationPanel,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label6LData = new GridData();
label6LData.grabExcessHorizontalSpace = true;
label6LData.horizontalAlignment = GridData.FILL;
label6LData.verticalAlignment = GridData.BEGINNING;
label6
.setLayoutData(label6LData);
label6.setText("label6");
}
{
composite8 = new Composite(
simulationPanel,
SWT.NONE);
FillLayout composite8Layout = new FillLayout(
org.eclipse.swt.SWT.HORIZONTAL);
GridData composite8LData = new GridData();
composite8LData.horizontalAlignment = GridData.FILL;
composite8LData.grabExcessHorizontalSpace = true;
composite8LData.verticalAlignment = GridData.FILL;
composite8LData.grabExcessVerticalSpace = true;
composite8.setLayoutData(composite8LData);
composite8.setLayout(composite8Layout);
{
sceneCanvas = new Canvas(composite8, SWT.BORDER | SWT.NO_BACKGROUND);
sceneCanvas.addPaintListener(new PaintListener()
{
public void paintControl(PaintEvent evt)
{
sceneCanvasPaintControl(evt);
}
});
}
}
{
label2 = new Label(
simulationPanel,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label2LData = new GridData();
label2LData.horizontalAlignment = GridData.FILL;
label2LData.verticalAlignment = GridData.END;
label2LData.grabExcessHorizontalSpace = true;
label2.setLayoutData(label2LData);
label2.setText("label2");
}
{
composite9 = new Composite(
simulationPanel,
SWT.NONE);
GridLayout composite9Layout = new GridLayout();
composite9Layout.numColumns = 7;
composite9Layout.verticalSpacing = 0;
composite9Layout.marginWidth = 0;
composite9Layout.marginHeight = 0;
GridData composite9LData = new GridData();
composite9LData.horizontalAlignment = GridData.FILL;
composite9LData.grabExcessHorizontalSpace = true;
composite9LData.verticalAlignment = GridData.FILL;
composite9.setLayoutData(composite9LData);
composite9.setLayout(composite9Layout);
{
playControls = new ToolBar(composite9, SWT.FLAT);
GridData toolBar2LData = new GridData();
toolBar2LData.horizontalAlignment = GridData.FILL;
toolBar2LData.grabExcessVerticalSpace = true;
playControls.setLayoutData(toolBar2LData);
{
playButton = new ToolItem(
playControls,
SWT.NONE);
playButton.setToolTipText("Ejecutar");
playButton.setWidth(32);
playButton.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/play.png"));
playButton.setDisabledImage(SWTResourceManager.getImage("resources/icons/icon24x24/disable/play-despng.png"));
playButton.setEnabled( false );
playButton.addSelectionListener(
new SelectionAdapter()
{
public void widgetSelected(SelectionEvent evt)
{
playButtonWidgetSelected(evt);
}
});
}
{
pauseButton = new ToolItem(
playControls,
SWT.NONE);
pauseButton.setToolTipText("Pausar");
pauseButton.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/play-pause.png"));
pauseButton.setDisabledImage(SWTResourceManager.getImage("resources/icons/icon24x24/disable/play-pause-des.png"));
pauseButton.setEnabled(false);
pauseButton.addSelectionListener(
new SelectionAdapter()
{
public void widgetSelected(SelectionEvent evt)
{
pauseButtonWidgetSelected(evt);
}
});
}
{
stopButton = new ToolItem(
playControls,
SWT.NONE);
stopButton.setToolTipText("Detener");
stopButton.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/play-stop.png"));
stopButton.setDisabledImage(SWTResourceManager.getImage("resources/icons/icon24x24/disable/play-stop-des.png"));
stopButton.setEnabled(false);
stopButton.addSelectionListener(
new SelectionAdapter()
{
public void widgetSelected(SelectionEvent evt)
{
stopButtonWidgetSelected(evt);
}
});
}
{
recButton = new ToolItem(
playControls,
SWT.NONE);
recButton.setToolTipText("Comenzar Grabaci�n");
recButton.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/play-rec.png"));
recButton.setDisabledImage(SWTResourceManager.getImage("resources/icons/icon24x24/disable/play-rec-des.png"));
recButton.setEnabled(false);
recButton.addSelectionListener(
new SelectionAdapter()
{
public void widgetSelected(SelectionEvent evt)
{
recButtonWidgetSelected(evt);
}
});
}
{
new ToolItem(playControls, SWT.SEPARATOR);
//separator = new ToolItem(playControls, SWT.SEPARATOR);
//toolItem1.setText("toolItem1");
}
}
{
cSpeedTitle = new CLabel(
composite9,
SWT.NONE);
cSpeedTitle
.setText("Velocidad");
GridData cSpeedTitleLData = new GridData();
cSpeedTitle
.setLayoutData(cSpeedTitleLData);
cSpeedTitle.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/clock_hands24x24.png"));
}
{
GridData speedControlLData = new GridData();
speedControlLData.widthHint = 183;
speedControlLData.heightHint = 42;
speedControl = new Scale(composite9, SWT.NONE);
speedControl.setLayoutData(speedControlLData);
speedControl.setMinimum( Defines.MIN_SPEED_PERCENT );
speedControl.setMaximum( Defines.MAX_SPEED_PERCENT );
speedControl.setSelection( 100 );
speedControl.setToolTipText("Velocidad de Reproducci�n");
speedControl.setEnabled( false );
speedControl.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent evt)
{
double percent = speedControl.getSelection() / 100.0;
Simulation.getCurrent().setStepTime( (long)(Defines.DEFAULT_STEP_TIME/percent) );
speedLabel.setText( formatter.format(100.0*percent) + "%" );
}
});
}
{
speedLabel = new Label(
composite9,
SWT.NONE);
speedLabel.setText("100%");
speedLabel
.setFont(SWTResourceManager
.getFont(
"Tahoma",
9,
1,
false,
false));
speedLabel.setToolTipText("Velocidad de Reproducci�n");
}
{
speedReset = new Button(composite9, SWT.PUSH | SWT.CENTER);
speedReset.setText("Reset");
speedReset.setEnabled( false );
speedReset.addSelectionListener(new SelectionAdapter()
{
public void widgetSelected(SelectionEvent evt)
{
Simulation.getCurrent().setStepTime( Defines.DEFAULT_STEP_TIME );
speedControl.setSelection( 100 );
speedLabel.setText( "100%" );
}
});
}
}
{
label3 = new Label(
simulationPanel,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label3LData = new GridData();
label3LData.grabExcessHorizontalSpace = true;
label3LData.horizontalAlignment = GridData.FILL;
label3.setLayoutData(label3LData);
label3.setText("label3");
}
}
{
GridData label22LData = new GridData();
label22LData.verticalAlignment = GridData.FILL;
label22LData.horizontalAlignment = GridData.END;
label22LData.grabExcessVerticalSpace = true;
label22 = new Label(
rigthTopPannel,
SWT.SEPARATOR);
label22.setLayoutData(label22LData);
}
}
{
rightBottonPannel = new Composite(
sashForm2,
SWT.NONE);
GridLayout composite5Layout = new GridLayout();
composite5Layout.horizontalSpacing = 0;
composite5Layout.marginHeight = 0;
composite5Layout.marginWidth = 0;
composite5Layout.verticalSpacing = 0;
composite5Layout.numColumns = 3;
rightBottonPannel.setLayout(composite5Layout);
rightBottonPannel.setSize(506, 360);
{
label11 = new Label(
rightBottonPannel,
SWT.SEPARATOR
| SWT.VERTICAL);
GridData label11LData = new GridData();
label11LData.grabExcessVerticalSpace = true;
label11LData.verticalAlignment = GridData.FILL;
label11.setLayoutData(label11LData);
label11.setText("label11");
}
{
propertiesPannel = new Composite(
rightBottonPannel,
SWT.NONE);
GridLayout composite11Layout = new GridLayout();
composite11Layout.marginWidth = 0;
composite11Layout.verticalSpacing = 0;
composite11Layout.marginHeight = 0;
composite11Layout.horizontalSpacing = 0;
composite11Layout.makeColumnsEqualWidth = true;
GridData composite11LData = new GridData();
composite11LData.verticalAlignment = GridData.FILL;
composite11LData.horizontalAlignment = GridData.FILL;
composite11LData.grabExcessHorizontalSpace = true;
composite11LData.grabExcessVerticalSpace = true;
propertiesPannel.setLayoutData(composite11LData);
propertiesPannel.setLayout(composite11Layout);
{
label4 = new Label(
propertiesPannel,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label4LData = new GridData();
label4LData.grabExcessHorizontalSpace = true;
label4LData.horizontalAlignment = GridData.FILL;
label4.setLayoutData(label4LData);
label4.setText("label4");
}
{
composite6 = new Composite(
propertiesPannel,
SWT.NONE);
FillLayout composite6Layout = new FillLayout(
org.eclipse.swt.SWT.HORIZONTAL);
GridData composite6LData = new GridData();
composite6
.setLayoutData(composite6LData);
composite6
.setLayout(composite6Layout);
composite6
.setFont(SWTResourceManager
.getFont(
"Tahoma",
8,
1,
false,
false));
{
cLabel1 = new CLabel(
composite6,
SWT.SHADOW_NONE);
cLabel1
.setText("Propiedades");
cLabel1.setImage(SWTResourceManager.getImage("resources/icons/icon32x32/enable/Toolbar_Customize.png"));
cLabel1.setForeground(SWTResourceManager.getColor(91, 91, 91));
cLabel1.setFont(SWTResourceManager.getFont("Tahoma", 9, 1, false, false));
}
}
{
label5 = new Label(
propertiesPannel,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label5LData = new GridData();
label5LData.horizontalAlignment = GridData.FILL;
label5LData.grabExcessHorizontalSpace = true;
label5
.setLayoutData(label5LData);
label5.setText("label5");
}
{
GridData robotStatusLData = new GridData();
robotStatusLData.horizontalAlignment = GridData.FILL;
robotStatusLData.verticalAlignment = GridData.FILL;
robotStatusLData.grabExcessHorizontalSpace = true;
robotStatusLData.grabExcessVerticalSpace = true;
robotStatus = new Composite(
propertiesPannel,
SWT.NONE);
GridLayout robotStatusLayout = new GridLayout();
robotStatusLayout.makeColumnsEqualWidth = true;
robotStatusLayout.horizontalSpacing = 0;
robotStatusLayout.marginHeight = 0;
robotStatusLayout.marginWidth = 0;
robotStatusLayout.verticalSpacing = 0;
robotStatus.setLayout(robotStatusLayout);
robotStatus.setLayoutData(robotStatusLData);
{
customRobotStatus = new Composite(
robotStatus,
SWT.NONE);
GridLayout customRobotStatusLayout = new GridLayout();
customRobotStatusLayout.makeColumnsEqualWidth = true;
customRobotStatusLayout.marginWidth = 0;
customRobotStatusLayout.verticalSpacing = 0;
GridData customRobotStatusLData = new GridData();
customRobotStatusLData.grabExcessHorizontalSpace = true;
customRobotStatusLData.grabExcessVerticalSpace = true;
customRobotStatusLData.horizontalAlignment = GridData.FILL;
customRobotStatusLData.verticalAlignment = GridData.FILL;
customRobotStatus.setLayoutData(customRobotStatusLData);
customRobotStatus.setLayout(customRobotStatusLayout);
}
}
{
label8 = new Label(
propertiesPannel,
SWT.SEPARATOR
| SWT.HORIZONTAL);
GridData label8LData = new GridData();
label8LData.horizontalAlignment = GridData.FILL;
label8LData.grabExcessHorizontalSpace = true;
label8
.setLayoutData(label8LData);
}
}
{
GridData label24LData = new GridData();
label24LData.grabExcessVerticalSpace = true;
label24LData.verticalAlignment = GridData.FILL;
label24LData.horizontalAlignment = GridData.FILL;
label24 = new Label(
rightBottonPannel,
SWT.SEPARATOR);
label24.setLayoutData(label24LData);
}
}
sashForm2.setWeights(new int[] {75,25});
}
}
}
refreshTable();
refreshNeuralNetworkTable();
this.layout();
}
catch (Exception e)
{
ErrorMessage.customMessage(e.getMessage(), ErrorMessage.ERROR_MESSAGE, getParent() );
}
}
/**
* Redibuja la im�gen del escenario (laberinto) en pantalla.
*/
public void drawMazeImage()
{
sceneCanvas.redraw();
}
/**
* Manejador de eventos de repintado para el canvas del escenario.
* Cada vez que el escenario (laberinto) debe redibujarse, se invoca
* autom�ticamente a este m�todo.
* @param evt informaci�n del evento.
*/
private void sceneCanvasPaintControl(PaintEvent evt)
{
if ( Simulation.getCurrent() != null )
{
// Hay una simulaci�n cargada.
if ( showSchematic() )
{
// Antes de comenzar a dibujar, se borra todo lo anterior.
backgroundGC.setBackground( Display.getDefault().getSystemColor(SWT.COLOR_WHITE) );
backgroundGC.fillRectangle( 0, 0, Defines.DEFAULT_IMAGE_RESOLUTION[0],
Defines.DEFAULT_IMAGE_RESOLUTION[1] );
// Dibuja las paredes
if ( mazeItems != null && mazeItems.recognizedWalls != null )
{
for ( int i=0; i<mazeItems.recognizedWalls.length; i++)
{
int r = mazeItems.recognizedWalls[i].color.getRed();
int g = mazeItems.recognizedWalls[i].color.getGreen();
int b = mazeItems.recognizedWalls[i].color.getBlue();
backgroundGC.setBackground( new Color(Display.getDefault(), r, g, b) );
backgroundGC.fillPolygon( mazeItems.recognizedWalls[i].getPoints() );
}
}
// Dibuja los �conos coloreados
if ( mazeItems != null && mazeItems.recognizedColoredIcons != null )
{
for ( int i=0; i<mazeItems.recognizedColoredIcons.length; i++)
{
int r = mazeItems.recognizedColoredIcons[i].color.getRed();
int g = mazeItems.recognizedColoredIcons[i].color.getGreen();
int b = mazeItems.recognizedColoredIcons[i].color.getBlue();
backgroundGC.setBackground( new Color(Display.getDefault(), r, g, b) );
backgroundGC.fillPolygon( mazeItems.recognizedColoredIcons[i].getPoints() );
}
}
// Se redibujan todos los robots
Vector robots = Simulation.getCurrent().getRobotArray();
for (int i=0; i<robots.size(); i++)
{
Robot robot = (Robot)robots.get(i);
if ( robot.isVisible() && robot.getStatus() == Defines.STATE_ROBOT_CALIBRATED )
robot.draw( backgroundGC );
}
// Dibuja la imagen 'background' escalada.
evt.gc.drawImage( background,
0, 0,
background.getBounds().width,
background.getBounds().height,
0, 0,
sceneCanvas.getBounds().width,
sceneCanvas.getBounds().height);
}
else
{
if ( swtImage != null && !swtImage.isDisposed() )
swtImage.dispose();
BufferedImage awtImage = ((ImageBasedGPS) Simulation.getCurrent().getGps()).getImage();
if ( awtImage != null )
{
if ( swtImage != null && !swtImage.isDisposed() )
swtImage.dispose();
swtImage = new Image( Display.getDefault() , ImageUtils.convertToSWT(awtImage) );
if ( swtImage != null )
backgroundGC.drawImage( swtImage, 0, 0);
// Dibuja la imagen 'background' escalada.
evt.gc.drawImage( background,
0, 0,
background.getBounds().width,
background.getBounds().height,
0, 0,
sceneCanvas.getBounds().width,
sceneCanvas.getBounds().height);
}
try
{
Thread.sleep( Defines.REFRESH_DELAY );
}
catch (InterruptedException e)
{ }
}
}
else
{
// No hay simulaci�n cargada. Se dibuja un rect�ngulo vac�o.
evt.gc.setBackground( Display.getDefault().getSystemColor(SWT.COLOR_WHITE) );
evt.gc.fillRectangle( 0, 0,
Defines.DEFAULT_IMAGE_RESOLUTION[0],
Defines.DEFAULT_IMAGE_RESOLUTION[1] );
}
}
/**
* Este m�todo determina si en la interfaz gr�fica fue seleccionada la
* opci�n de representaci�n esquem�tica de la imagen del escenario.
* @return <code>true</code> si se seleccion� la opci�n de representaci�n
* esquem�tica.
*/
private boolean showSchematic()
{
if (this.displaySchematicView.getSelection() == true)
return true;
else
return false;
}
/**
* Acci�n que se ejecuta cuando se presiona el bot�n de nueva simulaci�n.
* @param evt informaci�n del evento.
*/
private void newSimulationWidgetSelected(SelectionEvent evt)
{
if ( Simulation.getCurrent() != null )
// Hay una simulaci�n corriendo. Se la detiene.
stopButtonWidgetSelected(null);
NewSimulationDialog newSimulationDialog = new NewSimulationDialog(this.getShell(), SWT.NULL, this);
newSimulationDialog.open();
if ( Simulation.getCurrent() == null )
// Se cancel� la creaci�n de la nueva simulaci�n.
return;
// Me quedo con las referencias de los elementos reconocidos ac�
// porque si se llega a resetear el GPS, se pierden la referencias.
mazeItems = Simulation.getCurrent().getGps().getMazeItems();
if ( Simulation.getCurrent() != null && Simulation.getCurrent().isAllOk() )
{
recButton.setEnabled ( true );
speedReset.setEnabled ( true );
displayRealView.setEnabled ( true );
displaySchematicView.setEnabled ( true );
speedControl.setSelection( 100 );
if ( Simulation.getCurrent().getType() == Defines.REAL_SIMULATION )
speedControl.setEnabled( false );
else
speedControl.setEnabled( true );
// Ahora registra al canvas como "observador" de cada robot creado.
Vector robots = Simulation.getCurrent().getRobotArray();
for (int i=0; i<robots.size(); i++)
((Robot)robots.get(i)).addObserver( this );
// Se refresca el �rbol de robots.
refreshTree();
SimulationBaseItem simulationBaseItem = new SimulationBaseItem();
simulationBaseItem.setName(Simulation.getCurrent().getName());
simulationBaseItem.setDescription(Simulation.getCurrent().getComment());
simulationBaseItem.setPath(Simulation.getCurrent().getBaseSimulationDirectory());
simulationBaseItem.setDuration(Simulation.getCurrent().getFormattedDuration());
// Agrego la simulaci�n en la base.
while ( simulationBase.insertSimulationBaseItem(simulationBaseItem) == SimulationBase.DUPLICATEK_KEY )
{
SimulationNameChanger dialog = new SimulationNameChanger(this.getShell(),SWT.NONE);
dialog.open();
simulationBaseItem.setName(Simulation.getCurrent().getName());
}
if ( simulationBase.updateSimulationBaseItem(simulationBaseItem) == SimulationBase.NO_SUCH_OBJECT )
simulationBase.insertSimulationBaseItem(simulationBaseItem);
// En este punto la simulaci�n est� completa.
// Reci�n ahora puede almacenarse.
try
{
Simulation.getCurrent().saveSimulationConfig();
}
catch (EasyBotAppException e)
{
ErrorMessage.customMessage( e.getMessage(), ErrorMessage.ERROR_MESSAGE, getParent());
}
// Refresco la tabla de simulaciones
refreshTable();
newSimulationButton.setEnabled (true);
loadSimulationButton.setEnabled (false);
deleteSimulationButton.setEnabled (false);
newNeuronalNetButton.setEnabled (true);
deleteNeuronalNetButton.setEnabled (false);
}
}
private void loadSimulationWidgetSelected(SelectionEvent evt)
{
try
{
if ( simulationTable.getSelectionCount() > 0 )
{
// Se verifica que la simulaci�n a cargar no sea la actual.
if ( Simulation.getCurrent() != null && Simulation.getCurrent().getName().equals(simulationTable.getSelection()[0].getText(0)) )
return;
if ( Simulation.getCurrent() != null )
{
// Se detiene y descarga la simulaci�n actual.
stopButtonWidgetSelected(null);
/*
Simulation.getCurrent().stop();
Simulation.getCurrent().unLoad();
*/
}
// Carga la simulaci�n desde el sistema de archivos,
// levantando los documentos XML.
Simulation.load( simulationTable.getSelection()[0].getText(2) );
// Ahora registra al canvas como "observador" de cada robot creado.
Vector robots = Simulation.getCurrent().getRobotArray();
for (int i=0; i<robots.size(); i++)
((Robot)robots.get(i)).addObserver( this );
// Se refresca el �rbol de robots.
refreshTree();
// Se establecen todos los robots en estado "calibrado"
// (ya que es una reproducci�n)
for (int i=0; i<robots.size(); i++)
((Robot)robots.get(i)).setStatus( Defines.STATE_ROBOT_CALIBRATED );
mazeItems = Simulation.getCurrent().getGps().getMazeItems();
sceneCanvas.redraw();
newSimulationButton.setEnabled ( true );
loadSimulationButton.setEnabled ( true );
deleteSimulationButton.setEnabled ( true );
playButton.setEnabled ( true );
pauseButton.setEnabled ( false );
stopButton.setEnabled ( false );
recButton.setEnabled ( false );
speedControl.setSelection( 100 );
displayRealView.setEnabled ( false );
displaySchematicView.setEnabled ( true );
displayRealView.setSelection ( false );
displaySchematicView.setSelection ( true );
speedControl.setEnabled ( true );
speedReset.setEnabled ( true );
}
else
{
ErrorMessage.errorMessage(Defines.ERROR_NO_SIMULATION_SELECTED,this.getParent());
}
}
catch (Exception e)
{
ErrorMessage.customMessage( "Error cargando la simulaci�n: " + e.getMessage() , ErrorMessage.ERROR_MESSAGE , getParent() );
}
}
private void deleteNeuronalNetWidgetSelected(SelectionEvent evt)
{
if ( neuronalNetTable.getSelectionIndex() != -1 )
{
if ( ErrorMessage.warningYesNoMessage(Defines.WARNING_DELETE_NEURONALNET, this.getParent()) != SWT.YES )
return;
NeuralNetworkBaseItem item = neuralNetworksBase.getNeuralNetworkBaseItem(neuronalNetTable.getItem(neuronalNetTable.getSelectionIndex()).getText(1));
neuralNetworksBase.removeNeuralNetworkBaseItem(item);
neuronalNetTable.deselectAll();
refreshNeuralNetworkTable();
deleteNeuronalNetButton.setEnabled(false);
}
}
private void deleteSimulationWidgetSelected(SelectionEvent evt)
{
if ( simulationTable.getSelectionCount() > 0 )
{
SimulationBaseItem item = new SimulationBaseItem();
item.setName (simulationTable.getSelection()[0].getText(0));
item.setDuration (simulationTable.getSelection()[0].getText(1));
item.setPath (simulationTable.getSelection()[0].getText(2));
item.setDescription (simulationTable.getSelection()[0].getText(3));
if ( ErrorMessage.warningYesNoMessage(Defines.WARNING_DELETE_SIMULATION, this.getParent()) != SWT.YES )
return;
// Se verifica que la simulaci�n a eliminar no sea la actual.
if ( Simulation.getCurrent() != null && Simulation.getCurrent().getName().equals(item.getName()) )
{
ErrorMessage.errorMessage( Defines.ERROR_SIMULATION_IN_USE , getParent() );
return;
}
// Primero se elimina la simulaci�n del sistema de archivos.
try
{
File simDir = new File( item.getPath() );
if ( simDir.exists() && simDir.isDirectory() )
FileUtils.cleanDirectory( simDir );
}
catch (IOException e)
{
ErrorMessage.customMessage( "Error eliminando la simulaci�n: " + e.getMessage(),
ErrorMessage.ERROR_MESSAGE, getParent());
return;
}
// Finalmente, se elimina el �tem.
simulationBase.removeSimulationBaseItem(item);
simulationTable.deselectAll();
newSimulationButton.setEnabled (true);
loadSimulationButton.setEnabled (false);
deleteSimulationButton.setEnabled (false);
refreshTable();
}
else
{
ErrorMessage.errorMessage(Defines.ERROR_NO_SIMULATION_SELECTED, getParent());
}
}
/**
* Acci�n que se ejecuta cuando se presiona el bot�n "play".
* @param evt informaci�n del evento.
*/
private void playButtonWidgetSelected(SelectionEvent evt)
{
playButton.setEnabled ( false );
pauseButton.setEnabled ( true );
stopButton.setEnabled ( true );
recButton.setEnabled ( false );
if (Simulation.getCurrent()!= null)
Simulation.getCurrent().play();
else
{
ErrorMessage.errorMessage(Defines.ERROR_NO_SIMULATION_SELECTED,this.getParent());
}
}
/**
* Acci�n que se ejecuta cuando se presiona el bot�n "pause".
* @param evt informaci�n del evento.
*/
private void pauseButtonWidgetSelected(SelectionEvent evt)
{
Simulation.getCurrent().pause();
pauseButton.setEnabled ( false );
stopButton.setEnabled ( true );
if ( Simulation.getCurrent().isPlaybackSimualtion() )
{
// Si es reproducci�n, habilita "Play".
playButton.setEnabled ( true );
recButton.setEnabled ( false );
}
else
{
// Si es simulaci�n, habilita "Rec".
playButton.setEnabled ( false );
recButton.setEnabled ( true );
}
}
/**
* Acci�n que se ejecuta cuando se presiona el bot�n "stop".
* @param evt informaci�n del evento.
*/
private void stopButtonWidgetSelected(SelectionEvent evt)
{
Simulation.getCurrent().stop();
displaySchematicView.setSelection(true);
displayRealView.setSelection(false);
if ( Simulation.getCurrent().isPlaybackSimualtion() )
{
playButton.setEnabled ( true );
pauseButton.setEnabled ( false );
stopButton.setEnabled ( false );
recButton.setEnabled ( false );
}
else
{
playButton.setEnabled ( false );
pauseButton.setEnabled ( false );
stopButton.setEnabled ( false );
recButton.setEnabled ( false );
// Se actualizan los datos para la tabla de simualciones.
SimulationBaseItem simulationBaseItem = new SimulationBaseItem();
simulationBaseItem.setName(Simulation.getCurrent().getName());
simulationBaseItem.setDescription(Simulation.getCurrent().getComment());
simulationBaseItem.setPath(Simulation.getCurrent().getBaseSimulationDirectory());
simulationBaseItem.setDuration(Simulation.getCurrent().getFormattedDuration());
// Se modifica el registro de la simulaci�n en la base.
simulationBase.updateSimulationBaseItem(simulationBaseItem);
// Se descarga la simulaci�n ya que una vez que se hace "stop" no se
// puede seguir simulando (ahora solo se puede reproducir).
Simulation.getCurrent().unLoad();
}
cleanStatusPannel();
customRobotStatus.layout(true);
}
/**
* Acci�n que se ejecuta cuando se presiona el bot�n "rec".
* @param evt informaci�n del evento.
*/
private void recButtonWidgetSelected(SelectionEvent evt)
{
Simulation.getCurrent().play();
playButton.setEnabled ( false );
pauseButton.setEnabled ( true );
stopButton.setEnabled ( true );
recButton.setEnabled ( false );
}
/**
* Este m�todo permite limpiar el panel de estado
* de los robots.
*/
private void cleanStatusPannel()
{
if (customRobotStatus != null && !customRobotStatus.isDisposed())
customRobotStatus.dispose();
customRobotStatus = new Composite(robotStatus, SWT.NONE);
GridLayout customRobotStatusLayout = new GridLayout();
customRobotStatusLayout.makeColumnsEqualWidth = true;
customRobotStatusLayout.marginWidth = 0;
customRobotStatusLayout.verticalSpacing = 0;
GridData customRobotStatusLData = new GridData();
customRobotStatusLData.grabExcessHorizontalSpace = true;
customRobotStatusLData.grabExcessVerticalSpace = true;
customRobotStatusLData.horizontalAlignment = GridData.FILL;
customRobotStatusLData.verticalAlignment = GridData.FILL;
customRobotStatus.setLayoutData(customRobotStatusLData);
customRobotStatus.setLayout(customRobotStatusLayout);
robotStatus.layout(true);
getStatusPanel = true;
}
/**
* Acci�n que se ejecuta cuando se cierra la aplicaci�n.
*/
public synchronized void dispose()
{
if ( Simulation.getCurrent() != null )
{
// Se detiene la simulaci�n que est� corriendo.
Simulation.getCurrent().stop();
// Se cierra el GPS.
GPS gps = Simulation.getCurrent().getGps();
if ( gps != null && !gps.isDisposed() )
{
gps.close();
gps.dispose();
}
// Se liberan todos los recursos asociados a la simulaci�n
Simulation.getCurrent().dispose();
}
// Se fuerza la invocaci�n del m�todo finalize() de todos los objetos.
System.runFinalization();
super.dispose();
Logger.info( "La aplicaci�n principal liber� sus recursos. Fin." );
}
public void update(Observable o, Object arg)
{
// Hay que lanzar otro thread de esta manera, para que
// no haya conflictos con el UI-thread
Display.getDefault().asyncExec(
new Runnable()
{
public void run ()
{
sceneCanvas.redraw();
}
});
}
private void worldTreeWidgetSelected(SelectionEvent evt)
{
try
{
if ( !getStatusPanel )
return;
if (worldTree.getSelectionCount() > 0 && worldTree.getSelection()[0].getText().compareTo("World")!= 0)
{
Robot roboTemp = Simulation.getCurrent().getRobotByName(worldTree.getSelection()[0].getText());
if (roboTemp != null)
{
Plugin plugin = ClassManager.getInstance().getPluginByName(roboTemp.getClass().getCanonicalName());
// Se instancia la clase GUI y se le pasa el robot.
if ( plugin != null )
{
Composite temp = customRobotStatus;
RobotGUI robotGUI = (RobotGUI)plugin.makeGUInstance(roboTemp);
customRobotStatus = robotGUI.getStatusPannel( robotStatus, robotStatus.getStyle());
if ( temp != null && !temp.isDisposed() )
temp.dispose();
if (customRobotStatus != null)
{
GridData customRobotStatusLData = new GridData();
customRobotStatusLData.horizontalAlignment = GridData.FILL;
customRobotStatusLData.verticalAlignment = GridData.FILL;
customRobotStatusLData.grabExcessHorizontalSpace = true;
customRobotStatusLData.grabExcessVerticalSpace = true;
customRobotStatus.setLayoutData(customRobotStatusLData);
}
robotStatus.layout(true);
getStatusPanel = false;
}
}
}
}
catch (Exception e)
{
ErrorMessage.customMessage( e.getMessage(), ErrorMessage.ERROR_MESSAGE, getParent());
}
}
private void refreshTree()
{
if ( Simulation.getCurrent() == null )
return;
rootItem.removeAll(); // Vac�o el �rbol
Vector robots = Simulation.getCurrent().getRobotArray();
for (int i=0; i<robots.size(); i++)
{
TreeItem robotItem = new TreeItem(rootItem, SWT.NONE);
robotItem.setText(((Robot)robots.get(i)).getName());
robotItem.setImage(SWTResourceManager.getImage("resources/icons/icon24x24/enable/aibo210.png"));
}
rootItem.setExpanded(true);
}
private void refreshTable()
{
simulationTable.removeAll();
Vector items = simulationBase.getItems();
for (int i=0;i<items.size();i++)
{
TableItem item = new TableItem(simulationTable,SWT.NONE);
item.setText(0,((SimulationBaseItem)items.get(i)).getName());
item.setText(1,((SimulationBaseItem)items.get(i)).getDuration());
item.setText(2,((SimulationBaseItem)items.get(i)).getPath());
item.setText(3,((SimulationBaseItem)items.get(i)).getDescription());
}
}
private void newNeuronalNetWidgetSelected(SelectionEvent evt)
{
CreateNeuralNet createNeuralNet = new CreateNeuralNet(getShell(),SWT.NONE);
NeuralNetworkBaseItem newitem = createNeuralNet.open();
if (newitem!=null)
{
try {
//TODO Con multiples tipos de red deberia ser:
//FileUtils.copyDirectory(new File(PropertiesLoader.getInstance().getProperty("TemplateNeuralNet") + "_" + newitem.getType()),new File(newitem.getPath()));
FileUtils.copyDirectory(new File(PropertiesLoader.getInstance().getProperty("TemplateNeuralNet")),new File(newitem.getPath()));
File descriptionFile = new File(newitem.getPath()+PropertiesLoader.getInstance().getProperty("TemplateNeuralNetDescriptionFileName"));
if (descriptionFile.exists())
descriptionFile.delete();
descriptionFile.createNewFile();
FileWriter fout = new FileWriter(descriptionFile);
fout.write("#ifndef RED_DATOS_DESCRIPCION\n");
fout.write("#define RED_DATOS_DESCRIPCION\n\n");
fout.write("#define NOMBRE_RED \"" + newitem.getName().replace("\"", "\\\"") + "\"\n");
fout.write("#define DESCRIPCION_RED \"" + newitem.getDescription().replace("\r\n", "\\r\\n").replace("\"", "\\\"") + "\"\n");
fout.write("#define TIPO_RED " + newitem.getType());
fout.write("\n\n#endif\n");
fout.close();
ErrorMessage.customMessage( "La plantilla fue creada exitosamente en: " + newitem.getPath(), ErrorMessage.INFO_MESSAGE, getParent());
} catch (IOException e) {
ErrorMessage.customMessage( "Error creando la plantilla en: " + newitem.getPath() + "\nEl mensaje de error es: " + e.getMessage() , ErrorMessage.ERROR_MESSAGE , getParent());
}
}
}
private void loadNeuronalNetWidgetSelected(SelectionEvent evt)
{
FileDialog fileDialog;
fileDialog = new FileDialog(getShell(), SWT.OPEN);
fileDialog.setFilterExtensions(new String[]{"*.dll"});
fileDialog.setFilterNames(new String[]{"Redes neuronales compiladas (*.dll)"});
String pathName = fileDialog.open();
if (pathName!=null)
{
NeuralNetworkBaseItem item = new NeuralNetworkBaseItem();
item.setPath(pathName);
item.setSelected(false);
neuralNetworksBase.insertNeuralNetworkBaseItem(item);
if (item.getType()==-1)
{
ErrorMessage.customMessage( "Error al cargar la red neuronal: " + pathName, ErrorMessage.ERROR_MESSAGE , getParent() );
}
refreshNeuralNetworkTable();
}
}
private void selectNeuronalNet(int newidx)
{
NeuralNetworkBaseItem old = neuralNetworksBase.getSelectedItem();
NeuralNetworkBaseItem newitem = ((NeuralNetworkBaseItem)neuralNetworksBase.getItems().get(newidx));
if (old!=null)
{
old.setSelected(false);
externalNN.unload_network();
if (newitem==old)
{
refreshNeuralNetworkTable();
neuralNetworksBase.saveToFile();
return;
}
}
if (externalNN.load_network(newitem.getPath())!=0)
{
ErrorMessage.customMessage( "Error al cargar la red neuronal: " + newitem.getPath(), ErrorMessage.ERROR_MESSAGE , getParent() );
return;
}
newitem.setSelected(true);
refreshNeuralNetworkTable();
neuralNetworksBase.saveToFile();
}
private void neuronalNetWidgetSelected(SelectionEvent evt)
{
deleteNeuronalNetButton.setEnabled (true);
}
private void refreshNeuralNetworkTable()
{
neuronalNetTable.removeAll();
Vector items = neuralNetworksBase.getItems();
for (int i=0;i<items.size();i++)
{
TableItem item = new TableItem(neuronalNetTable,SWT.NONE);
item.setText(0,((NeuralNetworkBaseItem)items.get(i)).getName());
item.setText(1,((NeuralNetworkBaseItem)items.get(i)).getPath());
item.setText(2,((NeuralNetworkBaseItem)items.get(i)).getDescription());
if (((NeuralNetworkBaseItem)items.get(i)).getType()>-1)
{
item.setText(3,((NeuralNetworkBaseItem)items.get(i)).getDescription());
item.setBackground(new Color(getDisplay(),255,255,255));
}
else
{
item.setBackground(new Color(getDisplay(),255,0,0));
}
item.setText(4,((NeuralNetworkBaseItem)items.get(i)).getSelected() ? "X" : "");
}
}
private void simulationTableWidgetSelected(SelectionEvent evt)
{
newSimulationButton.setEnabled (true);
loadSimulationButton.setEnabled (true);
deleteSimulationButton.setEnabled (true);
}
public NeuralNetworkBase getNeuralNetworkBase()
{
return neuralNetworksBase;
}
public ExternalNeuralNetwork getExternalNetwork()
{
return externalNN;
}
public static EasyBotApp getInstance()
{
return inst;
}
/**
* M�todo principal, a partir del cual se lanza toda la aplicaci�n.
* @param args argumentos de l�nea de comandos (no se utilizan).
*/
public static void main(String[] args)
{
Display display = Display.getDefault();
Shell shell = new Shell(display);
try
{
inst = new EasyBotApp(shell, SWT.NULL);
Point size = inst.getSize();
shell.setLayout(new FillLayout());
shell.setMaximized(true);
shell.setMinimumSize(new org.eclipse.swt.graphics.Point(800, 600));
shell.setImage(SWTResourceManager.getImage("resources/icons/iconmisc/cubos32.png"));
shell.setText(".:: EasyBot ::.");
shell.layout();
if(size.x == 0 && size.y == 0)
{
inst.pack();
shell.pack();
}
else
{
Rectangle shellBounds = shell.computeTrim(0, 0, size.x, size.y);
shell.setSize(shellBounds.width, shellBounds.height);
}
shell.open();
while (!shell.isDisposed())
{
if (!display.readAndDispatch())
display.sleep();
}
}
catch (Exception e)
{
MessageBox messageBox = new MessageBox( shell, SWT.OK | SWT.ICON_ERROR );
messageBox.setMessage( "Se ha producido un error en la aplicaci�n. " +
e.getMessage() );
messageBox.setText( "Error en EasyBot" );
messageBox.open();
}
}
}