/*
* ControlPanel.java
*
* WARNING: This class has been generated by NetBeans (www.netbeans.org)
* PLEASE use the Form Editor of NetBeans to modify its layout.
* PLEASE see all Warnings in the code.
*
* Created on 17 may 2001, 23.31
*/
package org.joone.edit;
import org.joone.engine.*;
import org.joone.net.NeuralNet;
import org.joone.net.NetChecker;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
public class ControlPanel extends javax.swing.JPanel implements NeuralNetListener {
private Monitor monitor;
private NeuralNet nNet;
private PropertySheet parent;
private NetChecker netChecker;
private boolean printCycle = false;
/** Creates new form ControlPanel */
public ControlPanel(NeuralNet nn, PropertySheet ps) {
setMonitor(nn.getMonitor());
parent = ps;
nNet = nn;
netChecker = new NetChecker(nNet);
initComponents();
}
public void setMonitor(Monitor m) {
monitor = m;
/* We register this ControlPanel to the Monitor - not to the NeuralNet - object
* because the listeners list of the Monitor is transient, so we
* avoid to serialize this ControlPanel when we 'export' the neural net
*/
monitor.addNeuralNetListener(this);
}
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
* always regenerated by the Form Editor.
*/
private void initComponents() {//GEN-BEGIN:initComponents
jPanel1 = new javax.swing.JPanel();
runButton = new javax.swing.JButton();
continueButton = new javax.swing.JButton();
stopButton = new javax.swing.JButton();
jPanel2 = new javax.swing.JPanel();
cicleLabel = new javax.swing.JLabel();
cicleValue = new javax.swing.JLabel();
rmsLabel = new javax.swing.JLabel();
rmsValue = new javax.swing.JLabel();
setLayout(new java.awt.GridLayout(2, 1, 0, 10));
setBorder(new javax.swing.border.TitledBorder("Controls"));
jPanel1.setLayout(new java.awt.GridLayout(1, 3));
runButton.setForeground(java.awt.Color.green);
runButton.setText("Run");
runButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
runButtonActionPerformed(evt);
}
});
jPanel1.add(runButton);
continueButton.setForeground(new java.awt.Color(0, 51, 255));
continueButton.setText("Continue");
continueButton.setEnabled(false);
continueButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
continueButtonActionPerformed(evt);
}
});
jPanel1.add(continueButton);
stopButton.setForeground(java.awt.Color.red);
stopButton.setText("Pause");
stopButton.setEnabled(false);
stopButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
stopButtonActionPerformed(evt);
}
});
jPanel1.add(stopButton);
add(jPanel1);
jPanel2.setLayout(new java.awt.GridLayout(2, 2, 0, 8));
cicleLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
cicleLabel.setText("Epochs : ");
cicleLabel.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
jPanel2.add(cicleLabel);
cicleValue.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
cicleValue.setText("0");
jPanel2.add(cicleValue);
rmsLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
rmsLabel.setText("RMSE : ");
jPanel2.add(rmsLabel);
rmsValue.setHorizontalAlignment(javax.swing.SwingConstants.LEFT);
rmsValue.setText("0.0");
jPanel2.add(rmsValue);
add(jPanel2);
}//GEN-END:initComponents
private void continueButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_continueButtonActionPerformed
// Add your handling code here:
// Make sure the network checks out before cotinuing.
if (netChecker.hasErrors()) {
displayNogo("Network could not be run.", "See 'To Do List' to check all the errors.");
} else {
setLearners();
nNet.restore();
setState(false);
}
}//GEN-LAST:event_continueButtonActionPerformed
private void stopButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_stopButtonActionPerformed
// Add your handling code here:
nNet.stop();
}//GEN-LAST:event_stopButtonActionPerformed
private void runButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_runButtonActionPerformed
// Add your handling code here:
// Make sure the network checks out before running.
if (netChecker.hasErrors()) {
displayNogo("Network could not be run.", "See 'To Do List' to check all the errors.");
} else {
setLearners();
nNet.go();
}
}//GEN-LAST:event_runButtonActionPerformed
public void netStopped(NeuralNetEvent e) {
setState(true);
printCycle = true;
parent.update();
}
public void cicleTerminated(NeuralNetEvent e) {
int currentCycle = monitor.getTotCicles() - monitor.getCurrentCicle() + 1;
int cl = currentCycle / parameters.getRefreshingRate();
/* We want to print the results only every refreshing_rate cycles and the last cycle*/
if ((cl * parameters.getRefreshingRate()) == currentCycle || monitor.getCurrentCicle() == 1) {
cicleValue.setText(Integer.toString(currentCycle));
printCycle = true;
}
}
/** Setter for property parameters.
* @param parameters New value of property parameters.
*/
public void setParameters(EditorParameters parameters) {
this.parameters = parameters;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton continueButton;
private javax.swing.JLabel cicleLabel;
private javax.swing.JButton stopButton;
private javax.swing.JPanel jPanel2;
private javax.swing.JLabel cicleValue;
private javax.swing.JButton runButton;
private javax.swing.JLabel rmsLabel;
private javax.swing.JPanel jPanel1;
private javax.swing.JLabel rmsValue;
// End of variables declaration//GEN-END:variables
private static final long serialVersionUID = 1310288899683080017L;
private EditorParameters parameters;
private void setState(boolean state) {
runButton.setEnabled(state);
continueButton.setEnabled(state);
stopButton.setEnabled(!state);
parent.setControlsEnabled(state);
}
public void netStarted(NeuralNetEvent e) {
setState(false);
}
public void errorChanged(NeuralNetEvent e) {
if ((printCycle) || (monitor.getTotCicles() < parameters.getRefreshingRate())) {
rmsValue.setText(Double.toString(monitor.getGlobalError()));
printCycle = false;
}
}
/**
* Pops up a dialog window with no-go messages displayed.
*/
private void displayNogo(String message1, String message2) {
final JDialog dialog = new JDialog(parent, "Critical Network Error", true);
dialog.getContentPane().setLayout(new BorderLayout(10, 10));
// Add ok button.
Button ok = new Button(" OK ");
ok.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
dialog.dispose();
}
});
Panel p = new Panel();
p.setLayout(new FlowLayout(FlowLayout.CENTER));
p.add(ok);
dialog.getContentPane().add(p, BorderLayout.SOUTH);
// Add banner.
JLabel label = new JLabel(message1);
label.setHorizontalAlignment(SwingConstants.CENTER);
dialog.getContentPane().add(label, BorderLayout.NORTH);
// Add banner.
label = new JLabel(message2);
label.setHorizontalAlignment(SwingConstants.CENTER);
dialog.getContentPane().add(label, BorderLayout.CENTER);
// Center location on parent.
dialog.pack();
Point center = new Point(parent.getX() + parent.getWidth() / 2,
parent.getY() + parent.getHeight() / 2);
dialog.setLocation((int) (center.getX() - dialog.getWidth() / 2),
(int) (center.getY() - dialog.getHeight() / 2));
dialog.setVisible(true);
}
public void netStoppedError(NeuralNetEvent e,String error) {
setState(true);
printCycle = true;
parent.update();
this.displayNogo("Runtime Error!", error);
//JOptionPane.showMessageDialog(parent,error, "Critical Network Error!", JOptionPane.ERROR_MESSAGE);
}
/** Initialization of the available learners
*/
public void setLearners() {
// TODO: Implement the reading of the Learners from the XML parameters file
monitor.addLearner(0, "org.joone.engine.BasicLearner");
monitor.addLearner(1, "org.joone.engine.BatchLearner");
monitor.addLearner(2, "org.joone.engine.RpropLearner");
//monitor.addLearner(3, "org.joone.engine.SwarmLearner");
}
}
Ads help maintain this website.