List of usage examples for javax.swing JDialog setLayout
public void setLayout(LayoutManager manager)
From source file:com.atlauncher.data.Settings.java
public void reloadLauncherData() { final JDialog dialog = new JDialog(this.parent, ModalityType.APPLICATION_MODAL); dialog.setSize(300, 100);//from ww w. ja va 2s . c om dialog.setTitle("Updating Launcher"); dialog.setLocationRelativeTo(App.settings.getParent()); dialog.setLayout(new FlowLayout()); dialog.setResizable(false); dialog.add(new JLabel("Updating Launcher... Please Wait")); App.TASKPOOL.execute(new Runnable() { @Override public void run() { if (hasUpdatedFiles()) { downloadUpdatedFiles(); // Downloads updated files on the server } checkForLauncherUpdate(); loadNews(); // Load the news reloadNewsPanel(); // Reload news panel loadPacks(); // Load the Packs available in the Launcher reloadPacksPanel(); // Reload packs panel loadUsers(); // Load the Testers and Allowed Players for the packs loadInstances(); // Load the users installed Instances reloadInstancesPanel(); // Reload instances panel dialog.setVisible(false); // Remove the dialog dialog.dispose(); // Dispose the dialog } }); dialog.setVisible(true); }
From source file:userinterface.properties.GUIGraphHandler.java
public void plotNewFunction() { JDialog dialog; JRadioButton radio2d, radio3d, newGraph, existingGraph; JTextField functionField, seriesName; JButton ok, cancel;/* w w w .j a v a 2s. c om*/ JComboBox<String> chartOptions; JLabel example; //init all the fields of the dialog dialog = new JDialog(GUIPrism.getGUI()); radio2d = new JRadioButton("2D"); radio3d = new JRadioButton("3D"); newGraph = new JRadioButton("New Graph"); existingGraph = new JRadioButton("Exisiting"); chartOptions = new JComboBox<String>(); functionField = new JTextField(); ok = new JButton("Plot"); cancel = new JButton("Cancel"); seriesName = new JTextField(); example = new JLabel("<html><font size=3 color=red>Example:</font><font size=3>x/2 + 5</font></html>"); example.addMouseListener(new MouseAdapter() { @Override public void mouseEntered(MouseEvent e) { example.setCursor(new Cursor(Cursor.HAND_CURSOR)); example.setForeground(Color.BLUE); } @Override public void mouseExited(MouseEvent e) { example.setCursor(new Cursor(Cursor.DEFAULT_CURSOR)); example.setForeground(Color.BLACK); } @Override public void mouseClicked(MouseEvent e) { if (e.getButton() == MouseEvent.BUTTON1) { if (radio2d.isSelected()) { functionField.setText("x/2 + 5"); } else { functionField.setText("x+y+5"); } functionField.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 15)); functionField.setForeground(Color.BLACK); } } }); //set dialog properties dialog.setSize(400, 350); dialog.setTitle("Plot a new function"); dialog.setModal(true); dialog.setLayout(new BoxLayout(dialog.getContentPane(), BoxLayout.Y_AXIS)); dialog.setLocationRelativeTo(GUIPrism.getGUI()); //add every component to their dedicated panels JPanel graphTypePanel = new JPanel(new FlowLayout()); graphTypePanel.setBorder(BorderFactory .createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "Function type")); graphTypePanel.add(radio2d); graphTypePanel.add(radio3d); JPanel functionFieldPanel = new JPanel(new BorderLayout()); functionFieldPanel.setBorder(BorderFactory .createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "Function")); functionFieldPanel.add(functionField, BorderLayout.CENTER); functionFieldPanel.add(example, BorderLayout.SOUTH); JPanel chartSelectPanel = new JPanel(); chartSelectPanel.setLayout(new BoxLayout(chartSelectPanel, BoxLayout.Y_AXIS)); chartSelectPanel.setBorder(BorderFactory .createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "Plot function to")); JPanel radioPlotPanel = new JPanel(new FlowLayout()); radioPlotPanel.add(newGraph); radioPlotPanel.add(existingGraph); JPanel chartOptionsPanel = new JPanel(new FlowLayout()); chartOptionsPanel.add(chartOptions); chartSelectPanel.add(radioPlotPanel); chartSelectPanel.add(chartOptionsPanel); JPanel bottomControlPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); bottomControlPanel.add(ok); bottomControlPanel.add(cancel); JPanel seriesNamePanel = new JPanel(new BorderLayout()); seriesNamePanel.setBorder(BorderFactory .createTitledBorder(BorderFactory.createEtchedBorder(EtchedBorder.LOWERED), "Series name")); seriesNamePanel.add(seriesName, BorderLayout.CENTER); // add all the panels to the dialog dialog.add(graphTypePanel); dialog.add(functionFieldPanel); dialog.add(chartSelectPanel); dialog.add(seriesNamePanel); dialog.add(bottomControlPanel); // do all the enables and set properties radio2d.setSelected(true); newGraph.setSelected(true); chartOptions.setEnabled(false); functionField.setText("Add function expression here...."); functionField.setFont(new Font(Font.SANS_SERIF, Font.ITALIC, 15)); functionField.setForeground(Color.GRAY); seriesName.setText("New function"); ok.setMnemonic('P'); cancel.setMnemonic('C'); example.setToolTipText("click to try out"); ok.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "ok"); ok.getActionMap().put("ok", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { ok.doClick(); } }); cancel.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel"); cancel.getActionMap().put("cancel", new AbstractAction() { @Override public void actionPerformed(ActionEvent e) { cancel.doClick(); } }); boolean found = false; for (int i = 0; i < theTabs.getTabCount(); i++) { if (theTabs.getComponentAt(i) instanceof Graph) { chartOptions.addItem(getGraphName(i)); found = true; } } if (!found) { existingGraph.setEnabled(false); chartOptions.setEnabled(false); } //add all the action listeners radio2d.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (radio2d.isSelected()) { radio3d.setSelected(false); if (chartOptions.getItemCount() > 0) { existingGraph.setEnabled(true); chartOptions.setEnabled(true); } example.setText( "<html><font size=3 color=red>Example:</font><font size=3>x/2 + 5</font></html>"); } } }); radio3d.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (radio3d.isSelected()) { radio2d.setSelected(false); newGraph.setSelected(true); existingGraph.setEnabled(false); chartOptions.setEnabled(false); example.setText("<html><font size=3 color=red>Example:</font><font size=3>x+y+5</font></html>"); } } }); newGraph.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (newGraph.isSelected()) { existingGraph.setSelected(false); chartOptions.setEnabled(false); } } }); existingGraph.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (existingGraph.isSelected()) { newGraph.setSelected(false); chartOptions.setEnabled(true); } } }); ok.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { String function = functionField.getText(); Expression expr = null; try { expr = GUIPrism.getGUI().getPrism().parseSingleExpressionString(function); expr = (Expression) expr.accept(new ASTTraverseModify() { @Override public Object visit(ExpressionIdent e) throws PrismLangException { return new ExpressionConstant(e.getName(), TypeDouble.getInstance()); } }); expr.typeCheck(); expr.semanticCheck(); } catch (PrismLangException e1) { // for copying style JLabel label = new JLabel(); // html content in our case the error we want to show JEditorPane ep = new JEditorPane("text/html", "<html> There was an error parsing the function. To read about what built-in" + " functions are supported <br>and some more information on the functions, visit " + "<a href='http://www.prismmodelchecker.org/manual/ThePRISMLanguage/Expressions'>Prism expressions site</a>." + "<br><br><font color=red>Error: </font>" + e1.getMessage() + " </html>"); // handle link events ep.addHyperlinkListener(new HyperlinkListener() { @Override public void hyperlinkUpdate(HyperlinkEvent e) { if (e.getEventType().equals(HyperlinkEvent.EventType.ACTIVATED)) { try { Desktop.getDesktop().browse(e.getURL().toURI()); } catch (IOException | URISyntaxException e1) { e1.printStackTrace(); } } } }); ep.setEditable(false); ep.setBackground(label.getBackground()); // show the error dialog JOptionPane.showMessageDialog(dialog, ep, "Parse Error", JOptionPane.ERROR_MESSAGE); return; } if (radio2d.isSelected()) { ParametricGraph graph = null; if (newGraph.isSelected()) { graph = new ParametricGraph(""); } else { for (int i = 0; i < theTabs.getComponentCount(); i++) { if (theTabs.getTitleAt(i).equals(chartOptions.getSelectedItem())) { graph = (ParametricGraph) theTabs.getComponent(i); } } } dialog.dispose(); defineConstantsAndPlot(expr, graph, seriesName.getText(), newGraph.isSelected(), true); } else if (radio3d.isSelected()) { try { expr = (Expression) expr.accept(new ASTTraverseModify() { @Override public Object visit(ExpressionIdent e) throws PrismLangException { return new ExpressionConstant(e.getName(), TypeDouble.getInstance()); } }); expr.semanticCheck(); expr.typeCheck(); } catch (PrismLangException e1) { e1.printStackTrace(); } if (expr.getAllConstants().size() < 2) { JOptionPane.showMessageDialog(dialog, "There are not enough variables in the function to plot a 3D chart!", "Error", JOptionPane.ERROR_MESSAGE); return; } // its always a new graph ParametricGraph3D graph = new ParametricGraph3D(expr); dialog.dispose(); defineConstantsAndPlot(expr, graph, seriesName.getText(), true, false); } dialog.dispose(); } }); cancel.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { dialog.dispose(); } }); // we will show info about the function when field is out of focus functionField.addFocusListener(new FocusListener() { @Override public void focusLost(FocusEvent e) { if (!functionField.getText().equals("")) { return; } functionField.setText("Add function expression here...."); functionField.setFont(new Font(Font.SANS_SERIF, Font.ITALIC, 15)); functionField.setForeground(Color.GRAY); } @Override public void focusGained(FocusEvent e) { if (!functionField.getText().equals("Add function expression here....")) { return; } functionField.setForeground(Color.BLACK); functionField.setFont(new Font(Font.SANS_SERIF, Font.PLAIN, 15)); functionField.setText(""); } }); // show the dialog dialog.setVisible(true); }
From source file:display.ANNFileFilter.java
License:asdf
Yanng() { JPanel toolBars;//from w w w .j av a 2 s . 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:org.interreg.docexplore.authoring.AuthoringMenu.java
public AuthoringMenu(final AuthoringToolFrame authoringTool) { this.tool = authoringTool; this.recent = new LinkedList<String>(); readRecent();/*from www.ja v a2 s. com*/ this.file = new JMenu(XMLResourceBundle.getBundledString("generalMenuFile")); add(file); newItem = new JMenuItem(new AbstractAction(XMLResourceBundle.getBundledString("generalMenuNew")) { public void actionPerformed(ActionEvent arg0) { newFile(); } }); loadItem = new JMenuItem(new AbstractAction(XMLResourceBundle.getBundledString("generalMenuLoad")) { public void actionPerformed(ActionEvent arg0) { load(); } }); saveItem = new JMenuItem(new AbstractAction(XMLResourceBundle.getBundledString("generalMenuSave")) { public void actionPerformed(ActionEvent arg0) { save(); } }); saveAsItem = new JMenuItem(new AbstractAction(XMLResourceBundle.getBundledString("generalMenuSaveAs")) { public void actionPerformed(ActionEvent arg0) { saveAs(); } }); exportItem = new JMenuItem( new AbstractAction(XMLResourceBundle.getBundledString("generalMenuExport") + "...") { public void actionPerformed(ActionEvent arg0) { GuiUtils.blockUntilComplete(new ProgressRunnable() { public void run() { try { authoringTool.readerExporter.doExport(authoringTool.editor.link); } catch (Exception ex) { ErrorHandler.defaultHandler.submit(ex); } } public float getProgress() { return (float) authoringTool.readerExporter.progress[0]; } }, authoringTool.editor); } }); webExportItem = new JMenuItem( new AbstractAction(XMLResourceBundle.getBundledString("generalMenuWebExport") + "...") { public void actionPerformed(ActionEvent arg0) { GuiUtils.blockUntilComplete(new ProgressRunnable() { public void run() { try { authoringTool.webExporter.doExport(authoringTool.editor.link); } catch (Exception ex) { ErrorHandler.defaultHandler.submit(ex); } } public float getProgress() { return (authoringTool.webExporter.copyComplete ? .5f : 0f) + (float) (.5 * authoringTool.webExporter.progress[0]); } }, authoringTool.editor); } }); // webExportItem = new JMenuItem(new AbstractAction("Web export") {public void actionPerformed(ActionEvent arg0) // { // GuiUtils.blockUntilComplete(new Runnable() {public void run() // { // try // { // new WebStaticExporter().doExport(authoringTool.editor.link.getBook(authoringTool.editor.link.getLink().getAllBookIds().get(0))); // } // catch (Exception ex) {ErrorHandler.defaultHandler.submit(ex);} // }}, authoringTool.editor); // }}); // webExportItem.setEnabled(false); quitItem = new JMenuItem(new AbstractAction(XMLResourceBundle.getBundledString("generalMenuQuit")) { public void actionPerformed(ActionEvent arg0) { authoringTool.quit(); } }); buildFileMenu(); JMenu edit = new JMenu(XMLResourceBundle.getBundledString("generalMenuEdit")); this.undoItem = new JMenuItem(); undoItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { authoringTool.historyManager.undo(); } catch (Exception ex) { ErrorHandler.defaultHandler.submit(ex); } } }); edit.add(undoItem); this.redoItem = new JMenuItem(); redoItem.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { try { authoringTool.historyManager.redo(); } catch (Exception ex) { ErrorHandler.defaultHandler.submit(ex); } } }); edit.add(redoItem); JMenuItem viewHistory = new JMenuItem(XMLResourceBundle.getBundledString("generalMenuEditViewHistory")); viewHistory.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { authoringTool.historyDialog.setVisible(true); } }); edit.add(viewHistory); edit.addSeparator(); edit.add(new JMenuItem(new AbstractAction(XMLResourceBundle.getBundledString("fixChars")) { public void actionPerformed(ActionEvent arg0) { Object res = JOptionPane.showInputDialog(tool, XMLResourceBundle.getBundledString("fixCharsMsg"), XMLResourceBundle.getBundledString("fixChars"), JOptionPane.QUESTION_MESSAGE, null, new Object[] { XMLResourceBundle.getBundledString("fixCharsWin"), XMLResourceBundle.getBundledString("fixCharsMac") }, XMLResourceBundle.getBundledString("fixCharsWin")); if (res == null) return; try { convertPresentation(tool.defaultFile, res.equals(XMLResourceBundle.getBundledString("fixCharsWin")) ? "ISO-8859-1" : "x-MacRoman"); } catch (Exception e) { ErrorHandler.defaultHandler.submit(e); } try { tool.editor.reset(); } catch (Exception e) { e.printStackTrace(); } } })); //TODO: remove! // edit.add(new JMenuItem(new AbstractAction("hack!") // { // public void actionPerformed(ActionEvent e) {try // { // BookEditorView be = null; // for (ExplorerView view : tool.editor.views) // if (view instanceof BookEditorView) // be = (BookEditorView)view; // Book book = be.curBook; // int lastPage = book.getLastPageNumber(); // for (int pageNum = 1;pageNum <= lastPage;pageNum++) // { // Page page = book.getPage(pageNum); // Set<Region> regions = page.getRegions(); // if (regions.size() > 2) // { // Region highest = null; // int max = -1; // for (Region region : regions) // for (Point point : region.getOutline()) // if (max < 0 || point.y < max) // {max = point.y; highest = region;} // Region middle = null; // max = -1; // for (Region region : regions) // if (region != highest) // for (Point point : region.getOutline()) // if (max < 0 || point.y < max) // {max = point.y; middle = region;} // if (regions.size() > 3) // { // max = -1; // Region newMiddle = null; // for (Region region : regions) // if (region != highest && region != middle) // for (Point point : region.getOutline()) // if (max < 0 || point.y < max) // {max = point.y; newMiddle = region;} // middle = newMiddle; // } // MetaDataKey display = book.getLink().getKey("display", ""); // for (Map.Entry<MetaDataKey, List<MetaData>> entry : highest.getMetaData().entrySet()) // for (MetaData md : entry.getValue()) // if (md.getType().equals(MetaData.textType)) // { // String val = "<b>"+md.getString()+"</b>\n"; // for (Map.Entry<MetaDataKey, List<MetaData>> entry2 : middle.getMetaData().entrySet()) // for (MetaData md2 : entry2.getValue()) // if (md2.getType().equals(MetaData.textType) && TextElement.getStyle(md, tool.styleManager) == TextElement.getStyle(md2, tool.styleManager)) // val = val+"\n"+md2.getString(); // md.setString(val); // } // boolean hasImage = false; // for (Map.Entry<MetaDataKey, List<MetaData>> entry2 : middle.getMetaData().entrySet()) // for (MetaData md2 : entry2.getValue()) // if (md2.getType().equals(MetaData.imageType)) // { // MetaData imageMd = new MetaData(book.getLink(), display, md2.getType(), md2.getValue()); // if (!hasImage) // BookImporter.insert(imageMd, highest, 0); // else BookImporter.insert(imageMd, highest, BookImporter.getHighestRank(highest)+1); // hasImage = true; // } // page.removeRegion(middle); // } // } // } // catch (Exception ex) {ex.printStackTrace();}System.out.println("done");} // })); // edit.add(new JMenuItem(new AbstractAction("hack!") // { // public void actionPerformed(ActionEvent e) {try // { // BookEditorView be = null; // for (ExplorerView view : tool.editor.views) // if (view instanceof BookEditorView) // be = (BookEditorView)view; // Book book = be.curBook; // int lastPage = book.getLastPageNumber(); // MetaDataKey display = book.getLink().getKey("display", ""); // for (int pageNum = 1;pageNum <= lastPage;pageNum++) // { // Page page = book.getPage(pageNum); // Set<Region> regions = page.getRegions(); // for (Region region : regions) // { // List<MetaData> mds = region.getMetaDataListForKey(display); // for (MetaData md : mds) // if (md.getType().equals(MetaData.textType)) // { // String val = md.getString().trim(); // if (!val.startsWith("<i>") || !val.endsWith("</i>")) // continue; // TextElement.getStyleMD(md).setString("4"); // md.setString(val.substring(3, val.length()-4)); // System.out.println(md.getString()); // } // } // } // } // catch (Exception ex) {ex.printStackTrace();}System.out.println("done");} // })); // edit.add(new JMenuItem(new AbstractAction("hack!") // { // public void actionPerformed(ActionEvent e) {try // { // BookEditorView be = null; // for (ExplorerView view : tool.editor.views) // if (view instanceof BookEditorView) // be = (BookEditorView)view; // Book book = be.curBook; // int lastPage = book.getLastPageNumber(); // MetaDataKey display = book.getLink().getKey("display", ""); // for (int pageNum = 1;pageNum <= lastPage;pageNum++) // { // Page page = book.getPage(pageNum); // Set<Region> regions = page.getRegions(); // for (Region region : regions) // { // int max = BookImporter.getHighestRank(region); // for (int i=0;i<max;i++) // { // MetaData md1 = BookImporter.getAtRank(region, i); // if (md1 == null || !md1.getType().equals(MetaData.textType)) // continue; // MetaData style1 = TextElement.getStyleMD(md1); // if (!style1.getString().equals("0")) // continue; // MetaData md2 = BookImporter.getAtRank(region, i+1); // if (md2 == null || !md2.getType().equals(MetaData.textType)) // continue; // MetaData style2 = TextElement.getStyleMD(md2); // if (!style2.getString().equals("1")) // continue; // BookImporter.setRank(md1, i+1); // BookImporter.setRank(md2, i); // i++; // } // } // } // } // catch (Exception ex) {ex.printStackTrace();}System.out.println("done");} // })); // edit.add(new JMenuItem(new AbstractAction("hack!") // { // public void actionPerformed(ActionEvent e) {try // { // BookEditorView be = null; // for (ExplorerView view : tool.editor.views) // if (view instanceof BookEditorView) // be = (BookEditorView)view; // Book book = be.curBook; // MetaDataKey mini = book.getLink().getOrCreateKey("mini", ""); // MetaDataKey dim = book.getLink().getOrCreateKey("dimension", ""); // int lastPage = book.getLastPageNumber(); // for (int pageNum = 1;pageNum <= lastPage;pageNum++) // { // Page page = book.getPage(pageNum); // List<MetaData> mds = page.getMetaDataListForKey(mini); // if (mds != null) // for (MetaData md : mds) // page.removeMetaData(md); // mds = page.getMetaDataListForKey(dim); // if (mds != null) // for (MetaData md : mds) // page.removeMetaData(md); // DocExploreDataLink.getImageDimension(page, true); // DocExploreDataLink.getImageMini(page, false); // } // } // catch (Exception ex) {ex.printStackTrace();}System.out.println("done");} // })); add(edit); JMenu view = new JMenu(XMLResourceBundle.getBundledString("generalMenuView")); add(view); JMenuItem styles = new JMenuItem(XMLResourceBundle.getBundledString("styleEdit") + "...", ImageUtils.getIcon("pencil-24x24.png")); styles.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { authoringTool.styleManager.styleDialog.setVisible(true); } }); view.add(styles); helpToggle = new JCheckBoxMenuItem( new AbstractAction(XMLResourceBundle.getBundledString("viewHelpToggle")) { public void actionPerformed(ActionEvent arg0) { authoringTool.displayHelp = helpToggle.isSelected(); authoringTool.repaint(); } }); helpToggle.setSelected(tool.startup.showHelp); view.add(helpToggle); JMenu helpMenu = new JMenu(XMLResourceBundle.getString("management-lrb", "generalMenuHelp")); if (Desktop.isDesktopSupported()) { final Desktop desktop = Desktop.getDesktop(); if (desktop.isSupported(Desktop.Action.OPEN)) { helpMenu.add(new AbstractAction( XMLResourceBundle.getString("management-lrb", "generalMenuHelpContents")) { public void actionPerformed(ActionEvent e) { try { File doc = new File(DocExploreTool.getExecutableDir(), "MMT documentation.htm"); desktop.open(doc); } catch (Exception ex) { ErrorHandler.defaultHandler.submit(ex, true); } } }); helpMenu.add(new AbstractAction( XMLResourceBundle.getString("management-lrb", "generalMenuHelpWebsite")) { public void actionPerformed(ActionEvent e) { try { File link = new File(DocExploreTool.getExecutableDir(), "website.url"); desktop.open(link); } catch (Exception ex) { ErrorHandler.defaultHandler.submit(ex, true); } } }); } } helpMenu.add(new AbstractAction(XMLResourceBundle.getString("management-lrb", "generalMenuHelpAbout")) { public void actionPerformed(ActionEvent e) { final JDialog splash = new JDialog(tool, true); splash.setLayout(new BorderLayout()); SplashScreen screen = new SplashScreen("logoAT.png"); splash.add(screen, BorderLayout.NORTH); screen.addMouseListener(new MouseAdapter() { @Override public void mouseReleased(MouseEvent e) { splash.setVisible(false); } }); splash.setUndecorated(true); screen.setText( "<html>DocExplore 2009-2014" + "<br/>Released under the CeCILL v2.1 license" + "</html>"); splash.pack(); splash.setAlwaysOnTop(true); GuiUtils.centerOnScreen(splash); splash.setVisible(true); } }); add(helpMenu); historyChanged(authoringTool.historyManager); authoringTool.historyManager.addHistoryListener(this); }
From source file:org.nuclos.client.relation.EntityRelationshipModelEditPanel.java
private void editMasterdataRelation(mxCell cell) { EntityFieldMetaDataVO voField = null; RelationAttributePanel panel = new RelationAttributePanel(RelationAttributePanel.TYPE_ENTITY); String sSource = ""; String sTarget = ""; EntityMetaDataVO voSourceModify = null; if (cell.getValue() != null && cell.getValue() instanceof EntityFieldMetaDataVO) { voField = (EntityFieldMetaDataVO) cell.getValue(); EntityMetaDataVO voSource = (EntityMetaDataVO) cell.getSource().getValue(); voSourceModify = voSource;//w ww. j a v a 2s. c o m EntityMetaDataVO voTarget = (EntityMetaDataVO) cell.getTarget().getValue(); sSource = voSource.getEntity(); sTarget = voTarget.getEntity(); EntityMetaDataVO voForeign = MetaDataClientProvider.getInstance().getEntity(voSource.getEntity()); EntityMetaDataVO voEntity = MetaDataClientProvider.getInstance().getEntity(voTarget.getEntity()); panel.setEntity(voEntity); panel.setEntitySource(voForeign); panel.setEntityFields( MetaDataDelegate.getInstance().getAllEntityFieldsByEntity(voForeign.getEntity()).values()); if (voField.getId() != null) { voField = MetaDataClientProvider.getInstance().getEntityField(voForeign.getEntity(), voField.getField()); List<TranslationVO> lstTranslation = new ArrayList<TranslationVO>(); for (LocaleInfo lInfo : LocaleDelegate.getInstance().getAllLocales(false)) { Map<String, String> mp = new HashMap<String, String>(); mp.put(TranslationVO.labelsField[0], LocaleDelegate.getInstance().getResourceByStringId(lInfo, voField.getLocaleResourceIdForLabel())); mp.put(TranslationVO.labelsField[1], LocaleDelegate.getInstance().getResourceByStringId(lInfo, voField.getLocaleResourceIdForDescription())); TranslationVO voTrans = new TranslationVO(lInfo.localeId, lInfo.title, lInfo.language, mp); lstTranslation.add(voTrans); } panel.setTranslation(lstTranslation); panel.setFieldValues(voField); } else { MyGraphModel model = (MyGraphModel) graphComponent.getGraph().getModel(); panel.setFieldValues(voField); panel.setTranslationAndMore(model.getTranslation().get(voField)); } } else if (cell.getValue() != null && cell.getValue() instanceof String) { EntityMetaDataVO voSource = (EntityMetaDataVO) cell.getSource().getValue(); EntityMetaDataVO voTarget = (EntityMetaDataVO) cell.getTarget().getValue(); sSource = voSource.getEntity(); sTarget = voTarget.getEntity(); EntityMetaDataVO voForeign = MetaDataClientProvider.getInstance().getEntity(voSource.getEntity()); EntityMetaDataVO voEntity = MetaDataClientProvider.getInstance().getEntity(voTarget.getEntity()); voSourceModify = voForeign; panel.setEntity(voEntity); panel.setEntitySource(voForeign); panel.setEntityFields( MetaDataDelegate.getInstance().getAllEntityFieldsByEntity(voSource.getEntity()).values()); } double cellsDialog[][] = { { 5, TableLayout.PREFERRED, 5 }, { 5, TableLayout.PREFERRED, 5 } }; JDialog dia = new JDialog(mf); dia.setLayout(new TableLayout(cellsDialog)); dia.setTitle("Verbindung von " + sSource + " zu " + sTarget + " bearbeiten"); dia.setLocationRelativeTo(EntityRelationshipModelEditPanel.this); dia.add(panel, "1,1"); dia.setModal(true); panel.setDialog(dia); dia.pack(); dia.setVisible(true); if (panel.getState() == 1) { EntityFieldMetaDataVO vo = panel.getField(); cell.setValue(vo); EntityRelationshipModelEditPanel.this.fireChangeListenEvent(); List<EntityFieldMetaDataTO> toList = new ArrayList<EntityFieldMetaDataTO>(); EntityFieldMetaDataTO toField = new EntityFieldMetaDataTO(); toField.setEntityFieldMeta(vo); toField.setTranslation(panel.getTranslation().getRows()); toList.add(toField); MetaDataDelegate.getInstance().modifyEntityMetaData(voSourceModify, toList); MyGraphModel model = (MyGraphModel) graphComponent.getGraph().getModel(); model.getTranslation().put(vo, panel.getTranslation().getRows()); getGraphComponent().refresh(); loadReferenz(); } else { if (cell.getValue() instanceof String) getGraphModel().remove(cell); } }
From source file:org.nuclos.client.relation.MyGraphModel.java
public JPopupMenu createRelationPopupMenu(final mxCell cell, boolean delete) { final JPopupMenu pop = new JPopupMenu(); JMenuItem i1 = new JMenuItem( getSpringLocaleDelegate().getMessage("nuclos.entityrelation.editor.1", "Bezug zu Stammdaten")); i1.addActionListener(new ActionListener() { @Override/*from w w w.ja v a 2 s . c o m*/ public void actionPerformed(ActionEvent e) { editPanel.setIsPopupShown(false); if (cell.getTarget() == null || cell.getSource() == null) { remove(cell); return; } Object cells[] = { cell }; mxUtils.setCellStyles(graphComponent.getGraph().getModel(), cells, mxConstants.STYLE_ENDARROW, mxConstants.ARROW_OPEN); mxUtils.setCellStyles(graphComponent.getGraph().getModel(), cells, mxConstants.STYLE_ENDSIZE, "12"); mxUtils.setCellStyles(graphComponent.getGraph().getModel(), cells, mxConstants.STYLE_ELBOW, mxConstants.ELBOW_VERTICAL); mxUtils.setCellStyles(graphComponent.getGraph().getModel(), cells, EDGESTYLE, ELBOWCONNECTOR); RelationAttributePanel panel = new RelationAttributePanel(RelationAttributePanel.TYPE_ENTITY); mxCell target = (mxCell) cell.getTarget(); mxCell source = (mxCell) cell.getSource(); panel.setEntity((EntityMetaDataVO) target.getValue()); panel.setEntitySource((EntityMetaDataVO) source.getValue()); EntityMetaDataVO voSource = (EntityMetaDataVO) source.getValue(); EntityMetaDataVO voTarget = (EntityMetaDataVO) target.getValue(); panel.setEntityFields( MetaDataDelegate.getInstance().getAllEntityFieldsByEntity(voSource.getEntity()).values()); double cellsDialog[][] = { { 5, TableLayout.PREFERRED, 5 }, { 5, TableLayout.PREFERRED, 5 } }; JDialog dia = new JDialog(mf); dia.setLayout(new TableLayout(cellsDialog)); dia.setTitle(getSpringLocaleDelegate().getMessage("nuclos.entityrelation.editor.10", "Bezug zu Stammdaten bearbeiten")); dia.setLocationRelativeTo(editPanel); dia.add(panel, "1,1"); dia.setModal(true); panel.setDialog(dia); dia.pack(); dia.setVisible(true); if (panel.getState() == 1) { EntityFieldMetaDataVO vo = panel.getField(); cell.setValue(vo); mpTransation.put(vo, panel.getTranslation().getRows()); List<EntityFieldMetaDataTO> toList = new ArrayList<EntityFieldMetaDataTO>(); EntityFieldMetaDataTO toField = new EntityFieldMetaDataTO(); toField.setEntityFieldMeta(vo); toField.setTranslation(panel.getTranslation().getRows()); toList.add(toField); MetaDataDelegate.getInstance().modifyEntityMetaData(voSource, toList); editPanel.loadReferenz(); } else { remove(cell); } } }); final JMenuItem i2 = new JMenuItem(getSpringLocaleDelegate().getMessage("nuclos.entityrelation.editor.3", "Bezug zu Vorg\u00e4ngen (Unterformularbezug)")); i2.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { editPanel.setIsPopupShown(false); if (cell.getTarget() == null || cell.getSource() == null) { remove(cell); return; } Object cells[] = { cell }; mxUtils.setCellStyles(graphComponent.getGraph().getModel(), cells, mxConstants.STYLE_ENDARROW, mxConstants.ARROW_DIAMOND); mxUtils.setCellStyles(graphComponent.getGraph().getModel(), cells, mxConstants.STYLE_ENDSIZE, "12"); mxUtils.setCellStyles(graphComponent.getGraph().getModel(), cells, mxConstants.STYLE_ELBOW, mxConstants.ELBOW_VERTICAL); mxUtils.setCellStyles(graphComponent.getGraph().getModel(), cells, EDGESTYLE, ELBOWCONNECTOR); mxCell target = (mxCell) cell.getTarget(); mxCell source = (mxCell) cell.getSource(); EntityMetaDataVO voSource = (EntityMetaDataVO) source.getValue(); EntityMetaDataVO voTarget = (EntityMetaDataVO) target.getValue(); String sFieldName = null; boolean blnNotSet = true; while (blnNotSet) { sFieldName = JOptionPane.showInputDialog(editPanel, getSpringLocaleDelegate().getMessage( "nuclos.entityrelation.editor.1", "Bitte geben Sie den Namen des Feldes an!")); if (sFieldName == null || sFieldName.length() < 1) { MyGraphModel.this.remove(cell); return; } else if (sFieldName != null) { blnNotSet = false; } } EntityFieldMetaDataVO vo = new EntityFieldMetaDataVO(); vo.setModifiable(true); vo.setLogBookTracking(false); vo.setReadonly(false); vo.setShowMnemonic(true); vo.setInsertable(true); vo.setSearchable(true); vo.setNullable(false); vo.setUnique(true); vo.setDataType("java.lang.String"); List<TranslationVO> lstTranslation = new ArrayList<TranslationVO>(); for (LocaleInfo voLocale : LocaleDelegate.getInstance().getAllLocales(false)) { String sLocaleLabel = voLocale.language; Integer iLocaleID = voLocale.localeId; String sCountry = voLocale.title; Map<String, String> map = new HashMap<String, String>(); TranslationVO translation = new TranslationVO(iLocaleID, sCountry, sLocaleLabel, map); for (String sLabel : labels) { translation.getLabels().put(sLabel, sFieldName); } lstTranslation.add(translation); } vo.setForeignEntity(voTarget.getEntity()); vo.setField(sFieldName); vo.setDbColumn("INTID_" + sFieldName); cell.setValue(vo); List<EntityFieldMetaDataTO> toList = new ArrayList<EntityFieldMetaDataTO>(); EntityFieldMetaDataTO toField = new EntityFieldMetaDataTO(); toField.setEntityFieldMeta(vo); toField.setTranslation(lstTranslation); toList.add(toField); MetaDataDelegate.getInstance().modifyEntityMetaData(voSource, toList); editPanel.loadReferenz(); } }); final JMenuItem i4 = new JMenuItem( getSpringLocaleDelegate().getMessage("nuclos.entityrelation.editor.5", "Arbeitsschritt")); i4.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { editPanel.setIsPopupShown(false); if (cell.getTarget() == null || cell.getSource() == null) { remove(cell); return; } Object cells[] = { cell }; mxUtils.setCellStyles(graphComponent.getGraph().getModel(), cells, mxConstants.STYLE_ENDARROW, mxConstants.ARROW_OVAL); mxUtils.setCellStyles(graphComponent.getGraph().getModel(), cells, mxConstants.STYLE_ENDSIZE, "12"); mxUtils.setCellStyles(graphComponent.getGraph().getModel(), cells, mxConstants.STYLE_ELBOW, mxConstants.ELBOW_VERTICAL); mxUtils.setCellStyles(graphComponent.getGraph().getModel(), cells, EDGESTYLE, ELBOWCONNECTOR); try { mxCell cellSource = (mxCell) cell.getSource(); mxCell cellTarget = (mxCell) cell.getTarget(); EntityMetaDataVO sourceModule = (EntityMetaDataVO) cellSource.getValue(); EntityMetaDataVO targetModule = (EntityMetaDataVO) cellTarget.getValue(); String sSourceModule = sourceModule.getEntity(); String sTargetModule = targetModule.getEntity(); boolean blnFound = false; for (MasterDataVO voGeneration : MasterDataCache.getInstance() .get(NuclosEntity.GENERATION.getEntityName())) { String sSource = (String) voGeneration.getField("sourceModule"); String sTarget = (String) voGeneration.getField("targetModule"); if (org.apache.commons.lang.StringUtils.equals(sSource, sSourceModule) && org.apache.commons.lang.StringUtils.equals(sTarget, sTargetModule)) { GenerationCollectController gcc = (GenerationCollectController) NuclosCollectControllerFactory .getInstance().newMasterDataCollectController( NuclosEntity.GENERATION.getEntityName(), null, null); gcc.runViewSingleCollectableWithId(voGeneration.getId()); blnFound = true; break; } } if (!blnFound) { GenerationCollectController gcc = (GenerationCollectController) NuclosCollectControllerFactory .getInstance().newMasterDataCollectController( NuclosEntity.GENERATION.getEntityName(), null, null); Map<String, Object> mp = new HashMap<String, Object>(); mp.put("sourceModule", sSourceModule); mp.put("sourceModuleId", new Integer( MetaDataClientProvider.getInstance().getEntity(sSourceModule).getId().intValue())); mp.put("targetModule", sTargetModule); mp.put("targetModuleId", new Integer( MetaDataClientProvider.getInstance().getEntity(sTargetModule).getId().intValue())); MasterDataVO vo = new MasterDataVO(NuclosEntity.GENERATION.getEntityName(), null, null, null, null, null, null, mp); gcc.runWithNewCollectableWithSomeFields(vo); } } catch (NuclosBusinessException e1) { LOG.warn("actionPerformed: " + e1); } catch (CommonPermissionException e1) { LOG.warn("actionPerformed: " + e1); } catch (CommonFatalException e1) { LOG.warn("actionPerformed: " + e1); } catch (CommonBusinessException e1) { LOG.warn("actionPerformed: " + e1); } } }); JMenuItem i5 = new JMenuItem( getSpringLocaleDelegate().getMessage("nuclos.entityrelation.editor.12", "Verbindung l\u00f6sen")); i5.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { mxGraphModel model = (mxGraphModel) graphComponent.getGraph().getModel(); model.remove(cell); } }); pop.add(i1); pop.add(i2); //pop.add(i3); pop.add(i4); if (delete) { pop.addSeparator(); pop.add(i5); } return pop; }
From source file:plugins.tprovoost.Microscopy.MicroManagerForIcy.MMMainFrame.java
/** * Singleton pattern : private constructor Use instead. *//* www.j a va2s . c om*/ private MMMainFrame() { super(NODE_NAME, false, true, false, true); instancing = true; // -------------- // INITIALIZATION // -------------- _sysConfigFile = ""; _isConfigLoaded = false; _root = PluginPreferences.getPreferences().node(NODE_NAME); final MainFrame mainFrame = Icy.getMainInterface().getMainFrame(); // -------------- // PROGRESS FRAME // -------------- ThreadUtil.invokeLater(new Runnable() { @Override public void run() { _progressFrame = new IcyFrame("", false, false, false, false); _progressBar = new JProgressBar(); _progressBar.setString("Please wait while loading..."); _progressBar.setStringPainted(true); _progressBar.setIndeterminate(true); _progressBar.setMinimum(0); _progressBar.setMaximum(1000); _progressBar.setBounds(50, 50, 100, 30); _progressFrame.setSize(300, 100); _progressFrame.setResizable(false); _progressFrame.add(_progressBar); _progressFrame.addToMainDesktopPane(); loadConfig(true); if (_sysConfigFile == "") { instancing = false; return; } ThreadUtil.bgRun(new Runnable() { @Override public void run() { while (!_isConfigLoaded) { if (!instancing) return; try { Thread.sleep(10); } catch (InterruptedException e) { } } ThreadUtil.invokeLater(new Runnable() { @Override public void run() { // -------------------- // START INITIALIZATION // -------------------- if (_progressBar != null) getContentPane().remove(_progressBar); if (mCore == null) { close(); return; } // ReportingUtils.setCore(mCore); _afMgr = new AutofocusManager(MMMainFrame.this); acqMgr = new AcquisitionManager(); PositionList posList = new PositionList(); _camera_label = MMCoreJ.getG_Keyword_CameraName(); if (_camera_label == null) _camera_label = ""; try { setPositionList(posList); } catch (MMScriptException e1) { e1.printStackTrace(); } posListDlg_ = new PositionListDlg(mCore, MMMainFrame.this, _posList, null, dlg); posListDlg_.setModalityType(ModalityType.APPLICATION_MODAL); callback = new EventCallBackManager(); mCore.registerCallback(callback); engine_ = new AcquisitionWrapperEngineIcy(); engine_.setParentGUI(MMMainFrame.this); engine_.setCore(mCore, getAutofocusManager()); engine_.setPositionList(getPositionList()); setSystemMenuCallback(new MenuCallback() { @Override public JMenu getMenu() { JMenu toReturn = MMMainFrame.this.getDefaultSystemMenu(); JMenuItem hconfig = new JMenuItem("Configuration Wizard"); hconfig.setIcon(new IcyIcon("cog", MENU_ICON_SIZE)); hconfig.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { if (!_pluginListEmpty && !ConfirmDialog.confirm("Are you sure ?", "<html>Loading the Configuration Wizard will unload all the devices and pause all running acquisitions.</br> Are you sure you want to continue ?</html>")) return; notifyConfigAboutToChange(null); try { mCore.unloadAllDevices(); } catch (Exception e1) { e1.printStackTrace(); } String previous_config = _sysConfigFile; ConfiguratorDlg2 configurator = new ConfiguratorDlg2(mCore, _sysConfigFile); configurator.setVisible(true); String res = configurator.getFileName(); if (_sysConfigFile == "" || _sysConfigFile == res || res == "") { _sysConfigFile = previous_config; loadConfig(); } refreshGUI(); notifyConfigChanged(null); } }); JMenuItem menuPxSizeConfigItem = new JMenuItem("Pixel Size Config"); menuPxSizeConfigItem.setIcon(new IcyIcon("link", MENU_ICON_SIZE)); menuPxSizeConfigItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, InputEvent.SHIFT_DOWN_MASK | SHORTCUTKEY_MASK)); menuPxSizeConfigItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { CalibrationListDlg dlg = new CalibrationListDlg(mCore); dlg.setDefaultCloseOperation(2); dlg.setParentGUI(MMMainFrame.this); dlg.setVisible(true); dlg.addWindowListener(new WindowAdapter() { @Override public void windowClosed(WindowEvent e) { super.windowClosed(e); notifyConfigChanged(null); } }); notifyConfigAboutToChange(null); } }); JMenuItem loadConfigItem = new JMenuItem("Load Configuration"); loadConfigItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.SHIFT_DOWN_MASK | SHORTCUTKEY_MASK)); loadConfigItem.setIcon(new IcyIcon("folder_open", MENU_ICON_SIZE)); loadConfigItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { loadConfig(); initializeGUI(); refreshGUI(); } }); JMenuItem saveConfigItem = new JMenuItem("Save Configuration"); saveConfigItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.SHIFT_DOWN_MASK | SHORTCUTKEY_MASK)); saveConfigItem.setIcon(new IcyIcon("save", MENU_ICON_SIZE)); saveConfigItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { saveConfig(); } }); JMenuItem advancedConfigItem = new JMenuItem("Advanced Configuration"); advancedConfigItem.setIcon(new IcyIcon("wrench_plus", MENU_ICON_SIZE)); advancedConfigItem.addActionListener(new ActionListener() { /** */ @Override public void actionPerformed(ActionEvent e) { new ToolTipFrame( "<html><h3>About Advanced Config</h3><p>Advanced Configuration is a tool " + "in which you fill some data <br/>about your configuration that some " + "plugins may need to access to.<br/> Exemple: the real values of the magnification" + "of your objectives.</p></html>", "MM4IcyAdvancedConfig"); if (advancedDlg == null) advancedDlg = new AdvancedConfigurationDialog(); advancedDlg.setVisible(!advancedDlg.isVisible()); advancedDlg.setLocationRelativeTo(mainFrame); } }); JMenuItem loadPresetConfigItem = new JMenuItem( "Load Configuration Presets"); loadPresetConfigItem.setIcon(new IcyIcon("doc_import", MENU_ICON_SIZE)); loadPresetConfigItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { notifyConfigAboutToChange(null); loadPresets(); notifyConfigChanged(null); } }); JMenuItem savePresetConfigItem = new JMenuItem( "Save Configuration Presets"); savePresetConfigItem.setIcon(new IcyIcon("doc_export", MENU_ICON_SIZE)); savePresetConfigItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { savePresets(); } }); JMenuItem aboutItem = new JMenuItem("About"); aboutItem.setIcon(new IcyIcon("info", MENU_ICON_SIZE)); aboutItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { final JDialog dialog = new JDialog(mainFrame, "About"); JPanel panel_container = new JPanel(); panel_container .setBorder(BorderFactory.createEmptyBorder(10, 20, 10, 20)); JPanel center = new JPanel(new BorderLayout()); final JLabel value = new JLabel("<html><body>" + "<h2>About</h2><p>Micro-Manager for Icy is being developed by Thomas Provoost." + "<br/>Copyright 2011, Institut Pasteur</p><br/>" + "<p>This plugin is based on Micro-Manager v1.4.6. which is developed under the following license:<br/>" + "<i>This software is distributed free of charge in the hope that it will be<br/>" + "useful, but WITHOUT ANY WARRANTY; without even the implied<br/>" + "warranty of merchantability or fitness for a particular purpose. In no<br/>" + "event shall the copyright owner or contributors be liable for any direct,<br/>" + "indirect, incidental spacial, examplary, or consequential damages.<br/>" + "Copyright University of California San Francisco, 2007, 2008, 2009,<br/>" + "2010. All rights reserved.</i>" + "</p>" + "</body></html>"); JLabel link = new JLabel( "<html><a href=\"\">For more information, please follow this link.</a></html>"); link.addMouseListener(new MouseAdapter() { @Override public void mousePressed(MouseEvent mouseevent) { NetworkUtil.openBrowser( "http://valelab.ucsf.edu/~MM/MMwiki/index.php/Micro-Manager"); } }); value.setSize(new Dimension(50, 18)); value.setAlignmentX(SwingConstants.HORIZONTAL); value.setBorder(BorderFactory.createEmptyBorder(0, 0, 20, 0)); center.add(value, BorderLayout.CENTER); center.add(link, BorderLayout.SOUTH); JPanel panel_south = new JPanel(); panel_south.setLayout(new BoxLayout(panel_south, BoxLayout.X_AXIS)); JButton btn = new JButton("OK"); btn.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionevent) { dialog.dispose(); } }); panel_south.add(Box.createHorizontalGlue()); panel_south.add(btn); panel_south.add(Box.createHorizontalGlue()); dialog.setLayout(new BorderLayout()); panel_container.setLayout(new BorderLayout()); panel_container.add(center, BorderLayout.CENTER); panel_container.add(panel_south, BorderLayout.SOUTH); dialog.add(panel_container, BorderLayout.CENTER); dialog.setResizable(false); dialog.setVisible(true); dialog.pack(); dialog.setLocation( (int) mainFrame.getSize().getWidth() / 2 - dialog.getWidth() / 2, (int) mainFrame.getSize().getHeight() / 2 - dialog.getHeight() / 2); dialog.setLocationRelativeTo(mainFrame); } }); JMenuItem propertyBrowserItem = new JMenuItem("Property Browser"); propertyBrowserItem.setAccelerator( KeyStroke.getKeyStroke(KeyEvent.VK_COMMA, SHORTCUTKEY_MASK)); propertyBrowserItem.setIcon(new IcyIcon("db", MENU_ICON_SIZE)); propertyBrowserItem.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { editor.setVisible(!editor.isVisible()); } }); int idx = 0; toReturn.insert(hconfig, idx++); toReturn.insert(loadConfigItem, idx++); toReturn.insert(saveConfigItem, idx++); toReturn.insert(advancedConfigItem, idx++); toReturn.insertSeparator(idx++); toReturn.insert(loadPresetConfigItem, idx++); toReturn.insert(savePresetConfigItem, idx++); toReturn.insertSeparator(idx++); toReturn.insert(propertyBrowserItem, idx++); toReturn.insert(menuPxSizeConfigItem, idx++); toReturn.insertSeparator(idx++); toReturn.insert(aboutItem, idx++); return toReturn; } }); saveConfigButton_ = new JButton("Save Button"); // SETUP _groupPad = new ConfigGroupPad(); _groupPad.setParentGUI(MMMainFrame.this); _groupPad.setFont(new Font("", 0, 10)); _groupPad.setCore(mCore); _groupPad.setParentGUI(MMMainFrame.this); _groupButtonsPanel = new ConfigButtonsPanel(); _groupButtonsPanel.setCore(mCore); _groupButtonsPanel.setGUI(MMMainFrame.this); _groupButtonsPanel.setConfigPad(_groupPad); // LEFT PART OF INTERFACE _panelConfig = new JPanel(); _panelConfig.setLayout(new BoxLayout(_panelConfig, BoxLayout.Y_AXIS)); _panelConfig.add(_groupPad, BorderLayout.CENTER); _panelConfig.add(_groupButtonsPanel, BorderLayout.SOUTH); _panelConfig.setPreferredSize(new Dimension(300, 300)); // MIDDLE PART OF INTERFACE _panel_cameraSettings = new JPanel(); _panel_cameraSettings.setLayout(new GridLayout(5, 2)); _panel_cameraSettings.setMinimumSize(new Dimension(100, 200)); _txtExposure = new JTextField(); try { mCore.setExposure(90.0D); _txtExposure.setText(String.valueOf(mCore.getExposure())); } catch (Exception e2) { _txtExposure.setText("90"); } _txtExposure.setMaximumSize(new Dimension(Integer.MAX_VALUE, 20)); _txtExposure.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent keyevent) { if (keyevent.getKeyCode() == KeyEvent.VK_ENTER) setExposure(); } }); _panel_cameraSettings.add(new JLabel("Exposure [ms]: ")); _panel_cameraSettings.add(_txtExposure); _combo_binning = new JComboBox(); _combo_binning.setMaximumRowCount(4); _combo_binning.setMaximumSize(new Dimension(Integer.MAX_VALUE, 25)); _combo_binning.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { changeBinning(); } }); _panel_cameraSettings.add(new JLabel("Binning: ")); _panel_cameraSettings.add(_combo_binning); _combo_shutters = new JComboBox(); _combo_shutters.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { try { if (_combo_shutters.getSelectedItem() != null) { mCore.setShutterDevice((String) _combo_shutters.getSelectedItem()); _prefs.put(PREF_SHUTTER, (String) _combo_shutters .getItemAt(_combo_shutters.getSelectedIndex())); } } catch (Exception e) { e.printStackTrace(); } } }); _combo_shutters.setMaximumSize(new Dimension(Integer.MAX_VALUE, 25)); _panel_cameraSettings.add(new JLabel("Shutter : ")); _panel_cameraSettings.add(_combo_shutters); ActionListener action_listener = new ActionListener() { @Override public void actionPerformed(ActionEvent e) { updateHistogram(); } }; _cbAbsoluteHisto = new JCheckBox(); _cbAbsoluteHisto.addActionListener(action_listener); _cbAbsoluteHisto.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionevent) { _comboBitDepth.setEnabled(_cbAbsoluteHisto.isSelected()); _prefs.putBoolean(PREF_ABS_HIST, _cbAbsoluteHisto.isSelected()); } }); _panel_cameraSettings.add(new JLabel("Display absolute histogram ?")); _panel_cameraSettings.add(_cbAbsoluteHisto); _comboBitDepth = new JComboBox(new String[] { "8-bit", "9-bit", "10-bit", "11-bit", "12-bit", "13-bit", "14-bit", "15-bit", "16-bit" }); _comboBitDepth.addActionListener(action_listener); _comboBitDepth.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent actionevent) { _prefs.putInt(PREF_BITDEPTH, _comboBitDepth.getSelectedIndex()); } }); _comboBitDepth.setMaximumSize(new Dimension(Integer.MAX_VALUE, 20)); _comboBitDepth.setEnabled(false); _panel_cameraSettings.add(new JLabel("Select your bit depth for abs. hitogram: ")); _panel_cameraSettings.add(_comboBitDepth); // Acquisition _panelAcquisitions = new JPanel(); _panelAcquisitions.setLayout(new BoxLayout(_panelAcquisitions, BoxLayout.Y_AXIS)); // Color settings _panelColorChooser = new JPanel(); _panelColorChooser.setLayout(new BoxLayout(_panelColorChooser, BoxLayout.Y_AXIS)); painterPreferences = MicroscopePainterPreferences.getInstance(); painterPreferences.setPreferences(_prefs.node("paintersPreferences")); painterPreferences.loadColors(); HashMap<String, Color> allColors = painterPreferences.getColors(); String[] allKeys = (String[]) allColors.keySet().toArray(new String[0]); String[] columnNames = { "Painter", "Color", "Transparency" }; Object[][] data = new Object[allKeys.length][3]; for (int i = 0; i < allKeys.length; ++i) { final int actualRow = i; String actualKey = allKeys[i].toString(); data[i][0] = actualKey; data[i][1] = allColors.get(actualKey); final JSlider slider = new JSlider(0, 255, allColors.get(actualKey).getAlpha()); slider.addChangeListener(new ChangeListener() { @Override public void stateChanged(ChangeEvent changeevent) { painterTable.setValueAt(slider, actualRow, 2); } }); data[i][2] = slider; } final AbstractTableModel tableModel = new JTableEvolvedModel(columnNames, data); painterTable = new JTable(tableModel); painterTable.getModel().addTableModelListener(new TableModelListener() { @Override public void tableChanged(TableModelEvent tablemodelevent) { if (tablemodelevent.getType() == TableModelEvent.UPDATE) { int row = tablemodelevent.getFirstRow(); int col = tablemodelevent.getColumn(); String columnName = tableModel.getColumnName(col); String painterName = (String) tableModel.getValueAt(row, 0); if (columnName.contains("Color")) { // New color value int alpha = painterPreferences.getColor(painterName).getAlpha(); Color coloNew = (Color) tableModel.getValueAt(row, 1); painterPreferences.setColor(painterName, new Color(coloNew.getRed(), coloNew.getGreen(), coloNew.getBlue(), alpha)); } else if (columnName.contains("Transparency")) { // New alpha value Color c = painterPreferences.getColor(painterName); int alphaValue = ((JSlider) tableModel.getValueAt(row, 2)) .getValue(); painterPreferences.setColor(painterName, new Color(c.getRed(), c.getGreen(), c.getBlue(), alphaValue)); } /* * for (int i = 0; i < * tableModel.getRowCount(); ++i) { try { * String painterName = (String) * tableModel.getValueAt(i, 0); Color c = * (Color) tableModel.getValueAt(i, 1); int * alphaValue; if (ASpinnerChanged && * tablemodelevent.getFirstRow() == i) { * alphaValue = ((JSlider) * tableModel.getValueAt(i, 2)).getValue(); * } else { alphaValue = * painterPreferences.getColor * (painterPreferences * .getPainterName(i)).getAlpha(); } * painterPreferences.setColor(painterName, * new Color(c.getRed(), c.getGreen(), * c.getBlue(), alphaValue)); } catch * (Exception e) { System.out.println( * "error with painter table update"); } } */ } } }); painterTable.setPreferredScrollableViewportSize(new Dimension(500, 70)); painterTable.setFillsViewportHeight(true); // Create the scroll pane and add the table to it. JScrollPane scrollPane = new JScrollPane(painterTable); // Set up renderer and editor for the Favorite Color // column. painterTable.setDefaultRenderer(Color.class, new ColorRenderer(true)); painterTable.setDefaultEditor(Color.class, new ColorEditor()); painterTable.setDefaultRenderer(JSlider.class, new SliderRenderer(0, 255)); painterTable.setDefaultEditor(JSlider.class, new SliderEditor()); _panelColorChooser.add(scrollPane); _panelColorChooser.add(Box.createVerticalGlue()); _mainPanel = new JPanel(); _mainPanel.setLayout(new BorderLayout()); // EDITOR // will refresh the data and verify if any change // occurs. // editor = new PropertyEditor(MMMainFrame.this); // editor.setCore(mCore); // editor.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); // editor.addToMainDesktopPane(); // editor.refresh(); // editor.start(); editor = new PropertyEditor(); editor.setGui(MMMainFrame.this); editor.setCore(mCore); editor.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE); // editor.addToMainDesktopPane(); // editor.refresh(); // editor.start(); add(_mainPanel); initializeGUI(); loadPreferences(); refreshGUI(); setResizable(true); addToMainDesktopPane(); instanced = true; instancing = false; _singleton = MMMainFrame.this; setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addFrameListener(new IcyFrameAdapter() { @Override public void icyFrameClosing(IcyFrameEvent e) { customClose(); } }); acceptListener = new AcceptListener() { @Override public boolean accept(Object source) { close(); return _pluginListEmpty; } }; adapter = new MainAdapter() { @Override public void sequenceOpened(MainEvent event) { updateHistogram(); } }; Icy.getMainInterface().addCanExitListener(acceptListener); Icy.getMainInterface().addListener(adapter); } }); } }); } }); }
From source file:ro.nextreports.designer.action.chart.PreviewChartAction.java
public void actionPerformed(ActionEvent event) { executorThread = new Thread(new Runnable() { public void run() { if (ChartUtil.chartUndefined(chart)) { return; }/* w w w. j a v a 2 s . c om*/ ParametersBean pBean = NextReportsUtil.selectParameters(chart.getReport(), null); if (pBean == null) { return; } UIActivator activator = new UIActivator(Globals.getMainFrame(), I18NSupport.getString("preview.chart.execute")); activator.start(new PreviewStopAction()); ChartWebServer webServer = ChartWebServer.getInstance(); String webRoot = webServer.getWebRoot(); ChartRunner runner = new ChartRunner(); runner.setFormat(chartRunnerType); runner.setGraphicType(chartGraphicType); runner.setChart(chart); runner.setQueryTimeout(Globals.getQueryTimeout()); runner.setParameterValues(pBean.getParamValues()); I18nLanguage language = I18nUtil.getDefaultLanguage(chart); if (language != null) { runner.setLanguage(language.getName()); } if (ChartRunner.IMAGE_FORMAT.equals(runner.getFormat())) { runner.setImagePath(Globals.USER_DATA_DIR + "/reports"); } Connection con = null; try { DataSource runDS = Globals.getChartLayoutPanel().getRunDataSource(); boolean csv = runDS.getDriver().equals(CSVDialect.DRIVER_CLASS); con = Globals.createTempConnection(runDS); runner.setConnection(con, csv); if (ChartRunner.IMAGE_FORMAT.equals(runner.getFormat())) { runner.run(); JDialog dialog = new JDialog(Globals.getMainFrame(), ""); dialog.setBackground(Color.WHITE); dialog.setLayout(new BorderLayout()); ShowImagePanel panel = new ShowImagePanel(runner.getChartImageAbsolutePath()); dialog.add(panel, BorderLayout.CENTER); dialog.pack(); dialog.setResizable(false); Show.centrateComponent(Globals.getMainFrame(), dialog); dialog.setVisible(true); } else { String jsonFile = "data.json"; if (ChartRunner.HTML5_TYPE == runner.getGraphicType()) { jsonFile = "data-html5.json"; } OutputStream outputStream = new FileOutputStream(webRoot + File.separatorChar + jsonFile); boolean result = runner.run(outputStream); outputStream.close(); if (result) { if (!webServer.isStarted()) { webServer.start(); } if (ChartRunner.HTML5_TYPE == runner.getGraphicType()) { FileUtil.openUrl( "http://localhost:" + Globals.getChartWebServerPort() + "/chart-html5.html", PreviewChartAction.class); } else { FileUtil.openUrl("http://localhost:" + Globals.getChartWebServerPort() + "/chart.html?ofc=data.json", PreviewChartAction.class); } } } } catch (NoDataFoundException e) { Show.info(I18NSupport.getString("run.nodata")); } catch (InterruptedException e) { Show.dispose(); // close a possible previous dialog message Show.info(I18NSupport.getString("preview.cancel")); } catch (Exception e) { e.printStackTrace(); Show.error(e); } finally { if (con != null) { try { con.close(); } catch (SQLException e) { e.printStackTrace(); LOG.error(e.getMessage(), e); } } stop = false; if (activator != null) { activator.stop(); activator = null; } // restore old parameters if chart was runned from tree if (oldParameters != null) { ParameterManager.getInstance().setParameters(oldParameters); } } } }, "NEXT : " + getClass().getSimpleName()); executorThread.setPriority(EngineProperties.getRunPriority()); executorThread.start(); }