/* * Copyright (c) 2005–2012 Goethe Center for Scientific Computing - Simulation and Modelling (G-CSC Frankfurt) * Copyright (c) 2012-2015 Goethe Center for Scientific Computing - Computational Neuroscience (G-CSC Frankfurt) * * This file is part of NeuGen. * * NeuGen is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License version 3 * as published by the Free Software Foundation. * * see: http://opensource.org/licenses/LGPL-3.0 * file://path/to/NeuGen/LICENSE * * NeuGen is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * This version of NeuGen includes copyright notice and attribution requirements. * According to the LGPL this information must be displayed even if you modify * the source code of NeuGen. The copyright statement/attribution may not be removed. * * Attribution Requirements: * * If you create derived work you must do the following regarding copyright * notice and author attribution. * * Add an additional notice, stating that you modified NeuGen. In addition * you must cite the publications listed below. A suitable notice might read * "NeuGen source code modified by YourName 2012". * * Note, that these requirements are in full accordance with the LGPL v3 * (see 7. Additional Terms, b). * * Publications: * * S. Wolf, S. Grein, G. Queisser. NeuGen 2.0 - * Employing NeuGen 2.0 to automatically generate realistic * morphologies of hippocapal neurons and neural networks in 3D. * Neuroinformatics, 2013, 11(2), pp. 137-148, doi: 10.1007/s12021-012-9170-1 * * * J. P. Eberhard, A. Wanner, G. Wittum. NeuGen - * A tool for the generation of realistic morphology * of cortical neurons and neural networks in 3D. * Neurocomputing, 70(1-3), pp. 327-343, doi: 10.1016/j.neucom.2006.01.028 * */ package org.neugen.gui; import com.sun.j3d.loaders.Scene; import org.neugen.gui.DensityVisualizationTask.Density; import org.neugen.utils.Utils; import java.awt.event.MouseEvent; import java.beans.PropertyChangeEvent; import java.io.FileNotFoundException; import javax.swing.JScrollPane; import javax.swing.JSplitPane; import org.neugen.parsers.HocWriterTask; import org.neugen.parsers.SimpleHocWriterTask; import org.neugen.parsers.NeuroMLReaderTask; import org.jdesktop.application.Action; import org.jdesktop.application.ResourceMap; import org.jdesktop.application.SingleFrameApplication; import org.jdesktop.application.FrameView; import org.jdesktop.application.TaskMonitor; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseAdapter; import java.beans.PropertyChangeListener; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.EventObject; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Properties; import javax.media.j3d.BranchGroup; import javax.swing.Timer; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.filechooser.FileFilter; import javax.swing.tree.DefaultTreeCellRenderer; import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeSelectionModel; import org.apache.log4j.Logger; import org.jdesktop.application.Application.ExitListener; import org.jdesktop.application.Task; import org.neugen.slider.SliderGeneratorTask; import org.neugen.datastructures.Net; import org.neugen.datastructures.Region; import org.neugen.parsers.DefaultInheritance; import org.neugen.parsers.NeuGenConfigStreamer; import org.neugen.datastructures.xml.XMLNode; import org.neugen.datastructures.xml.XMLObject; import org.neugen.help.NeuGenHelp; import org.neugen.parsers.CSVWriterTask; import org.neugen.parsers.NeuGenReaderTask; import org.neugen.parsers.NeuGenWriterTask; import org.neugen.parsers.NeuroMLWriterTask; import org.neugen.parsers.SWCReaderTask; import org.neugen.parsers.SimpleHocReaderTask; import org.neugen.parsers.OBJReader; import org.neugen.visual.NeuGenDensityVisualization; import org.neugen.gui.VisualizationTask.Visualization; import org.neugen.parsers.NeuGenVisualWriterTask; //import org.neugen.visual.OBJWriter; /** * The main frame of NeuGen. * * @author Jens Eberhard * @author Alexander Wanner * @author Sergei Wolf */ public final class NeuGenView extends FrameView implements TreeSaver { private static final Logger logger = Logger.getLogger(NeuGenView.class.getName()); private static NeuGenView instance; private final Timer messageTimer; private final Timer busyIconTimer; private final Icon idleIcon; private final Icon[] busyIcons = new Icon[15]; private int busyIconIndex = 0; private JDialog aboutBox; private Net net; private boolean netExist; private boolean projectExist; private boolean newNet; private XMLTreeView projectTree; private Map<String, XMLObject> paramTrees; private List<Properties> commentPropList; private NeuGenExitListener neuGenExitListener; private String currentPropKey; private String command = ""; private String projectDirPath; private Task visualizeTask; private Task visualizeDensityTask; private Task calcTask; private Task sliderTask; private Trigger trigger; private static String paramPath; private static String internaPath; private static String outputOptionsPath; private String currentProjectType; private boolean importedData; private DensityVisualizationTask.Density density; private VisualizationTask.Visualization visual; private File imageStackFile; private boolean imageSequence; private Scene scene; public Visualization getVisual() { return visual; } public Density getDensity() { return density; } public void setScene(Scene scene) { this.scene = scene; } public NeuGenView(SingleFrameApplication app) { super(app); initComponents(); if (visualDensSplitPane.getRightComponent() != null) { visualDensSplitPane.remove(visualDensSplitPane.getRightComponent()); } //importMenu.remove(readNeuGenMenuItem); importMenu.remove(readNeuTriaMenuItem); importMenu.remove(readNeuronMenuItem); //exportMenu.remove(writeNeuGenMenuItem); exportMenu.remove(writeObjMenuItem); //helpMenu.remove(helpContentsMenuItem); disableButtons(); enableButtons(); commentEditorPane.setOpaque(true); // status bar initialization - message timeout, idle icon and busy animation, etc ResourceMap resourceMap = getResourceMap(); int messageTimeout = resourceMap.getInteger("StatusBar.messageTimeout"); messageTimer = new Timer(messageTimeout, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { statusMessageLabel.setText(""); } }); messageTimer.setRepeats(false); int busyAnimationRate = resourceMap.getInteger("StatusBar.busyAnimationRate"); for (int i = 0; i < busyIcons.length; i++) { busyIcons[i] = resourceMap.getIcon("StatusBar.busyIcons[" + i + "]"); } busyIconTimer = new Timer(busyAnimationRate, new ActionListener() { @Override public void actionPerformed(ActionEvent e) { busyIconIndex = (busyIconIndex + 1) % busyIcons.length; statusAnimationLabel.setIcon(busyIcons[busyIconIndex]); } }); idleIcon = resourceMap.getIcon("StatusBar.idleIcon"); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); progressBar.setStringPainted(true); // connecting action tasks to status bar via TaskMonitor TaskMonitor taskMonitor = new TaskMonitor(getApplication().getContext()); taskMonitor.addPropertyChangeListener(new java.beans.PropertyChangeListener() { @Override public void propertyChange(java.beans.PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); if ("started".equals(propertyName)) { if (!busyIconTimer.isRunning()) { statusAnimationLabel.setIcon(busyIcons[0]); busyIconIndex = 0; busyIconTimer.start(); } progressBar.setVisible(true); progressBar.setIndeterminate(true); } else if ("done".equals(propertyName)) { busyIconTimer.stop(); statusAnimationLabel.setIcon(idleIcon); progressBar.setVisible(false); progressBar.setValue(0); } else if ("message".equals(propertyName)) { String text = (String) (evt.getNewValue()); statusMessageLabel.setText((text == null) ? "" : text); messageTimer.restart(); } else if ("progress".equals(propertyName)) { int value = (Integer) (evt.getNewValue()); progressBar.setVisible(true); progressBar.setIndeterminate(false); progressBar.setValue(value); } } }); outPrintln(NeuGenConstants.VERSION); outPrintln(NeuGenConstants.COPYRIGHT); outPrintln(Utils.getMemoryStatus()); } /** * This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is * always regenerated by the Form Editor. */ @SuppressWarnings("unchecked") // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents private void initComponents() { menuBar = new javax.swing.JMenuBar(); javax.swing.JMenu fileMenu = new javax.swing.JMenu(); createProjectMenuItem = new javax.swing.JMenuItem(); fileSeparator = new javax.swing.JSeparator(); openProjectMenuItem = new javax.swing.JMenuItem(); closeProjectMenuItem = new javax.swing.JMenuItem(); fileSeparator2 = new javax.swing.JSeparator(); importMenu = new javax.swing.JMenu(); readNeuronMenuItem = new javax.swing.JMenuItem(); readNeuroMLMenuItem = new javax.swing.JMenuItem(); readNeuGenMenuItem = new javax.swing.JMenuItem(); readNeuTriaMenuItem = new javax.swing.JMenuItem(); readNeurolucidaMenuItem = new javax.swing.JMenuItem(); jSeparator2 = new javax.swing.JPopupMenu.Separator(); readWavefrontMenuItem = new javax.swing.JMenuItem(); readNeuRaMenuItem = new javax.swing.JMenuItem(); jSeparator1 = new javax.swing.JPopupMenu.Separator(); readImageStackMenuItem = new javax.swing.JMenuItem(); readImageSequenceMenuItem = new javax.swing.JMenuItem(); exportMenu = new javax.swing.JMenu(); writeNeuronMenuItem = new javax.swing.JMenuItem(); writeNeuroMLMenuItem = new javax.swing.JMenuItem(); writeNeuGenMenuItem = new javax.swing.JMenuItem(); writeNeuTriaMenuItem = new javax.swing.JMenuItem(); writeNeuronInfoMenuItem = new javax.swing.JMenuItem(); writeObjMenuItem = new javax.swing.JMenuItem(); fileSeparator3 = new javax.swing.JSeparator(); movieMenu = new javax.swing.JMenu(); netMovieItem = new javax.swing.JMenuItem(); densMovieMenuItem = new javax.swing.JMenuItem(); fileSeparator5 = new javax.swing.JPopupMenu.Separator(); saveMenuItem = new javax.swing.JMenuItem(); fileSeparator4 = new javax.swing.JSeparator(); javax.swing.JMenuItem exitMenuItem = new javax.swing.JMenuItem(); editMenu = new javax.swing.JMenu(); copyMenuItem = new javax.swing.JMenuItem(); clearMenuItem = new javax.swing.JMenuItem(); selectAllMenuItem = new javax.swing.JMenuItem(); helpMenu = new javax.swing.JMenu(); helpContentsMenuItem = new javax.swing.JMenuItem(); javax.swing.JMenuItem aboutMenuItem = new javax.swing.JMenuItem(); statusPanel = new javax.swing.JPanel(); javax.swing.JSeparator statusPanelSeparator = new javax.swing.JSeparator(); statusMessageLabel = new javax.swing.JLabel(); statusAnimationLabel = new javax.swing.JLabel(); progressBar = new javax.swing.JProgressBar(); toolBar = new javax.swing.JToolBar(); projectToolBar = new javax.swing.JToolBar(); createProjectButton = new javax.swing.JButton(); openProjectButton = new javax.swing.JButton(); saveConfigButton = new javax.swing.JButton(); runToolBar = new javax.swing.JToolBar(); runButton = new javax.swing.JButton(); dataToolBar = new javax.swing.JToolBar(); exportButton = new javax.swing.JButton(); importButton = new javax.swing.JButton(); visualToolBar = new javax.swing.JToolBar(); visualizeButton = new javax.swing.JButton(); visualizeDensity = new javax.swing.JButton(); imageToolBar = new javax.swing.JToolBar(); sliderButton = new javax.swing.JButton(); helpToolBar = new javax.swing.JToolBar(); helpButton = new javax.swing.JButton(); importFileChooser = new javax.swing.JFileChooser("."); mainSplitPane = new javax.swing.JSplitPane(); editorSplitPane = new javax.swing.JSplitPane(); configDataScrollPane = new javax.swing.JScrollPane(); htmlScrollPane = new javax.swing.JScrollPane(); commentEditorPane = new javax.swing.JEditorPane(); visualOutputSplitPane = new javax.swing.JSplitPane(); outputScrollPane = new javax.swing.JScrollPane(); taskOutput = new javax.swing.JTextArea(); visualDensSplitPane = new javax.swing.JSplitPane(); visualScrollPane = new javax.swing.JScrollPane(); densScrollPane = new javax.swing.JScrollPane(); outputPopupMenu = new javax.swing.JPopupMenu(); copyMenuItemPopup = new javax.swing.JMenuItem(); clearMenuItemPopup = new javax.swing.JMenuItem(); popupSeparator = new javax.swing.JSeparator(); selectAllMenuItemPopup = new javax.swing.JMenuItem(); popupSeparator2 = new javax.swing.JSeparator(); saveAsMenuItemPopup = new javax.swing.JMenuItem(); commentEditorPopupMenu = new javax.swing.JPopupMenu(); editCommentMenuItem = new javax.swing.JMenuItem(); commentEditorDialog = new javax.swing.JDialog(); comDialogScrollPane = new javax.swing.JScrollPane(); comDialogEditorPane = new javax.swing.JEditorPane(); saveDialogButton = new javax.swing.JButton(); cancelDialogButton = new javax.swing.JButton(); openProjectFileChooser = new javax.swing.JFileChooser("."); menuBar.setName("menuBar"); // NOI18N org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(org.neugen.gui.NeuGenApp.class).getContext().getResourceMap(NeuGenView.class); fileMenu.setText(resourceMap.getString("fileMenu.text")); // NOI18N fileMenu.setName("fileMenu"); // NOI18N javax.swing.ActionMap actionMap = org.jdesktop.application.Application.getInstance(org.neugen.gui.NeuGenApp.class).getContext().getActionMap(NeuGenView.class, this); createProjectMenuItem.setAction(actionMap.get("createProject")); // NOI18N createProjectMenuItem.setIcon(resourceMap.getIcon("createProjectMenuItem.icon")); // NOI18N createProjectMenuItem.setText(resourceMap.getString("createProjectMenuItem.text")); // NOI18N createProjectMenuItem.setName("createProjectMenuItem"); // NOI18N fileMenu.add(createProjectMenuItem); fileSeparator.setName("fileSeparator"); // NOI18N fileMenu.add(fileSeparator); openProjectMenuItem.setAction(actionMap.get("openProject")); // NOI18N openProjectMenuItem.setIcon(resourceMap.getIcon("openProjectMenuItem.icon")); // NOI18N openProjectMenuItem.setText(resourceMap.getString("openProjectMenuItem.text")); // NOI18N openProjectMenuItem.setName("openProjectMenuItem"); // NOI18N fileMenu.add(openProjectMenuItem); closeProjectMenuItem.setAction(actionMap.get("closeProject")); // NOI18N closeProjectMenuItem.setIcon(resourceMap.getIcon("closeProjectMenuItem.icon")); // NOI18N closeProjectMenuItem.setText(resourceMap.getString("closeProjectMenuItem.text")); // NOI18N closeProjectMenuItem.setName("closeProjectMenuItem"); // NOI18N fileMenu.add(closeProjectMenuItem); fileSeparator2.setName("fileSeparator2"); // NOI18N fileMenu.add(fileSeparator2); importMenu.setIcon(resourceMap.getIcon("importMenu.icon")); // NOI18N importMenu.setText(resourceMap.getString("importMenu.text")); // NOI18N importMenu.setName("importMenu"); // NOI18N readNeuronMenuItem.setAction(actionMap.get("importData")); // NOI18N readNeuronMenuItem.setText(resourceMap.getString("readNeuronMenuItem.text")); // NOI18N readNeuronMenuItem.setName("readNeuronMenuItem"); // NOI18N readNeuronMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { readNeuronMenuItemActionPerformed(evt); } }); importMenu.add(readNeuronMenuItem); readNeuroMLMenuItem.setAction(actionMap.get("importData")); // NOI18N readNeuroMLMenuItem.setText(resourceMap.getString("readNeuroMLMenuItem.text")); // NOI18N readNeuroMLMenuItem.setName("readNeuroMLMenuItem"); // NOI18N readNeuroMLMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { readNeuroMLMenuItemActionPerformed(evt); } }); importMenu.add(readNeuroMLMenuItem); readNeuGenMenuItem.setAction(actionMap.get("importData")); // NOI18N readNeuGenMenuItem.setText(resourceMap.getString("readNeuGenMenuItem.text")); // NOI18N readNeuGenMenuItem.setName("readNeuGenMenuItem"); // NOI18N readNeuGenMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { readNeuGenMenuItemActionPerformed(evt); } }); importMenu.add(readNeuGenMenuItem); readNeuTriaMenuItem.setAction(actionMap.get("importData")); // NOI18N readNeuTriaMenuItem.setText(resourceMap.getString("readNeuTriaMenuItem.text")); // NOI18N readNeuTriaMenuItem.setName("readNeuTriaMenuItem"); // NOI18N readNeuTriaMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { readNeuTriaMenuItemActionPerformed(evt); } }); importMenu.add(readNeuTriaMenuItem); readNeurolucidaMenuItem.setAction(actionMap.get("importData")); // NOI18N readNeurolucidaMenuItem.setText(resourceMap.getString("readNeurolucidaMenuItem.text")); // NOI18N readNeurolucidaMenuItem.setName("readNeurolucidaMenuItem"); // NOI18N readNeurolucidaMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { readNeurolucidaMenuItemActionPerformed(evt); } }); importMenu.add(readNeurolucidaMenuItem); importMenu.add(jSeparator2); readWavefrontMenuItem.setAction(actionMap.get("importData")); // NOI18N readWavefrontMenuItem.setText(resourceMap.getString("readWavefrontMenuItem.text")); // NOI18N readWavefrontMenuItem.setName("readWavefrontMenuItem"); // NOI18N readWavefrontMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { readWavefrontMenuItemActionPerformed(evt); } }); importMenu.add(readWavefrontMenuItem); readNeuRaMenuItem.setAction(actionMap.get("importData")); // NOI18N readNeuRaMenuItem.setText(resourceMap.getString("readNeuRaMenuItem.text")); // NOI18N readNeuRaMenuItem.setName("readNeuRaMenuItem"); // NOI18N readNeuRaMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { readNeuRaMenuItemActionPerformed(evt); } }); importMenu.add(readNeuRaMenuItem); jSeparator1.setName("jSeparator1"); // NOI18N importMenu.add(jSeparator1); readImageStackMenuItem.setAction(actionMap.get("importData")); // NOI18N readImageStackMenuItem.setText(resourceMap.getString("readImageStackMenuItem.text")); // NOI18N readImageStackMenuItem.setName("readImageStackMenuItem"); // NOI18N readImageStackMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { readImageStackMenuItemActionPerformed(evt); } }); importMenu.add(readImageStackMenuItem); readImageSequenceMenuItem.setAction(actionMap.get("importData")); // NOI18N readImageSequenceMenuItem.setText(resourceMap.getString("readImageSequenceMenuItem.text")); // NOI18N readImageSequenceMenuItem.setName("readImageSequenceMenuItem"); // NOI18N readImageSequenceMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { readImageSequenceMenuItemActionPerformed(evt); } }); importMenu.add(readImageSequenceMenuItem); fileMenu.add(importMenu); exportMenu.setIcon(resourceMap.getIcon("exportMenu.icon")); // NOI18N exportMenu.setText(resourceMap.getString("exportMenu.text")); // NOI18N exportMenu.setName("exportMenu"); // NOI18N writeNeuronMenuItem.setAction(actionMap.get("exportData")); // NOI18N writeNeuronMenuItem.setText(resourceMap.getString("writeNeuronMenuItem.text")); // NOI18N writeNeuronMenuItem.setName("writeNeuronMenuItem"); // NOI18N writeNeuronMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { writeNeuronMenuItemActionPerformed(evt); } }); exportMenu.add(writeNeuronMenuItem); writeNeuroMLMenuItem.setAction(actionMap.get("exportData")); // NOI18N writeNeuroMLMenuItem.setText(resourceMap.getString("writeNeuroMLMenuItem.text")); // NOI18N writeNeuroMLMenuItem.setName("writeNeuroMLMenuItem"); // NOI18N writeNeuroMLMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { writeNeuroMLMenuItemActionPerformed(evt); } }); exportMenu.add(writeNeuroMLMenuItem); writeNeuGenMenuItem.setAction(actionMap.get("exportData")); // NOI18N writeNeuGenMenuItem.setText(resourceMap.getString("writeNeuGenMenuItem.text")); // NOI18N writeNeuGenMenuItem.setName("writeNeuGenMenuItem"); // NOI18N writeNeuGenMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { writeNeuGenMenuItemActionPerformed(evt); } }); exportMenu.add(writeNeuGenMenuItem); writeNeuTriaMenuItem.setAction(actionMap.get("exportData")); // NOI18N writeNeuTriaMenuItem.setText(resourceMap.getString("writeNeuTriaMenuItem.text")); // NOI18N writeNeuTriaMenuItem.setName("writeNeuTriaMenuItem"); // NOI18N writeNeuTriaMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { writeNeuTriaMenuItemActionPerformed(evt); } }); exportMenu.add(writeNeuTriaMenuItem); writeNeuronInfoMenuItem.setAction(actionMap.get("exportData")); // NOI18N writeNeuronInfoMenuItem.setText(resourceMap.getString("writeNeuronInfoMenuItem.text")); // NOI18N writeNeuronInfoMenuItem.setName("writeNeuronInfoMenuItem"); // NOI18N writeNeuronInfoMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { writeNeuronInfoMenuItemActionPerformed(evt); } }); exportMenu.add(writeNeuronInfoMenuItem); writeObjMenuItem.setAction(actionMap.get("exportData")); // NOI18N writeObjMenuItem.setText(resourceMap.getString("writeObjMenuItem.text")); // NOI18N writeObjMenuItem.setName("writeObjMenuItem"); // NOI18N writeObjMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { writeObjMenuItemActionPerformed(evt); } }); exportMenu.add(writeObjMenuItem); fileMenu.add(exportMenu); fileSeparator3.setName("fileSeparator3"); // NOI18N fileMenu.add(fileSeparator3); movieMenu.setIcon(resourceMap.getIcon("movieMenu.icon")); // NOI18N movieMenu.setText(resourceMap.getString("movieMenu.text")); // NOI18N movieMenu.setName("movieMenu"); // NOI18N netMovieItem.setText(resourceMap.getString("netMovieItem.text")); // NOI18N netMovieItem.setEnabled(false); netMovieItem.setName("netMovieItem"); // NOI18N netMovieItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { netMovieItemActionPerformed(evt); } }); movieMenu.add(netMovieItem); densMovieMenuItem.setText(resourceMap.getString("densMovieMenuItem.text")); // NOI18N densMovieMenuItem.setEnabled(false); densMovieMenuItem.setName("densMovieMenuItem"); // NOI18N densMovieMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { densMovieMenuItemActionPerformed(evt); } }); movieMenu.add(densMovieMenuItem); fileMenu.add(movieMenu); fileSeparator5.setName("fileSeparator5"); // NOI18N fileMenu.add(fileSeparator5); saveMenuItem.setAction(actionMap.get("saveData")); // NOI18N saveMenuItem.setIcon(resourceMap.getIcon("saveMenuItem.icon")); // NOI18N saveMenuItem.setText(resourceMap.getString("saveMenuItem.text")); // NOI18N saveMenuItem.setToolTipText(resourceMap.getString("saveMenuItem.toolTipText")); // NOI18N saveMenuItem.setName("saveMenuItem"); // NOI18N fileMenu.add(saveMenuItem); fileSeparator4.setName("fileSeparator4"); // NOI18N fileMenu.add(fileSeparator4); exitMenuItem.setAction(actionMap.get("quit")); // NOI18N exitMenuItem.setIcon(resourceMap.getIcon("exitMenuItem.icon")); // NOI18N exitMenuItem.setText(resourceMap.getString("exitMenuItem.text")); // NOI18N exitMenuItem.setToolTipText(resourceMap.getString("exitMenuItem.toolTipText")); // NOI18N exitMenuItem.setName("exitMenuItem"); // NOI18N fileMenu.add(exitMenuItem); menuBar.add(fileMenu); editMenu.setText(resourceMap.getString("editMenu.text")); // NOI18N editMenu.setName("editMenu"); // NOI18N copyMenuItem.setAction(actionMap.get("copyTaskOutput")); // NOI18N copyMenuItem.setIcon(resourceMap.getIcon("copyMenuItem.icon")); // NOI18N copyMenuItem.setText(resourceMap.getString("copyMenuItem.text")); // NOI18N copyMenuItem.setToolTipText(resourceMap.getString("copyMenuItem.toolTipText")); // NOI18N copyMenuItem.setName("copyMenuItem"); // NOI18N editMenu.add(copyMenuItem); clearMenuItem.setAction(actionMap.get("clearTaskOutput")); // NOI18N clearMenuItem.setText(resourceMap.getString("clearMenuItem.text")); // NOI18N clearMenuItem.setName("clearMenuItem"); // NOI18N editMenu.add(clearMenuItem); selectAllMenuItem.setAction(actionMap.get("selectAllFromTaskOutput")); // NOI18N selectAllMenuItem.setText(resourceMap.getString("selectAllMenuItem.text")); // NOI18N selectAllMenuItem.setName("selectAllMenuItem"); // NOI18N editMenu.add(selectAllMenuItem); menuBar.add(editMenu); helpMenu.setText(resourceMap.getString("helpMenu.text")); // NOI18N helpMenu.setName("helpMenu"); // NOI18N helpContentsMenuItem.setIcon(resourceMap.getIcon("helpContentsMenuItem.icon")); // NOI18N helpContentsMenuItem.setText(resourceMap.getString("helpContentsMenuItem.text")); // NOI18N helpContentsMenuItem.setName("helpContentsMenuItem"); // NOI18N helpMenu.add(helpContentsMenuItem); helpContentsMenuItem.addActionListener(NeuGenHelp.getInstance().getfDisplayHelp()); aboutMenuItem.setAction(actionMap.get("showAboutBox")); // NOI18N aboutMenuItem.setIcon(resourceMap.getIcon("aboutMenuItem.icon")); // NOI18N aboutMenuItem.setText(resourceMap.getString("aboutMenuItem.text")); // NOI18N aboutMenuItem.setName("aboutMenuItem"); // NOI18N helpMenu.add(aboutMenuItem); menuBar.add(helpMenu); statusPanel.setName("statusPanel"); // NOI18N statusPanelSeparator.setName("statusPanelSeparator"); // NOI18N statusMessageLabel.setName("statusMessageLabel"); // NOI18N statusAnimationLabel.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); statusAnimationLabel.setName("statusAnimationLabel"); // NOI18N progressBar.setName("progressBar"); // NOI18N org.jdesktop.layout.GroupLayout statusPanelLayout = new org.jdesktop.layout.GroupLayout(statusPanel); statusPanel.setLayout(statusPanelLayout); statusPanelLayout.setHorizontalGroup( statusPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(org.jdesktop.layout.GroupLayout.TRAILING, statusPanelLayout.createSequentialGroup() .addContainerGap() .add(statusMessageLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 656, Short.MAX_VALUE) .add(18, 18, 18) .add(progressBar, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED) .add(statusAnimationLabel, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 21, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addContainerGap()) .add(statusPanelSeparator, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 865, Short.MAX_VALUE) ); statusPanelLayout.setVerticalGroup( statusPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(statusPanelLayout.createSequentialGroup() .add(statusPanelSeparator, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .add(2, 2, 2) .add(statusPanelLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(progressBar, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 20, Short.MAX_VALUE) .add(statusAnimationLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 20, Short.MAX_VALUE) .add(statusMessageLabel, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 20, Short.MAX_VALUE)) .addContainerGap()) ); toolBar.setBorder(null); toolBar.setFloatable(false); toolBar.setRollover(true); toolBar.setToolTipText(resourceMap.getString("toolBar.toolTipText")); // NOI18N toolBar.setName("toolBar"); // NOI18N projectToolBar.setRollover(true); projectToolBar.setName("projectToolBar"); // NOI18N createProjectButton.setAction(actionMap.get("createProject")); // NOI18N createProjectButton.setIcon(resourceMap.getIcon("createProjectButton.icon")); // NOI18N createProjectButton.setText(resourceMap.getString("createProjectButton.text")); // NOI18N createProjectButton.setToolTipText(resourceMap.getString("createProjectButton.toolTipText")); // NOI18N createProjectButton.setBorderPainted(false); createProjectButton.setFocusable(false); createProjectButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); createProjectButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); createProjectButton.setName("createProjectButton"); // NOI18N createProjectButton.setVerticalAlignment(javax.swing.SwingConstants.TOP); projectToolBar.add(createProjectButton); openProjectButton.setAction(actionMap.get("openProject")); // NOI18N openProjectButton.setIcon(resourceMap.getIcon("openProjectButton.icon")); // NOI18N openProjectButton.setText(resourceMap.getString("openProjectButton.text")); // NOI18N openProjectButton.setToolTipText(resourceMap.getString("openProjectButton.toolTipText")); // NOI18N openProjectButton.setBorderPainted(false); openProjectButton.setFocusable(false); openProjectButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); openProjectButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); openProjectButton.setName("openProjectButton"); // NOI18N projectToolBar.add(openProjectButton); saveConfigButton.setAction(actionMap.get("save")); // NOI18N saveConfigButton.setIcon(resourceMap.getIcon("saveConfigButton.icon")); // NOI18N saveConfigButton.setText(resourceMap.getString("saveConfigButton.text")); // NOI18N saveConfigButton.setToolTipText(resourceMap.getString("saveConfigButton.toolTipText")); // NOI18N saveConfigButton.setBorderPainted(false); saveConfigButton.setFocusable(false); saveConfigButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); saveConfigButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); saveConfigButton.setName("saveConfigButton"); // NOI18N projectToolBar.add(saveConfigButton); toolBar.add(projectToolBar); runToolBar.setRollover(true); runToolBar.setName("runToolBar"); // NOI18N runButton.setAction(actionMap.get("startCalc")); // NOI18N runButton.setIcon(resourceMap.getIcon("runButton.icon")); // NOI18N runButton.setText(resourceMap.getString("runButton.text")); // NOI18N runButton.setToolTipText(resourceMap.getString("runButton.toolTipText")); // NOI18N runButton.setActionCommand(resourceMap.getString("runButton.actionCommand")); // NOI18N runButton.setBorderPainted(false); runButton.setFocusable(false); runButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); runButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); runButton.setName("runButton"); // NOI18N runToolBar.add(runButton); toolBar.add(runToolBar); dataToolBar.setRollover(true); dataToolBar.setName("dataToolBar"); // NOI18N exportButton.setAction(actionMap.get("exportData")); // NOI18N exportButton.setIcon(resourceMap.getIcon("exportButton.icon")); // NOI18N exportButton.setText(resourceMap.getString("exportButton.text")); // NOI18N exportButton.setToolTipText(resourceMap.getString("exportButton.toolTipText")); // NOI18N exportButton.setBorderPainted(false); exportButton.setFocusable(false); exportButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); exportButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); exportButton.setName("exportButton"); // NOI18N exportButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { exportButtonActionPerformed(evt); } }); dataToolBar.add(exportButton); importButton.setAction(actionMap.get("importData")); // NOI18N importButton.setIcon(resourceMap.getIcon("importButton.icon")); // NOI18N importButton.setText(resourceMap.getString("importButton.text")); // NOI18N importButton.setToolTipText(resourceMap.getString("importButton.toolTipText")); // NOI18N importButton.setBorderPainted(false); importButton.setFocusable(false); importButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); importButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); importButton.setName("importButton"); // NOI18N dataToolBar.add(importButton); toolBar.add(dataToolBar); visualToolBar.setRollover(true); visualToolBar.setName("visualToolBar"); // NOI18N visualizeButton.setAction(actionMap.get("visualizeData")); // NOI18N visualizeButton.setIcon(resourceMap.getIcon("visualizeButton.icon")); // NOI18N visualizeButton.setText(resourceMap.getString("visualizeButton.text")); // NOI18N visualizeButton.setToolTipText(resourceMap.getString("visualizeButton.toolTipText")); // NOI18N visualizeButton.setBorderPainted(false); visualizeButton.setFocusable(false); visualizeButton.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); visualizeButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); visualizeButton.setName("visualizeButton"); // NOI18N visualToolBar.add(visualizeButton); visualizeDensity.setAction(actionMap.get("visualizeDensity")); // NOI18N visualizeDensity.setIcon(resourceMap.getIcon("visualizeDensity.icon")); // NOI18N visualizeDensity.setText(resourceMap.getString("visualizeDensity.text")); // NOI18N visualizeDensity.setBorderPainted(false); visualizeDensity.setFocusable(false); visualizeDensity.setHorizontalAlignment(javax.swing.SwingConstants.LEFT); visualizeDensity.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); visualizeDensity.setName("visualizeDensity"); // NOI18N visualToolBar.add(visualizeDensity); toolBar.add(visualToolBar); imageToolBar.setRollover(true); imageToolBar.setName("imageToolBar"); // NOI18N sliderButton.setAction(actionMap.get("generateSlider")); // NOI18N sliderButton.setIcon(resourceMap.getIcon("sliderButton.icon")); // NOI18N sliderButton.setText(resourceMap.getString("sliderButton.text")); // NOI18N sliderButton.setBorderPainted(false); sliderButton.setFocusable(false); sliderButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); sliderButton.setName("sliderButton"); // NOI18N imageToolBar.add(sliderButton); sliderButton.getAccessibleContext().setAccessibleName(resourceMap.getString("jButton1.AccessibleContext.accessibleName")); // NOI18N toolBar.add(imageToolBar); helpToolBar.setRollover(true); helpToolBar.setName("helpToolBar"); // NOI18N helpButton.setIcon(resourceMap.getIcon("helpButton.icon")); // NOI18N helpButton.setText(resourceMap.getString("helpButton.text")); // NOI18N helpButton.setToolTipText(resourceMap.getString("helpButton.toolTipText")); // NOI18N helpButton.setFocusable(false); helpButton.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT); helpButton.setName("helpButton"); // NOI18N helpToolBar.add(helpButton); helpButton.addActionListener(NeuGenHelp.getInstance().getfDisplayHelp()); toolBar.add(helpToolBar); importFileChooser.setAcceptAllFileFilterUsed(false); importFileChooser.setName("importFileChooser"); // NOI18N mainSplitPane.setName("mainSplitPane"); // NOI18N mainSplitPane.setOneTouchExpandable(true); mainSplitPane.setPreferredSize(new java.awt.Dimension(606, 456)); editorSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); editorSplitPane.setName("editorSplitPane"); // NOI18N editorSplitPane.setOneTouchExpandable(true); editorSplitPane.setPreferredSize(new java.awt.Dimension(300, 456)); configDataScrollPane.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("configDataScrollPane.border.title"))); // NOI18N configDataScrollPane.setMinimumSize(new java.awt.Dimension(25, 200)); configDataScrollPane.setName("configDataScrollPane"); // NOI18N configDataScrollPane.setPreferredSize(new java.awt.Dimension(300, 300)); editorSplitPane.setTopComponent(configDataScrollPane); configDataScrollPane.getAccessibleContext().setAccessibleParent(editorSplitPane); htmlScrollPane.setName("htmlScrollPane"); // NOI18N commentEditorPane.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("commentEditorPane.border.title"))); // NOI18N commentEditorPane.setContentType(resourceMap.getString("commentEditorPane.contentType")); // NOI18N commentEditorPane.setEditable(false); commentEditorPane.setName("commentEditorPane"); // NOI18N commentEditorPane.setPreferredSize(new java.awt.Dimension(300, 150)); htmlScrollPane.setViewportView(commentEditorPane); editorSplitPane.setBottomComponent(htmlScrollPane); mainSplitPane.setLeftComponent(editorSplitPane); visualOutputSplitPane.setDividerLocation(200); visualOutputSplitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT); visualOutputSplitPane.setContinuousLayout(true); visualOutputSplitPane.setName("visualOutputSplitPane"); // NOI18N visualOutputSplitPane.setPreferredSize(new java.awt.Dimension(300, 456)); outputScrollPane.setName("outputScrollPane"); // NOI18N taskOutput.setColumns(20); taskOutput.setRows(5); taskOutput.setName("taskOutput"); // NOI18N taskOutput.addMouseListener(new java.awt.event.MouseAdapter() { public void mousePressed(java.awt.event.MouseEvent evt) { taskOutputMousePressed(evt); } public void mouseReleased(java.awt.event.MouseEvent evt) { taskOutputMouseReleased(evt); } }); outputScrollPane.setViewportView(taskOutput); visualOutputSplitPane.setRightComponent(outputScrollPane); visualDensSplitPane.setDividerSize(4); visualDensSplitPane.setResizeWeight(0.5); visualDensSplitPane.setContinuousLayout(true); visualDensSplitPane.setName("visualDensSplitPane"); // NOI18N visualScrollPane.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("visualScrollPane.border.title"))); // NOI18N visualScrollPane.setName("visualScrollPane"); // NOI18N visualDensSplitPane.setLeftComponent(visualScrollPane); densScrollPane.setBorder(javax.swing.BorderFactory.createTitledBorder(resourceMap.getString("densScrollPane.border.title"))); // NOI18N densScrollPane.setName("densScrollPane"); // NOI18N visualDensSplitPane.setRightComponent(densScrollPane); visualOutputSplitPane.setLeftComponent(visualDensSplitPane); mainSplitPane.setRightComponent(visualOutputSplitPane); outputPopupMenu.setName("outputPopupMenu"); // NOI18N copyMenuItemPopup.setAction(actionMap.get("copyTaskOutput")); // NOI18N copyMenuItemPopup.setIcon(resourceMap.getIcon("copyMenuItemPopup.icon")); // NOI18N copyMenuItemPopup.setText(resourceMap.getString("copyMenuItemPopup.text")); // NOI18N copyMenuItemPopup.setName("copyMenuItemPopup"); // NOI18N outputPopupMenu.add(copyMenuItemPopup); clearMenuItemPopup.setAction(actionMap.get("clearTaskOutput")); // NOI18N clearMenuItemPopup.setIcon(resourceMap.getIcon("clearMenuItemPopup.icon")); // NOI18N clearMenuItemPopup.setText(resourceMap.getString("clearMenuItemPopup.text")); // NOI18N clearMenuItemPopup.setName("clearMenuItemPopup"); // NOI18N outputPopupMenu.add(clearMenuItemPopup); popupSeparator.setName("popupSeparator"); // NOI18N outputPopupMenu.add(popupSeparator); selectAllMenuItemPopup.setAction(actionMap.get("selectAllFromTaskOutput")); // NOI18N selectAllMenuItemPopup.setIcon(resourceMap.getIcon("selectAllMenuItemPopup.icon")); // NOI18N selectAllMenuItemPopup.setText(resourceMap.getString("selectAllMenuItemPopup.text")); // NOI18N selectAllMenuItemPopup.setName("selectAllMenuItemPopup"); // NOI18N outputPopupMenu.add(selectAllMenuItemPopup); popupSeparator2.setName("popupSeparator2"); // NOI18N outputPopupMenu.add(popupSeparator2); saveAsMenuItemPopup.setAction(actionMap.get("saveOutputText")); // NOI18N saveAsMenuItemPopup.setIcon(resourceMap.getIcon("saveAsMenuItemPopup.icon")); // NOI18N saveAsMenuItemPopup.setText(resourceMap.getString("saveAsMenuItemPopup.text")); // NOI18N saveAsMenuItemPopup.setName("saveAsMenuItemPopup"); // NOI18N outputPopupMenu.add(saveAsMenuItemPopup); commentEditorPopupMenu.setName("commentEditorPopupMenu"); // NOI18N editCommentMenuItem.setText(resourceMap.getString("editCommentMenuItem.text")); // NOI18N editCommentMenuItem.setToolTipText(resourceMap.getString("editCommentMenuItem.toolTipText")); // NOI18N editCommentMenuItem.setName("editCommentMenuItem"); // NOI18N editCommentMenuItem.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { editCommentMenuItemActionPerformed(evt); } }); commentEditorPopupMenu.add(editCommentMenuItem); commentEditorDialog.setMinimumSize(new java.awt.Dimension(500, 300)); commentEditorDialog.setName("commentEditorDialog"); // NOI18N commentEditorDialog.setResizable(false); comDialogScrollPane.setName("comDialogScrollPane"); // NOI18N comDialogEditorPane.setName("comDialogEditorPane"); // NOI18N comDialogScrollPane.setViewportView(comDialogEditorPane); saveDialogButton.setText(resourceMap.getString("saveDialogButton.text")); // NOI18N saveDialogButton.setToolTipText(resourceMap.getString("saveDialogButton.toolTipText")); // NOI18N saveDialogButton.setName("saveDialogButton"); // NOI18N saveDialogButton.setSelected(true); saveDialogButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { saveDialogButtonActionPerformed(evt); } }); cancelDialogButton.setText(resourceMap.getString("cancelDialogButton.text")); // NOI18N cancelDialogButton.setName("cancelDialogButton"); // NOI18N cancelDialogButton.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cancelDialogButtonActionPerformed(evt); } }); org.jdesktop.layout.GroupLayout commentEditorDialogLayout = new org.jdesktop.layout.GroupLayout(commentEditorDialog.getContentPane()); commentEditorDialog.getContentPane().setLayout(commentEditorDialogLayout); commentEditorDialogLayout.setHorizontalGroup( commentEditorDialogLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(commentEditorDialogLayout.createSequentialGroup() .addContainerGap() .add(commentEditorDialogLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(comDialogScrollPane, org.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 450, Short.MAX_VALUE) .add(org.jdesktop.layout.GroupLayout.TRAILING, commentEditorDialogLayout.createSequentialGroup() .add(saveDialogButton) .addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED) .add(cancelDialogButton) .add(21, 21, 21))) .addContainerGap()) ); commentEditorDialogLayout.setVerticalGroup( commentEditorDialogLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.LEADING) .add(commentEditorDialogLayout.createSequentialGroup() .addContainerGap() .add(comDialogScrollPane, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 225, org.jdesktop.layout.GroupLayout.PREFERRED_SIZE) .addPreferredGap(org.jdesktop.layout.LayoutStyle.RELATED, 64, Short.MAX_VALUE) .add(commentEditorDialogLayout.createParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE) .add(cancelDialogButton) .add(saveDialogButton)) .addContainerGap()) ); openProjectFileChooser.setApproveButtonText(resourceMap.getString("openProjectFileChooser.approveButtonText")); // NOI18N openProjectFileChooser.setDialogTitle(resourceMap.getString("openProjectFileChooser.dialogTitle")); // NOI18N openProjectFileChooser.setFileSelectionMode(javax.swing.JFileChooser.DIRECTORIES_ONLY); openProjectFileChooser.setName("openProjectFileChooser"); // NOI18N setComponent(mainSplitPane); setMenuBar(menuBar); setStatusBar(statusPanel); setToolBar(toolBar); }// </editor-fold>//GEN-END:initComponents private void taskOutputMousePressed(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_taskOutputMousePressed if (evt.isPopupTrigger()) { outputPopupMenu.show(evt.getComponent(), evt.getX(), evt.getY()); } }//GEN-LAST:event_taskOutputMousePressed private void writeNeuronMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_writeNeuronMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_writeNeuronMenuItemActionPerformed private void writeNeuroMLMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_writeNeuroMLMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_writeNeuroMLMenuItemActionPerformed private void writeNeuGenMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_writeNeuGenMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_writeNeuGenMenuItemActionPerformed private void writeNeuTriaMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_writeNeuTriaMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_writeNeuTriaMenuItemActionPerformed private void exportButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_exportButtonActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_exportButtonActionPerformed private void readNeuronMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_readNeuronMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_readNeuronMenuItemActionPerformed private void readNeuroMLMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_readNeuroMLMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_readNeuroMLMenuItemActionPerformed private void readNeuGenMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_readNeuGenMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_readNeuGenMenuItemActionPerformed private void readNeuTriaMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_readNeuTriaMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_readNeuTriaMenuItemActionPerformed private void editCommentMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_editCommentMenuItemActionPerformed logger.info("currentPropertyKey: " + currentPropKey); commentEditorDialog.setVisible(true); for (Properties comProp : commentPropList) { if (comProp.containsKey(currentPropKey)) { comDialogEditorPane.setText(comProp.getProperty(currentPropKey)); break; } } }//GEN-LAST:event_editCommentMenuItemActionPerformed private void saveDialogButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveDialogButtonActionPerformed logger.info("save: " + currentPropKey); for (Properties comProp : commentPropList) { if (comProp.containsKey(currentPropKey)) { comProp.setProperty(currentPropKey, comDialogEditorPane.getText()); //logger.info(comDialogEditorPane.getText()); //commentEditorPane.setText(comProp.getProperty(currentPropKey).replaceAll(System.getProperty("line.separator"), "<br />")); String value = comProp.getProperty(currentPropKey); value = value.replaceAll(System.getProperty("line.separator"), "<br />"); value = value.replaceAll("\n", "<br />"); commentEditorPane.setText(value); commentEditorDialog.setVisible(false); commentEditorDialog.dispose(); logger.info(projectDirPath); if (currentPropKey.contains(NeuGenConstants.PARAM)) { NeuGenComments.saveComments(comProp, new File(projectDirPath), NeuGenConstants.PARAM); } else if (currentPropKey.contains(NeuGenConstants.INTERNA)) { NeuGenComments.saveComments(comProp, new File(projectDirPath), NeuGenConstants.INTERNA); } else if (currentPropKey.contains(NeuGenConstants.OUTPUT)) { //logger.info("save in outputO.neu: " + currentPropKey); NeuGenComments.saveComments(comProp, new File(projectDirPath), NeuGenConstants.OUTPUT); } else if (currentPropKey.contains(new File(projectDirPath).getName())) { try { //logger.info("save to project prop"); NeuGenComments.saveProjectPropToXML(projectDirPath, comProp); } catch (FileNotFoundException ex) { logger.error(ex, ex); } } break; } } }//GEN-LAST:event_saveDialogButtonActionPerformed private void cancelDialogButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cancelDialogButtonActionPerformed commentEditorDialog.dispose(); }//GEN-LAST:event_cancelDialogButtonActionPerformed private void taskOutputMouseReleased(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_taskOutputMouseReleased if (evt.isPopupTrigger()) { outputPopupMenu.show(evt.getComponent(), evt.getX(), evt.getY()); } }//GEN-LAST:event_taskOutputMouseReleased private void readNeurolucidaMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_readNeurolucidaMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_readNeurolucidaMenuItemActionPerformed private void writeNeuronInfoMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_writeNeuronInfoMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_writeNeuronInfoMenuItemActionPerformed private void writeObjMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_writeObjMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_writeObjMenuItemActionPerformed private void readImageStackMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_readImageStackMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_readImageStackMenuItemActionPerformed private void readNeuRaMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_readNeuRaMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_readNeuRaMenuItemActionPerformed private void readWavefrontMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_readWavefrontMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_readWavefrontMenuItemActionPerformed private void netMovieItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_netMovieItemActionPerformed // TODO add your handling code here: }//GEN-LAST:event_netMovieItemActionPerformed private void densMovieMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_densMovieMenuItemActionPerformed NeuGenDensityVisualization dv = NeuGenDensityVisualization.getInstance(); if (dv != null) { dv.makeVideo(); } }//GEN-LAST:event_densMovieMenuItemActionPerformed private void readImageSequenceMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_readImageSequenceMenuItemActionPerformed command = evt.getActionCommand(); }//GEN-LAST:event_readImageSequenceMenuItemActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton cancelDialogButton; private javax.swing.JMenuItem clearMenuItem; private javax.swing.JMenuItem clearMenuItemPopup; private javax.swing.JMenuItem closeProjectMenuItem; private javax.swing.JEditorPane comDialogEditorPane; private javax.swing.JScrollPane comDialogScrollPane; private javax.swing.JDialog commentEditorDialog; private javax.swing.JEditorPane commentEditorPane; private javax.swing.JPopupMenu commentEditorPopupMenu; private javax.swing.JScrollPane configDataScrollPane; private javax.swing.JMenuItem copyMenuItem; private javax.swing.JMenuItem copyMenuItemPopup; private javax.swing.JButton createProjectButton; private javax.swing.JMenuItem createProjectMenuItem; private javax.swing.JToolBar dataToolBar; private javax.swing.JMenuItem densMovieMenuItem; private javax.swing.JScrollPane densScrollPane; private javax.swing.JMenuItem editCommentMenuItem; private javax.swing.JMenu editMenu; private javax.swing.JSplitPane editorSplitPane; private javax.swing.JButton exportButton; private javax.swing.JMenu exportMenu; private javax.swing.JSeparator fileSeparator; private javax.swing.JSeparator fileSeparator2; private javax.swing.JSeparator fileSeparator3; private javax.swing.JSeparator fileSeparator4; private javax.swing.JPopupMenu.Separator fileSeparator5; private javax.swing.JButton helpButton; private javax.swing.JMenuItem helpContentsMenuItem; private javax.swing.JMenu helpMenu; private javax.swing.JToolBar helpToolBar; private javax.swing.JScrollPane htmlScrollPane; private javax.swing.JToolBar imageToolBar; private javax.swing.JButton importButton; private javax.swing.JFileChooser importFileChooser; private javax.swing.JMenu importMenu; private javax.swing.JPopupMenu.Separator jSeparator1; private javax.swing.JPopupMenu.Separator jSeparator2; private javax.swing.JSplitPane mainSplitPane; private javax.swing.JMenuBar menuBar; private javax.swing.JMenu movieMenu; private javax.swing.JMenuItem netMovieItem; private javax.swing.JButton openProjectButton; private javax.swing.JFileChooser openProjectFileChooser; private javax.swing.JMenuItem openProjectMenuItem; private javax.swing.JPopupMenu outputPopupMenu; private javax.swing.JScrollPane outputScrollPane; private javax.swing.JSeparator popupSeparator; private javax.swing.JSeparator popupSeparator2; private javax.swing.JProgressBar progressBar; private javax.swing.JToolBar projectToolBar; private javax.swing.JMenuItem readImageSequenceMenuItem; private javax.swing.JMenuItem readImageStackMenuItem; private javax.swing.JMenuItem readNeuGenMenuItem; private javax.swing.JMenuItem readNeuRaMenuItem; private javax.swing.JMenuItem readNeuTriaMenuItem; private javax.swing.JMenuItem readNeuroMLMenuItem; private javax.swing.JMenuItem readNeurolucidaMenuItem; private javax.swing.JMenuItem readNeuronMenuItem; private javax.swing.JMenuItem readWavefrontMenuItem; private javax.swing.JButton runButton; private javax.swing.JToolBar runToolBar; private javax.swing.JMenuItem saveAsMenuItemPopup; private static javax.swing.JButton saveConfigButton; private javax.swing.JButton saveDialogButton; private javax.swing.JMenuItem saveMenuItem; private javax.swing.JMenuItem selectAllMenuItem; private javax.swing.JMenuItem selectAllMenuItemPopup; private javax.swing.JButton sliderButton; private javax.swing.JLabel statusAnimationLabel; private javax.swing.JLabel statusMessageLabel; private javax.swing.JPanel statusPanel; private javax.swing.JTextArea taskOutput; private javax.swing.JToolBar toolBar; private javax.swing.JSplitPane visualDensSplitPane; private javax.swing.JSplitPane visualOutputSplitPane; private javax.swing.JScrollPane visualScrollPane; private javax.swing.JToolBar visualToolBar; private javax.swing.JButton visualizeButton; private javax.swing.JButton visualizeDensity; private javax.swing.JMenuItem writeNeuGenMenuItem; private javax.swing.JMenuItem writeNeuTriaMenuItem; private javax.swing.JMenuItem writeNeuroMLMenuItem; private javax.swing.JMenuItem writeNeuronInfoMenuItem; private javax.swing.JMenuItem writeNeuronMenuItem; private javax.swing.JMenuItem writeObjMenuItem; // End of variables declaration//GEN-END:variables /** * Get the project type * * @return the value of currentProjectType */ public String getCurrentProjectType() { return currentProjectType; } /** * Get the full path of Param.neu * * @return the value of paramPath */ public static String getParamPath() { return paramPath; } /** * Set the value of paramPath * * @param paramPath new value of paramPath */ public static void setParamPath(String paramPath) { NeuGenView.paramPath = paramPath; } /** * Get the value of internaPath * * @return the value of internaPath */ public static String getInternaPath() { return internaPath; } /** * Set the value of internaPath * * @param internaPath new value of internaPath */ public static void setInternaPath(String internaPath) { NeuGenView.internaPath = internaPath; } /** * Get the value of outputOptionsPath * * @return the value of outputOptionsPath */ public static String getOutputOptionsPath() { return outputOptionsPath; } /** * Set the value of outputOptionsPath * * @param outputOptionsPath new value of outputOptionsPath */ public static void setOutputOptionsPath(String outputOptionsPath) { NeuGenView.outputOptionsPath = outputOptionsPath; } public JScrollPane getDensScrollPane() { return densScrollPane; } public JSplitPane getVisualDensSplitPane() { return visualDensSplitPane; } public void setNewNet(boolean newNet) { this.newNet = newNet; } public Map<String, XMLObject> getParamTrees() { return paramTrees; } public static NeuGenView getInstance() { return instance; } public JSplitPane getVisualOutputSplitPane() { return visualOutputSplitPane; } public static void setInstance(NeuGenView instance) { NeuGenView.instance = instance; } public String getProjectDirPath() { return projectDirPath; } public static JButton getSaveButton() { return saveConfigButton; } public void setNetExist(boolean netExist) { this.netExist = netExist; } public void outPrint(String message) { taskOutput.append(message); taskOutput.setCaretPosition(taskOutput.getDocument().getLength()); } public void outPrintln(String message) { if (taskOutput != null) { taskOutput.append(message + "\n"); taskOutput.setCaretPosition(taskOutput.getDocument().getLength()); } } public void outPrintln() { if (taskOutput != null) { taskOutput.append("\n"); } } public void setStatusMessage(String message) { if (statusMessageLabel != null) { statusMessageLabel.setText(message); } } public Net getNet() { return net; } public void setNet(Net net) { this.net = net; } public JScrollPane getVisualScrollPane() { return visualScrollPane; } public void setVisualScrollPane(JScrollPane visualScrollPane) { this.visualScrollPane = visualScrollPane; } public JButton getRunButton() { return this.runButton; } public JButton getVisualizeButton() { return this.visualizeButton; } public JButton getVisualizeDensityButton() { return this.visualizeDensity; } @Action public Task generateSlider() { destroyVisualizeTasks(); disableButtons(); if (sliderTask != null) { sliderTask = null; } sliderTask = new SliderGeneratorTask(getApplication(), net); return sliderTask; } @Action public Task visualizeData() { if (visual == null) { visualizeButton.setEnabled(false); return null; } disableButtons(); if (visualizeTask != null) { if (((VisualizationTask) visualizeTask).getNGVisualization() != null) { ((VisualizationTask) visualizeTask).getNGVisualization().destroy(); } visualizeTask = null; System.gc(); } if (currentProjectType != null) { if (currentProjectType.equals(NeuGenConstants.NEOCORTEX_PROJECT)) { Region.setCortColumn(true); Region.setCa1Region(false); } else if (currentProjectType.equals(NeuGenConstants.HIPPOCAMPUS_PROJECT)) { Region.setCortColumn(false); Region.setCa1Region(true); } else { Region.setCortColumn(false); Region.setCa1Region(false); } } if (importedData) { Region.setCortColumn(false); Region.setCa1Region(false); } switch (visual) { case NET: visualizeTask = new VisualizationTask(getApplication(), visual); break; case RECONSTRUCTION: visualizeTask = new VisualizationTask(getApplication(), visual, scene); break; case LOADED_GRAPH: visualizeTask = new VisualizationTask(getApplication(), visual, scene); } VisualizationTask.setInstance((VisualizationTask) visualizeTask); return visualizeTask; } public void destroyVisualizeTasks() { if (visualizeTask != null) { if (((VisualizationTask) visualizeTask).getNGVisualization() != null) { ((VisualizationTask) visualizeTask).getNGVisualization().destroy(); } visualScrollPane.validate(); visualScrollPane.repaint(); visualizeTask = null; System.gc(); } if (visualDensSplitPane.getRightComponent() != null) { visualDensSplitPane.remove(visualDensSplitPane.getRightComponent()); } if (visualizeDensityTask != null) { if (NeuGenDensityVisualization.getInstance() != null) { NeuGenDensityVisualization.getInstance().destroy(); } densScrollPane.validate(); densScrollPane.repaint(); visualizeDensityTask = null; System.gc(); } } @Action public Task visualizeDensity() { try { //test if java3d installed Class.forName("javax.media.j3d.Canvas3D"); if (visualizeDensityTask != null) { if (NeuGenDensityVisualization.getInstance() != null) { NeuGenDensityVisualization.getInstance().destroy(); } } densScrollPane.validate(); densScrollPane.repaint(); visualizeDensityTask = null; System.gc(); disableButtons(); if (currentProjectType != null) { if (currentProjectType.equals(NeuGenConstants.NEOCORTEX_PROJECT)) { Region.setCortColumn(true); Region.setCa1Region(false); } else if (currentProjectType.equals(NeuGenConstants.HIPPOCAMPUS_PROJECT)) { Region.setCortColumn(false); Region.setCa1Region(true); } else { Region.setCortColumn(false); Region.setCa1Region(false); } } if (importedData) { Region.setCortColumn(false); Region.setCa1Region(false); } switch (density) { case NET: visualizeDensityTask = new DensityVisualizationTask(getApplication(), density); break; case IMAGE: visualizeDensityTask = new DensityVisualizationTask(getApplication(), density, imageStackFile); } DensityVisualizationTask.setInstance(visualizeDensityTask); return visualizeDensityTask; } catch (ClassNotFoundException notFound) { String message = NeuGenConstants.J3D_ERROR_MESSAGE; logger.error(message + "\n" + notFound, notFound); JOptionPane.showMessageDialog(super.getFrame(), message, "visualization impossible", JOptionPane.ERROR_MESSAGE); visualizeDensity.setVisible(false); visualizeButton.setVisible(false); return null; } } @Action public void showHelpWindow() { NeuGenHelp.getInstance().getfDisplayHelp(); } @Action public void showAboutBox() { if (aboutBox == null) { JFrame mainFrame = NeuGenApp.getApplication().getMainFrame(); aboutBox = new NGAboutBox(mainFrame); aboutBox.setLocationRelativeTo(mainFrame); } NeuGenApp.getApplication().show(aboutBox); } @Action public Task importData() { Task task = null; importFileChooser.setDialogTitle("Import Data"); importFileChooser.resetChoosableFileFilters(); if (command.equals(readNeuronMenuItem.getActionCommand())) { importFileChooser.addChoosableFileFilter(new NGFileFilter.NeuronFileFilter()); } else if (command.equals(readNeuGenMenuItem.getActionCommand())) { importFileChooser.addChoosableFileFilter(new NGFileFilter.NeuGenVisualFileFilter()); } else if (command.equals(readNeuroMLMenuItem.getActionCommand())) { importFileChooser.addChoosableFileFilter(new NGFileFilter.NeuroMLFileFilter()); } else if (command.equals(readNeuTriaMenuItem.getActionCommand())) { importFileChooser.addChoosableFileFilter(new NGFileFilter.NeuTriaFileFilter()); } else if (command.equals(readNeurolucidaMenuItem.getActionCommand())) { importFileChooser.addChoosableFileFilter(new NGFileFilter.CvappFileFilter()); } else if (command.equals(readImageStackMenuItem.getActionCommand())) { importFileChooser.addChoosableFileFilter(new NGFileFilter.ImageFileFilter()); } else if (command.equals(readImageSequenceMenuItem.getActionCommand())) { importFileChooser.addChoosableFileFilter(new NGFileFilter.ImageSequenceFileFilter()); } else if (command.equals(readNeuTriaMenuItem.getActionCommand())) { importFileChooser.addChoosableFileFilter(new NGFileFilter.NeuRAFileFilter()); } else if (command.equals(readWavefrontMenuItem.getActionCommand())) { importFileChooser.addChoosableFileFilter(new NGFileFilter.ObjFileFilter()); } else { importFileChooser.addChoosableFileFilter(new NGFileFilter.NeuGenVisualFileFilter()); //importFileChooser.addChoosableFileFilter(new NGFileFilter.NeuTriaFileFilter()); importFileChooser.addChoosableFileFilter(new NGFileFilter.NeuroMLFileFilter()); importFileChooser.addChoosableFileFilter(new NGFileFilter.CvappFileFilter()); importFileChooser.addChoosableFileFilter(new NGFileFilter.ImageFileFilter()); importFileChooser.addChoosableFileFilter(new NGFileFilter.ImageSequenceFileFilter()); importFileChooser.addChoosableFileFilter(new NGFileFilter.NeuRAFileFilter()); importFileChooser.addChoosableFileFilter(new NGFileFilter.ObjFileFilter()); //importFileChooser.addChoosableFileFilter(new NGFileFilter.NeuronFileFilter()); } int fileChooserOption = importFileChooser.showOpenDialog(super.getFrame()); if (fileChooserOption == JFileChooser.APPROVE_OPTION) { disableButtons(); try { FileFilter fileFilter = importFileChooser.getFileFilter(); if (fileFilter instanceof NGFileFilter.NeuroMLFileFilter) { File f = importFileChooser.getSelectedFile(); task = new NeuroMLReaderTask(getApplication(), f); this.visual = VisualizationTask.Visualization.NET; importedData = false; //netz wurde erzeugt } else if (fileFilter instanceof NGFileFilter.NeuTriaFileFilter) { File f = importFileChooser.getSelectedFile(); task = new SimpleHocReaderTask(getApplication(), f); //importedData = true; } else if (fileFilter instanceof NGFileFilter.CvappFileFilter) { File f = importFileChooser.getSelectedFile(); task = new SWCReaderTask(getApplication(), f); this.visual = VisualizationTask.Visualization.NET; importedData = false; //netz wurde erzeugt } else if (fileFilter instanceof NGFileFilter.NeuGenVisualFileFilter) { File f = importFileChooser.getSelectedFile(); task = new OBJReader(getApplication(), f, OBJReader.ReaderType.BG); destroyVisualizeTasks(); this.visualizeButton.setEnabled(true); this.visualizeDensity.setEnabled(false); this.visual = VisualizationTask.Visualization.LOADED_GRAPH; this.importedData = true; } else if (fileFilter instanceof NGFileFilter.NeuronFileFilter) { logger.error("TODO: Import for Neuron hoc files"); } else if (fileFilter instanceof NGFileFilter.ImageFileFilter || fileFilter instanceof NGFileFilter.ImageSequenceFileFilter) { if(fileFilter instanceof NGFileFilter.ImageSequenceFileFilter) { logger.info("read sequence!"); this.imageSequence = true; } else { this.imageSequence = false; } this.importedData = true; this.density = DensityVisualizationTask.Density.IMAGE; this.visualizeDensity.setEnabled(true); this.imageStackFile = importFileChooser.getSelectedFile(); this.visualizeDensity().run(); } else if (fileFilter instanceof NGFileFilter.NeuRAFileFilter) { File f = importFileChooser.getSelectedFile(); task = new OBJReader(getApplication(), f, OBJReader.ReaderType.TXT); destroyVisualizeTasks(); this.visualizeButton.setEnabled(true); this.visualizeDensity.setEnabled(false); this.visual = VisualizationTask.Visualization.RECONSTRUCTION; this.importedData = true; } else if (fileFilter instanceof NGFileFilter.ObjFileFilter) { File f = importFileChooser.getSelectedFile(); task = new OBJReader(getApplication(), f, OBJReader.ReaderType.OBJ); destroyVisualizeTasks(); this.visualizeButton.setEnabled(true); this.visualizeDensity.setEnabled(false); this.visual = VisualizationTask.Visualization.RECONSTRUCTION; this.importedData = true; } } catch (Exception e) { logger.error(e, e); } enableButtons(); } return task; } public boolean isImageSequence() { return imageSequence; } public void enableVisualizeDensity() { this.visualizeDensity.setEnabled(true); } public void enableVisualize() { this.visualizeButton.setEnabled(true); } public void enableDensMovieButton() { this.densMovieMenuItem.setEnabled(true); } public void enableWriteNeuGenBG(){ this.writeNeuGenMenuItem.setEnabled(true); } public void enableButtons() { // project buttons createProjectButton.setEnabled(true); createProjectMenuItem.setEnabled(true); openProjectButton.setEnabled(true); openProjectMenuItem.setEnabled(true); // import data buttons /* readNeuTriaMenuItem.setEnabled(true); readNeuronMenuItem.setEnabled(true); */ readNeuGenMenuItem.setEnabled(true); readNeuroMLMenuItem.setEnabled(true); readNeurolucidaMenuItem.setEnabled(true); importButton.setEnabled(true); if (netExist) { if (!importedData) { writeNeuGenMenuItem.setEnabled(true); writeNeuTriaMenuItem.setEnabled(true); writeNeuroMLMenuItem.setEnabled(true); writeNeuronMenuItem.setEnabled(true); writeNeuronInfoMenuItem.setEnabled(true); exportButton.setEnabled(true); visualizeButton.setEnabled(true); sliderButton.setEnabled(true); } } if (projectExist) { runButton.setEnabled(true); closeProjectMenuItem.setEnabled(true); } if ((projectExist && netExist)) { if (!importedData) { visualizeDensity.setEnabled(true); } } if (projectTree != null) { if (projectTree.getContentChanged() || newNet) { saveConfigButton.setEnabled(true); } } } public void disableButtons() { // project buttons createProjectButton.setEnabled(false); createProjectMenuItem.setEnabled(false); openProjectButton.setEnabled(false); openProjectMenuItem.setEnabled(false); closeProjectMenuItem.setEnabled(false); saveConfigButton.setEnabled(false); // import data buttons readNeuGenMenuItem.setEnabled(false); readNeuTriaMenuItem.setEnabled(false); readNeuroMLMenuItem.setEnabled(false); readNeuronMenuItem.setEnabled(false); readNeurolucidaMenuItem.setEnabled(false); importButton.setEnabled(false); // export data buttons writeNeuGenMenuItem.setEnabled(false); writeNeuTriaMenuItem.setEnabled(false); writeNeuroMLMenuItem.setEnabled(false); writeNeuronMenuItem.setEnabled(false); writeNeuronInfoMenuItem.setEnabled(false); exportButton.setEnabled(false); sliderButton.setEnabled(false); // visualize buttons visualizeButton.setEnabled(false); visualizeDensity.setEnabled(false); runButton.setEnabled(false); densMovieMenuItem.setEnabled(false); } @Action public Task startCalc() { if (calcTask != null) { ((NeuGenLibTask) calcTask).getNGLib().getNet().destroy(); ((NeuGenLibTask) calcTask).getNGLib().destroy(); net = null; calcTask = null; } destroyVisualizeTasks(); disableButtons(); NeuGenLib.initParamData(initParamTable(), currentProjectType); calcTask = new NeuGenLibTask(getApplication(), currentProjectType); NeuGenLibTask.setInstance((NeuGenLibTask) calcTask); importedData = false; density = DensityVisualizationTask.Density.NET; visual = VisualizationTask.Visualization.NET; //logger.debug("startCalc: " + projectDirPath); return calcTask; } @Action public void createProject() throws Exception { NeuGenProject projectDialog = new NeuGenProject(new javax.swing.JFrame(), true); projectDialog.setVisible(true); projectDialog.setLocationByPlatform(true); projectDirPath = projectDialog.getProjectDirectory(); if (projectDirPath != null) { initProjectParam(projectDirPath); } } public void initProjectParam(String dirPath) throws Exception { closeProject(); File param = new File(dirPath + System.getProperty("file.separator") + NeuGenConstants.PARAM_FNAME); setParamPath(param.getPath()); File interna = new File(dirPath + System.getProperty("file.separator") + NeuGenConstants.INTERNA_FNAME); setInternaPath(interna.getPath()); Properties paramProper = new Properties(); Properties internaProper = new Properties(); File projectDir = new File(dirPath); String projectName = projectDir.getName(); Properties projectProper = NeuGenComments.getProjectPropFromXML(dirPath); projectTree = new XMLTreeView(this); projectTree.removeAll(); projectTree.setName(projectName); XMLObject paramRoot = loadParam(param, paramRoot = null); { NeuGenComments paramCom = new NeuGenComments(paramRoot, projectDir, Utils.getPrefix(param)); paramProper = paramCom.getComments(); } XMLObject internaRoot = loadParam(interna, internaRoot = null); { NeuGenComments paramCom = new NeuGenComments(internaRoot, projectDir, Utils.getPrefix(interna)); internaProper = paramCom.getComments(); } paramTrees = new HashMap<String, XMLObject>(); paramTrees.put(NeuGenConstants.PARAM, paramRoot); paramTrees.put(NeuGenConstants.INTERNA, internaRoot); XMLObject top = new XMLObject(projectName, null, XMLObject.class.toString()); top.add(paramRoot); paramRoot.setParent(top); top.addChild(paramRoot); top.add(internaRoot); internaRoot.setParent(top); top.addChild(internaRoot); initTree(top); projectTree.addPropertyChangeL(new ConfigTreePropertyChangeListener()); projectTree.setModel(new DefaultTreeModel(top)); DefaultTreeCellRenderer renderer = new DefaultTreeCellRenderer(); Icon nodeIcon = null; renderer.setLeafIcon(nodeIcon); //renderer.setClosedIcon(nodeIcon); //renderer.setOpenIcon(nodeIcon); projectTree.setCellRenderer(renderer); //projectTree.setOpaque(false); projectTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); projectTree.validate(); commentPropList = new ArrayList<Properties>(); //commentPropList.add(projectProper); commentPropList.add(paramProper); commentPropList.add(internaProper); //mouse listener to show comments CommentMouseListener commentMouseListener = new CommentMouseListener(commentEditorPane, commentPropList, outputPopupMenu, projectProper); commentMouseListener.addPropertyChangeListener(new PropertyChangeListener() { //get new key @Override public void propertyChange(PropertyChangeEvent evt) { Object newPropKey = evt.getNewValue(); currentPropKey = newPropKey.toString(); //logger.info("(project tree)current prop key: " + currentPropKey); } }); projectTree.addMouseListener(commentMouseListener); configDataScrollPane.setViewportView(projectTree); configDataScrollPane.validate(); configDataScrollPane.repaint(); commentEditorPane.removeAll(); //popupMenu for editing comments commentEditorPane.addMouseListener(new MouseAdapter() { @Override public void mouseClicked(MouseEvent evt) { int clicks = evt.getClickCount(); if (clicks > 1) { //commentEditorPopupMenu.show(evt.getComponent(), evt.getX(), evt.getY()); commentEditorDialog.setVisible(true); for (Properties comProp : commentPropList) { if (comProp.containsKey(currentPropKey)) { comDialogEditorPane.setText(comProp.getProperty(currentPropKey)); break; } } } } @Override public void mousePressed(MouseEvent evt) { maybeShowPopup(evt); } @Override public void mouseReleased(MouseEvent evt) { maybeShowPopup(evt); } private void maybeShowPopup(MouseEvent evt) { if (evt.isPopupTrigger()) { commentEditorPopupMenu.show(evt.getComponent(), evt.getX(), evt.getY()); } } }); currentPropKey = projectDir.getName(); commentEditorPane.setText(projectProper.getProperty(currentPropKey)); projectExist = true; importedData = false; density = DensityVisualizationTask.Density.NET; visual = VisualizationTask.Visualization.NET; disableButtons(); enableButtons(); currentProjectType = projectProper.getProperty(NeuGenConstants.PROP_PROJECT_NAME_KEY); outPrintln("Project type: " + currentProjectType); outPrintln("Created on: " + projectProper.getProperty(NeuGenConstants.PROP_DATE_KEY)); projectTree.setContentChanged(false); NeuGenLib.initParamData(initParamTable(), currentProjectType); } public Map<String, XMLObject> initParamTable() { XMLObject param = getParamTrees().get(NeuGenConstants.PARAM); XMLObject interna = getParamTrees().get(NeuGenConstants.INTERNA); Map<String, XMLObject> allParam = new HashMap<String, XMLObject>(); allParam.put(getParamPath(), param); allParam.put(getInternaPath(), interna); return allParam; } public XMLObject loadParam(File file, XMLObject root) throws Exception { NeuGenConfigStreamer stream = new NeuGenConfigStreamer(null); root = stream.streamIn(file); DefaultInheritance inhProzess = new DefaultInheritance(); root = inhProzess.process(root); return root; } public XMLObject initTree(XMLObject root) throws Exception { MenuHandlerFactory mhSource = new InhMHFactory(projectTree, root); LinkedList<XMLObject> queue = new LinkedList<XMLObject>(); queue.addFirst(root); while (queue.size() != 0) { XMLNode current = (XMLNode) queue.getLast(); //logger.info(current.getPathLocal()); //current.setHandler(mhSource.getHandler(current)); //logger.info(current.getHandler().getClass().toString()); queue.removeLast(); XMLObject currentObj = XMLObject.convert(current); if (currentObj != null) { for (int i = 0; i < currentObj.getChildrenCount(); i++) { XMLNode currentChild = currentObj.getChild(i); XMLObject currentChildObj = XMLObject.convert(currentChild); if (currentChildObj != null) { queue.addFirst(currentChildObj); } else { currentChild.setHandler(mhSource.getHandler(currentChild)); } } } } return root; } @Action public Task closeProject() { trigger = Trigger.getInstance(); trigger.setTextMessage("cleaning..."); if (calcTask != null) { ((NeuGenLibTask) calcTask).getNGLib().getNet().destroy(); ((NeuGenLibTask) calcTask).getNGLib().destroy(); net = null; calcTask = null; } taskOutput.setText(""); if (projectTree != null && projectTree.ableToClose()) { commentEditorPane.setText(""); configDataScrollPane.remove(projectTree); projectTree.setVisible(false); projectTree.setContentChanged(false); projectTree.removeAll(); projectTree = null; projectExist = false; netExist = false; newNet = false; disableButtons(); enableButtons(); destroyVisualizeTasks(); } return trigger; } @Action public Task openProject() throws IOException, Exception { Task task = null; JFileChooser fch = new JFileChooser("."); fch.setDialogTitle("Open Project"); fch.resetChoosableFileFilters(); fch.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int fileChooserOption = fch.showDialog(openProjectButton, "Open Project"); //logger.info("fileChooserOption: " + fileChooserOption); if (fileChooserOption == JFileChooser.APPROVE_OPTION) { File projectDir = fch.getSelectedFile(); String dirPath = projectDir.getPath(); projectDirPath = dirPath; density = DensityVisualizationTask.Density.NET; visual = VisualizationTask.Visualization.NET; File neuGenProjectFile = new File(dirPath + System.getProperty("file.separator") + NeuGenConstants.NEUGEN_PROJECT_FILE); if (!neuGenProjectFile.canRead()) { dirPath = projectDir.getParent(); neuGenProjectFile = new File(dirPath + System.getProperty("file.separator") + NeuGenConstants.NEUGEN_PROJECT_FILE); //logger.info(neuGenProjectFile.getPath()); } if (neuGenProjectFile.canRead()) { importedData = false; initProjectParam(dirPath); File netFile = new File(dirPath + System.getProperty("file.separator") + "net.ser"); if (netFile.exists()) { netExist = true; //task = new NeuroMLReaderTask(getApplication(), netFile); //NeuGenVisualization.setCortColumn(true); task = new NeuGenReaderTask(getApplication()); } } else { JOptionPane.showMessageDialog(super.getFrame(), "wrong project directory"); } } return task; } @Action public Task exportData() { Task task = null; JFileChooser exportFileChooser = new javax.swing.JFileChooser("."); //visualOutputSplitPane.setSelectedComponent(nfcScrollPane); exportFileChooser.setAcceptAllFileFilterUsed(false); exportFileChooser.setDialogType(JFileChooser.SAVE_DIALOG); exportFileChooser.setName("exportFileChooser"); exportFileChooser.resetChoosableFileFilters(); exportFileChooser.setDialogTitle("Export Data"); if (command.equals(writeNeuronMenuItem.getActionCommand())) { exportFileChooser.addChoosableFileFilter(new NGFileFilter.NeuronFileFilter()); } else if (command.equals(writeNeuGenMenuItem.getActionCommand())) { exportFileChooser.addChoosableFileFilter(new NGFileFilter.NeuGenVisualFileFilter()); } else if (command.equals(writeNeuroMLMenuItem.getActionCommand())) { exportFileChooser.addChoosableFileFilter(new NGFileFilter.NeuroMLFileFilter()); } else if (command.equals(writeNeuTriaMenuItem.getActionCommand())) { exportFileChooser.addChoosableFileFilter(new NGFileFilter.NeuTriaFileFilter()); } else if (command.equals(writeNeuronInfoMenuItem.getActionCommand())) { exportFileChooser.addChoosableFileFilter(new NGFileFilter.CSVFileFilter()); } else if (command.equals(writeObjMenuItem.getActionCommand())) { exportFileChooser.addChoosableFileFilter(new NGFileFilter.ObjFileFilter()); } else if (command.equals(exportButton.getActionCommand())) { //exportFileChooser.addChoosableFileFilter(new NeuGenVisualFileFilter()); exportFileChooser.addChoosableFileFilter(new NGFileFilter.NeuTriaFileFilter()); exportFileChooser.addChoosableFileFilter(new NGFileFilter.NeuroMLFileFilter()); exportFileChooser.addChoosableFileFilter(new NGFileFilter.NeuronFileFilter()); exportFileChooser.addChoosableFileFilter(new NGFileFilter.CSVFileFilter()); } int fileChooserOption = exportFileChooser.showSaveDialog(exportButton); if (fileChooserOption == JFileChooser.APPROVE_OPTION) { disableButtons(); try { FileFilter fileFilter = exportFileChooser.getFileFilter(); File f = exportFileChooser.getSelectedFile(); if (fileFilter instanceof NGFileFilter.NeuronFileFilter) { if (Utils.testExistingFile(exportFileChooser)) { task = new HocWriterTask(getApplication(), f); logger.info("Exporting hoc file: " + f.getName()); } } else if (fileFilter instanceof NGFileFilter.NeuTriaFileFilter) { if (Utils.testExistingFile(exportFileChooser)) { task = new SimpleHocWriterTask(getApplication(), f, this); logger.info("Exporting simplified hoc file"); statusMessageLabel.setText("Exporting " + exportFileChooser.getSelectedFile().getName()); } } else if (fileFilter instanceof NGFileFilter.NeuroMLFileFilter) { if (Utils.testExistingFile(exportFileChooser)) { task = new NeuroMLWriterTask(getApplication(), f); } } else if (fileFilter instanceof NGFileFilter.ObjFileFilter) { if (Utils.testExistingFile(exportFileChooser)) { //task = new NeuroMLWriterTask(getApplication(), f); //OBJWriter writer = new OBJWriter("hallo.obj", "Test", 3); } } else if (fileFilter instanceof NGFileFilter.CSVFileFilter) { if (Utils.testExistingFile(exportFileChooser)) { task = new CSVWriterTask(getApplication(), f); } } else if (fileFilter instanceof NGFileFilter.NeuGenVisualFileFilter) { if (Utils.testExistingFile(exportFileChooser)) { task = new NeuGenVisualWriterTask(getApplication(), f); } } } catch (Exception e) { task = new Trigger(getApplication()); ((Trigger) task).setTextMessage("error: " + e); logger.error("Error writing file..: " + e, e); } enableButtons(); } else { String fileName = ""; if (exportFileChooser.getSelectedFile() != null) { fileName = exportFileChooser.getSelectedFile().getName(); } task = new Trigger(getApplication()); ((Trigger) task).setTextMessage("Cancelled exporting " + fileName + " due to your wish"); } return task; } @Action public Task save() throws IOException { Task task = null; XMLNode root = (XMLNode) projectTree.getModel().getRoot(); save(root); if (newNet) { task = new NeuGenWriterTask(getApplication()); } return task; } @Override public void save(XMLNode currentRoot) { List<XMLNode> children = (XMLObject.convert(currentRoot)).getChildren(); logger.info(currentRoot.getLeafCount()); for (XMLNode child : children) { logger.info("child key: " + child.getKey()); XMLObject rootCopy = XMLObject.getCopyXMLObject(XMLObject.convert(child)); DefaultInheritance.reverseProcess(rootCopy); NeuGenConfigStreamer streamer = new NeuGenConfigStreamer(projectDirPath); //neuGenComments.setCurrentDir(saveFileChooser.getCurrentDirectory()); String neuPath = null; if (child.getKey().contains(NeuGenConstants.PARAM)) { neuPath = projectDirPath + System.getProperty("file.separator") + NeuGenConstants.PARAM_FNAME; } else if (child.getKey().contains(NeuGenConstants.INTERNA)) { neuPath = projectDirPath + System.getProperty("file.separator") + NeuGenConstants.INTERNA_FNAME; } if (neuPath != null) { File neuFile = new File(neuPath); try { logger.info("speichere Datei: " + neuFile.getAbsolutePath()); streamer.streamOut(rootCopy, neuFile); } catch (IOException ex) { logger.error(ex, ex); } } } saveConfigButton.setEnabled(false); projectTree.setContentChanged(false); } @Action public Task saveOutputText() { trigger = Trigger.getInstance(); JFileChooser fch = new JFileChooser("."); fch.resetChoosableFileFilters(); fch.addChoosableFileFilter(new NGFileFilter.TextFileFilter()); int fileChooserOption = 0; fileChooserOption = fch.showSaveDialog(outputPopupMenu); if (fileChooserOption == JFileChooser.APPROVE_OPTION) { try { if (Utils.testExistingFile(fch)) { File currentFile = fch.getSelectedFile(); String extension = Utils.getExtension(currentFile); if (!("." + extension).equals(".txt")) { currentFile = new File(currentFile.getName() + ".txt"); } saveText(currentFile); fch.setSelectedFile(currentFile); //statusMessageLabel.setText("saving: " + currentFile.getName()); trigger.setTextMessage("saving: " + currentFile.getName()); } } catch (Exception e) { logger.error(e, e); } } else { if (fch.getSelectedFile() != null) { //statusMessageLabel.setText("Cancelled saving " + fch.getSelectedFile().getName() + " due to your wish"); trigger.setTextMessage("Cancelled saving " + fch.getSelectedFile().getName() + " due to your wish"); } } return trigger; } public void saveText(File file) { try { FileWriter writer = new FileWriter(file); String text = this.taskOutput.getText(); writer.write(text); writer.flush(); writer.close(); } catch (IOException e) { logger.error(e, e); } } @Action public void clearTaskOutput() { taskOutput.setText(""); } @Action public void copyTaskOutput() { taskOutput.copy(); } @Action public void selectAllFromTaskOutput() { taskOutput.requestFocus(); taskOutput.selectAll(); } @Action public void quit() { if (projectTree == null) { // System.exit(0); } else if (projectTree.ableToClose()) { System.gc(); // System.exit(0); } else { System.gc(); // System.exit(0); } } private class NeuGenExitListener implements ExitListener { @Override public boolean canExit(EventObject event) { return projectTree.ableToClose(); } @Override public void willExit(EventObject event) { logger.info("bye"); } } private class ConfigTreePropertyChangeListener implements PropertyChangeListener { @Override public void propertyChange(PropertyChangeEvent evt) { if (neuGenExitListener != null) { NeuGenApp.getApplication().removeExitListener(neuGenExitListener); } neuGenExitListener = new NeuGenExitListener(); String strValue = evt.getNewValue().toString(); Boolean boolValue = Boolean.valueOf(strValue); if (boolValue.booleanValue() == true) { NeuGenApp.getApplication().addExitListener(neuGenExitListener); //neuGenApp.addExitListener(neuGenExitListener); saveConfigButton.setEnabled(true); saveMenuItem.setEnabled(true); } else { saveConfigButton.setEnabled(false); saveMenuItem.setEnabled(false); } //logger.info("number of exit list: " + neuGenApp.getExitListeners().length); } } }