/*
* Copyright (C) 2012 Gyver
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package com.gyver.matrixmover.gui;
import com.gyver.matrixmover.gui.component.FileTreeNode;
import com.gyver.matrixmover.core.Controller;
import com.gyver.matrixmover.core.MatrixData;
import com.gyver.matrixmover.core.SceneReader;
import com.gyver.matrixmover.core.VisualSetup;
import com.gyver.matrixmover.properties.PropertiesHelper;
import com.gyver.matrixmover.gui.listener.*;
import java.io.File;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JTree;
import javax.swing.event.TreeExpansionListener;
import javax.swing.filechooser.FileFilter;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreeNode;
/**
* This is a singelton. The Main frame of the MatrixMover gui. Holds all the panels
*
* @author Gyver
*/
public class Frame extends javax.swing.JFrame {
private PropertiesHelper ph = null;
private MatrixData md = null;
private static Frame instance = null;
private DefaultTreeModel treemodel = null;
/** Creates new form Frame */
private Frame() {
}
/**
* Returns the instance of this.
* @return
*/
public static Frame getFrameInstance() {
if (instance == null) {
instance = new Frame();
}
return instance;
}
/**
* Initiates this frame instance
* @param ph the properties helper
* @param cont the controller
*/
public void initFrame(PropertiesHelper ph, Controller cont) {
this.ph = ph;
this.md = cont.getMatrixData();
String dir = ph.getScenesDir();
FileTreeNode root = (FileTreeNode) buildTree(dir);
treemodel = new DefaultTreeModel(root);
initComponents();
leftLedScreen.init(ph, md);
rightLedScreen.init(ph, md);
masterLedScreen.init(ph, md);
cont.setLedScreens(leftLedScreen, rightLedScreen, masterLedScreen);
generatorSetupLeft.setup(Controller.LEFT_SIDE);
generatorSetupRight.setup(Controller.RIGHT_SIDE);
jTree1.setDoubleBuffered(true);
PopClickListener pcl = new PopClickListener(jTree1);
jTree1.addMouseListener(pcl);
HierarchyBrowserUpdater upd = new HierarchyBrowserUpdater(jTree1, root, treemodel, this);
jTree1.addTreeExpansionListener(upd);
}
/** 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() {
java.awt.GridBagConstraints gridBagConstraints;
masterSettings1 = new com.gyver.matrixmover.gui.MasterSettings();
jSplitPane1 = new javax.swing.JSplitPane();
panelMasterSide = new javax.swing.JPanel();
logo = new javax.swing.JLabel();
masterLedScreen = new com.gyver.matrixmover.gui.LedScreen();
masterPanel = new com.gyver.matrixmover.gui.MasterPanel();
masterSettings = new com.gyver.matrixmover.gui.MasterSettings();
jScrollPane1 = new javax.swing.JScrollPane();
jTree1 = new JTree(treemodel);
panelGeneratorSide = new javax.swing.JPanel();
panelLeftGenerator = new javax.swing.JPanel();
leftLedScreen = new com.gyver.matrixmover.gui.LedScreen();
generatorSetupLeft = new com.gyver.matrixmover.gui.GeneratorSetup();
bLoadLeft = new javax.swing.JButton();
bSaveLeft = new javax.swing.JButton();
bClearLeft = new javax.swing.JButton();
bRemoveGeneratorLeft = new javax.swing.JButton();
bAddGeneratorLeft = new javax.swing.JButton();
panelRightGenerator = new javax.swing.JPanel();
rightLedScreen = new com.gyver.matrixmover.gui.LedScreen();
generatorSetupRight = new com.gyver.matrixmover.gui.GeneratorSetup();
bLoadRight1 = new javax.swing.JButton();
bSaveRight1 = new javax.swing.JButton();
bClearRight1 = new javax.swing.JButton();
bRemoveGeneratorRight1 = new javax.swing.JButton();
bAddGeneratorRight1 = new javax.swing.JButton();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("MatrixMover");
setMinimumSize(new java.awt.Dimension(1150, 700));
setName("FrameMatrixMover"); // NOI18N
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
formWindowClosing(evt);
}
});
addComponentListener(new java.awt.event.ComponentAdapter() {
public void componentResized(java.awt.event.ComponentEvent evt) {
formComponentResized(evt);
}
});
getContentPane().setLayout(new java.awt.GridBagLayout());
jSplitPane1.setDividerSize(7);
jSplitPane1.setResizeWeight(0.22);
jSplitPane1.setContinuousLayout(true);
jSplitPane1.setDoubleBuffered(true);
panelMasterSide.setLayout(new java.awt.GridBagLayout());
logo.setIcon(new javax.swing.ImageIcon(getClass().getResource("/logo.png"))); // NOI18N
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelMasterSide.add(logo, gridBagConstraints);
masterLedScreen.setMinimumSize(new java.awt.Dimension(180, 180));
masterLedScreen.setPixelImage(new int[] {});
masterLedScreen.setPreferredSize(new java.awt.Dimension(180, 180));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
panelMasterSide.add(masterLedScreen, gridBagConstraints);
masterPanel.setMaximumSize(new java.awt.Dimension(270, 130));
masterPanel.setMinimumSize(new java.awt.Dimension(270, 130));
masterPanel.setPreferredSize(new java.awt.Dimension(270, 130));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelMasterSide.add(masterPanel, gridBagConstraints);
masterSettings.setMaximumSize(new java.awt.Dimension(2147483647, 150));
masterSettings.setMinimumSize(new java.awt.Dimension(111, 150));
masterSettings.setPreferredSize(new java.awt.Dimension(87, 150));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 3;
gridBagConstraints.fill = java.awt.GridBagConstraints.HORIZONTAL;
gridBagConstraints.insets = new java.awt.Insets(0, 5, 0, 5);
panelMasterSide.add(masterSettings, gridBagConstraints);
jScrollPane1.setViewportView(jTree1);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 4;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.5;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelMasterSide.add(jScrollPane1, gridBagConstraints);
jSplitPane1.setLeftComponent(panelMasterSide);
panelGeneratorSide.setLayout(new java.awt.GridBagLayout());
panelLeftGenerator.setLayout(new java.awt.GridBagLayout());
leftLedScreen.setMinimumSize(new java.awt.Dimension(120, 120));
leftLedScreen.setPreferredSize(new java.awt.Dimension(120, 120));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 0.6;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelLeftGenerator.add(leftLedScreen, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelLeftGenerator.add(generatorSetupLeft, gridBagConstraints);
bLoadLeft.setIcon(new javax.swing.ImageIcon(getClass().getResource("/folder.png"))); // NOI18N
bLoadLeft.setMaximumSize(new java.awt.Dimension(32, 32));
bLoadLeft.setMinimumSize(new java.awt.Dimension(32, 32));
bLoadLeft.setOpaque(false);
bLoadLeft.setPreferredSize(new java.awt.Dimension(32, 32));
bLoadLeft.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bLoadLeftActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 0);
panelLeftGenerator.add(bLoadLeft, gridBagConstraints);
bSaveLeft.setIcon(new javax.swing.ImageIcon(getClass().getResource("/save_as.png"))); // NOI18N
bSaveLeft.setMaximumSize(new java.awt.Dimension(32, 32));
bSaveLeft.setMinimumSize(new java.awt.Dimension(32, 32));
bSaveLeft.setPreferredSize(new java.awt.Dimension(32, 32));
bSaveLeft.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bSaveLeftActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelLeftGenerator.add(bSaveLeft, gridBagConstraints);
bClearLeft.setIcon(new javax.swing.ImageIcon(getClass().getResource("/delete_2.png"))); // NOI18N
bClearLeft.setMaximumSize(new java.awt.Dimension(32, 32));
bClearLeft.setMinimumSize(new java.awt.Dimension(32, 32));
bClearLeft.setPreferredSize(new java.awt.Dimension(32, 32));
bClearLeft.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bClearLeftActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelLeftGenerator.add(bClearLeft, gridBagConstraints);
bRemoveGeneratorLeft.setIcon(new javax.swing.ImageIcon(getClass().getResource("/minus_2.png"))); // NOI18N
bRemoveGeneratorLeft.setMaximumSize(new java.awt.Dimension(32, 32));
bRemoveGeneratorLeft.setMinimumSize(new java.awt.Dimension(32, 32));
bRemoveGeneratorLeft.setPreferredSize(new java.awt.Dimension(32, 32));
bRemoveGeneratorLeft.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bRemoveGeneratorLeftActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelLeftGenerator.add(bRemoveGeneratorLeft, gridBagConstraints);
bAddGeneratorLeft.setIcon(new javax.swing.ImageIcon(getClass().getResource("/plus_2.png"))); // NOI18N
bAddGeneratorLeft.setMaximumSize(new java.awt.Dimension(32, 32));
bAddGeneratorLeft.setMinimumSize(new java.awt.Dimension(32, 32));
bAddGeneratorLeft.setPreferredSize(new java.awt.Dimension(32, 32));
bAddGeneratorLeft.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bAddGeneratorLeftActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 0);
panelLeftGenerator.add(bAddGeneratorLeft, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
panelGeneratorSide.add(panelLeftGenerator, gridBagConstraints);
panelRightGenerator.setLayout(new java.awt.GridBagLayout());
rightLedScreen.setMinimumSize(new java.awt.Dimension(120, 120));
rightLedScreen.setPreferredSize(new java.awt.Dimension(120, 120));
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 0.6;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelRightGenerator.add(rightLedScreen, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 1;
gridBagConstraints.gridwidth = 5;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelRightGenerator.add(generatorSetupRight, gridBagConstraints);
bLoadRight1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/folder.png"))); // NOI18N
bLoadRight1.setMaximumSize(new java.awt.Dimension(32, 32));
bLoadRight1.setMinimumSize(new java.awt.Dimension(32, 32));
bLoadRight1.setOpaque(false);
bLoadRight1.setPreferredSize(new java.awt.Dimension(32, 32));
bLoadRight1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bLoadRight1ActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 0);
panelRightGenerator.add(bLoadRight1, gridBagConstraints);
bSaveRight1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/save_as.png"))); // NOI18N
bSaveRight1.setMaximumSize(new java.awt.Dimension(32, 32));
bSaveRight1.setMinimumSize(new java.awt.Dimension(32, 32));
bSaveRight1.setPreferredSize(new java.awt.Dimension(32, 32));
bSaveRight1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bSaveRight1ActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 2;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelRightGenerator.add(bSaveRight1, gridBagConstraints);
bClearRight1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/delete_2.png"))); // NOI18N
bClearRight1.setMaximumSize(new java.awt.Dimension(32, 32));
bClearRight1.setMinimumSize(new java.awt.Dimension(32, 32));
bClearRight1.setPreferredSize(new java.awt.Dimension(32, 32));
bClearRight1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bClearRight1ActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_END;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelRightGenerator.add(bClearRight1, gridBagConstraints);
bRemoveGeneratorRight1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/minus_2.png"))); // NOI18N
bRemoveGeneratorRight1.setMaximumSize(new java.awt.Dimension(32, 32));
bRemoveGeneratorRight1.setMinimumSize(new java.awt.Dimension(32, 32));
bRemoveGeneratorRight1.setPreferredSize(new java.awt.Dimension(32, 32));
bRemoveGeneratorRight1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bRemoveGeneratorRight1ActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 4;
gridBagConstraints.gridy = 2;
gridBagConstraints.anchor = java.awt.GridBagConstraints.LINE_START;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.insets = new java.awt.Insets(5, 5, 5, 5);
panelRightGenerator.add(bRemoveGeneratorRight1, gridBagConstraints);
bAddGeneratorRight1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/plus_2.png"))); // NOI18N
bAddGeneratorRight1.setMaximumSize(new java.awt.Dimension(32, 32));
bAddGeneratorRight1.setMinimumSize(new java.awt.Dimension(32, 32));
bAddGeneratorRight1.setPreferredSize(new java.awt.Dimension(32, 32));
bAddGeneratorRight1.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
bAddGeneratorRight1ActionPerformed(evt);
}
});
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 3;
gridBagConstraints.gridy = 2;
gridBagConstraints.insets = new java.awt.Insets(5, 10, 5, 0);
panelRightGenerator.add(bAddGeneratorRight1, gridBagConstraints);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 1;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
panelGeneratorSide.add(panelRightGenerator, gridBagConstraints);
jSplitPane1.setRightComponent(panelGeneratorSide);
gridBagConstraints = new java.awt.GridBagConstraints();
gridBagConstraints.gridx = 0;
gridBagConstraints.gridy = 0;
gridBagConstraints.fill = java.awt.GridBagConstraints.BOTH;
gridBagConstraints.weightx = 1.0;
gridBagConstraints.weighty = 1.0;
getContentPane().add(jSplitPane1, gridBagConstraints);
pack();
}// </editor-fold>//GEN-END:initComponents
private void formComponentResized(java.awt.event.ComponentEvent evt) {//GEN-FIRST:event_formComponentResized
leftLedScreen.recomputePixelSize();
leftLedScreen.repaint();
rightLedScreen.recomputePixelSize();
rightLedScreen.repaint();
masterLedScreen.recomputePixelSize();
masterLedScreen.repaint();
}//GEN-LAST:event_formComponentResized
private void formWindowClosing(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosing
// Controller.getControllerInstance().saveScenes();
}//GEN-LAST:event_formWindowClosing
private void bAddGeneratorLeftActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bAddGeneratorLeftActionPerformed
Controller.getControllerInstance().getActiveVisualSetup(Controller.LEFT_SIDE).addGeneratorSetup(md);
generatorSetupLeft.buildGuiFromVisualSetup();
}//GEN-LAST:event_bAddGeneratorLeftActionPerformed
private void bRemoveGeneratorLeftActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bRemoveGeneratorLeftActionPerformed
Controller.getControllerInstance().getActiveVisualSetup(Controller.LEFT_SIDE).removeLastVisualSetup();
generatorSetupLeft.buildGuiFromVisualSetup();
}//GEN-LAST:event_bRemoveGeneratorLeftActionPerformed
private void bAddGeneratorRight1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bAddGeneratorRight1ActionPerformed
Controller.getControllerInstance().getActiveVisualSetup(Controller.RIGHT_SIDE).addGeneratorSetup(md);
generatorSetupRight.buildGuiFromVisualSetup();
}//GEN-LAST:event_bAddGeneratorRight1ActionPerformed
private void bRemoveGeneratorRight1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bRemoveGeneratorRight1ActionPerformed
Controller.getControllerInstance().getActiveVisualSetup(Controller.RIGHT_SIDE).removeLastVisualSetup();
generatorSetupRight.buildGuiFromVisualSetup();
}//GEN-LAST:event_bRemoveGeneratorRight1ActionPerformed
private void bClearLeftActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bClearLeftActionPerformed
Object[] options = {"Yes", "no"};
int n = JOptionPane.showOptionDialog(this, "Clear the whole scene?", "Clear Scene?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]);
if (n == JOptionPane.YES_OPTION) {
Controller.getControllerInstance().getActiveVisualSetup(Controller.LEFT_SIDE).clear();
generatorSetupLeft.buildGuiFromVisualSetup();
}
}//GEN-LAST:event_bClearLeftActionPerformed
private void bClearRight1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bClearRight1ActionPerformed
Object[] options = {"Yes", "no"};
int n = JOptionPane.showOptionDialog(this, "Clear the whole scene?", "Clear Scene?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]);
if (n == JOptionPane.YES_OPTION) {
Controller.getControllerInstance().getActiveVisualSetup(Controller.RIGHT_SIDE).clear();
generatorSetupRight.buildGuiFromVisualSetup();
}
}//GEN-LAST:event_bClearRight1ActionPerformed
private void bSaveLeftActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bSaveLeftActionPerformed
saveVisualSetup(Controller.LEFT_SIDE);
}//GEN-LAST:event_bSaveLeftActionPerformed
private void bLoadLeftActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bLoadLeftActionPerformed
loadVisualSetup(Controller.LEFT_SIDE);
}//GEN-LAST:event_bLoadLeftActionPerformed
private void bSaveRight1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bSaveRight1ActionPerformed
saveVisualSetup(Controller.RIGHT_SIDE);
}//GEN-LAST:event_bSaveRight1ActionPerformed
private void bLoadRight1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_bLoadRight1ActionPerformed
loadVisualSetup(Controller.RIGHT_SIDE);
}//GEN-LAST:event_bLoadRight1ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton bAddGeneratorLeft;
private javax.swing.JButton bAddGeneratorRight1;
private javax.swing.JButton bClearLeft;
private javax.swing.JButton bClearRight1;
private javax.swing.JButton bLoadLeft;
private javax.swing.JButton bLoadRight1;
private javax.swing.JButton bRemoveGeneratorLeft;
private javax.swing.JButton bRemoveGeneratorRight1;
private javax.swing.JButton bSaveLeft;
private javax.swing.JButton bSaveRight1;
private com.gyver.matrixmover.gui.GeneratorSetup generatorSetupLeft;
private com.gyver.matrixmover.gui.GeneratorSetup generatorSetupRight;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JTree jTree1;
private com.gyver.matrixmover.gui.LedScreen leftLedScreen;
private javax.swing.JLabel logo;
private com.gyver.matrixmover.gui.LedScreen masterLedScreen;
private com.gyver.matrixmover.gui.MasterPanel masterPanel;
private com.gyver.matrixmover.gui.MasterSettings masterSettings;
private com.gyver.matrixmover.gui.MasterSettings masterSettings1;
private javax.swing.JPanel panelGeneratorSide;
private javax.swing.JPanel panelLeftGenerator;
private javax.swing.JPanel panelMasterSide;
private javax.swing.JPanel panelRightGenerator;
private com.gyver.matrixmover.gui.LedScreen rightLedScreen;
// End of variables declaration//GEN-END:variables
/**
* Returns the left generator panel
* @return the panel
*/
public GeneratorPanel getLeftGeneratorPanel() {
return null;//this.effectPanelLeft;
}
/**
* Returns the right generator panel
* @return the panel
*/
public GeneratorPanel getRightGeneratorPanel() {
return null;//this.effectPanelRight;
}
/**
* Returns the left generator setup panel
* @return the panel
*/
public GeneratorSetup getLeftGeneratorSetup() {
return this.generatorSetupLeft;
}
/**
* Returns the right generator setup panel
* @return the panel
*/
public GeneratorSetup getRightGeneratorSetup() {
return this.generatorSetupRight;
}
/**
* Returns the master panel
* @return the panel
*/
public com.gyver.matrixmover.gui.MasterPanel getMasterPanel() {
return masterPanel;
}
/**
* Sets the audio level
* @param level the level
*/
public void setAudioLevel(float[] level) {
this.masterSettings.setAudioLevel(level);
}
/**
* Shows a warning to the user.
* @param string the warning to display
*/
public void showWarning(String string) {
JOptionPane.showMessageDialog(this, string, "Warning", JOptionPane.WARNING_MESSAGE);
}
private TreeNode buildTree(String dir) {
FileTreeNode root = new FileTreeNode(new File(dir));
root.readTree(false);
return (TreeNode) root;
}
private void saveVisualSetup(int side) {
JFileChooser chooser = new JFileChooser(ph.getScenesDir());
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.addChoosableFileFilter(new FileFilter() {
@Override
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
return f.getName().toLowerCase().endsWith(".mms");
}
@Override
public String getDescription() {
return "MatrixMover Scene";
}
});
chooser.setMultiSelectionEnabled(false);
if (chooser.showSaveDialog(this) == JFileChooser.APPROVE_OPTION) {
VisualSetup vs = Controller.getControllerInstance().getActiveVisualSetup(side);
File f = chooser.getSelectedFile();
System.out.println(f);
if (!f.toString().endsWith(".mms")) {
f = new File(f.toString() + ".mms");
System.out.println("renamed to: " + f);
}
SceneReader.saveVisualSetup(vs, f);
String dir = ph.getScenesDir();
FileTreeNode root = (FileTreeNode) buildTree(dir);
treemodel = new DefaultTreeModel(root);
jTree1.setModel(treemodel);
treemodel.reload();
for (TreeExpansionListener tel : jTree1.getTreeExpansionListeners()) {
jTree1.removeTreeExpansionListener(tel);
}
HierarchyBrowserUpdater upd = new HierarchyBrowserUpdater(jTree1, root, treemodel, this);
jTree1.addTreeExpansionListener(upd);
}
}
private void loadVisualSetup(int side) {
JFileChooser chooser = new JFileChooser(ph.getScenesDir());
chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
chooser.addChoosableFileFilter(new FileFilter() {
@Override
public boolean accept(File f) {
if (f.isDirectory()) {
return true;
}
return f.getName().toLowerCase().endsWith(".mms");
}
@Override
public String getDescription() {
return "MatrixMover Scene";
}
});
chooser.setMultiSelectionEnabled(false);
if (chooser.showOpenDialog(this) == JFileChooser.APPROVE_OPTION) {
File f = chooser.getSelectedFile();
Controller.getControllerInstance().setVisualSetup(SceneReader.loadVisualSetup(f, md), side);
}
}
}