List of usage examples for javax.swing JToolBar add
public JButton add(Action a)
JButton
which dispatches the action. From source file:display.ANNFileFilter.java
License:asdf
Yanng() { JPanel toolBars;/*from w ww . j a v a 2s . c o m*/ JMenuBar menuBar; JToolBar utilBar, fileBar; JButton toJava, runner, trainer, modify, getTraininger, inputer, newwer, saver, saveAser, loader, helper; JMenu file; final JMenu util; JMenu help; ImageIcon IJava, IRun, ITrain, IModify, INew, ISave, ILoad, IGetTrainingSet, IGetInput, ISaveAs; //initialize main window mainWindow = new JFrame("YANNG - Yet Another Neural Network (simulator) Generator"); mainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainWindow.setLayout(new BorderLayout()); mainWindow.setSize(675, 525); mainWindow.setIconImage(new ImageIcon(ClassLoader.getSystemResource("display/icons/logo.png")).getImage()); loadingImage = new ImageIcon(ClassLoader.getSystemResource("display/icons/loading.gif")); path = new Vector<String>(); net = new Vector<NeuralNetwork>(); oneNet = new Vector<JPanel>(); tabPanel = new Vector<JPanel>(); readOut = new Vector<JTextArea>(); readOutLocale = new Vector<JScrollPane>(); loadingBar = new Vector<JLabel>(); title = new Vector<JLabel>(); close = new Vector<JButton>(); netName = new Vector<StringBuffer>(); netKind = new Vector<StringBuffer>(); resultsPane = new JTabbedPane(); mainWindow.add(resultsPane); toolBars = new JPanel(); toolBars.setLayout(new FlowLayout(FlowLayout.LEFT)); //create utilities toolbar with 3 buttons utilBar = new JToolBar("Utilities"); IRun = new ImageIcon(new ImageIcon(ClassLoader.getSystemResource("display/icons/running.png")).getImage() .getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH)); ITrain = new ImageIcon(new ImageIcon(ClassLoader.getSystemResource("display/icons/training.png")).getImage() .getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH)); IModify = new ImageIcon(new ImageIcon(ClassLoader.getSystemResource("display/icons/modifyNet.png")) .getImage().getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH)); IGetTrainingSet = new ImageIcon( new ImageIcon(ClassLoader.getSystemResource("display/icons/trainingSet.png")).getImage() .getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH)); IGetInput = new ImageIcon(new ImageIcon(ClassLoader.getSystemResource("display/icons/input.png")).getImage() .getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH)); //set the icons/tooltips for the utilitiy bar runner = new JButton(IRun); runner.setToolTipText( "<html>Run the Current Neural Network<br>Once Through with the Current Input</html>"); trainer = new JButton(ITrain); trainer.setToolTipText( "<html>Train the Network with the Current<br>Configuration and Training Set</html>"); modify = new JButton(IModify); modify.setToolTipText("<html>Modify the Network<br>for Fun and Profit</html>"); getTraininger = new JButton(IGetTrainingSet); getTraininger.setToolTipText("Get Training Set from File"); inputer = new JButton(IGetInput); inputer.setToolTipText("Get Input Set from File"); utilBar.add(inputer); utilBar.add(runner); utilBar.add(getTraininger); utilBar.add(trainer); utilBar.add(modify); //create file toolbar fileBar = new JToolBar("file"); ISaveAs = new ImageIcon(new ImageIcon(ClassLoader.getSystemResource("display/icons/saveAs.png")).getImage() .getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH)); INew = new ImageIcon(new ImageIcon(ClassLoader.getSystemResource("display/icons/new.png")).getImage() .getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH)); ISave = new ImageIcon(new ImageIcon(ClassLoader.getSystemResource("display/icons/save.png")).getImage() .getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH)); ILoad = new ImageIcon(new ImageIcon(ClassLoader.getSystemResource("display/icons/load.png")).getImage() .getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH)); IJava = new ImageIcon(new ImageIcon(ClassLoader.getSystemResource("display/icons/toJava.png")).getImage() .getScaledInstance(20, 20, java.awt.Image.SCALE_SMOOTH)); newwer = new JButton(INew); newwer.setToolTipText("Create New Neural Network"); saver = new JButton(ISave); saver.setToolTipText("Save Current Network Configuration"); saveAser = new JButton(ISaveAs); saveAser.setToolTipText("Save Network As"); loader = new JButton(ILoad); loader.setToolTipText("Load Network Configuration from File"); toJava = new JButton(IJava); toJava.setToolTipText("Export Network to Java Project"); fileBar.add(newwer); fileBar.add(loader); fileBar.add(saver); fileBar.add(saveAser); fileBar.add(toJava); toolBars.add(fileBar); toolBars.add(utilBar); mainWindow.add(toolBars, BorderLayout.NORTH); //create a menubar with three menus on it menuBar = new JMenuBar(); file = new JMenu("File"); util = new JMenu("Utilities"); help = new JMenu("Help"); //add menu items for file menu load = new JMenuItem("Load Network Configuration"); newNet = new JMenuItem("New Network"); saveAs = new JMenuItem("Save Network As"); save = new JMenuItem("Save Current Configuration"); exportNet = new JMenuItem("Export Network to Java Project"); exportOutput = new JMenuItem("Export Output to Text File"); file.add(load); file.add(newNet); file.addSeparator(); file.add(saveAs); file.add(save); file.addSeparator(); file.add(exportNet); file.add(exportOutput); menuBar.add(file); //add menu items for utilities menu changeConfig = new JMenuItem("Modify Network Settings"); getInput = new JMenuItem("Get Input From File"); getTraining = new JMenuItem("Get Training Set From File"); run = new JMenuItem("Run"); train = new JMenuItem("Train"); getColorMap = new JMenuItem("View Color Map"); getColorMap.setVisible(false); util.add(changeConfig); util.addSeparator(); util.add(getInput); util.add(getTraining); util.addSeparator(); util.add(run); util.add(train); menuBar.add(util); //add menu items for help menu quickStart = new JMenuItem("Quick Start Guide"); searchHelp = new JMenuItem("Programming with Yanng"); about = new JMenuItem("License"); links = new JMenuItem("<html>Links to Resources<br>about Neural Networks</html>"); help.add(quickStart); help.addSeparator(); help.add(searchHelp); help.addSeparator(); help.add(about); help.addSeparator(); help.add(links); menuBar.add(help); mainWindow.setJMenuBar(menuBar); //opens the quickstart guide quickStart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { try { File myFile = new File(URLDecoder .decode(ClassLoader.getSystemResource("ann/quick-start.pdf").getFile(), "UTF-8")); Desktop.getDesktop().open(myFile); } catch (IOException ex) { try { Runtime.getRuntime().exec("xdg-open ./yanng/src/ann/quick-start.pdf"); } catch (Exception e) { JOptionPane.showMessageDialog(mainWindow, "Your desktop is not supported by java,\ngo to yanng/src/ann/quick-start.pdf to view the technical manual.", "Desktop not Supported", JOptionPane.ERROR_MESSAGE); } } } }); links.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { try { File myFile = new File( URLDecoder.decode(ClassLoader.getSystemResource("ann/links.pdf").getFile(), "UTF-8")); Desktop.getDesktop().open(myFile); } catch (IOException ex) { try { Runtime.getRuntime().exec("xdg-open ./yanng/src/ann/links.pdf"); } catch (Exception e) { JOptionPane.showMessageDialog(mainWindow, "Your desktop is not supported by java,\ngo to yanng/src/ann/links.pdf to view the technical manual.", "Desktop not Supported", JOptionPane.ERROR_MESSAGE); } } } }); //Displays license information about.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { JTextArea x = new JTextArea("Copyright [2015] [Sam Findler and Michael Scott]\n" + "\n" + "Licensed under the Apache License, Version 2.0 (the \"License\");\n" + "you may not use this file except in compliance with the License.\n" + "You may obtain a copy of the License at\n" + "\n" + "http://www.apache.org/licenses/LICENSE-2.0\n" + "\n" + "Unless required by applicable law or agreed to in writing, software\n" + "distributed under the License is distributed on an \"AS IS\" BASIS,\n" + "WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" + "See the License for the specific language governing permissions and\n" + "limitations under the License."); JDialog aboutDialog = new JDialog(mainWindow, "License", true); aboutDialog.setSize(500, 250); aboutDialog.setLayout(new FlowLayout()); aboutDialog.add(x); x.setEditable(false); aboutDialog.setVisible(true); } }); //opens the more technical user guide searchHelp.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { try { File myFile = new File(URLDecoder .decode(ClassLoader.getSystemResource("ann/technical-manual.pdf").getFile(), "UTF-8")); Desktop.getDesktop().open(myFile); } catch (IOException ex) { try { Runtime.getRuntime().exec("xdg-open ./yanng/src/ann/technical-manual.pdf"); } catch (Exception e) { JOptionPane.showMessageDialog(mainWindow, "Your desktop is not supported by java,\ngo to yanng/src/ann/technical-manual.pdf to view the technical manual.", "Desktop not Supported", JOptionPane.ERROR_MESSAGE); } } } }); //class trains the neural network in the background while the loading bar displays, then prints out the output/connections listings/average error to the readOut pane class Trainer extends SwingWorker<NeuralNetwork, Object> { protected NeuralNetwork doInBackground() { net.get(resultsPane.getSelectedIndex()).trainNet(); setProgress(1); return net.get(resultsPane.getSelectedIndex()); } public void done() { if (resultsPane.getTabCount() != 0 && netKind.get(resultsPane.getSelectedIndex()).toString().equals("Feed Forward Network")) { if (Double.isNaN(net.get(resultsPane.getSelectedIndex()).getAverageError())) JOptionPane.showMessageDialog(mainWindow, "Training Set Formatted Incorrectly", "Formatting Error", JOptionPane.ERROR_MESSAGE); else { printConnections(); readOut.get(resultsPane.getSelectedIndex()).append( "Results of Training " + netName.get(resultsPane.getSelectedIndex()) + ":\n\n"); printOutput(); readOut.get(resultsPane.getSelectedIndex()).append("Average Error = " + net.get(resultsPane.getSelectedIndex()).getAverageError() + "\n\n"); loadingBar.get(resultsPane.getSelectedIndex()).setVisible(false); JOptionPane.showMessageDialog(mainWindow, "<html>If the Input is not displaying as expected, chances are the input was inproperly formatted.<br>See help for more details<html>"); } } else if (resultsPane.getTabCount() != 0 && netKind.get(resultsPane.getSelectedIndex()).toString().equals("Self-Organizing Map")) { readOut.get(resultsPane.getSelectedIndex()).append("\nUpdated Untrained Map:\n"); printInitMap(); loadingBar.get(resultsPane.getSelectedIndex()).setVisible(false); JOptionPane.showMessageDialog(mainWindow, "<html>If the Input is not displaying as expected, chances are the input was inproperly formatted.<br>See help for more details<html>"); } } } //starts the training class when train is pressed in the utilities menu train.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (resultsPane.getTabCount() != 0) { if (net.get(resultsPane.getSelectedIndex()).getTrainingSet() != null) { loadingBar.get(resultsPane.getSelectedIndex()).setText( "<html><font color = rgb(160,0,0)>Training</font> <font color = rgb(0,0,248)>net...</font></html>"); loadingBar.get(resultsPane.getSelectedIndex()).setVisible(true); (thisTrainer = new Trainer()).execute(); } else JOptionPane.showMessageDialog(mainWindow, "No Input Set Specified", "Empty Signifier Error", JOptionPane.ERROR_MESSAGE); } else JOptionPane.showMessageDialog(mainWindow, "Can't Train Nonexistent Neural Network", "Existential Error", JOptionPane.ERROR_MESSAGE); } }); //associates the toolbar button with the jump rope guy with the training button on the utilities menu trainer.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { for (ActionListener a : train.getActionListeners()) { a.actionPerformed(ae); } } }); //runs through one set of inputs and prints the results to the readOut pane run.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (resultsPane.getTabCount() != 0 && netKind.get(resultsPane.getSelectedIndex()).toString().equals("Feed Forward Network")) { if (net.get(resultsPane.getSelectedIndex()).getInputSet() != null) { net.get(resultsPane.getSelectedIndex()).runNet(); if (Double.isNaN(net.get(resultsPane.getSelectedIndex()).getAverageError())) JOptionPane.showMessageDialog(mainWindow, "Training Set Formatted Incorrectly", "Formatting Error", JOptionPane.ERROR_MESSAGE); else { readOut.get(resultsPane.getSelectedIndex()).append("Results of Running through Network " + netName.get(resultsPane.getSelectedIndex()) + ":\n\n"); printOutput(); System.out.println("Results:"); for (int i = 0; i < net.get(resultsPane.getSelectedIndex()) .getOutputSet().length; i++) { System.out.println("\n Output of Input Vector " + i + ":"); for (int j = 0; j < net.get(resultsPane.getSelectedIndex()) .getOutputSet()[i].length; j++) { System.out.println(" Output Node " + j + " = " + net.get(resultsPane.getSelectedIndex()).getOutputSet()[i][j]); } } JOptionPane.showMessageDialog(mainWindow, "<html>If the Input is not displaying as expected, chances are the input was inproperly formatted.<br>See help for more details<html>"); } } else JOptionPane.showMessageDialog(mainWindow, "No Input Set Specified", "Empty Signifier Error", JOptionPane.ERROR_MESSAGE); } else if (resultsPane.getTabCount() != 0 && netKind.get(resultsPane.getSelectedIndex()).toString().equals("Self-Organizing Map")) { if (net.get(resultsPane.getSelectedIndex()).getInputValues() != null) { loadingBar.get(resultsPane.getSelectedIndex()).setText( "<html><font color = rgb(160,0,0)>Training</font> <font color = rgb(0,0,248)>net...</font></html>"); loadingBar.get(resultsPane.getSelectedIndex()).setVisible(true); (thisTrainer = new Trainer()).execute(); } else JOptionPane.showMessageDialog(mainWindow, "No Input Set Specified", "Empty Signifier Error", JOptionPane.ERROR_MESSAGE); } else JOptionPane.showMessageDialog(mainWindow, "Can't Run Nonexistent Neural Network", "Existential Error", JOptionPane.ERROR_MESSAGE); } }); runner.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { for (ActionListener a : run.getActionListeners()) { a.actionPerformed(ae); } } }); //the following code is for the getTraining button under utilities getTrainingSet = new JFileChooser(); getTrainingSet.setFileFilter(new TrainingFileFilter()); getTraining.addActionListener(new ActionListener() { //this method/class gets a training set (tsv/csv file) and parse it through the neural network. Kind of test that the file is formatted correctly, but if the data is wrong, there isn't much it can do. public void actionPerformed(ActionEvent ae) { if (resultsPane.getTabCount() != 0 && netKind.get(resultsPane.getSelectedIndex()).toString().equals("Feed Forward Network")) { int result; result = getTrainingSet.showOpenDialog(mainWindow); if (result == JFileChooser.APPROVE_OPTION) if (getTrainingSet.getSelectedFile().getName().endsWith(".csv") || getTrainingSet.getSelectedFile().getName().endsWith(".tsv") || getTrainingSet.getSelectedFile().getName().endsWith(".txt")) if (net.get(resultsPane.getSelectedIndex()) .parseTrainingSet(getTrainingSet.getSelectedFile())) JOptionPane.showMessageDialog(mainWindow, "<html>Method gives no Garuntee that this File is Formatted Correctly<br>(see help for more details)</html>", "Formatting Warning", JOptionPane.WARNING_MESSAGE); else JOptionPane.showMessageDialog(mainWindow, "File Mismatch with Network Configuration", "Correspondence Error", JOptionPane.ERROR_MESSAGE); else { JOptionPane.showMessageDialog(mainWindow, "Wrong File Type", "Category Error", JOptionPane.ERROR_MESSAGE); } else { JOptionPane.showMessageDialog(mainWindow, "No File Selected", "Absence Warning", JOptionPane.WARNING_MESSAGE); } } else if (resultsPane.getTabCount() != 0 && netKind.get(resultsPane.getSelectedIndex()).toString().equals("Self-Organizing Map")) { int result; result = getTrainingSet.showOpenDialog(mainWindow); if (result == JFileChooser.APPROVE_OPTION) if (getTrainingSet.getSelectedFile().getName().endsWith(".csv") || getTrainingSet.getSelectedFile().getName().endsWith(".tsv") || getTrainingSet.getSelectedFile().getName().endsWith(".txt")) if (net.get(resultsPane.getSelectedIndex()) .parseTrainingSet(getTrainingSet.getSelectedFile())) { JOptionPane.showMessageDialog(mainWindow, "<html>Method gives no Garuntee that this File is Formatted Correctly<br>(see help for more details)</html>", "Formatting Warning", JOptionPane.WARNING_MESSAGE); readOut.get(resultsPane.getSelectedIndex()).append("\nUpdated Untrained Map:\n"); printInitMap(); } else JOptionPane.showMessageDialog(mainWindow, "File Mismatch with Network Configuration", "Correspondence Error", JOptionPane.ERROR_MESSAGE); else { JOptionPane.showMessageDialog(mainWindow, "Wrong File Type", "Category Error", JOptionPane.ERROR_MESSAGE); } else { JOptionPane.showMessageDialog(mainWindow, "No File Selected", "Absence Warning", JOptionPane.WARNING_MESSAGE); } } else { JOptionPane.showMessageDialog(mainWindow, "Can't Train Nonexistent Neural Network", "Existential Error", JOptionPane.ERROR_MESSAGE); } } }); getTraininger.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { for (ActionListener a : getTraining.getActionListeners()) { a.actionPerformed(ae); } } }); //this ends the getTraining section of the code getInput.addActionListener(new ActionListener() { //this method/class gets an input set (tsv/csv file) and parses it through the neural network. Somewhat tests that the file is formatted correctly, but cannot give a garuntee. public void actionPerformed(ActionEvent ae) { if (resultsPane.getTabCount() != 0) { int result; result = getTrainingSet.showOpenDialog(mainWindow); if (result == JFileChooser.APPROVE_OPTION) if (getTrainingSet.getSelectedFile().getName().endsWith(".csv") || getTrainingSet.getSelectedFile().getName().endsWith(".tsv") || getTrainingSet.getSelectedFile().getName().endsWith(".txt")) if (net.get(resultsPane.getSelectedIndex()) .parseInputSet(getTrainingSet.getSelectedFile())) { JOptionPane.showMessageDialog(mainWindow, "<html>Method gives no Garuntee that this File is Formatted Correctly<br>(see help for more details)</html>", "Formatting Warning", JOptionPane.WARNING_MESSAGE); if (netKind.get(resultsPane.getSelectedIndex()).toString() .equals("Self-Organizing Map")) printInitMap(); } else JOptionPane.showMessageDialog(mainWindow, "File Mismatch with Network Configuration", "Correspondence Error", JOptionPane.ERROR_MESSAGE); else JOptionPane.showMessageDialog(mainWindow, "Wrong File Type", "Category Error", JOptionPane.ERROR_MESSAGE); else JOptionPane.showMessageDialog(mainWindow, "No File Selected", "Absence Warning", JOptionPane.WARNING_MESSAGE); } else { JOptionPane.showMessageDialog(mainWindow, "Can't train nonexistent network", "Existential Error", JOptionPane.ERROR_MESSAGE); } } }); //opens and displays a color map of a SOM getColorMap.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (resultsPane.getTabCount() != 0) { if (netKind.get(resultsPane.getSelectedIndex()).toString().equals("Self-Organizing Map")) { MapNode[][] map; map = net.get(resultsPane.getSelectedIndex()).getMapArray(); int lValue = net.get(resultsPane.getSelectedIndex()).getLatticeValue(); int inputDimensions = net.get(resultsPane.getSelectedIndex()).getInputDimensions(); int[][] colorValues = new int[(lValue * lValue)][3]; double dMax = net.get(resultsPane.getSelectedIndex()).getDataMax(); double dMin = net.get(resultsPane.getSelectedIndex()).getDataMin(); int count = 0; for (int i = 0; i < lValue; i++) { for (int j = 0; j < lValue; j++) { for (int k = 0; k < 3; k++) { Vector tempVec = map[i][j].getWeights(); if (inputDimensions % 3 == 0) { colorValues[count][k] = Integer.parseInt(String.valueOf((Math.round(255 * (Double.parseDouble(String.valueOf(tempVec.elementAt(k)))))))); } if (inputDimensions % 3 == 1) { if (k == 0) colorValues[count][k] = 0; if (k == 1) { colorValues[count][k] = Integer .parseInt(String.valueOf((Math.round(255 * (Double .parseDouble(String.valueOf(tempVec.elementAt(0)))))))); } if (k == 2) colorValues[count][k] = 0; } if (inputDimensions % 3 == 2) { if (k == 2) { colorValues[count][k] = 0; } else colorValues[count][k] = Integer .parseInt(String.valueOf((Math.round(255 * (Double .parseDouble(String.valueOf(tempVec.elementAt(k)))))))); } } count++; } } JFrame frame = new JFrame(); frame.setTitle("Color Map"); frame.setPreferredSize(new Dimension(525, 500)); frame.add(new DrawPanel(colorValues, lValue)); frame.pack(); frame.setVisible(true); } else { JOptionPane.showMessageDialog(mainWindow, "This Feauture is only available for Self-Organizing Maps", "Not a Som Error", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(mainWindow, "Network does not exist", "Existential Error", JOptionPane.ERROR_MESSAGE); } } }); inputer.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { for (ActionListener a : getInput.getActionListeners()) a.actionPerformed(ae); } }); getNet = new JFileChooser(); getNet.setFileFilter(new ANNFileFilter()); //saves the net, or opens save as dialog if net is not saved yet save.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (resultsPane.getTabCount() != 0) { if (!path.get(resultsPane.getSelectedIndex()).equals("")) { net.get(resultsPane.getSelectedIndex()) .save(new File(path.get(resultsPane.getSelectedIndex()))); } else { for (ActionListener a : saveAs.getActionListeners()) { a.actionPerformed(ae); } } } else { JOptionPane.showMessageDialog(mainWindow, "Can't save NonExistent Neural Network", "Existential Error", JOptionPane.ERROR_MESSAGE); } } }); saver.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { for (ActionListener a : save.getActionListeners()) { a.actionPerformed(ae); } } }); //opens dialog for saving the net saveAs.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (resultsPane.getTabCount() != 0) { int result, override; String tempName; result = getNet.showSaveDialog(mainWindow); if (result == JFileChooser.APPROVE_OPTION) if ((new File(tempName = getNet.getSelectedFile().getName())).exists() || (new File(tempName + ".ffn")).exists() || (new File(tempName + ".som")).exists() || (new File(tempName + ".hfn")).exists()) { override = JOptionPane.showConfirmDialog(mainWindow, tempName + " already exists, do you want to override?", "File Exists", JOptionPane.YES_NO_OPTION); if (override == JOptionPane.YES_OPTION) { if (net.get(resultsPane.getSelectedIndex()).save(getNet.getSelectedFile())) { if (tempName.endsWith(".ffn") || tempName.endsWith(".som")) { netName.set(resultsPane.getSelectedIndex(), new StringBuffer(tempName)); title.get(resultsPane.getSelectedIndex()).setText(tempName + " "); } else if (netKind.get(resultsPane.getSelectedIndex()).toString() .equals("Feed Forward Network")) { netName.set(resultsPane.getSelectedIndex(), new StringBuffer(tempName + ".ffn")); title.get(resultsPane.getSelectedIndex()).setText(tempName + ".ffn "); } else if (netKind.get(resultsPane.getSelectedIndex()).toString() .equals("Self-Organizing Map")) { netName.set(resultsPane.getSelectedIndex(), new StringBuffer(tempName + ".som")); title.get(resultsPane.getSelectedIndex()).setText(tempName + ".som "); } path.set(resultsPane.getSelectedIndex(), getNet.getSelectedFile().getPath()); } else JOptionPane.showMessageDialog(mainWindow, "Could not save file", "File Error", JOptionPane.ERROR_MESSAGE); } } else { if (net.get(resultsPane.getSelectedIndex()).save(getNet.getSelectedFile())) { if (tempName.endsWith(".ffn") || tempName.endsWith(".som") || tempName.endsWith(".hfn")) { netName.set(resultsPane.getSelectedIndex(), new StringBuffer(tempName)); title.get(resultsPane.getSelectedIndex()).setText(tempName + " "); } else if (netKind.get(resultsPane.getSelectedIndex()).toString() .equals("Feed Forward Network")) { netName.set(resultsPane.getSelectedIndex(), new StringBuffer(tempName + ".ffn")); title.get(resultsPane.getSelectedIndex()).setText(tempName + ".ffn "); } else if (netKind.get(resultsPane.getSelectedIndex()).toString() .equals("Self-Organizing Map")) { netName.set(resultsPane.getSelectedIndex(), new StringBuffer(tempName + ".som")); title.get(resultsPane.getSelectedIndex()).setText(tempName + ".som "); path.set(resultsPane.getSelectedIndex(), getNet.getSelectedFile().getPath()); } } else JOptionPane.showMessageDialog(mainWindow, "Could not save file", "File Error", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(mainWindow, "Nothing to Save", "Existetial Error", JOptionPane.ERROR_MESSAGE); } } }); saveAser.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { for (ActionListener a : saveAs.getActionListeners()) { a.actionPerformed(ae); } } }); //loads a net load.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { int result; boolean test = true; String tempName; result = getNet.showOpenDialog(mainWindow); if (result == JFileChooser.APPROVE_OPTION) { tempName = getNet.getSelectedFile().getName(); for (StringBuffer names : netName) { if (names.toString().equals(tempName)) test = false; } if (test != false) { //creates and sets the network configuration if (tempName.endsWith(".ffn")) { net.add(new FullyConnectedFeedForwardNet()); } if (tempName.endsWith(".som")) { net.add(new SelfOrganizingMap()); } if (net.get(openNets).load(getNet.getSelectedFile())) try { //adds a close button to the top corner of each tab title.add(new JLabel(tempName + " ")); close.add(new JButton("X")); close.get(openNets).setActionCommand(tempName); close.get(openNets) .setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); close.get(openNets).setMargin(new Insets(0, 0, 0, 0)); tabPanel.add(new JPanel(new GridBagLayout())); tabPanel.get(openNets).setOpaque(false); GridBagConstraints grid = new GridBagConstraints(); grid.fill = GridBagConstraints.HORIZONTAL; grid.gridx = 0; grid.gridy = 0; grid.weightx = 1; tabPanel.get(openNets).add(title.get(openNets), grid); grid.gridx = 1; grid.gridy = 0; grid.weightx = 0; tabPanel.get(openNets).add(close.get(openNets), grid); //adds a loading bar loadingBar.add(new JLabel("", loadingImage, SwingConstants.CENTER)); loadingBar.get(openNets).setHorizontalTextPosition(SwingConstants.LEFT); loadingBar.get(openNets).setVisible(false); path.add(getNet.getSelectedFile().getPath()); netKind.add(new StringBuffer(netType.getSelectedItem().toString())); netName.add(new StringBuffer(tempName)); oneNet.add(new JPanel()); oneNet.get(openNets).setLayout(new GridBagLayout()); GridBagConstraints constraints = new GridBagConstraints(); constraints.fill = GridBagConstraints.BOTH; //creates the readOut space and formats it so that the scroll pane/text changes size with the window, reserves space for the loading bar readOut.add(new JTextArea("")); readOutLocale.add(new JScrollPane(readOut.get(openNets))); readOut.get(openNets).setEditable(false); constraints.gridx = 0; constraints.gridy = 0; constraints.weighty = 1.0; constraints.weightx = 1.0; constraints.gridwidth = 2; constraints.ipady = 90; oneNet.get(openNets).add(readOutLocale.get(openNets), constraints); constraints.fill = GridBagConstraints.HORIZONTAL; constraints.gridx = 0; constraints.gridy = 1; constraints.ipady = 0; constraints.gridwidth = 2; constraints.anchor = GridBagConstraints.PAGE_END; //add everythign to the tabbed pane oneNet.get(openNets).add(loadingBar.get(openNets), constraints); resultsPane.addTab(netName.get(openNets).toString(), oneNet.get(openNets)); resultsPane.setTabComponentAt(openNets, tabPanel.get(openNets)); //display the starting configuration of the network readOut.get(openNets).append("Network: " + netName.get(openNets) + "\n\n"); resultsPane.setSelectedIndex(openNets++); if (tempName.endsWith(".ffn")) printConnections(); if (tempName.endsWith(".som")) { readOut.get(resultsPane.getSelectedIndex()).append("\nUpdated Map:\n"); printInitMap(); } //unfortunately difficult way that I made to add the close button functionality to close a tab //it works, but there has to be a better way to do this close.get(resultsPane.getSelectedIndex()).addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent ae) { int result; result = 0; for (StringBuffer names : netName) { if (ae.getActionCommand().equals(names.toString())) { result = JOptionPane.showConfirmDialog(createFFN, "<html>Exiting Without Saving can Cause you to Lose your Progress<br>Are you sure you want to Continue?</html>", "Close Network", JOptionPane.OK_CANCEL_OPTION); resultsPane.setSelectedIndex(netName.indexOf(names)); } } if (result == JOptionPane.OK_OPTION) { net.remove(resultsPane.getSelectedIndex()); oneNet.remove(resultsPane.getSelectedIndex()); readOutLocale.remove(resultsPane.getSelectedIndex()); readOut.remove(resultsPane.getSelectedIndex()); loadingBar.remove(resultsPane.getSelectedIndex()); tabPanel.remove(resultsPane.getSelectedIndex()); title.remove(resultsPane.getSelectedIndex()); close.remove(resultsPane.getSelectedIndex()); netName.remove(resultsPane.getSelectedIndex()); resultsPane.remove(resultsPane.getSelectedIndex()); openNets--; } } }); } catch (Error e) { JOptionPane.showMessageDialog(mainWindow, "File Formatted Incorrectly", "Formatting Error", JOptionPane.ERROR_MESSAGE); } else { //if file was unable to load, remove the newly created neural network and display an error message net.remove(openNets); JOptionPane.showMessageDialog(mainWindow, "File Formatted Incorrectly", "Formatting Error", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(mainWindow, "File Already Open", "Duality Error", JOptionPane.ERROR_MESSAGE); } } } }); //associates the load toolbar button with load from the file menu loader.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { for (ActionListener a : load.getActionListeners()) a.actionPerformed(ae); } }); textFileChooser = new JFileChooser(); textFileChooser.setFileFilter(new TextFileFilter()); //exports all text from readout to a text file exportOutput.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (resultsPane.getTabCount() != 0) { int result; result = textFileChooser.showSaveDialog(mainWindow); if (result == JFileChooser.APPROVE_OPTION) { if (textFileChooser.getSelectedFile().exists() || (new File(textFileChooser.getSelectedFile().getPath() + ".txt")).exists()) { result = JOptionPane.showConfirmDialog(mainWindow, "The File you have selected already Exists, do you want to Overwrite it?", "File Exits", JOptionPane.YES_NO_OPTION); if (result == JOptionPane.YES_OPTION) { try { if (textFileChooser.getSelectedFile().getPath().endsWith(".txt")) FileUtils.writeStringToFile(textFileChooser.getSelectedFile(), readOut.get(resultsPane.getSelectedIndex()).getText()); else FileUtils.writeStringToFile( new File(textFileChooser.getSelectedFile().getPath() + ".txt"), readOut.get(resultsPane.getSelectedIndex()).getText()); JOptionPane.showMessageDialog(mainWindow, "Succesfully wrote readout to file"); } catch (Exception e) { JOptionPane.showMessageDialog(mainWindow, "Could not write to file", "Error", JOptionPane.ERROR_MESSAGE); } } } else { try { if (textFileChooser.getSelectedFile().getPath().endsWith(".txt")) FileUtils.writeStringToFile(textFileChooser.getSelectedFile(), readOut.get(resultsPane.getSelectedIndex()).getText()); else FileUtils.writeStringToFile( new File(textFileChooser.getSelectedFile().getPath() + ".txt"), readOut.get(resultsPane.getSelectedIndex()).getText()); JOptionPane.showMessageDialog(mainWindow, "Succesfully wrote readout to file"); } catch (Exception e) { JOptionPane.showMessageDialog(mainWindow, "Could not write to file", "Error", JOptionPane.ERROR_MESSAGE); } } } } else { JOptionPane.showMessageDialog(mainWindow, "Nothing to Export", "Existential Error", JOptionPane.ERROR_MESSAGE); } } }); projectFileChooser = new JFileChooser(); projectFileChooser.setFileFilter(new ProjectFileFilter()); //exports a neural network to a java/android project exportNet.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { int result, override, override2; String tempName; String templateFile; String directory; String path; if (resultsPane.getTabCount() != 0) { result = projectFileChooser.showSaveDialog(mainWindow); if (result == JFileChooser.APPROVE_OPTION) { path = projectFileChooser.getSelectedFile().getPath(); directory = projectFileChooser.getSelectedFile().getPath().substring(0, projectFileChooser.getSelectedFile().getPath().lastIndexOf(File.separator)); tempName = projectFileChooser.getSelectedFile().getName(); if (projectFileChooser.getSelectedFile().exists() || (new File(directory, tempName + ".java")).exists()) { override = JOptionPane.showConfirmDialog(mainWindow, "Java Class File" + tempName + " already exists, do you want to overwrite it?", "File Exists", JOptionPane.YES_NO_OPTION); if (override == JOptionPane.YES_OPTION) { try { if (!(new File(directory, "ann")).exists()) FileUtils.copyDirectoryToDirectory( FileUtils.toFile(ClassLoader.getSystemResource("ann/")), new File(directory)); if (netKind.get(resultsPane.getSelectedIndex()).toString() .equals("Feed Forward Network")) { templateFile = FileUtils.readFileToString(FileUtils .toFile(ClassLoader.getSystemResource("ann/FFNTemplate.txt"))); templateFile = templateFile.replaceAll("yourpackagename", (new File(directory)).getName()); templateFile = templateFile.replaceAll("YourProjectName", projectFileChooser.getSelectedFile().getName()); if (netName.get(resultsPane.getSelectedIndex()).toString().endsWith(".ffn")) templateFile = templateFile.replaceAll("networkName", (new File(directory)).getName() + File.separator + netName .get(resultsPane.getSelectedIndex()).toString()); else templateFile = templateFile.replaceAll("networkName", (new File(directory)).getName() + File.separator + netName.get(resultsPane.getSelectedIndex()).toString() + ".ffn"); if (path.indexOf('.') > 0) { FileUtils.writeStringToFile( new File(path.substring(0, path.lastIndexOf('.')) + ".java"), templateFile); } else FileUtils.writeStringToFile(new File(path + ".java"), templateFile); if ((new File(directory, (tempName = netName.get(resultsPane.getSelectedIndex()) .toString()))).exists() || (new File(directory, tempName + ".ffn")).exists()) { override2 = JOptionPane.showConfirmDialog(mainWindow, "Neural Network " + tempName + " already exists, do you want to overwrite it?", "File Exists", JOptionPane.YES_NO_OPTION); if (override2 == JOptionPane.YES_OPTION) if (net.get(resultsPane.getSelectedIndex()) .save(new File(directory + File.separator + tempName))) { JOptionPane.showMessageDialog(mainWindow, "Network Exported to " + (new File(directory)).getName()); } else { JOptionPane.showMessageDialog(mainWindow, "Couldn't save neural network to file, the rest of the project is exported", "Write Error", JOptionPane.ERROR_MESSAGE); } } else { if (net.get(resultsPane.getSelectedIndex()) .save(new File(directory + File.separator + tempName))) { JOptionPane.showMessageDialog(mainWindow, "Network Exported to " + (new File(directory)).getName()); } else { JOptionPane.showMessageDialog(mainWindow, "Couldn't save neural network to file, the rest of the project is exported", "Write Error", JOptionPane.ERROR_MESSAGE); } } } else if (netKind.get(resultsPane.getSelectedIndex()).toString() .equals("Self-Organizing Map")) { templateFile = FileUtils.readFileToString(FileUtils .toFile(ClassLoader.getSystemResource("ann/SOMTemplate.txt"))); templateFile = templateFile.replaceAll("yourpackagename", (new File(directory)).getName()); templateFile = templateFile.replaceAll("YourProjectName", projectFileChooser.getSelectedFile().getName()); if (netName.get(resultsPane.getSelectedIndex()).toString().endsWith(".som")) templateFile = templateFile.replaceAll("networkName", (new File(directory)).getName() + File.separator + netName .get(resultsPane.getSelectedIndex()).toString()); else templateFile = templateFile.replaceAll("networkName", (new File(directory)).getName() + File.separator + netName.get(resultsPane.getSelectedIndex()).toString() + ".som"); if (path.indexOf('.') > 0) { FileUtils.writeStringToFile( new File(path.substring(0, path.lastIndexOf('.')) + ".java"), templateFile); } else FileUtils.writeStringToFile(new File(path + ".java"), templateFile); if ((new File(directory, (tempName = netName.get(resultsPane.getSelectedIndex()) .toString()))).exists() || (new File(directory, tempName + ".som")).exists()) { override2 = JOptionPane.showConfirmDialog(mainWindow, "Neural Network " + tempName + " already exists, do you want to overwrite it?", "File Exists", JOptionPane.YES_NO_OPTION); if (override2 == JOptionPane.YES_OPTION) if (net.get(resultsPane.getSelectedIndex()) .save(new File(directory + File.separator + tempName))) { JOptionPane.showMessageDialog(mainWindow, "Network Exported to " + (new File(directory)).getName()); } else { JOptionPane.showMessageDialog(mainWindow, "Couldn't save neural network to file, the rest of the project is exported", "Write Error", JOptionPane.ERROR_MESSAGE); } } else { if (net.get(resultsPane.getSelectedIndex()) .save(new File(directory + File.separator + tempName))) { JOptionPane.showMessageDialog(mainWindow, "Network Exported to " + (new File(directory)).getName()); } else { JOptionPane.showMessageDialog(mainWindow, "Couldn't save neural network to file, the rest of the project is exported", "Write Error", JOptionPane.ERROR_MESSAGE); } } } } catch (IOException io) { System.out.println(io); } } } else { try { if (!(new File(directory, "ann")).exists()) FileUtils.copyDirectoryToDirectory( FileUtils.toFile(ClassLoader.getSystemResource("ann/")), new File(directory)); if (netKind.get(resultsPane.getSelectedIndex()).toString() .equals("Feed Forward Network")) { templateFile = FileUtils.readFileToString( FileUtils.toFile(ClassLoader.getSystemResource("ann/FFNTemplate.txt"))); templateFile = templateFile.replaceAll("yourpackagename", (new File(directory)).getName()); templateFile = templateFile.replaceAll("YourProjectName", projectFileChooser.getSelectedFile().getName()); if (netName.get(resultsPane.getSelectedIndex()).toString().endsWith(".ffn")) templateFile = templateFile.replaceAll("networkName", (new File(directory)).getName() + File.separator + netName.get(resultsPane.getSelectedIndex()).toString()); else templateFile = templateFile.replaceAll("networkName", (new File(directory)).getName() + File.separator + netName.get(resultsPane.getSelectedIndex()).toString() + ".ffn"); if (path.indexOf('.') > 0) { FileUtils.writeStringToFile( new File(path.substring(0, path.lastIndexOf('.')) + ".java"), templateFile); } else FileUtils.writeStringToFile(new File(path + ".java"), templateFile); if ((new File(directory + File.separator + (tempName = netName.get(resultsPane.getSelectedIndex()).toString()))) .exists() || (new File(directory + File.separator + tempName + ".ffn")) .exists()) { override2 = JOptionPane.showConfirmDialog(mainWindow, "Neural Network " + tempName + " already exists, do you want to overwrite it?", "File Exists", JOptionPane.YES_NO_OPTION); if (override2 == JOptionPane.YES_OPTION) if (net.get(resultsPane.getSelectedIndex()) .save(new File(directory + File.separator + tempName))) { JOptionPane.showMessageDialog(mainWindow, "Network Exported to " + (new File(directory)).getName()); } else { JOptionPane.showMessageDialog(mainWindow, "Couldn't save neural network to file, the rest of the project is exported", "Write Error", JOptionPane.ERROR_MESSAGE); } } else { if (net.get(resultsPane.getSelectedIndex()) .save(new File(directory + File.separator + tempName))) { JOptionPane.showMessageDialog(mainWindow, "Network Exported to " + (new File(directory)).getName()); } else { JOptionPane.showMessageDialog(mainWindow, "Couldn't save neural network to file, the rest of the project is exported", "Write Error", JOptionPane.ERROR_MESSAGE); } } } else if (netKind.get(resultsPane.getSelectedIndex()).toString() .equals("Self-Organizing Map")) { templateFile = FileUtils.readFileToString( FileUtils.toFile(ClassLoader.getSystemResource("ann/SOMTemplate.txt"))); templateFile = templateFile.replaceAll("yourpackagename", (new File(directory)).getName()); templateFile = templateFile.replaceAll("YourProjectName", projectFileChooser.getSelectedFile().getName()); if (netName.get(resultsPane.getSelectedIndex()).toString().endsWith(".som")) templateFile = templateFile.replaceAll("networkName", (new File(directory)).getName() + File.separator + netName.get(resultsPane.getSelectedIndex()).toString()); else templateFile = templateFile.replaceAll("networkName", (new File(directory)).getName() + File.separator + netName.get(resultsPane.getSelectedIndex()).toString() + ".som"); if (path.indexOf('.') > 0) { FileUtils.writeStringToFile( new File(path.substring(0, path.lastIndexOf('.')) + ".java"), templateFile); } else FileUtils.writeStringToFile(new File(path + ".java"), templateFile); if ((new File(directory, (tempName = netName.get(resultsPane.getSelectedIndex()).toString()))) .exists() || (new File(directory, tempName + ".som")).exists()) { override2 = JOptionPane.showConfirmDialog(mainWindow, "Neural Network " + tempName + " already exists, do you want to overwrite it?", "File Exists", JOptionPane.YES_NO_OPTION); if (override2 == JOptionPane.YES_OPTION) if (net.get(resultsPane.getSelectedIndex()) .save(new File(directory + File.separator + tempName))) { JOptionPane.showMessageDialog(mainWindow, "Network Exported to " + (new File(directory)).getName()); } else { JOptionPane.showMessageDialog(mainWindow, "Couldn't save neural network to file, the rest of the project is exported", "Write Error", JOptionPane.ERROR_MESSAGE); } } else { if (net.get(resultsPane.getSelectedIndex()) .save(new File(directory + File.separator + tempName))) { JOptionPane.showMessageDialog(mainWindow, "Network Exported to " + (new File(directory)).getName()); } else { JOptionPane.showMessageDialog(mainWindow, "Couldn't save neural network to file, the rest of the project is exported", "Write Error", JOptionPane.ERROR_MESSAGE); } } } } catch (IOException io) { System.out.println(io); } } } } else { JOptionPane.showMessageDialog(mainWindow, "Can't Export NonExistent Neural Network", "Existential Error", JOptionPane.ERROR_MESSAGE); } } }); toJava.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { for (ActionListener a : exportNet.getActionListeners()) a.actionPerformed(ae); } }); //settings menu changeConfig.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (resultsPane.getTabCount() != 0 && netKind.get(resultsPane.getSelectedIndex()).toString().equals("Feed Forward Network")) { modifyFFNDialog = new JDialog(mainWindow, "Network Settings", true); modifyFFNDialog.setSize(500, 500); modifyFFNDialog.setLayout(new GridBagLayout()); GridBagConstraints asdf = new GridBagConstraints(); asdf.gridwidth = 5; asdf.gridheight = 1; asdf.gridx = 0; asdf.gridy = 0; asdf.fill = GridBagConstraints.HORIZONTAL; modifyFFNDialog.add(new JSeparator(), asdf); asdf.gridwidth = 5; asdf.gridheight = 15; asdf.weightx = 1.0; asdf.weighty = 1.0; asdf.gridx = 0; asdf.gridy = 1; asdf.fill = GridBagConstraints.BOTH; settings = new JTextArea(); settings.setEditable(false); settings.setBorder(BorderFactory.createEtchedBorder()); modifyFFNDialog.add(settings, asdf); asdf.fill = GridBagConstraints.HORIZONTAL; asdf.gridwidth = 5; asdf.gridheight = 1; asdf.gridx = 0; asdf.gridy = 16; modifyFFNDialog.add(new JSeparator(), asdf); asdf.gridwidth = 2; asdf.gridx = 7; asdf.gridy = 0; modifyFFNDialog.add(new JSeparator(), asdf); asdf.fill = GridBagConstraints.NONE; asdf.gridx = 7; asdf.gridy = 1; learningRateL = new JLabel("Set Learning Rate:"); modifyFFNDialog.add(learningRateL, asdf); asdf.gridx = 7; asdf.gridy = 2; asdf.fill = GridBagConstraints.HORIZONTAL; learningRateTF = new JFormattedTextField(new NumberFormatter(NumberFormat.getNumberInstance())); learningRateTF.setText(""); modifyFFNDialog.add(learningRateTF, asdf); asdf.fill = GridBagConstraints.NONE; asdf.gridx = 7; asdf.gridy = 3; momentumL = new JLabel("Set Momentum:"); modifyFFNDialog.add(momentumL, asdf); asdf.gridx = 7; asdf.gridy = 4; asdf.fill = GridBagConstraints.HORIZONTAL; momentumTF = new JFormattedTextField(new NumberFormatter(NumberFormat.getNumberInstance())); momentumTF.setText(""); modifyFFNDialog.add(momentumTF, asdf); asdf.gridx = 7; asdf.gridy = 5; modifyFFNDialog.add(new JSeparator(), asdf); asdf.fill = GridBagConstraints.NONE; /*asdf.gridwidth = 2; asdf.gridheight = 1; asdf.gridx = 7; asdf.gridy = 6; setNoise = new JLabel("Use Noise: "); modifyFFNDialog.add(setNoise, asdf); asdf.gridx = 7; asdf.gridy = 7; asdf.gridwidth = 1; noiseOn = new JRadioButton("yes"); noiseOff = new JRadioButton("no"); noiseGroup = new ButtonGroup(); noiseGroup.add(noiseOn); noiseGroup.add(noiseOff); modifyFFNDialog.add(noiseOn,asdf); asdf.gridx = 8; asdf.gridy = 7; modifyFFNDialog.add(noiseOff,asdf); asdf.gridx = 7; asdf.gridy = 8; asdf.gridwidth = 2; setNoiseRange = new JButton("Set Noise Range"); modifyFFNDialog.add(setNoiseRange,asdf); asdf.gridx = 7; asdf.gridy = 9; setNoiseTiming = new JButton("Set Noise Timing"); modifyFFNDialog.add(setNoiseTiming,asdf);*/ asdf.gridx = 7; asdf.gridy = 10; asdf.fill = GridBagConstraints.HORIZONTAL; modifyFFNDialog.add(new JSeparator(), asdf); asdf.fill = GridBagConstraints.NONE; asdf.gridx = 7; asdf.gridy = 11; setTrainingStyle = new JLabel("Set Training Style:"); modifyFFNDialog.add(setTrainingStyle, asdf); asdf.gridx = 7; asdf.gridy = 12; asdf.gridwidth = 1; batchOn = new JRadioButton("batch"); onlineOn = new JRadioButton("online"); batchGroup = new ButtonGroup(); batchGroup.add(batchOn); batchGroup.add(onlineOn); modifyFFNDialog.add(batchOn, asdf); asdf.gridx = 8; modifyFFNDialog.add(onlineOn, asdf); asdf.gridx = 7; asdf.gridy = 13; asdf.gridwidth = 2; asdf.fill = GridBagConstraints.HORIZONTAL; modifyFFNDialog.add(new JSeparator(), asdf); asdf.fill = GridBagConstraints.NONE; asdf.gridx = 7; asdf.gridy = 14; modifyBiases = new JButton("Modify Biases"); modifyFFNDialog.add(modifyBiases, asdf); asdf.gridx = 7; asdf.gridy = 15; trainingCompletionButton = new JButton("Modify End Condition"); modifyFFNDialog.add(trainingCompletionButton, asdf); asdf.fill = GridBagConstraints.HORIZONTAL; asdf.gridy = 16; modifyFFNDialog.add(new JSeparator(), asdf); asdf.fill = GridBagConstraints.NONE; asdf.gridwidth = 1; asdf.gridx = 3; asdf.gridy = 17; asdf.anchor = GridBagConstraints.PAGE_END; modifyFFN = new JButton("OK"); modifyFFNDialog.add(modifyFFN, asdf); asdf.gridx = 7; cancelModifyFFN = new JButton("Cancel"); modifyFFNDialog.add(cancelModifyFFN, asdf); settings.setText(""); settings.append( "\n\n\n\nLearning Rate: " + net.get(resultsPane.getSelectedIndex()).getLearningRate()); settings.append("\n\nMomentum: " + net.get(resultsPane.getSelectedIndex()).getMomentum()); settings.append("\n\nTraining Style: "); if (net.get(resultsPane.getSelectedIndex()).getBatchvOnline()) { settings.append("batch"); batchOn.setSelected(true); } else { settings.append("online"); onlineOn.setSelected(true); } settings.append("\n\nTraining End Condition: "); if (net.get(resultsPane.getSelectedIndex()).getUseIteration()) { settings.append("Iterative"); settings.append( "\n\nIterations: " + net.get(resultsPane.getSelectedIndex()).getIterations()); } else { settings.append("Ideal Error"); settings.append( "\n\nIdeal Error: " + net.get(resultsPane.getSelectedIndex()).getIdealError()); } //expiremental feature, needs work on the back end to be properly implemented modifyBiases.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { JButton addBiases, removeBiases; biasesDialog = new JDialog(modifyFFNDialog, "Set Biases"); biasesDialog.setSize(200, 46); biasesDialog.setLayout(new GridLayout(2, 1)); addBiases = new JButton("Add Bias"); removeBiases = new JButton("Remove Bias"); biasesDialog.add(addBiases); biasesDialog.add(removeBiases); addBiases.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { JLabel howManyBiasLayersLabel, whatBiasNodeLabel, whatBiasValueLabel; final JFormattedTextField howManyBiasLayers, whatBiasNode, whatBiasValue; JButton addBiasOK, addBiasCancel; biasesDialog.setVisible(false); addBiasDialog = new JDialog(modifyFFNDialog, "Add Bias"); addBiasDialog.setSize(756, 90); addBiasDialog.setLayout(new GridLayout(4, 2)); howManyBiasLayersLabel = new JLabel("What Layer will get the Bias?"); howManyBiasLayers = new JFormattedTextField( new NumberFormatter(NumberFormat.getIntegerInstance())); whatBiasNodeLabel = new JLabel("Which Node will get the Bias?"); whatBiasNode = new JFormattedTextField( new NumberFormatter(NumberFormat.getIntegerInstance())); whatBiasValueLabel = new JLabel("What Value will the Bias have?"); whatBiasValue = new JFormattedTextField( new NumberFormatter(NumberFormat.getInstance())); addBiasOK = new JButton("OK"); addBiasCancel = new JButton("Cancel"); addBiasDialog.add(howManyBiasLayersLabel); addBiasDialog.add(howManyBiasLayers); addBiasDialog.add(whatBiasNodeLabel); addBiasDialog.add(whatBiasNode); addBiasDialog.add(whatBiasValueLabel); addBiasDialog.add(whatBiasValue); addBiasDialog.add(addBiasOK); addBiasDialog.add(addBiasCancel); addBiasOK.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (!howManyBiasLayers.getText().equals("") && !whatBiasNode.getText().equals("") && !whatBiasValue.getText().equals("")) { addBiasDialog.setVisible(false); if (net.get(resultsPane.getSelectedIndex()).addBias( Integer.parseInt(howManyBiasLayers.getText()) - 1, Integer.parseInt(whatBiasNode.getText()) - 1, Double.parseDouble(whatBiasValue.getText()))) { } else { JOptionPane.showMessageDialog(modifyFFNDialog, "Existential Error", "Invalid Node for Bias", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(modifyFFNDialog, "Form Error", "Form not completed", JOptionPane.ERROR_MESSAGE); } } }); addBiasCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { addBiasDialog.setVisible(false); } }); addBiasDialog.setVisible(true); } }); removeBiases.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { JLabel howManyBiasLayersLabel, whatBiasNodeLabel; final JFormattedTextField howManyBiasLayers, whatBiasNode; JButton addBiasOK, addBiasCancel; biasesDialog.setVisible(false); removeBiasDialog = new JDialog(modifyFFNDialog, "Remove Bias"); removeBiasDialog.setSize(756, 90); removeBiasDialog.setLayout(new GridLayout(3, 2)); howManyBiasLayersLabel = new JLabel("What Layer will lose the Bias?"); howManyBiasLayers = new JFormattedTextField( new NumberFormatter(NumberFormat.getIntegerInstance())); whatBiasNodeLabel = new JLabel("Which Node will get the Bias?"); whatBiasNode = new JFormattedTextField( new NumberFormatter(NumberFormat.getIntegerInstance())); addBiasOK = new JButton("OK"); addBiasCancel = new JButton("Cancel"); removeBiasDialog.add(howManyBiasLayersLabel); removeBiasDialog.add(howManyBiasLayers); removeBiasDialog.add(whatBiasNodeLabel); removeBiasDialog.add(whatBiasNode); removeBiasDialog.add(addBiasOK); removeBiasDialog.add(addBiasCancel); addBiasOK.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (!howManyBiasLayers.getText().equals("") && !whatBiasNode.getText().equals("")) { addBiasDialog.setVisible(false); if (net.get(resultsPane.getSelectedIndex()).removeBias( Integer.parseInt(howManyBiasLayers.getText()) - 1, Integer.parseInt(whatBiasNode.getText()) - 1)) { } else { JOptionPane.showMessageDialog(modifyFFNDialog, "Existential Error", "Invalid Node for Bias", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(modifyFFNDialog, "Form Error", "Form not completed", JOptionPane.ERROR_MESSAGE); } } }); addBiasCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { addBiasDialog.setVisible(false); } }); removeBiasDialog.setVisible(true); } }); biasesDialog.setVisible(true); } }); trainingCompletionButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { final JDialog iterationsDialog; JLabel numberOfIterationsLabel; final JFormattedTextField numberOfIterations; JButton iterationsOK, iterationsCancel; iterationsDialog = new JDialog(modifyFFNDialog, "Set Iterations"); iterationsDialog.setSize(765, 75); iterationsDialog.setLayout(new GridLayout(2, 2)); numberOfIterationsLabel = new JLabel("How Many Iterations do you want to Train?"); numberOfIterations = new JFormattedTextField( new NumberFormatter(NumberFormat.getIntegerInstance())); iterationsOK = new JButton("OK"); iterationsCancel = new JButton("Cancel"); iterationsDialog.add(numberOfIterationsLabel); iterationsDialog.add(numberOfIterations); iterationsDialog.add(iterationsOK); iterationsDialog.add(iterationsCancel); iterationsOK.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (!numberOfIterations.getText().equals("")) { iterationsDialog.setVisible(false); if (net.get(resultsPane.getSelectedIndex()) .setIterations(Integer.parseInt(numberOfIterations.getText()))) { settings.setText(""); settings.append("\n\n\n\nLearning Rate: " + net.get(resultsPane.getSelectedIndex()).getLearningRate()); settings.append("\n\nMomentum: " + net.get(resultsPane.getSelectedIndex()).getMomentum()); settings.append("\n\nTraining Style: "); if (net.get(resultsPane.getSelectedIndex()).getBatchvOnline()) { settings.append("batch"); batchOn.setSelected(true); } else { settings.append("online"); onlineOn.setSelected(true); } settings.append("\n\nTraining End Condition: "); if (net.get(resultsPane.getSelectedIndex()).getUseIteration()) { settings.append("Iterative"); settings.append("\n\nIterations: " + net.get(resultsPane.getSelectedIndex()).getIterations()); } else { settings.append("Ideal Error"); settings.append("\n\nIdeal Error: " + net.get(resultsPane.getSelectedIndex()).getIdealError()); } modifyFFNDialog.setVisible(true); } else { JOptionPane.showMessageDialog(modifyFFNDialog, "Invalid Number of Iterations", "Math Error", JOptionPane.ERROR_MESSAGE); } } else { JOptionPane.showMessageDialog(iterationsDialog, "Field not filled out", "Form Error", JOptionPane.ERROR_MESSAGE); } } }); iterationsCancel.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { iterationsDialog.setVisible(false); } }); iterationsDialog.setVisible(true); } }); modifyFFN.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (!learningRateTF.getText().equals("")) { net.get(resultsPane.getSelectedIndex()) .setLearningRate(Double.parseDouble(learningRateTF.getText())); learningRateTF.setText(""); } if (!momentumTF.getText().equals("")) { net.get(resultsPane.getSelectedIndex()) .setMomentum(Double.parseDouble(momentumTF.getText())); momentumTF.setText(""); } if (batchOn.isSelected()) { net.get(resultsPane.getSelectedIndex()).setBatchvOnline(true); } else { net.get(resultsPane.getSelectedIndex()).setBatchvOnline(false); } modifyFFNDialog.setVisible(false); } }); learningRateTF.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (learningRateTF.getText() != "") { net.get(resultsPane.getSelectedIndex()) .setLearningRate(Double.parseDouble(learningRateTF.getText())); } settings.setText(""); settings.append("\n\n\n\nLearning Rate: " + net.get(resultsPane.getSelectedIndex()).getLearningRate()); settings.append( "\n\nMomentum: " + net.get(resultsPane.getSelectedIndex()).getMomentum()); settings.append("\n\nTraining Style: "); if (net.get(resultsPane.getSelectedIndex()).getBatchvOnline()) { settings.append("batch"); batchOn.setSelected(true); } else { settings.append("online"); onlineOn.setSelected(true); } settings.append("\n\nTraining End Condition: "); if (net.get(resultsPane.getSelectedIndex()).getUseIteration()) { settings.append("Iterative"); settings.append("\n\nIterations: " + net.get(resultsPane.getSelectedIndex()).getIterations()); } else { settings.append("Ideal Error"); settings.append("\n\nIdeal Error: " + net.get(resultsPane.getSelectedIndex()).getIdealError()); } modifyFFNDialog.setVisible(true); } }); momentumTF.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (momentumTF.getText() != "") { net.get(resultsPane.getSelectedIndex()) .setMomentum(Double.parseDouble(momentumTF.getText())); } settings.setText(""); settings.append("\n\n\n\nLearning Rate: " + net.get(resultsPane.getSelectedIndex()).getLearningRate()); settings.append( "\n\nMomentum: " + net.get(resultsPane.getSelectedIndex()).getMomentum()); settings.append("\n\nTraining Style: "); if (net.get(resultsPane.getSelectedIndex()).getBatchvOnline()) { settings.append("batch"); batchOn.setSelected(true); } else { settings.append("online"); onlineOn.setSelected(true); } settings.append("\n\nTraining End Condition: "); if (net.get(resultsPane.getSelectedIndex()).getUseIteration()) { settings.append("Iterative"); settings.append("\n\nIterations: " + net.get(resultsPane.getSelectedIndex()).getIterations()); } else { settings.append("Ideal Error"); settings.append("\n\nIdeal Error: " + net.get(resultsPane.getSelectedIndex()).getIdealError()); } modifyFFNDialog.setVisible(true); } }); cancelModifyFFN.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { modifyFFNDialog.setVisible(false); } }); modifyFFNDialog.setVisible(true); } if (resultsPane.getTabCount() != 0 && netKind.get(resultsPane.getSelectedIndex()).toString().equals("Self-Organizing Map")) { modifySOMDialog = new JDialog(mainWindow, "Network Settings", true); modifySOMDialog.setSize(500, 400); modifySOMDialog.setLayout(new GridBagLayout()); GridBagConstraints asdf = new GridBagConstraints(); asdf.gridwidth = 5; asdf.gridheight = 1; asdf.gridx = 0; asdf.gridy = 0; asdf.fill = GridBagConstraints.HORIZONTAL; modifySOMDialog.add(new JSeparator(), asdf); asdf.gridwidth = 5; asdf.gridheight = 15; asdf.weightx = 1.0; asdf.weighty = 1.0; asdf.gridx = 0; asdf.gridy = 1; asdf.fill = GridBagConstraints.BOTH; settings = new JTextArea(); settings.setEditable(false); settings.setBorder(BorderFactory.createEtchedBorder()); modifySOMDialog.add(settings, asdf); asdf.fill = GridBagConstraints.HORIZONTAL; asdf.gridwidth = 5; asdf.gridheight = 1; asdf.gridx = 0; asdf.gridy = 16; modifySOMDialog.add(new JSeparator(), asdf); asdf.gridwidth = 2; asdf.gridx = 7; asdf.gridy = 0; modifySOMDialog.add(new JSeparator(), asdf); asdf.fill = GridBagConstraints.NONE; asdf.gridx = 7; asdf.gridy = 1; mIterationL = new JLabel("Set Number of Iterations:"); modifySOMDialog.add(mIterationL, asdf); asdf.gridx = 7; asdf.gridy = 2; asdf.fill = GridBagConstraints.HORIZONTAL; mIterationTF = new JFormattedTextField(new NumberFormatter(NumberFormat.getIntegerInstance())); mIterationTF.setText(""); modifySOMDialog.add(mIterationTF, asdf); asdf.fill = GridBagConstraints.NONE; asdf.gridx = 7; asdf.gridy = 3; mLRL = new JLabel("Set Learning Rate (0-1):"); modifySOMDialog.add(mLRL, asdf); asdf.gridx = 7; asdf.gridy = 4; asdf.fill = GridBagConstraints.HORIZONTAL; mLRTF = new JFormattedTextField(new NumberFormatter(NumberFormat.getNumberInstance())); mLRTF.setText(""); modifySOMDialog.add(mLRTF, asdf); asdf.fill = GridBagConstraints.NONE; asdf.gridx = 7; asdf.gridy = 5; mMaxL = new JLabel("Set Data Maximum:"); modifySOMDialog.add(mMaxL, asdf); asdf.gridx = 7; asdf.gridy = 6; asdf.fill = GridBagConstraints.HORIZONTAL; mMaxTF = new JFormattedTextField(new NumberFormatter(NumberFormat.getNumberInstance())); mMaxTF.setText(""); modifySOMDialog.add(mMaxTF, asdf); asdf.fill = GridBagConstraints.NONE; asdf.gridx = 7; asdf.gridy = 7; mMinL = new JLabel("Set Data Minimum:"); modifySOMDialog.add(mMinL, asdf); asdf.gridx = 7; asdf.gridy = 8; asdf.fill = GridBagConstraints.HORIZONTAL; mMinTF = new JFormattedTextField(new NumberFormatter(NumberFormat.getNumberInstance())); mMinTF.setText(""); modifySOMDialog.add(mMinTF, asdf); asdf.fill = GridBagConstraints.HORIZONTAL; asdf.gridy = 16; modifySOMDialog.add(new JSeparator(), asdf); asdf.fill = GridBagConstraints.NONE; asdf.gridwidth = 1; asdf.gridx = 3; asdf.gridy = 17; asdf.anchor = GridBagConstraints.PAGE_END; modifySOM = new JButton("OK"); modifySOMDialog.add(modifySOM, asdf); asdf.gridx = 7; cancelModifySOM = new JButton("Cancel"); modifySOMDialog.add(cancelModifySOM, asdf); settings.setText(""); settings.append("\n\nNumber of Iterations: " + net.get(resultsPane.getSelectedIndex()).getNumIterations()); settings.append( "\n\nLearning Rate: " + net.get(resultsPane.getSelectedIndex()).getLearningRate()); settings.append("\n\nData Maximum: " + net.get(resultsPane.getSelectedIndex()).getDataMax()); settings.append("\n\nData Minimum: " + net.get(resultsPane.getSelectedIndex()).getDataMin()); mIterationTF.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (mIterationTF.getText() != "") { net.get(resultsPane.getSelectedIndex()) .setNumIterations(Integer.parseInt(mIterationTF.getText())); settings.setText(""); settings.append("\n\nNumber of Iterations: " + net.get(resultsPane.getSelectedIndex()).getNumIterations()); settings.append("\n\nLearning Rate: " + net.get(resultsPane.getSelectedIndex()).getLearningRate()); settings.append("\n\nData Maximum: " + net.get(resultsPane.getSelectedIndex()).getDataMax()); settings.append("\n\nData Minimum: " + net.get(resultsPane.getSelectedIndex()).getDataMin()); } } }); mLRTF.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if ((mLRTF.getText() != "") && ((Double.parseDouble(mLRTF.getText())) <= 1.0)) { net.get(resultsPane.getSelectedIndex()) .setLearningRate(Double.parseDouble(mLRTF.getText())); settings.setText(""); settings.append("\n\nNumber of Iterations: " + net.get(resultsPane.getSelectedIndex()).getNumIterations()); settings.append("\n\nLearning Rate: " + net.get(resultsPane.getSelectedIndex()).getLearningRate()); settings.append("\n\nData Maximum: " + net.get(resultsPane.getSelectedIndex()).getDataMax()); settings.append("\n\nData Minimum: " + net.get(resultsPane.getSelectedIndex()).getDataMin()); } else { JOptionPane.showMessageDialog(mLRTF, "Pick a number from 0 - 1", "Incorrect Value", JOptionPane.ERROR_MESSAGE); mLRTF.setText(""); } } }); mMaxTF.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if ((mMaxTF.getText() != "") && (((Double.parseDouble(mMaxTF.getText())) > net .get(resultsPane.getSelectedIndex()).getDataMin()))) { net.get(resultsPane.getSelectedIndex()) .setDataMax(Double.parseDouble(mMaxTF.getText())); settings.setText(""); settings.append("\n\nNumber of Iterations: " + net.get(resultsPane.getSelectedIndex()).getNumIterations()); settings.append("\n\nLearning Rate: " + net.get(resultsPane.getSelectedIndex()).getLearningRate()); settings.append("\n\nData Maximum: " + net.get(resultsPane.getSelectedIndex()).getDataMax()); settings.append("\n\nData Minimum: " + net.get(resultsPane.getSelectedIndex()).getDataMin()); } else { JOptionPane.showMessageDialog(mMaxTF, "Max value must be greater than Min value", "Incorrect Value", JOptionPane.ERROR_MESSAGE); mMaxTF.setText(""); } } }); mMinTF.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if ((mMinTF.getText() != "") && ((Double.parseDouble(mMinTF.getText())) < net .get(resultsPane.getSelectedIndex()).getDataMax())) { net.get(resultsPane.getSelectedIndex()) .setDataMin(Double.parseDouble(mMinTF.getText())); settings.setText(""); settings.append("\n\nNumber of Iterations: " + net.get(resultsPane.getSelectedIndex()).getNumIterations()); settings.append("\n\nLearning Rate: " + net.get(resultsPane.getSelectedIndex()).getLearningRate()); settings.append("\n\nData Maximum: " + net.get(resultsPane.getSelectedIndex()).getDataMax()); settings.append("\n\nData Minimum: " + net.get(resultsPane.getSelectedIndex()).getDataMin()); } else { JOptionPane.showMessageDialog(mMinTF, "Min value must be less than Max value", "Incorrect Value", JOptionPane.ERROR_MESSAGE); mMinTF.setText(""); } } }); modifySOM.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { boolean error = false; if (!("".equals(mIterationTF.getText()))) { net.get(resultsPane.getSelectedIndex()) .setNumIterations(Integer.parseInt(mIterationTF.getText())); } if (!("".equals(mLRTF.getText()))) { if ((Double.parseDouble(mLRTF.getText())) > 1.0) { error = true; mLRTF.setText(""); } else net.get(resultsPane.getSelectedIndex()) .setLearningRate(Double.parseDouble(mLRTF.getText())); } if (!("".equals(mMaxTF.getText()))) { if (((Double.parseDouble(mMaxTF.getText())) < net .get(resultsPane.getSelectedIndex()).getDataMin())) { error = true; mMaxTF.setText(""); } else net.get(resultsPane.getSelectedIndex()) .setDataMax(Double.parseDouble(mMaxTF.getText())); } if (!("".equals(mMinTF.getText()))) { if ((Double.parseDouble(mMinTF.getText())) > net.get(resultsPane.getSelectedIndex()) .getDataMax()) { error = true; mMinTF.setText(""); } else net.get(resultsPane.getSelectedIndex()) .setDataMin(Double.parseDouble(mMinTF.getText())); } if (error == true) { JOptionPane.showMessageDialog(modifySOMDialog, "One or more fields have incorrect values", "Incorrect Value", JOptionPane.ERROR_MESSAGE); } else { modifySOMDialog.setVisible(false); readOut.get(resultsPane.getSelectedIndex()).append("\nUpdated Map:\n"); printInitMap(); } } }); cancelModifySOM.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { modifySOMDialog.setVisible(false); } }); modifySOMDialog.setVisible(true); } } }); modify.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { for (ActionListener a : changeConfig.getActionListeners()) { a.actionPerformed(ae); } } }); //The following code is for the newNet button under file: //create a dialog to be activated when "New Network" is pressed in the file menu newDialog = new JDialog(mainWindow, "New Network", true); newDialog.setSize(375, 100); newDialog.setLayout(new GridLayout(3, 2)); //going to change the layout to GridBagLayout for better customization name = new JLabel("Network Name:"); newName = new JTextField(10); type = new JLabel("Type of Network:"); netTypes = new String[] { "Feed Forward Network", "Self-Organizing Map" }; netType = new JComboBox<String>(netTypes); netType.setSelectedItem("Feed Forward Network"); createNewNet = new JButton("create"); cancelNew = new JButton("cancel"); newDialog.add(name); newDialog.add(newName); newDialog.add(type); newDialog.add(netType); newDialog.add(createNewNet); newDialog.add(cancelNew); //utilities for a second dialog(Feed Forward Network) in the process of creating a new network number = new JLabel("Enter the number of layers you want for your network:"); howManyLayers = new JFormattedTextField(new NumberFormatter(NumberFormat.getIntegerInstance())); createFFNArchitecture = new JButton("OK"); cancelFFN = new JButton("Cancel"); howManyNodes = new JFormattedTextField(new NumberFormatter(NumberFormat.getIntegerInstance())); createFFN = new JButton("OK"); cancelNodes = new JButton("Cancel"); //Written by Michael Scott somLattice = new JLabel(" Lattice number for your Map:"); somLatticeField = new JFormattedTextField(new NumberFormatter(NumberFormat.getIntegerInstance())); somLatticeField.setFocusLostBehavior(1); somMax = new JLabel(" Maximum value of your input (if known):"); somMaxField = new JFormattedTextField(new NumberFormatter(NumberFormat.getInstance())); somMaxField.setFocusLostBehavior(1); somMin = new JLabel(" Minimum value of your input (if known):"); somMinField = new JFormattedTextField(new NumberFormatter(NumberFormat.getInstance())); somMinField.setFocusLostBehavior(1); somDim = new JLabel(" Node Dimensions:"); somDimField = new JFormattedTextField(new NumberFormatter(NumberFormat.getIntegerInstance())); somDimField.setFocusLostBehavior(1); createSOM = new JButton("OK"); cancelSOM = new JButton("Cancel"); //displays the newDialog window when newNet is pressed newNet.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { newDialog.setVisible(true); } }); newwer.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { newDialog.setVisible(true); } }); //makes hitting enter in the text box do the same thing as clicking "create" newName.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { for (ActionListener a : createNewNet.getActionListeners()) { a.actionPerformed(ae); } } }); //when create net is pressed, this reads the selections from the newNet dialog and creates the approriate next dialog createNewNet.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { int test; test = 0; for (StringBuffer names : netName) { if (names.toString().equals(newName.getText())) test = 1; } if (test == 0) if (!newName.getText().equals("")) { if (netType.getSelectedIndex() == 0) { //if the net selected is Feed Forward, create and display the prompt for a feed forward network newDialog.setVisible(false); fFNDialog = new JDialog(mainWindow, newName.getText(), true); fFNDialog.setSize(919, 65); fFNDialog.setLayout(new GridLayout(2, 2)); fFNDialog.add(number); fFNDialog.add(howManyLayers); fFNDialog.add(createFFNArchitecture); fFNDialog.add(cancelFFN); fFNDialog.setVisible(true); } //Written by Michael Scott if (netType.getSelectedIndex() == 1) { newDialog.setVisible(false); sOMDialog = new JDialog(mainWindow, newName.getText(), true); sOMDialog.setSize(500, 180); sOMDialog.setLayout(new GridLayout(5, 2)); sOMDialog.add(somLattice); sOMDialog.add(somLatticeField); sOMDialog.add(somDim); sOMDialog.add(somDimField); sOMDialog.add(somMax); sOMDialog.add(somMaxField); sOMDialog.add(somMin); sOMDialog.add(somMinField); sOMDialog.add(createSOM); sOMDialog.add(cancelSOM); sOMDialog.setVisible(true); } } else JOptionPane.showMessageDialog(createNewNet, "Network must have a Name", "Namelessness Error", JOptionPane.ERROR_MESSAGE); else { JOptionPane.showMessageDialog(createNewNet, "Network " + newName.getText() + " already exists", "Existential Naming Error", JOptionPane.ERROR_MESSAGE); newName.setText(""); } } }); //beginning of section about creating Feed Forward Networks //cancel clears the name field and hides the newDialog dialog cancelNew.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { newDialog.setVisible(false); newName.setText(""); } }); //makes hitting enter the same as clicking "ok" howManyLayers.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { for (ActionListener a : createFFNArchitecture.getActionListeners()) { a.actionPerformed(ae); } } }); //create a prompt for the first layer to determine how many nodes will go into the first layer createFFNArchitecture.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (!howManyLayers.getText().equals("") && (layers = Integer.parseInt(howManyLayers.getText())) > 1) { nodeConfiguration = new int[layers]; //create an array to hold the node configuration that will be passed to the Net constructor layer = 1; //create a variable to hold the current layer the prompt series is on numberofNodes = new JLabel("How many nodes do you want in layer " + layer + "?"); fFNDialog.setVisible(false); howManyNodesDialog = new JDialog(mainWindow, newName.getText(), true); howManyNodesDialog.setSize(919, 65); howManyNodesDialog.setLayout(new GridLayout(2, 2)); howManyNodesDialog.add(numberofNodes); howManyNodesDialog.add(howManyNodes); howManyNodesDialog.add(createFFN); howManyNodesDialog.add(cancelNodes); howManyNodesDialog.setVisible(true); } else { //if the string is not valid, pop up an error message JOptionPane.showMessageDialog(fFNDialog, "<html>Number Out of Bounds<br>Please Enter a Number Greater than 1</html>", "Out of Bounds", JOptionPane.ERROR_MESSAGE); } } }); //runs each time ok is pressed, until all the layers have a vaule for the number of nodes in the layer createFFN.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (!howManyNodes.getText().equals("") && (nodeConfiguration[layer - 1] = Integer.parseInt(howManyNodes.getText())) > 0) { if (layer == layers) { try { //adds a close button to the top corner of each tab title.add(new JLabel(newName.getText() + " ")); close.add(new JButton("X")); close.get(openNets).setActionCommand(newName.getText()); close.get(openNets).setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); close.get(openNets).setMargin(new Insets(0, 0, 0, 0)); tabPanel.add(new JPanel(new GridBagLayout())); tabPanel.get(openNets).setOpaque(false); GridBagConstraints grid = new GridBagConstraints(); grid.fill = GridBagConstraints.HORIZONTAL; grid.gridx = 0; grid.gridy = 0; grid.weightx = 1; tabPanel.get(openNets).add(title.get(openNets), grid); grid.gridx = 1; grid.gridy = 0; grid.weightx = 0; tabPanel.get(openNets).add(close.get(openNets), grid); //adds a loading bar loadingBar.add(new JLabel("", loadingImage, SwingConstants.CENTER)); loadingBar.get(openNets).setHorizontalTextPosition(SwingConstants.LEFT); loadingBar.get(openNets).setVisible(false); //creates and sets the network configuration net.add(new FullyConnectedFeedForwardNet(nodeConfiguration)); netKind.add(new StringBuffer(netType.getSelectedItem().toString())); netName.add(new StringBuffer(newName.getText())); oneNet.add(new JPanel()); oneNet.get(openNets).setLayout(new GridBagLayout()); GridBagConstraints constraints = new GridBagConstraints(); constraints.fill = GridBagConstraints.BOTH; //creates the readOut space and formats it so that the scroll pane/text changes size with the window, reserves space for the loading bar readOut.add(new JTextArea("")); readOutLocale.add(new JScrollPane(readOut.get(openNets))); readOut.get(openNets).setEditable(false); constraints.gridx = 0; constraints.gridy = 0; constraints.weighty = 1.0; constraints.weightx = 1.0; constraints.gridwidth = 2; constraints.ipady = 90; oneNet.get(openNets).add(readOutLocale.get(openNets), constraints); constraints.fill = GridBagConstraints.HORIZONTAL; constraints.gridx = 0; constraints.gridy = 1; constraints.ipady = 0; constraints.gridwidth = 2; constraints.anchor = GridBagConstraints.PAGE_END; //add everythign to the tabbed pane oneNet.get(openNets).add(loadingBar.get(openNets), constraints); resultsPane.addTab(netName.get(openNets).toString(), oneNet.get(openNets)); resultsPane.setTabComponentAt(openNets, tabPanel.get(openNets)); path.add(""); //display the starting configuration of the network readOut.get(openNets).append("Network: " + netName.get(openNets) + "\n\n"); resultsPane.setSelectedIndex(openNets++); printConnections(); //erases all the text in the setup fields and closes the window howManyNodes.setValue(null); howManyLayers.setText(""); newName.setText(""); howManyNodesDialog.setVisible(false); //unfortunately difficult way that I made to add the close button functionality to close a tab //it works, but there has to be a better way to do this close.get(resultsPane.getSelectedIndex()).addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent ae) { int result; result = 0; for (StringBuffer names : netName) { if (ae.getActionCommand().equals(names.toString())) { result = JOptionPane.showConfirmDialog(createFFN, "<html>Exiting Without Saving can Cause you to Lose your Progress<br>Are you sure you want to Continue?</html>", "Close Network", JOptionPane.OK_CANCEL_OPTION); resultsPane.setSelectedIndex(netName.indexOf(names)); } } if (result == JOptionPane.OK_OPTION) { net.remove(resultsPane.getSelectedIndex()); oneNet.remove(resultsPane.getSelectedIndex()); readOutLocale.remove(resultsPane.getSelectedIndex()); readOut.remove(resultsPane.getSelectedIndex()); loadingBar.remove(resultsPane.getSelectedIndex()); tabPanel.remove(resultsPane.getSelectedIndex()); title.remove(resultsPane.getSelectedIndex()); close.remove(resultsPane.getSelectedIndex()); netName.remove(resultsPane.getSelectedIndex()); resultsPane.remove(resultsPane.getSelectedIndex()); openNets--; } } }); } catch (OutOfMemoryError e) { JOptionPane.showMessageDialog(mainWindow, "<html>Net too Large for Memory.<br>Try Closing some of the Nets.</html>", "Memory Error", JOptionPane.ERROR_MESSAGE); } } else { layer++; howManyNodes.setText(""); numberofNodes.setText("How many nodes do you want in layer " + layer + "?"); } } else { JOptionPane.showMessageDialog(createFFN, "<html>Number Out of Bounds<br>Please Enter a Number Greater than 0", "Out of Bounds", JOptionPane.ERROR_MESSAGE); } } }); //makes hitting enter in text box the same as clicking ok howManyNodes.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { for (ActionListener a : createFFN.getActionListeners()) { a.actionPerformed(ae); } } }); //cancels the node prompt cancelNodes.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { newName.setText(""); howManyLayers.setText(""); howManyNodes.setText(""); howManyNodesDialog.setVisible(false); } }); //cancel clears both name fields so far filled in the series of dialogs and hides the dialog cancelFFN.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { newName.setText(""); howManyLayers.setText(""); fFNDialog.setVisible(false); } }); //end of section about creating FFNs //end of section about newNet //Method to create a SOM createSOM.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { if (somLatticeField.getText().equals("") || somDimField.getText().equals("")) { JOptionPane.showMessageDialog(createSOM, "<html>Empty Field<br>Please Fill All Fields", "Empty Field", JOptionPane.ERROR_MESSAGE); } else { if (somMaxField.getText().equals("")) somMaxField.setText("100"); if (somMinField.getText().equals("")) somMinField.setText("0"); if (Double.parseDouble(somMaxField.getText().replace(",", "")) < Double .parseDouble(somMinField.getText().replace(",", ""))) { JOptionPane.showMessageDialog(createSOM, "MIN GREATER THAN MAX!!!!", "Stupidity Error", JOptionPane.ERROR_MESSAGE); } try { //adds a close button to the top corner of each tab title.add(new JLabel(newName.getText() + " ")); close.add(new JButton("X")); close.get(openNets).setActionCommand(newName.getText()); close.get(openNets).setBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED)); close.get(openNets).setMargin(new Insets(0, 0, 0, 0)); tabPanel.add(new JPanel(new GridBagLayout())); tabPanel.get(openNets).setOpaque(false); GridBagConstraints grid = new GridBagConstraints(); grid.fill = GridBagConstraints.HORIZONTAL; grid.gridx = 0; grid.gridy = 0; grid.weightx = 1; tabPanel.get(openNets).add(title.get(openNets), grid); grid.gridx = 1; grid.gridy = 0; grid.weightx = 0; tabPanel.get(openNets).add(close.get(openNets), grid); //adds a loading bar loadingBar.add(new JLabel("", loadingImage, SwingConstants.CENTER)); loadingBar.get(openNets).setHorizontalTextPosition(SwingConstants.LEFT); loadingBar.get(openNets).setVisible(false); //creates and sets the network configuration net.add(new SelfOrganizingMap()); netKind.add(new StringBuffer(netType.getSelectedItem().toString())); netName.add(new StringBuffer(newName.getText())); oneNet.add(new JPanel()); oneNet.get(openNets).setLayout(new GridBagLayout()); GridBagConstraints constraints = new GridBagConstraints(); constraints.fill = GridBagConstraints.BOTH; //creates the readOut space and formats it so that the scroll pane/text changes size with the window, reserves space for the loading bar readOut.add(new JTextArea("")); readOutLocale.add(new JScrollPane(readOut.get(openNets))); readOut.get(openNets).setEditable(false); constraints.gridx = 0; constraints.gridy = 0; constraints.weighty = 1.0; constraints.weightx = 1.0; constraints.gridwidth = 2; constraints.ipady = 90; oneNet.get(openNets).add(readOutLocale.get(openNets), constraints); constraints.fill = GridBagConstraints.HORIZONTAL; constraints.gridx = 0; constraints.gridy = 1; constraints.ipady = 0; constraints.gridwidth = 2; constraints.anchor = GridBagConstraints.PAGE_END; //add everythign to the tabbed pane oneNet.get(openNets).add(loadingBar.get(openNets), constraints); resultsPane.addTab(netName.get(openNets).toString(), oneNet.get(openNets)); resultsPane.setTabComponentAt(openNets, tabPanel.get(openNets)); path.add(""); //display the starting configuration of the network readOut.get(openNets).append("Network: " + netName.get(openNets) + "\n\n"); resultsPane.setSelectedIndex(openNets++); try { net.get(resultsPane.getSelectedIndex()) .setLatticeValue(Integer.parseInt(somLatticeField.getText().replace(",", ""))); net.get(resultsPane.getSelectedIndex()) .setDataMax(Double.parseDouble(somMaxField.getText().replace(",", ""))); net.get(resultsPane.getSelectedIndex()) .setDataMin(Double.parseDouble(somMinField.getText().replace(",", ""))); net.get(resultsPane.getSelectedIndex()) .setInputDimensions(Integer.parseInt(somDimField.getText().replace(",", ""))); net.get(resultsPane.getSelectedIndex()).runNet(); readOut.get(resultsPane.getSelectedIndex()).append("Initial Untrained Map:\n"); printInitMap(); if (!getColorMap.isVisible()) { util.addSeparator(); util.add(getColorMap); getColorMap.setVisible(true); } //erases all the text in the setup fields and closes the window newName.setText(""); somLatticeField.setText(""); somDimField.setText(""); somMaxField.setText(""); somMinField.setText(""); sOMDialog.setVisible(false); //unfortunately difficult way that I made to add the close button functionality to close a tab //it works, but there has to be a better way to do this close.get(resultsPane.getSelectedIndex()).addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent ae) { int result; result = 0; for (StringBuffer names : netName) { if (ae.getActionCommand().equals(names.toString())) { result = JOptionPane.showConfirmDialog(createSOM, "<html>Exiting Without Saving can Cause you to Lose your Progress<br>Are you sure you want to Continue?</html>", "Close Network", JOptionPane.OK_CANCEL_OPTION); resultsPane.setSelectedIndex(netName.indexOf(names)); } } if (result == JOptionPane.OK_OPTION) { net.remove(resultsPane.getSelectedIndex()); oneNet.remove(resultsPane.getSelectedIndex()); readOutLocale.remove(resultsPane.getSelectedIndex()); readOut.remove(resultsPane.getSelectedIndex()); loadingBar.remove(resultsPane.getSelectedIndex()); tabPanel.remove(resultsPane.getSelectedIndex()); title.remove(resultsPane.getSelectedIndex()); close.remove(resultsPane.getSelectedIndex()); netName.remove(resultsPane.getSelectedIndex()); resultsPane.remove(resultsPane.getSelectedIndex()); openNets--; } } }); } catch (Exception e) { net.remove(resultsPane.getSelectedIndex()); oneNet.remove(resultsPane.getSelectedIndex()); readOutLocale.remove(resultsPane.getSelectedIndex()); readOut.remove(resultsPane.getSelectedIndex()); loadingBar.remove(resultsPane.getSelectedIndex()); tabPanel.remove(resultsPane.getSelectedIndex()); title.remove(resultsPane.getSelectedIndex()); close.remove(resultsPane.getSelectedIndex()); netName.remove(resultsPane.getSelectedIndex()); resultsPane.remove(resultsPane.getSelectedIndex()); openNets--; JOptionPane.showMessageDialog(sOMDialog, "Numbers too large to parse", "Parse error", JOptionPane.ERROR_MESSAGE); } } catch (OutOfMemoryError e) { JOptionPane.showMessageDialog(mainWindow, "<html>Net too Large for Memory.<br>Try Closing some of the Nets.</html>", "Memory Error", JOptionPane.ERROR_MESSAGE); } } } }); cancelSOM.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { newName.setText(""); somLatticeField.setText(""); somMaxField.setText(""); somMinField.setText(""); sOMDialog.setVisible(false); } }); //end of SOM creation mainWindow.setVisible(true); }
From source file:com.net2plan.gui.utils.topologyPane.TopologyPanel.java
/** * Default constructor.//from www. jav a2 s .c om * * @param callback Topology callback listening plugin events * @param defaultDesignDirectory Default location for design {@code .n2p} files (it may be null, then default is equal to {@code net2planFolder/workspace/data/networkTopologies}) * @param defaultDemandDirectory Default location for design {@code .n2p} files (it may be null, then default is equal to {@code net2planFolder/workspace/data/trafficMatrices}) * @param canvasType Canvas type (i.e. JUNG) * @param plugins List of plugins to be included (it may be null) */ public TopologyPanel(final IVisualizationCallback callback, File defaultDesignDirectory, File defaultDemandDirectory, Class<? extends ITopologyCanvas> canvasType, List<ITopologyCanvasPlugin> plugins) { File currentDir = SystemUtils.getCurrentDir(); this.callback = callback; this.defaultDesignDirectory = defaultDesignDirectory == null ? new File( currentDir + SystemUtils.getDirectorySeparator() + "workspace" + SystemUtils.getDirectorySeparator() + "data" + SystemUtils.getDirectorySeparator() + "networkTopologies") : defaultDesignDirectory; this.defaultDemandDirectory = defaultDemandDirectory == null ? new File( currentDir + SystemUtils.getDirectorySeparator() + "workspace" + SystemUtils.getDirectorySeparator() + "data" + SystemUtils.getDirectorySeparator() + "trafficMatrices") : defaultDemandDirectory; this.multilayerControlPanel = new MultiLayerControlPanel(callback); try { canvas = canvasType.getDeclaredConstructor(IVisualizationCallback.class, TopologyPanel.class) .newInstance(callback, this); } catch (Exception e) { throw new RuntimeException(e); } if (plugins != null) for (ITopologyCanvasPlugin plugin : plugins) addPlugin(plugin); setLayout(new BorderLayout()); JToolBar toolbar = new JToolBar(); toolbar.setRollover(true); toolbar.setFloatable(false); toolbar.setOpaque(false); toolbar.setBorderPainted(false); JPanel topPanel = new JPanel(new BorderLayout()); topPanel.add(toolbar, BorderLayout.NORTH); add(topPanel, BorderLayout.NORTH); JComponent canvasComponent = canvas.getCanvasComponent(); canvasPanel = new JPanel(new BorderLayout()); canvasComponent.setBorder(LineBorder.createBlackLineBorder()); JToolBar multiLayerToolbar = new JToolBar(JToolBar.VERTICAL); multiLayerToolbar.setRollover(true); multiLayerToolbar.setFloatable(false); multiLayerToolbar.setOpaque(false); canvasPanel.add(canvasComponent, BorderLayout.CENTER); canvasPanel.add(multiLayerToolbar, BorderLayout.WEST); add(canvasPanel, BorderLayout.CENTER); btn_load = new JButton(); btn_load.setToolTipText("Load a network design"); btn_loadDemand = new JButton(); btn_loadDemand.setToolTipText("Load a traffic demand set"); btn_save = new JButton(); btn_save.setToolTipText("Save current state to a file"); btn_zoomIn = new JButton(); btn_zoomIn.setToolTipText("Zoom in"); btn_zoomOut = new JButton(); btn_zoomOut.setToolTipText("Zoom out"); btn_zoomAll = new JButton(); btn_zoomAll.setToolTipText("Zoom all"); btn_takeSnapshot = new JButton(); btn_takeSnapshot.setToolTipText("Take a snapshot of the canvas"); btn_showNodeNames = new JToggleButton(); btn_showNodeNames.setToolTipText("Show/hide node names"); btn_showLinkIds = new JToggleButton(); btn_showLinkIds.setToolTipText( "Show/hide link utilization, measured as the ratio between the total traffic in the link (including that in protection segments) and total link capacity (including that reserved by protection segments)"); btn_showNonConnectedNodes = new JToggleButton(); btn_showNonConnectedNodes.setToolTipText("Show/hide non-connected nodes"); btn_increaseNodeSize = new JButton(); btn_increaseNodeSize.setToolTipText("Increase node size"); btn_decreaseNodeSize = new JButton(); btn_decreaseNodeSize.setToolTipText("Decrease node size"); btn_increaseFontSize = new JButton(); btn_increaseFontSize.setToolTipText("Increase font size"); btn_decreaseFontSize = new JButton(); btn_decreaseFontSize.setToolTipText("Decrease font size"); /* Multilayer buttons */ btn_increaseInterLayerDistance = new JButton(); btn_increaseInterLayerDistance .setToolTipText("Increase the distance between layers (when more than one layer is visible)"); btn_decreaseInterLayerDistance = new JButton(); btn_decreaseInterLayerDistance .setToolTipText("Decrease the distance between layers (when more than one layer is visible)"); btn_showLowerLayerInfo = new JToggleButton(); btn_showLowerLayerInfo .setToolTipText("Shows the links in lower layers that carry traffic of the picked element"); btn_showLowerLayerInfo.setSelected(getVisualizationState().isShowInCanvasLowerLayerPropagation()); btn_showUpperLayerInfo = new JToggleButton(); btn_showUpperLayerInfo.setToolTipText( "Shows the links in upper layers that carry traffic that appears in the picked element"); btn_showUpperLayerInfo.setSelected(getVisualizationState().isShowInCanvasUpperLayerPropagation()); btn_showThisLayerInfo = new JToggleButton(); btn_showThisLayerInfo.setToolTipText( "Shows the links in the same layer as the picked element, that carry traffic that appears in the picked element"); btn_showThisLayerInfo.setSelected(getVisualizationState().isShowInCanvasThisLayerPropagation()); btn_npChangeUndo = new JButton(); btn_npChangeUndo.setToolTipText( "Navigate back to the previous state of the network (last time the network design was changed)"); btn_npChangeRedo = new JButton(); btn_npChangeRedo.setToolTipText( "Navigate forward to the next state of the network (when network design was changed"); btn_osmMap = new JToggleButton(); btn_osmMap.setToolTipText( "Toggle between on/off the OSM support. An internet connection is required in order for this to work."); btn_tableControlWindow = new JButton(); btn_tableControlWindow.setToolTipText("Show the network topology control window."); // MultiLayer control window JPopupMenu multiLayerPopUp = new JPopupMenu(); multiLayerPopUp.add(multilayerControlPanel); JPopUpButton btn_multilayer = new JPopUpButton("", multiLayerPopUp); btn_reset = new JButton("Reset"); btn_reset.setToolTipText("Reset the user interface"); btn_reset.setMnemonic(KeyEvent.VK_R); btn_load.setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/loadDesign.png"))); btn_loadDemand.setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/loadDemand.png"))); btn_save.setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/saveDesign.png"))); btn_showNodeNames .setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/showNodeName.png"))); btn_showLinkIds .setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/showLinkUtilization.png"))); btn_showNonConnectedNodes.setIcon( new ImageIcon(TopologyPanel.class.getResource("/resources/gui/showNonConnectedNodes.png"))); //btn_whatIfActivated.setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/showNonConnectedNodes.png"))); btn_zoomIn.setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/zoomIn.png"))); btn_zoomOut.setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/zoomOut.png"))); btn_zoomAll.setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/zoomAll.png"))); btn_takeSnapshot.setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/takeSnapshot.png"))); btn_increaseNodeSize .setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/increaseNode.png"))); btn_decreaseNodeSize .setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/decreaseNode.png"))); btn_increaseFontSize .setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/increaseFont.png"))); btn_decreaseFontSize .setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/decreaseFont.png"))); btn_increaseInterLayerDistance.setIcon( new ImageIcon(TopologyPanel.class.getResource("/resources/gui/increaseLayerDistance.png"))); btn_decreaseInterLayerDistance.setIcon( new ImageIcon(TopologyPanel.class.getResource("/resources/gui/decreaseLayerDistance.png"))); btn_multilayer .setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/showLayerControl.png"))); btn_showThisLayerInfo .setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/showLayerPropagation.png"))); btn_showUpperLayerInfo.setIcon( new ImageIcon(TopologyPanel.class.getResource("/resources/gui/showLayerUpperPropagation.png"))); btn_showLowerLayerInfo.setIcon( new ImageIcon(TopologyPanel.class.getResource("/resources/gui/showLayerLowerPropagation.png"))); btn_tableControlWindow .setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/showControl.png"))); btn_osmMap.setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/showOSM.png"))); btn_npChangeUndo.setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/undoButton.png"))); btn_npChangeRedo.setIcon(new ImageIcon(TopologyPanel.class.getResource("/resources/gui/redoButton.png"))); btn_load.addActionListener(this); btn_loadDemand.addActionListener(this); btn_save.addActionListener(this); btn_showNodeNames.addActionListener(this); btn_showLinkIds.addActionListener(this); btn_showNonConnectedNodes.addActionListener(this); btn_zoomIn.addActionListener(this); btn_zoomOut.addActionListener(this); btn_zoomAll.addActionListener(this); btn_takeSnapshot.addActionListener(this); btn_reset.addActionListener(this); btn_increaseInterLayerDistance.addActionListener(this); btn_decreaseInterLayerDistance.addActionListener(this); btn_showLowerLayerInfo.addActionListener(this); btn_showUpperLayerInfo.addActionListener(this); btn_showThisLayerInfo.addActionListener(this); btn_increaseNodeSize.addActionListener(this); btn_decreaseNodeSize.addActionListener(this); btn_increaseFontSize.addActionListener(this); btn_decreaseFontSize.addActionListener(this); btn_npChangeUndo.addActionListener(this); btn_npChangeRedo.addActionListener(this); btn_osmMap.addActionListener(this); btn_tableControlWindow.addActionListener(this); toolbar.add(btn_load); toolbar.add(btn_loadDemand); toolbar.add(btn_save); toolbar.add(new JToolBar.Separator()); toolbar.add(btn_zoomIn); toolbar.add(btn_zoomOut); toolbar.add(btn_zoomAll); toolbar.add(btn_takeSnapshot); toolbar.add(new JToolBar.Separator()); toolbar.add(btn_showNodeNames); toolbar.add(btn_showLinkIds); toolbar.add(btn_showNonConnectedNodes); toolbar.add(new JToolBar.Separator()); toolbar.add(btn_increaseNodeSize); toolbar.add(btn_decreaseNodeSize); toolbar.add(btn_increaseFontSize); toolbar.add(btn_decreaseFontSize); toolbar.add(new JToolBar.Separator()); toolbar.add(Box.createHorizontalGlue()); toolbar.add(btn_osmMap); toolbar.add(btn_tableControlWindow); toolbar.add(btn_reset); multiLayerToolbar.add(new JToolBar.Separator()); multiLayerToolbar.add(btn_multilayer); multiLayerToolbar.add(btn_increaseInterLayerDistance); multiLayerToolbar.add(btn_decreaseInterLayerDistance); multiLayerToolbar.add(btn_showLowerLayerInfo); multiLayerToolbar.add(btn_showUpperLayerInfo); multiLayerToolbar.add(btn_showThisLayerInfo); multiLayerToolbar.add(Box.createVerticalGlue()); multiLayerToolbar.add(btn_npChangeUndo); multiLayerToolbar.add(btn_npChangeRedo); this.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { if (e.getComponent().getSize().getHeight() != 0 && e.getComponent().getSize().getWidth() != 0) { canvas.zoomAll(); } } }); List<Component> children = SwingUtils.getAllComponents(this); for (Component component : children) if (component instanceof AbstractButton) component.setFocusable(false); if (ErrorHandling.isDebugEnabled()) { canvas.getCanvasComponent().addMouseMotionListener(new MouseMotionAdapter() { @Override public void mouseMoved(MouseEvent e) { Point point = e.getPoint(); position.setText("view = " + point + ", NetPlan coord = " + canvas.getCanvasPointFromNetPlanPoint(point)); } }); position = new JLabel(); add(position, BorderLayout.SOUTH); } else { position = null; } new FileDrop(canvasComponent, new LineBorder(Color.BLACK), new FileDrop.Listener() { @Override public void filesDropped(File[] files) { for (File file : files) { try { if (!file.getName().toLowerCase(Locale.getDefault()).endsWith(".n2p")) return; loadDesignFromFile(file); break; } catch (Throwable e) { break; } } } }); btn_showNodeNames.setSelected(getVisualizationState().isCanvasShowNodeNames()); btn_showLinkIds.setSelected(getVisualizationState().isCanvasShowLinkLabels()); btn_showNonConnectedNodes.setSelected(getVisualizationState().isCanvasShowNonConnectedNodes()); final ITopologyCanvasPlugin popupPlugin = new PopupMenuPlugin(callback, this.canvas); addPlugin(new PanGraphPlugin(callback, canvas, MouseEvent.BUTTON1_MASK)); if (callback.getVisualizationState().isNetPlanEditable() && getCanvas() instanceof JUNGCanvas) addPlugin(new AddLinkGraphPlugin(callback, canvas, MouseEvent.BUTTON1_MASK, MouseEvent.BUTTON1_MASK | MouseEvent.SHIFT_MASK)); addPlugin(popupPlugin); if (callback.getVisualizationState().isNetPlanEditable()) addPlugin(new MoveNodePlugin(callback, canvas, MouseEvent.BUTTON1_MASK | MouseEvent.CTRL_MASK)); setBorder(BorderFactory.createTitledBorder(new LineBorder(Color.BLACK), "Network topology")); // setAllowLoadTrafficDemand(callback.allowLoadTrafficDemands()); }
From source file:src.gui.ItSIMPLE.java
/** * @return the planListFramePanel/*from ww w . ja v a 2 s.co m*/ */ private ItFramePanel getPlanListFramePanel() { if (planListFramePanel == null) { planListFramePanel = new ItFramePanel(":: Plan", ItFramePanel.MINIMIZE_MAXIMIZE); planListFramePanel.setParentSplitPane(planDetailsSplitPane); planListModel = new DefaultListModel(); planList = new JList(planListModel); planList.getSelectionModel().addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { // this is done to enable or disable the remove plan action button if (planList.getSelectedIndex() < 0) { removePlanActionButton.setEnabled(false); editPlanActionButton.setEnabled(false); } else { removePlanActionButton.setEnabled(true); editPlanActionButton.setEnabled(true); } } }); planList.addMouseListener(new MouseListener() { public void mouseClicked(MouseEvent e) { if (planList.getSelectedIndex() > 0 && e.getClickCount() == 2) { editPlanAction.actionPerformed(null); } } public void mouseEntered(MouseEvent arg0) { } public void mouseExited(MouseEvent arg0) { } public void mousePressed(MouseEvent arg0) { } public void mouseReleased(MouseEvent arg0) { } }); // initialize the buttons addPlanActionButton = new JButton(addPlanAction); addPlanActionButton.setToolTipText("Add an action to the plan"); removePlanActionButton = new JButton(removePlanAction); removePlanActionButton.setToolTipText("Remove selected action"); editPlanActionButton = new JButton(editPlanAction); editPlanActionButton.setToolTipText("Edit selected action"); importPlanButton = new JButton(importPlanAction); importPlanButton.setToolTipText("Import plan from xml file"); exportPlanButton = new JButton(exportPlanAction); exportPlanButton.setToolTipText("Export current plan"); checkPlanValidityButton = new JButton(checkPlanValidity); checkPlanValidityButton.setToolTipText( "<html>Validate plan with validator VAL <br>(based on the generated PDDL model).</html>"); //quickEvaluateButton = new JButton(quickEvaluation); //quickEvaluateButton.setToolTipText("Quick evaluation of the selected plan"); //fullEvaluationButton = new JButton(generateEvaluatioReport); //fullEvaluationButton.setToolTipText("<html>Full evaluation of the selected plan. <br> Generate a plan evaluation in the planReport. <br> This is restricted to non-time-based domain only.</html>"); //fullEvaluationButton.setText(""); addPlanActionButton.setEnabled(false); removePlanActionButton.setEnabled(false); editPlanActionButton.setEnabled(false); checkPlanValidityButton.setEnabled(false); //quickEvaluateButton.setEnabled(false); //fullEvaluationButton.setEnabled(false); importPlanButton.setEnabled(false); exportPlanButton.setEnabled(false); JToolBar planListToolBar = new JToolBar(); planListToolBar.add(addPlanActionButton); planListToolBar.add(removePlanActionButton); planListToolBar.add(editPlanActionButton); planListToolBar.addSeparator(); planListToolBar.add(checkPlanValidityButton); //planListToolBar.add(quickEvaluateButton); //planListToolBar.add(fullEvaluationButton); planListToolBar.addSeparator(); planListToolBar.add(importPlanButton); planListToolBar.add(exportPlanButton); JScrollPane listScrollPane = new JScrollPane(planList); JPanel listPanel = new JPanel(new BorderLayout()); listPanel.add(listScrollPane, BorderLayout.CENTER); listPanel.add(planListToolBar, BorderLayout.SOUTH); planListFramePanel.setContent(listPanel, false); } return planListFramePanel; }
From source file:src.gui.ItSIMPLE.java
/** * @return Returns the PetriContainer./*from www . j a va2s. co m*/ */ private JXTaskPaneContainer getPetriContainer() { if (projectPetriContainer == null) { projectPetriContainer = new JXTaskPaneContainer(); //project projectPetriTaskPane = new JXTaskPane(); projectPetriTaskPane.setTitle("Project"); projectPetriTaskPane.setIcon(new ImageIcon("resources/images/projects.png")); projectPetriTaskPane.setSpecial(true); //state chart diagrams stateMachinePetriTaskPane = new JXTaskPane(); stateMachinePetriTaskPane.setTitle("State Chart Diagrams"); stateMachinePetriTaskPane.setIcon(new ImageIcon("resources/images/planningProblem.png")); stateMachinePetriTaskPane.setLayout(new BorderLayout()); stateMachinePetriPanel = new JPanel(new BorderLayout()); stateMachineJList = new JList(new DefaultListModel()); ItListRenderer renderer = new ItListRenderer(); renderer.setIcon(new ImageIcon("resources/images/stateMachineDiagram.png")); stateMachineJList.setCellRenderer(renderer); stateMachinePetriPanel.add(stateMachineJList, BorderLayout.CENTER); JToolBar toolBar = new JToolBar(); toolBar.setRollover(true); stateMachineButton = new JButton(openPetriNetGroup); toolBar.add(stateMachineButton); stateMachinePetriTaskPane.add(stateMachinePetriPanel, BorderLayout.CENTER); stateMachinePetriTaskPane.add(toolBar, BorderLayout.SOUTH); /*petriCheckBoxList = new CheckBoxList(); stateMachinePetriTaskPane.add(petriCheckBoxList, BorderLayout.CENTER);*/ //details detailPetriTaskPane = new JXTaskPane(); detailPetriTaskPane.setTitle("Details"); detailPetriTaskPane.setIcon(new ImageIcon("resources/images/details.png")); detailPetriTaskPane.add(getPetriDetailsTextPane()); petriDetailsTextPane.setBackground(petriDetailsTextPane.getParent().getBackground()); projectPetriContainer.add(projectPetriTaskPane); projectPetriContainer.add(stateMachinePetriTaskPane); projectPetriContainer.add(detailPetriTaskPane); } return projectPetriContainer; }
From source file:src.gui.ItSIMPLE.java
/** * @return Returns the planAnalysisFramePanel. *///w ww . j a v a 2s . co m private ItFramePanel getPlanAnalysisFramePanel() { if (planAnalysisFramePanel == null) { planAnalysisFramePanel = new ItFramePanel(":: Plan Analysis", ItFramePanel.NO_MINIMIZE_MAXIMIZE); // tool bar JToolBar chartsToolBar = new JToolBar(); chartsToolBar.add(new JButton(drawChartAction)); // charts panel chartsPanel = new JPanel(); chartsPanel.setLayout(new BoxLayout(chartsPanel, BoxLayout.Y_AXIS)); ItFramePanel variableSelectionPanel = new ItFramePanel(".: Select variables to be tracked", ItFramePanel.NO_MINIMIZE_MAXIMIZE); //variableSelectionPanel.setBackground(new Color(151,151,157)); JSplitPane split = new JSplitPane(); split.setContinuousLayout(true); split.setOrientation(JSplitPane.HORIZONTAL_SPLIT); split.setDividerLocation(2 * screenSize.height / 3); split.setDividerSize(8); //split.setPreferredSize(new Dimension(screenSize.width/4-20, screenSize.height/2 - 50)); //split.setPreferredSize(new Dimension(screenSize.width/4-20, 120)); split.setLeftComponent(new JScrollPane(variablesPlanTree)); split.setRightComponent(new JScrollPane(selectedVariablesPlanTree)); variableSelectionPanel.setContent(split, false); //variableSelectionPanel.setParentSplitPane() //JPanel variableSelectionPanel = new JPanel(new BorderLayout()); //variableSelectionPanel.add(new JScrollPane(variablesPlanTree), BorderLayout.CENTER); //variableSelectionPanel.add(new JScrollPane(selectedVariablesPlanTree), BorderLayout.EAST); ItFramePanel variableGraphPanel = new ItFramePanel(".: Chart", ItFramePanel.NO_MINIMIZE_MAXIMIZE); variableGraphPanel.setContent(chartsPanel, true); JSplitPane mainvariablesplit = new JSplitPane(); mainvariablesplit.setContinuousLayout(true); mainvariablesplit.setOrientation(JSplitPane.VERTICAL_SPLIT); mainvariablesplit.setDividerLocation(150); mainvariablesplit.setDividerSize(8); //mainvariablesplit.setPreferredSize(new Dimension(screenSize.width/4-20, screenSize.height/2 - 50)); mainvariablesplit.setTopComponent(variableSelectionPanel); mainvariablesplit.setBottomComponent(variableGraphPanel); // main charts panel - used to locate the tool bar above the charts panel JPanel mainChartsPanel = new JPanel(new BorderLayout()); mainChartsPanel.add(chartsToolBar, BorderLayout.NORTH); //mainChartsPanel.add(new JScrollPane(chartsPanel), BorderLayout.CENTER); mainChartsPanel.add(mainvariablesplit, BorderLayout.CENTER); //Results planInfoEditorPane = new JEditorPane(); planInfoEditorPane.setContentType("text/html"); planInfoEditorPane.setEditable(false); planInfoEditorPane.setCursor(new Cursor(Cursor.TEXT_CURSOR)); planInfoEditorPane.setBackground(Color.WHITE); JPanel resultsPanel = new JPanel(new BorderLayout()); JToolBar resultsToolBar = new JToolBar(); resultsToolBar.setRollover(true); JButton planReportButton = new JButton("View Full Report", new ImageIcon("resources/images/viewreport.png")); planReportButton.setToolTipText("<html>View full plan report.<br> For multiple plans you will need " + "access to the Internet.<br> The components used in the report require such access (no data is " + "sent through the Internet).</html>"); planReportButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //Opens html with defaut browser String path = "resources/report/Report.html"; File report = new File(path); path = report.getAbsolutePath(); try { BrowserLauncher launcher = new BrowserLauncher(); launcher.openURLinBrowser("file://" + path); } catch (BrowserLaunchingInitializingException ex) { Logger.getLogger(ItSIMPLE.class.getName()).log(Level.SEVERE, null, ex); appendOutputPanelText("ERROR. Problem while trying to open the default browser. \n"); } catch (UnsupportedOperatingSystemException ex) { Logger.getLogger(ItSIMPLE.class.getName()).log(Level.SEVERE, null, ex); appendOutputPanelText("ERROR. Problem while trying to open the default browser. \n"); } } }); resultsToolBar.add(planReportButton); resultsToolBar.addSeparator(); JButton planReportDataButton = new JButton("Save Report Data", new ImageIcon("resources/images/savePDDL.png")); planReportDataButton.setToolTipText("<html>Save report data to file</html>"); planReportDataButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //Save report data if (solveResult != null) { Element lastOpenFolderElement = itSettings.getChild("generalSettings") .getChild("lastOpenFolder"); JFileChooser fc = new JFileChooser(lastOpenFolderElement.getText()); fc.setDialogTitle("Save Report Data"); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); fc.setFileFilter(new XMLFileFilter()); int returnVal = fc.showSaveDialog(ItSIMPLE.this); if (returnVal == JFileChooser.APPROVE_OPTION) { File selectedFile = fc.getSelectedFile(); String path = selectedFile.getPath(); if (!path.toLowerCase().endsWith(".xml")) { path += ".xml"; } //save file (xml) try { FileWriter file = new FileWriter(path); file.write(XMLUtilities.toString(solveResult)); file.close(); } catch (IOException e1) { e1.printStackTrace(); } //Save as a last open folder String folder = selectedFile.getParent(); //Element lastOpenFolderElement = itSettings.getChild("generalSettings").getChild("lastOpenFolder"); lastOpenFolderElement.setText(folder); XMLUtilities.writeToFile("resources/settings/itSettings.xml", itSettings.getDocument()); //Ask if the user wants to save plans individually too. boolean needToSavePlans = false; int option = JOptionPane.showOptionDialog(instance, "<html><center>Do you also want to save the plans" + "<br>in individual files?</center></html>", "Save plans", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, null, null); switch (option) { case JOptionPane.YES_OPTION: { needToSavePlans = true; } break; case JOptionPane.NO_OPTION: { needToSavePlans = false; } break; } if (needToSavePlans) { //Close Open tabs List<?> problems = null; try { XPath ppath = new JDOMXPath("project/domains/domain/problems/problem"); problems = ppath.selectNodes(solveResult); } catch (JaxenException e2) { e2.printStackTrace(); } for (int i = 0; i < problems.size(); i++) { Element problem = (Element) problems.get(i); //create a folder for each problem and put all plans inside as xml files String folderName = problem.getChildText("name"); String folderPath = selectedFile.getAbsolutePath() .replace(selectedFile.getName(), folderName); //System.out.println(folderPath); File planfolder = new File(folderPath); boolean canSavePlan = false; try { if (planfolder.mkdir()) { System.out.println("Directory '" + folderPath + "' created."); canSavePlan = true; } else { System.out.println("Directory '" + folderPath + "' was not created."); } } catch (Exception ep) { ep.printStackTrace(); } if (canSavePlan) { Element plans = problem.getChild("plans"); for (Iterator<Element> it = plans.getChildren("xmlPlan").iterator(); it .hasNext();) { Element eaplan = it.next(); Element theplanner = eaplan.getChild("planner"); //save file (xml) String planFileName = "solution" + theplanner.getChildText("name") + "-" + theplanner.getChildText("version") + "-" + Integer.toString(plans.getChildren().indexOf(eaplan)) + ".xml"; String planPath = folderPath + File.separator + planFileName; /* try { FileWriter planfile = new FileWriter(planPath); planfile.write(XMLUtilities.toString(eaplan)); planfile.close(); System.out.println("File '" + planPath + "' created."); } catch (IOException e1) { e1.printStackTrace(); } * */ if (eaplan.getChild("plan").getChildren().size() > 0) { //TODO: save the plan in PDDL too. It should be done through the XPDDL/PDDL classes String pddlplan = ToXPDDL.XMLtoXPDDLPlan(eaplan); String planFileNamePDDL = "solution" + theplanner.getChildText("name") + "-" + theplanner.getChildText("version") + "-" + Integer.toString(plans.getChildren().indexOf(eaplan)) + ".pddl"; String planPathPDDL = folderPath + File.separator + planFileNamePDDL; //String cfolderPath = selectedFile.getAbsolutePath().replace(selectedFile.getName(), ""); //String planFileNamePDDL = theplanner.getChildText("name")+"-"+theplanner.getChildText("version") + "-" + folderName+"-solution.pddl"; //String planPathPDDL = cfolderPath + File.separator + planFileNamePDDL; //if (!theplanner.getChildText("name").contains("MIPS")){ try { FileWriter planfile = new FileWriter(planPathPDDL); planfile.write(pddlplan); planfile.close(); System.out.println("File '" + planPathPDDL + "' created."); } catch (IOException e1) { e1.printStackTrace(); } } //} } } } } } } else { appendOutputPanelText(">> No report data available to save! \n"); } } }); resultsToolBar.add(planReportDataButton); JButton openPlanReportDataButton = new JButton("Open Report Data", new ImageIcon("resources/images/openreport.png")); openPlanReportDataButton.setToolTipText("<html>Open report data to file</html>"); openPlanReportDataButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { planSimStatusBar.setText("Status: Opening File..."); appendOutputPanelText(">> Opening File... \n"); //Open report data Element lastOpenFolderElement = itSettings.getChild("generalSettings") .getChild("lastOpenFolder"); JFileChooser fc = new JFileChooser(lastOpenFolderElement.getText()); fc.setDialogTitle("Open Report Data"); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); fc.setFileFilter(new XMLFileFilter()); int returnVal = fc.showOpenDialog(ItSIMPLE.this); if (returnVal == JFileChooser.APPROVE_OPTION) { File file = fc.getSelectedFile(); // Get itSIMPLE itSettings from itSettings.xml org.jdom.Document resultsDoc = null; try { resultsDoc = XMLUtilities.readFromFile(file.getPath()); solveResult = resultsDoc.getRootElement(); //XMLUtilities.printXML(solveResult); if (solveResult.getName().equals("projects")) { String report = PlanAnalyzer.generatePlannersComparisonReport(solveResult); String comparisonReport = PlanAnalyzer .generateFullPlannersComparisonReport(solveResult); //Save Comparison Report file saveFile("resources/report/Report.html", comparisonReport); setPlanInfoPanelText(report); setPlanEvaluationInfoPanelText(""); appendOutputPanelText(">> Report data read! \n"); //My experiments PlanAnalyzer.myAnalysis(itPlanners.getChild("planners"), solveResult); } } catch (Exception e1) { e1.printStackTrace(); } //Save as a last open folder String folder = fc.getSelectedFile().getParent(); lastOpenFolderElement.setText(folder); XMLUtilities.writeToFile("resources/settings/itSettings.xml", itSettings.getDocument()); } else { planSimStatusBar.setText("Status:"); appendOutputPanelText(">> Canceled \n"); } } }); resultsToolBar.add(openPlanReportDataButton); JButton compareProjectReportDataButton = new JButton("Compare Project Data", new ImageIcon("resources/images/compare.png")); compareProjectReportDataButton.setToolTipText( "<html>Compare different project report data <br> This is commonly use to compare diferent domain models with different adjustments.<br>" + "One project data must be chosen as a reference; others will be compared to this referencial one.</html>"); compareProjectReportDataButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { final ProjectComparisonDialog dialog = new ProjectComparisonDialog(); dialog.setVisible(true); final List<String> files = dialog.getFiles(); if (files.size() > 1) { new Thread() { public void run() { appendOutputPanelText(">> Project comparison report requested. Processing... \n"); planSimStatusBar.setText("Status: Reading files ..."); appendOutputPanelText(">> Reading files ... \n"); //base project file String baseFileName = files.get(0); appendOutputPanelText(">> Reading file '" + baseFileName + "' \n"); org.jdom.Document baseProjectDoc = null; try { baseProjectDoc = XMLUtilities.readFromFile(baseFileName); } catch (Exception ec) { ec.printStackTrace(); } Element baseProject = null; if (baseProjectDoc != null) { baseProject = baseProjectDoc.getRootElement().getChild("project"); } //The comparible projects List<Element> comparableProjects = new ArrayList<Element>(); for (int i = 1; i < files.size(); i++) { String eafile = files.get(i); appendOutputPanelText(">> Reading file '" + eafile + "' \n"); org.jdom.Document eaProjectDoc = null; try { eaProjectDoc = XMLUtilities.readFromFile(eafile); } catch (Exception ec) { ec.printStackTrace(); } if (eaProjectDoc != null) { comparableProjects.add(eaProjectDoc.getRootElement().getChild("project")); } } appendOutputPanelText(">> Files read. Building report... \n"); String comparisonReport = PlanAnalyzer.generateProjectComparisonReport(baseProject, comparableProjects); saveFile("resources/report/Report.html", comparisonReport); appendOutputPanelText( ">> Project comparison report generated. Press 'View Full Report'\n"); appendOutputPanelText(" \n"); } }.start(); } } }); resultsToolBar.add(compareProjectReportDataButton); resultsPanel.add(resultsToolBar, BorderLayout.NORTH); resultsPanel.add(new JScrollPane(planInfoEditorPane), BorderLayout.CENTER); JTabbedPane planAnalysisTabbedPane = new JTabbedPane(); planAnalysisTabbedPane.addTab("Results", resultsPanel); planAnalysisTabbedPane.addTab("Variable Tracking", mainChartsPanel); planAnalysisTabbedPane.addTab("Movie Maker", getMovieMakerPanel()); planAnalysisTabbedPane.addTab("Plan Evaluation", getPlanEvaluationPanel()); planAnalysisTabbedPane.addTab("Plan Database", getPlanDatabasePanel()); planAnalysisTabbedPane.addTab("Rationale Database", getRationaleDatabasePanel()); JPanel planAnalysisPanel = new JPanel(new BorderLayout()); //planAnalysisPanel.add(chartsToolBar, BorderLayout.NORTH); planAnalysisPanel.add(planAnalysisTabbedPane, BorderLayout.CENTER); planAnalysisFramePanel.setContent(planAnalysisPanel, false); } return planAnalysisFramePanel; }
From source file:src.gui.ItSIMPLE.java
private JToolBar getPlanDatabaseToolBar() { JToolBar planDatabaseToolBar = new JToolBar(); planDatabaseToolBar.setRollover(true); // create the buttons //select plans from data base JButton searchButton = new JButton("Search", new ImageIcon("resources/images/searchdatabase.png")); searchButton.setToolTipText("Search plans in the database"); searchButton.addActionListener(new java.awt.event.ActionListener() { @Override/*w w w .j a v a2 s. com*/ public void actionPerformed(ActionEvent e) { //RUN search plan from database searchPlanInDatabaseAction.actionPerformed(e); } }); planDatabaseToolBar.add(searchButton); final JButton filterButton = new JButton("Filter", new ImageIcon("resources/images/filtersearchdatabase.png")); filterButton .setToolTipText("Filter the search for plans in the database (use colunms of table 'plan' only)"); filterButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //hide/show filter panel if (planFilterPanel.isVisible()) { planFilterPanel.setVisible(false); filterButton.setText("Filter"); } else { planFilterPanel.setVisible(true); filterButton.setText("Don't filter"); } } }); planDatabaseToolBar.add(filterButton); planDatabaseToolBar.addSeparator(); //insert plan into data base JButton addPlanToDatabaseButton = new JButton("Add Plan", new ImageIcon("resources/images/addplantodatabase.png")); addPlanToDatabaseButton.setToolTipText("Add current plan to the database"); addPlanToDatabaseButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN plan evaluation edit insertPlanIntoDatabaseAction.actionPerformed(e); } }); planDatabaseToolBar.add(addPlanToDatabaseButton); //load plan from data base JButton loadPlanFromDatabaseButton = new JButton("Load Plan", new ImageIcon("resources/images/getfromdatabase.png")); loadPlanFromDatabaseButton.setToolTipText("Load selected plan into itSIMPLE"); loadPlanFromDatabaseButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN loading plan loadPlanFromDatabaseAction.actionPerformed(e); } }); planDatabaseToolBar.add(loadPlanFromDatabaseButton); //delete plan from data base JButton deletePlanFromDatabaseButton = new JButton("Delete Plan", new ImageIcon("resources/images/deleteplanfromdatabase.png")); deletePlanFromDatabaseButton.setToolTipText("Delete selected plan"); deletePlanFromDatabaseButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN loading plan deletePlanFromDatabaseAction.actionPerformed(e); } }); planDatabaseToolBar.add(deletePlanFromDatabaseButton); //update plan from data base JButton updatePlanFromDatabaseButton = new JButton("Update Plan", new ImageIcon("resources/images/updateplanfromdatabase.png")); updatePlanFromDatabaseButton.setToolTipText("Update current plan"); updatePlanFromDatabaseButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN update plan updatePlanFromDatabaseAction.actionPerformed(e); } }); planDatabaseToolBar.add(updatePlanFromDatabaseButton); return planDatabaseToolBar; }
From source file:src.gui.ItSIMPLE.java
private JToolBar getRationaleDatabaseToolBar() { JToolBar rationaleDatabaseToolBar = new JToolBar(); rationaleDatabaseToolBar.setRollover(true); // create the buttons //select rationales from data base JButton searchButton = new JButton("Search", new ImageIcon("resources/images/searchdatabase.png")); searchButton.setToolTipText("Search rationales in the database"); searchButton.addActionListener(new java.awt.event.ActionListener() { @Override/*from w ww .j a v a 2 s . com*/ public void actionPerformed(ActionEvent e) { //RUN search plan from database searchRationaleInDatabaseAction.actionPerformed(e); } }); rationaleDatabaseToolBar.add(searchButton); rationaleDatabaseToolBar.addSeparator(); /* //insert new rationale into data base JButton addRationaleToDatabaseButton = new JButton("Add Plan", new ImageIcon("resources/images/addplantodatabase.png")); addRationaleToDatabaseButton.setToolTipText("Add current plan to the database"); addRationaleToDatabaseButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN plan evaluation edit insertPlanIntoDatabaseAction.actionPerformed(e); } }); rationaleDatabaseToolBar.add(addRationaleToDatabaseButton); */ //edit rationale from database JButton editRatioanleFromDatabaseButton = new JButton("Edit Rationale", new ImageIcon("resources/images/editrationalefromdatabase.png")); editRatioanleFromDatabaseButton.setToolTipText("Edit selected rationale"); editRatioanleFromDatabaseButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN editing plan editRationaleFromDatabaseAction.actionPerformed(e); } }); rationaleDatabaseToolBar.add(editRatioanleFromDatabaseButton); //delete rationale from database JButton deleteRationaleFromDatabaseButton = new JButton("Delete Rationale", new ImageIcon("resources/images/deleteplanfromdatabase.png")); deleteRationaleFromDatabaseButton.setToolTipText("Delete selected rationale"); deleteRationaleFromDatabaseButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN loading plan deleteRationaleFromDatabaseAction.actionPerformed(e); } }); rationaleDatabaseToolBar.add(deleteRationaleFromDatabaseButton); rationaleDatabaseToolBar.addSeparator(); //load reference plan from database JButton loadReferencePlanFromDatabaseButton = new JButton("Load Plan", new ImageIcon("resources/images/getfromdatabase.png")); loadReferencePlanFromDatabaseButton.setToolTipText("Load reference plan of the selected rationale"); loadReferencePlanFromDatabaseButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN editing plan loadReferencePlanFromDatabaseAction.actionPerformed(e); } }); rationaleDatabaseToolBar.add(loadReferencePlanFromDatabaseButton); return rationaleDatabaseToolBar; }
From source file:src.gui.ItSIMPLE.java
private JToolBar getPlanEvaluationToolBar() { JToolBar planEvaluationToolBar = new JToolBar(); planEvaluationToolBar.setRollover(true); // create the buttons // plan evaluation JButton planEvaluationButton = new JButton("Evaluate Plan", new ImageIcon("resources/images/eval.png")); planEvaluationButton.setToolTipText( "<html>Evaluate current plan based on the specified metrics. <br> This is restricted to non-time-based domain only.</html>"); planEvaluationButton.addActionListener(new java.awt.event.ActionListener() { @Override/*from w w w . j a v a 2 s . com*/ public void actionPerformed(ActionEvent e) { //RUN plan evaluation quickEvaluation.actionPerformed(e); } }); planEvaluationToolBar.add(planEvaluationButton); JButton planEvaluationReportButton = new JButton("Evaluation Report", new ImageIcon("resources/images/viewreport.png")); planEvaluationReportButton.setToolTipText( "<html>Generate a html plan evaluation in the planReport. <br> This is restricted to non-time-based domain only.</html>"); planEvaluationReportButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN plan evaluation generateEvaluationReport.actionPerformed(e); } }); planEvaluationToolBar.add(planEvaluationReportButton); JButton editEvaluationButton = new JButton("Edit Evaluation", new ImageIcon("resources/images/edit.png")); editEvaluationButton.setToolTipText("<html>Modify plan classification and its metrics evaluation.</html>"); editEvaluationButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN plan evaluation edit changePlanEvaluationAction.actionPerformed(e); } }); planEvaluationToolBar.add(editEvaluationButton); //JButton applyNewEvaluationButton = new JButton("Apply Modified Evaluation", new ImageIcon("resources/images/apply.png")); //planEvaluationToolBar.add(applyNewEvaluationButton); planEvaluationToolBar.addSeparator(); JButton insertRationaleButton = new JButton("Insert Rationale", new ImageIcon("resources/images/feedbackrationale.png")); insertRationaleButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN plan evaluation edit insertPlanEvaluationRationaleAction.actionPerformed(e); } }); planEvaluationToolBar.add(insertRationaleButton); checkExistingRationaleButton = new JButton("Reuse Existing Rationales", new ImageIcon("resources/images/feedbackrationale.png")); checkExistingRationaleButton.setActionCommand("reuse"); checkExistingRationaleButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN rationales reuse if (checkExistingRationaleButton.getActionCommand().equals("reuse")) { checkExistingRationaleButton.setActionCommand("stop"); checkExistingRationaleButton.setText("Stop Reasoning"); reuseRationalesAction.actionPerformed(e); } else { //stop the thread if (reuserationaleThread.isAlive()) { try { // waits for the thread to return reuserationaleThread.join(2000);// 2 seconds time-out } catch (InterruptedException e1) { e1.printStackTrace(); } if (reuserationaleThread.isAlive()) { reuserationaleThread.interrupt(); } } checkExistingRationaleButton.setActionCommand("reuse"); checkExistingRationaleButton.setText("Reuse Existing Rationales"); planSimStatusBar.setText("Status: Reasoning process stopped."); } /* try { String theoryText = "casa(a1). \n"+ "casa(a2).\n"+ "casa(a3).\n"; Prolog engine = new Prolog(); Theory t = new Theory(new java.io.FileInputStream("/home/tiago/Desktop/base.pl")); //Theory t = new Theory(theoryText); engine.setTheory(t); //SolveInfo answer = engine.solve("casa(X)."); SolveInfo answer = engine.solve("teste(p1,_)."); while (answer.isSuccess()) { System.out.println("solution: " + answer.getSolution() + " - bindings: " + answer); System.out.println("X: " + answer.getTerm("X")); if (engine.hasOpenAlternatives()) { try { answer = engine.solveNext(); } catch (NoMoreSolutionException ex) { Logger.getLogger(ItSIMPLE.class.getName()).log(Level.SEVERE, null, ex); } } else { break; } } //engine.solveHalt(); } catch (UnknownVarException ex) { Logger.getLogger(ItSIMPLE.class.getName()).log(Level.SEVERE, null, ex); } catch (NoSolutionException ex) { Logger.getLogger(ItSIMPLE.class.getName()).log(Level.SEVERE, null, ex); } catch (MalformedGoalException ex) { Logger.getLogger(ItSIMPLE.class.getName()).log(Level.SEVERE, null, ex); } catch (InvalidTheoryException ex) { Logger.getLogger(ItSIMPLE.class.getName()).log(Level.SEVERE, null, ex); } catch (IOException ex) { Logger.getLogger(ItSIMPLE.class.getName()).log(Level.SEVERE, null, ex); } */ } }); planEvaluationToolBar.add(checkExistingRationaleButton); //JButton addPlanToDatabaseButton = new JButton("Add Plan to Database", new ImageIcon("resources/images/addplantodatabase.png")); //addPlanToDatabaseButton.addActionListener(new java.awt.event.ActionListener() { // @Override // public void actionPerformed(ActionEvent e) { // //RUN plan evaluation edit // insertPlanIntoDatabaseAction.actionPerformed(e); // } //}); //planEvaluationToolBar.add(addPlanToDatabaseButton); return planEvaluationToolBar; }
From source file:src.gui.ItSIMPLE.java
/** * Creates the main content panel in the main analysis panel * @return // w ww. ja va 2 s .co m */ private JPanel getAnalysisMainContentPane() { JPanel anPanel = new JPanel(new BorderLayout()); ItFramePanel mainContentPanel = new ItFramePanel(":: Analysis Techniques and Results", ItFramePanel.NO_MINIMIZE_MAXIMIZE); //Content of the FramePanel JPanel resultsPanel = new JPanel(new BorderLayout()); JToolBar analysisToolSetBar = new JToolBar(); analysisToolSetBar.setRollover(true); JButton TorchlightButton = new JButton("TorchLight", new ImageIcon("resources/images/compare.png")); TorchlightButton.setToolTipText( "<html>Run TorchLight system. <br>TorchLight analyzes h+ search space topology without actually running any search</html>"); TorchlightButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { new Thread() { public void run() { ItTreeNode selectedNode = (ItTreeNode) projectAnalysisTree.getLastSelectedPathComponent(); if (selectedNode.getData() != null && selectedNode.getData().getName().indexOf("problem") != -1) { appendAnalysisOutputPanelText( "(!) Know more about TorchLight at http://www.loria.fr/~hoffmanj/ \n"); appendAnalysisOutputPanelText(">> Calling TorchLight System... \n"); analysisStatusBar.setText("Status: Running Tourchlight ..."); String pddlVersion = pddlButtonsGroup.getSelection().getActionCommand(); //Call TorchLight TorchLightAnalyzer.getTorchLightAnalysis(selectedNode, pddlVersion); appendAnalysisOutputPanelText(">> TorchLight analysis done!'\n"); appendAnalysisOutputPanelText(" \n"); analysisStatusBar.setText("Status: Tourchlight analysis done!"); } else { JOptionPane.showMessageDialog(ItSIMPLE.this, "<html>Please chose a problem node at the 'Project Selection' tree. </html>"); } } }.start(); } }); analysisToolSetBar.add(TorchlightButton); //Results output outputAnalysisEditorPane = new JTextArea(); //analysisInfoEditorPane.setContentType("text/html"); outputAnalysisEditorPane.setEditable(false); outputAnalysisEditorPane.setLineWrap(true); outputAnalysisEditorPane.setWrapStyleWord(true); outputAnalysisEditorPane.setCursor(new Cursor(Cursor.TEXT_CURSOR)); outputAnalysisEditorPane.setBackground(Color.WHITE); //analysisInfoEditorPane = new JEditorPane(); //analysisInfoEditorPane.setContentType("text/html"); //analysisInfoEditorPane.setEditable(false); //analysisInfoEditorPane.setCursor(new Cursor(Cursor.TEXT_CURSOR)); //analysisInfoEditorPane.setBackground(Color.WHITE); resultsPanel.add(analysisToolSetBar, BorderLayout.NORTH); resultsPanel.add(new JScrollPane(outputAnalysisEditorPane), BorderLayout.CENTER); mainContentPanel.setContent(resultsPanel, false); //mainContentPanel.setParentSplitPane(petriEditorSplitPane); anPanel.add(mainContentPanel, BorderLayout.CENTER); return anPanel; }
From source file:src.gui.ItSIMPLE.java
/** * This method initializes movieMakerToolBar * * @return javax.swing.JToolBar//from ww w . j a v a 2 s .co m */ private JToolBar getMovieMakerToolBar() { JToolBar movieMakerToolBar = new JToolBar(); movieMakerToolBar.setRollover(true); // create the buttons // generate movie JButton generateMovieButton = new JButton("Generate Movie", new ImageIcon("resources/images/makemovie.png")); generateMovieButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { // the thread is created so the status bar can be refreshed new Thread() { public void run() { ItTreeNode selectedNode = (ItTreeNode) problemsPlanTree.getLastSelectedPathComponent(); if (selectedNode != null && selectedNode.getLevel() == 3) { Element problem = selectedNode.getData(); movie = PlanSimulator.getMovie(xmlPlan, problem); //XMLUtilities.printXML(xmlPlan); //XMLUtilities.printXML(movie); //IN CASE WE WANT TO RUN THE METRICS WITH SIMULATION //Element domain = problem.getParentElement().getParentElement(); //Element metrics = PlanSimulator.createMetricsNode(problem, domain); //if(metrics.getChildren().size() > 0){ // PlanSimulator.createMetricDatasets(metrics, xmlPlan, problem, domain, movie); //} //XMLUtilities.printXML(metrics); PlanNavigationList.getInstance().setList(xmlPlan, movie, problem.getParentElement().getParentElement(), (JPanel) movieMakerSplitPane.getLeftComponent(), (JPanel) movieMakerSplitPane.getRightComponent()); replanMenu.setEnabled(true); } } }.start(); } }); movieMakerToolBar.add(generateMovieButton); // back JButton backButton = new JButton("Backward", new ImageIcon("resources/images/backward.png")); backButton.setToolTipText("Backward"); backButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JList navigationList = PlanNavigationList.getInstance().getPlanList(); final int selected = navigationList.getSelectedIndex(); if (selected > 0) { navigationList.setSelectedIndex(selected - 1); } } }); movieMakerToolBar.add(backButton); // forward JButton forwardButton = new JButton("Forward", new ImageIcon("resources/images/forward.png")); forwardButton.setToolTipText("Forward"); forwardButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { JList navigationList = PlanNavigationList.getInstance().getPlanList(); final int selected = navigationList.getSelectedIndex(); if (selected > -1 && selected < navigationList.getModel().getSize() - 1) { navigationList.setSelectedIndex(selected + 1); } } }); movieMakerToolBar.add(forwardButton); movieMakerToolBar.addSeparator(); // zoom in //JButton zoomInButton = new JButton("Zoom In",new ImageIcon("resources/images/zoomIN.png")); JButton zoomInButton = new JButton(new ImageIcon("resources/images/zoomIN.png")); zoomInButton.setToolTipText("Zoom In"); zoomInButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { try { ItGraph leftGraph = (ItGraph) ((JScrollPane) ((JPanel) movieMakerSplitPane.getLeftComponent()) .getComponent(0)).getViewport().getView(); leftGraph.setScale(leftGraph.getScale() * 1.25); ItGraph rightGraph = (ItGraph) ((JScrollPane) ((JPanel) movieMakerSplitPane.getRightComponent()) .getComponent(0)).getViewport().getView(); rightGraph.setScale(rightGraph.getScale() * 1.25); } catch (Exception e1) { } } }); movieMakerToolBar.add(zoomInButton); // zoom out //JButton zoomOutButton = new JButton("Zoom Out",new ImageIcon("resources/images/zoomOUT.png")); JButton zoomOutButton = new JButton(new ImageIcon("resources/images/zoomOUT.png")); zoomOutButton.setToolTipText("Zoom Out"); zoomOutButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { try { ItGraph leftGraph = (ItGraph) ((JScrollPane) ((JPanel) movieMakerSplitPane.getLeftComponent()) .getComponent(0)).getViewport().getView(); leftGraph.setScale(leftGraph.getScale() * 0.8); ItGraph rightGraph = (ItGraph) ((JScrollPane) ((JPanel) movieMakerSplitPane.getRightComponent()) .getComponent(0)).getViewport().getView(); rightGraph.setScale(rightGraph.getScale() * 0.8); } catch (Exception e1) { } } }); movieMakerToolBar.add(zoomOutButton); // 1:1 JButton oneToOneScaleButton = new JButton("1:1"); oneToOneScaleButton.setToolTipText("1:1"); oneToOneScaleButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { try { ItGraph leftGraph = (ItGraph) ((JScrollPane) ((JPanel) movieMakerSplitPane.getLeftComponent()) .getComponent(0)).getViewport().getView(); leftGraph.setScale(1.0); ItGraph rightGraph = (ItGraph) ((JScrollPane) ((JPanel) movieMakerSplitPane.getRightComponent()) .getComponent(0)).getViewport().getView(); rightGraph.setScale(1.0); } catch (Exception e1) { } } }); movieMakerToolBar.add(oneToOneScaleButton); movieMakerToolBar.addSeparator(); // edit state JButton editStateButton = new JButton("Edit", new ImageIcon("resources/images/edit.png")); editStateButton.setToolTipText("Edit current state"); editStateButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { // take the current state Element currentState = PlanNavigationList.getInstance().getCurrentState(); ItTreeNode problemNode = (ItTreeNode) problemsPlanTree.getLastSelectedPathComponent(); ItTreeNode domainNode = (ItTreeNode) problemNode.getParent(); ItTreeNode projectNode = (ItTreeNode) domainNode.getParent(); // the object diagram must have parent //add the current state to the domain Element currentStateClone = (Element) currentState.clone(); problemNode.getData().getChild("objectDiagrams").addContent(currentStateClone); graphTabbedPane.openEditStateTab(currentStateClone, domainNode.getData(), projectNode.getData()); //mainTabbedPane.setSelectedIndex(0); CardLayout cl = (CardLayout) (mainTabbedPane.getLayout()); cl.show(mainTabbedPane, "UML"); } }); movieMakerToolBar.add(editStateButton); movieMakerToolBar.addSeparator(); // plan evaluation /* JButton planEvaluationButton = new JButton("Evaluate Plan", new ImageIcon("resources/images/eval.png")); planEvaluationButton.setToolTipText("<html>Generate a plan evaluation in the planReport. <br> This is restricted to non-time-based domain only.</html>"); planEvaluationButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { //RUN plan evaluation generateEvaluatioReport.actionPerformed(e); } }); movieMakerToolBar.add( planEvaluationButton); */ // virtual reality JButton virtualRealityButton = new JButton("Virtual Prototyping", new ImageIcon("resources/images/virtualprototype.png")); virtualRealityButton.setToolTipText("Generate virtual prototype files"); virtualRealityButton.addActionListener(new java.awt.event.ActionListener() { @Override public void actionPerformed(ActionEvent e) { ItTreeNode problemNode = (ItTreeNode) problemsPlanTree.getLastSelectedPathComponent(); ItTreeNode domainNode = (ItTreeNode) problemNode.getParent(); //ItTreeNode projectNode = (ItTreeNode)domainNode.getParent(); try { VirtualPrototypingBlender.generatePrototypeFiles(domainNode.getData(), problemNode.getData(), xmlPlan); //VirtualRealityRobotNavigationDomain.generateBackgroundFile(problemNode.getData(), xmlPlan); } catch (IOException ex) { Logger.getLogger(ItSIMPLE.class.getName()).log(Level.SEVERE, null, ex); } //VirtualRealityRobotNavigationDomain.generateBackgroundFile(problemNode.getData(), xmlPlan); } }); movieMakerToolBar.add(virtualRealityButton); return movieMakerToolBar; }