/*
* Copyright (C) 2006-2007 Gabriel Burca (gburca dash virtmus at ebixio dot com)
*
* 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 2
* 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, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
package com.ebixio.virtmus.options;
import com.ebixio.virtmus.MainApp;
import java.awt.Frame;
import java.io.File;
import java.util.Enumeration;
import java.util.prefs.Preferences;
import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
import javax.swing.JFileChooser;
import javax.swing.SpinnerNumberModel;
import org.openide.util.NbPreferences;
import org.openide.windows.WindowManager;
final class VirtmusPanel extends javax.swing.JPanel {
private final VirtmusOptionsPanelController controller;
private final Preferences pref = NbPreferences.forModule(MainApp.class);
VirtmusPanel(VirtmusOptionsPanelController controller) {
this.controller = controller;
initComponents();
this.openGLOptions.setVisible(false);
pageScrollPercentage.setModel(new SpinnerNumberModel(new Float(0), new Float(0), new Float(100), new Float(1)));
// Can listen to changes in form fields and call controller.changed()
// Only need to do this if we want the changes to be noticed before the user selects "OK"
}
/** 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.
*/
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
private void initComponents() {
orientationButtonGroup = new javax.swing.ButtonGroup();
scrollDirGroup = new javax.swing.ButtonGroup();
jLabel1 = new javax.swing.JLabel();
playListDir = new javax.swing.JTextField();
playListDirChange = new javax.swing.JButton();
jPanel1 = new javax.swing.JPanel();
jToggleButton1 = new javax.swing.JToggleButton();
jToggleButton2 = new javax.swing.JToggleButton();
jToggleButton3 = new javax.swing.JToggleButton();
jToggleButton4 = new javax.swing.JToggleButton();
jLabel2 = new javax.swing.JLabel();
songDir = new javax.swing.JTextField();
songDirChange = new javax.swing.JButton();
jPanel3 = new javax.swing.JPanel();
jPanel2 = new javax.swing.JPanel();
scrollVertical = new javax.swing.JToggleButton();
scrollHorizontal = new javax.swing.JToggleButton();
jLabel3 = new javax.swing.JLabel();
pageScrollPercentage = new javax.swing.JSpinner();
jLabel4 = new javax.swing.JLabel();
openGLOptions = new javax.swing.JPanel();
useOpenGL = new javax.swing.JCheckBox();
jLabel5 = new javax.swing.JLabel();
svgEditor = new javax.swing.JTextField();
svgEditorChange = new javax.swing.JButton();
jTextField1 = new javax.swing.JTextField();
setBackground(new java.awt.Color(255, 255, 255));
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, "PlayList Directory:");
playListDir.setText("jTextField1");
org.openide.awt.Mnemonics.setLocalizedText(playListDirChange, "Change...");
playListDirChange.setActionCommand("ChangePlayListDir");
playListDirChange.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
changeButtonAction(evt);
}
});
jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder("Display orientation"));
jPanel1.setOpaque(false);
orientationButtonGroup.add(jToggleButton1);
jToggleButton1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/ebixio/virtmus/resources/Clef-000.png"))); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jToggleButton1, "Normal");
jToggleButton1.setActionCommand(Options.Rotation.Clockwise_0.toString());
jToggleButton1.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jToggleButton1.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
orientationButtonGroup.add(jToggleButton2);
jToggleButton2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/ebixio/virtmus/resources/Clef-090.png"))); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jToggleButton2, "Clockwise 90");
jToggleButton2.setActionCommand(Options.Rotation.Clockwise_90.toString());
jToggleButton2.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jToggleButton2.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
orientationButtonGroup.add(jToggleButton3);
jToggleButton3.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/ebixio/virtmus/resources/Clef-180.png"))); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jToggleButton3, "Upside Down");
jToggleButton3.setActionCommand(Options.Rotation.Clockwise_180.toString());
jToggleButton3.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jToggleButton3.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
orientationButtonGroup.add(jToggleButton4);
jToggleButton4.setIcon(new javax.swing.ImageIcon(getClass().getResource("/com/ebixio/virtmus/resources/Clef-270.png"))); // NOI18N
jToggleButton4.setSelected(true);
org.openide.awt.Mnemonics.setLocalizedText(jToggleButton4, "Clockwise 270");
jToggleButton4.setActionCommand(Options.Rotation.Clockwise_270.toString());
jToggleButton4.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
jToggleButton4.setVerticalTextPosition(javax.swing.SwingConstants.BOTTOM);
javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1);
jPanel1.setLayout(jPanel1Layout);
jPanel1Layout.setHorizontalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addComponent(jToggleButton1, javax.swing.GroupLayout.DEFAULT_SIZE, 105, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jToggleButton2, javax.swing.GroupLayout.PREFERRED_SIZE, 105, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jToggleButton3, javax.swing.GroupLayout.PREFERRED_SIZE, 105, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jToggleButton4, javax.swing.GroupLayout.PREFERRED_SIZE, 107, Short.MAX_VALUE)
.addContainerGap())
);
jPanel1Layout.setVerticalGroup(
jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel1Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jToggleButton1)
.addComponent(jToggleButton2)
.addComponent(jToggleButton3)
.addComponent(jToggleButton4))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
org.openide.awt.Mnemonics.setLocalizedText(jLabel2, "Songs Directory:");
songDir.setText("jTextField1");
org.openide.awt.Mnemonics.setLocalizedText(songDirChange, "Change...");
songDirChange.setActionCommand("ChangeSongDir");
songDirChange.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
changeButtonAction(evt);
}
});
jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder("Page scroll"));
jPanel3.setFocusable(false);
jPanel3.setOpaque(false);
jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder("Direction"));
jPanel2.setOpaque(false);
scrollDirGroup.add(scrollVertical);
scrollVertical.setSelected(true);
org.openide.awt.Mnemonics.setLocalizedText(scrollVertical, "Vertical");
scrollVertical.setActionCommand(Options.ScrollDir.Vertical.toString());
scrollDirGroup.add(scrollHorizontal);
org.openide.awt.Mnemonics.setLocalizedText(scrollHorizontal, "Horizontal");
scrollHorizontal.setActionCommand(Options.ScrollDir.Horizontal.toString());
javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);
jPanel2.setLayout(jPanel2Layout);
jPanel2Layout.setHorizontalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addComponent(scrollVertical)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 80, Short.MAX_VALUE)
.addComponent(scrollHorizontal)
.addContainerGap())
);
jPanel2Layout.setVerticalGroup(
jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel2Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(scrollVertical)
.addComponent(scrollHorizontal))
.addContainerGap(15, Short.MAX_VALUE))
);
jLabel3.setLabelFor(pageScrollPercentage);
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, "Scroll percentage:");
org.openide.awt.Mnemonics.setLocalizedText(jLabel4, "Use \"0\" to scroll one page at a time.");
openGLOptions.setBorder(javax.swing.BorderFactory.createTitledBorder("OpenGL"));
openGLOptions.setOpaque(false);
org.openide.awt.Mnemonics.setLocalizedText(useOpenGL, "Use OpenGL");
useOpenGL.setBorder(javax.swing.BorderFactory.createEmptyBorder(0, 0, 0, 0));
javax.swing.GroupLayout openGLOptionsLayout = new javax.swing.GroupLayout(openGLOptions);
openGLOptions.setLayout(openGLOptionsLayout);
openGLOptionsLayout.setHorizontalGroup(
openGLOptionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(openGLOptionsLayout.createSequentialGroup()
.addContainerGap()
.addComponent(useOpenGL)
.addContainerGap(82, Short.MAX_VALUE))
);
openGLOptionsLayout.setVerticalGroup(
openGLOptionsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(openGLOptionsLayout.createSequentialGroup()
.addContainerGap()
.addComponent(useOpenGL)
.addContainerGap(23, Short.MAX_VALUE))
);
javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);
jPanel3.setLayout(jPanel3Layout);
jPanel3Layout.setHorizontalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(pageScrollPercentage, javax.swing.GroupLayout.PREFERRED_SIZE, 58, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jLabel4))
.addGroup(jPanel3Layout.createSequentialGroup()
.addComponent(jPanel2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(openGLOptions, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addContainerGap())
);
jPanel3Layout.setVerticalGroup(
jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(jPanel3Layout.createSequentialGroup()
.addContainerGap()
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel3)
.addComponent(pageScrollPercentage, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addComponent(openGLOptions, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jPanel2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
org.openide.awt.Mnemonics.setLocalizedText(jLabel5, "SVG Editor:");
svgEditor.setText("jTextField1");
org.openide.awt.Mnemonics.setLocalizedText(svgEditorChange, "Change...");
svgEditorChange.setActionCommand("ChangeSvgEditor");
svgEditorChange.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
changeSvgEditorAction(evt);
}
});
jTextField1.setEditable(false);
jTextField1.setText("Download a free SVG editor from: http://www.inkscape.org/");
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jPanel3, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jLabel1)
.addComponent(jLabel2))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(playListDir, javax.swing.GroupLayout.DEFAULT_SIZE, 313, Short.MAX_VALUE)
.addComponent(songDir, javax.swing.GroupLayout.DEFAULT_SIZE, 313, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addComponent(songDirChange, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(playListDirChange, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)))
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jTextField1, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE)
.addComponent(svgEditor, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 340, Short.MAX_VALUE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(svgEditorChange)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(playListDirChange)
.addComponent(playListDir, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel2)
.addComponent(songDirChange)
.addComponent(songDir, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jPanel3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel5)
.addComponent(svgEditorChange)
.addComponent(svgEditor, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jTextField1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
}// </editor-fold>//GEN-END:initComponents
private void changeButtonAction(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_changeButtonAction
final Frame mainWindow = WindowManager.getDefault().getMainWindow();
final JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
fc.setMultiSelectionEnabled(false);
File currentDir;
if (evt.getActionCommand().equals("ChangePlayListDir")) {
currentDir = new File(playListDir.getText());
} else {
currentDir = new File(songDir.getText());
}
if (currentDir.exists() && currentDir.isDirectory()) {
fc.setCurrentDirectory(currentDir);
}
int returnVal = fc.showOpenDialog(mainWindow);
if (returnVal == JFileChooser.APPROVE_OPTION) {
if (evt.getActionCommand().equals("ChangePlayListDir")) {
playListDir.setText( fc.getSelectedFile().toString() );
} else {
songDir.setText( fc.getSelectedFile().toString() );
}
}
}//GEN-LAST:event_changeButtonAction
private void changeSvgEditorAction(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_changeSvgEditorAction
final Frame mainWindow = WindowManager.getDefault().getMainWindow();
final JFileChooser fc = new JFileChooser();
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
fc.setMultiSelectionEnabled(false);
int returnVal = fc.showOpenDialog(mainWindow);
if (returnVal == JFileChooser.APPROVE_OPTION) {
if (evt.getActionCommand().equals("ChangeSvgEditor")) {
svgEditor.setText( fc.getSelectedFile().toString() );
}
}
}//GEN-LAST:event_changeSvgEditorAction
// See: http://blogs.sun.com/geertjan/entry/preferences_api_and_netbeans_ide1
// See: http://blogs.sun.com/geertjan/entry/preferences_api_and_netbeans_ide
void load() {
String inkscape = "C:\\Program Files\\Inkscape\\Inkscape.exe";
File f = new File(inkscape);
if (!f.canExecute()) {
inkscape = "";
}
playListDir.setText(pref.get(Options.OptPlayListDir, ""));
songDir.setText(pref.get(Options.OptSongDir, ""));
svgEditor.setText(pref.get(Options.OptSvgEditor, inkscape));
pageScrollPercentage.setValue(Float.parseFloat(pref.get(Options.OptPageScrollAmount, "100.0")));
String orientation = pref.get(Options.OptScreenRot, Options.findInstance().screenRot.toString());
enableOptionButton(orientationButtonGroup.getElements(), orientation);
String scrollDir = pref.get(Options.OptPageScrollDir, Options.findInstance().scrollDir.toString());
enableOptionButton(scrollDirGroup.getElements(), scrollDir);
useOpenGL.setSelected(Boolean.parseBoolean(pref.get(Options.OptUseOpenGL, "false")));
}
private void enableOptionButton(Enumeration<AbstractButton> buttonEnum, String option) {
while (buttonEnum.hasMoreElements()) {
AbstractButton b = buttonEnum.nextElement();
if (option.equals(b.getActionCommand())) {
b.setSelected(true);
break;
}
}
}
void store() {
// Save changes only if it's different so that we only trigger listener
// notification if a change was really made.
if (! pref.get(Options.OptPlayListDir, "").equals(playListDir.getText()) ) {
pref.put(Options.OptPlayListDir, playListDir.getText());
}
if (! pref.get(Options.OptSongDir, "").equals(songDir.getText()) ) {
pref.put(Options.OptSongDir, songDir.getText());
}
if (! pref.get(Options.OptSvgEditor, "").equals(svgEditor.getText()) ) {
pref.put(Options.OptSvgEditor, svgEditor.getText());
}
float scrollPercentage = Float.parseFloat(pref.get(Options.OptPageScrollAmount, "0"));
Number currentScroll = (Number) pageScrollPercentage.getValue();
if (scrollPercentage != currentScroll.floatValue()) {
pref.put(Options.OptPageScrollAmount, Float.toString(currentScroll.floatValue()) );
}
Options.findInstance().screenRot = Options.Rotation.valueOf(
saveOption(Options.OptScreenRot, Options.findInstance().screenRot.toString(), orientationButtonGroup));
Options.findInstance().scrollDir = Options.ScrollDir.valueOf(
saveOption(Options.OptPageScrollDir, Options.findInstance().scrollDir.toString(), scrollDirGroup));
Boolean oldUseOpenGL = Boolean.parseBoolean(pref.get(Options.OptUseOpenGL, "false"));
if (oldUseOpenGL != useOpenGL.isSelected()) {
pref.put(Options.OptUseOpenGL, Boolean.toString(useOpenGL.isSelected()));
}
}
private String saveOption(String optionName, String defaultValue, ButtonGroup buttonGroup) {
String newOption = buttonGroup.getSelection().getActionCommand();
String oldOption = pref.get(optionName, defaultValue);
if (! oldOption.equals(newOption)) {
pref.put(optionName, newOption);
}
return newOption;
}
boolean valid() {
// TODO check whether form is consistent and complete
return true;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JPanel jPanel1;
private javax.swing.JPanel jPanel2;
private javax.swing.JPanel jPanel3;
private javax.swing.JTextField jTextField1;
private javax.swing.JToggleButton jToggleButton1;
private javax.swing.JToggleButton jToggleButton2;
private javax.swing.JToggleButton jToggleButton3;
private javax.swing.JToggleButton jToggleButton4;
private javax.swing.JPanel openGLOptions;
private javax.swing.ButtonGroup orientationButtonGroup;
private javax.swing.JSpinner pageScrollPercentage;
private javax.swing.JTextField playListDir;
private javax.swing.JButton playListDirChange;
private javax.swing.ButtonGroup scrollDirGroup;
private javax.swing.JToggleButton scrollHorizontal;
private javax.swing.JToggleButton scrollVertical;
private javax.swing.JTextField songDir;
private javax.swing.JButton songDirChange;
private javax.swing.JTextField svgEditor;
private javax.swing.JButton svgEditorChange;
private javax.swing.JCheckBox useOpenGL;
// End of variables declaration//GEN-END:variables
}