/*
Copyright 2008-2010 Gephi
Authors : Mathieu Bastian <mathieu.bastian@gephi.org>
Website : http://www.gephi.org
This file is part of Gephi.
Gephi is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
Gephi 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 Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with Gephi. If not, see <http://www.gnu.org/licenses/>.
*/
package org.gephi.visualization.options;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.prefs.BackingStoreException;
import org.gephi.ui.components.JColorButton;
import org.gephi.ui.utils.ColorUtils;
import org.gephi.ui.utils.PrefsUtils;
import org.gephi.visualization.VizController;
import org.gephi.visualization.apiimpl.VizConfig;
import org.gephi.visualization.config.GraphicalConfiguration;
import org.gephi.visualization.opengl.Lighting;
import org.gephi.visualization.opengl.Lighting.Light;
import org.openide.util.Exceptions;
import org.openide.util.NbPreferences;
final class OpenGLPanel extends javax.swing.JPanel {
private final OpenGLOptionsPanelController controller;
//Settings
private int antiAliasing = 0;
OpenGLPanel(OpenGLOptionsPanelController controller) {
this.controller = controller;
initComponents();
antialisaingCombobox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent arg0) {
if (antialisaingCombobox.getSelectedIndex() > 0) {
antiAliasing = (int) Math.pow(2, antialisaingCombobox.getSelectedIndex());
} else {
antiAliasing = 0;
}
}
});
((JColorButton) ambientAmbiantColorButton).setIncludeOpacity(true);
((JColorButton) ambientDiffuseColorButton).setIncludeOpacity(true);
((JColorButton) ambientSpecularColorButton).setIncludeOpacity(true);
((JColorButton) light1AmbiantColorButton).setIncludeOpacity(true);
((JColorButton) light1DiffuseColorButton).setIncludeOpacity(true);
((JColorButton) light1SpecularColorButton).setIncludeOpacity(true);
((JColorButton) light2AmbiantColorButton).setIncludeOpacity(true);
((JColorButton) light2DiffuseColorButton).setIncludeOpacity(true);
((JColorButton) light2SpecularColorButton).setIncludeOpacity(true);
((JColorButton) light3AmbiantColorButton).setIncludeOpacity(true);
((JColorButton) light3DiffuseColorButton).setIncludeOpacity(true);
((JColorButton) light3SpecularColorButton).setIncludeOpacity(true);
}
/** 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() {
java.awt.GridBagConstraints gridBagConstraints;
jXTitledSeparator1 = new org.jdesktop.swingx.JXTitledSeparator();
labelAntialiasing = new javax.swing.JLabel();
antialisaingCombobox = new javax.swing.JComboBox();
labelShow = new javax.swing.JLabel();
fpsCheckbox = new javax.swing.JCheckBox();
jXTitledSeparator3 = new org.jdesktop.swingx.JXTitledSeparator();
labelAmbiant = new javax.swing.JLabel();
ambientDiffuseColorButton = new JColorButton(Color.BLACK);
ambientSpecularColorButton = new JColorButton(Color.BLACK);
ambientAmbiantColorButton = new JColorButton(Color.BLACK);
labelDirectional = new javax.swing.JLabel();
light1AmbiantColorButton = new JColorButton(Color.BLACK);
light1DiffuseColorButton = new JColorButton(Color.BLACK);
light1SpecularColorButton = new JColorButton(Color.BLACK);
light1Checkbox = new javax.swing.JCheckBox();
light2Checkbox = new javax.swing.JCheckBox();
light2AmbiantColorButton = new JColorButton(Color.BLACK);
light2DiffuseColorButton = new JColorButton(Color.BLACK);
light2SpecularColorButton = new JColorButton(Color.BLACK);
light3Checkbox = new javax.swing.JCheckBox();
light3AmbiantColorButton = new JColorButton(Color.BLACK);
light3DiffuseColorButton = new JColorButton(Color.BLACK);
light3SpecularColorButton = new JColorButton(Color.BLACK);
light1XPosition = new javax.swing.JSpinner();
jLabel1 = new javax.swing.JLabel();
light1YPosition = new javax.swing.JSpinner();
jLabel2 = new javax.swing.JLabel();
light1ZPosition = new javax.swing.JSpinner();
jLabel3 = new javax.swing.JLabel();
jLabel4 = new javax.swing.JLabel();
light2XPosition = new javax.swing.JSpinner();
jLabel5 = new javax.swing.JLabel();
light2YPosition = new javax.swing.JSpinner();
jLabel6 = new javax.swing.JLabel();
light2ZPosition = new javax.swing.JSpinner();
jLabel7 = new javax.swing.JLabel();
light3XPosition = new javax.swing.JSpinner();
jLabel8 = new javax.swing.JLabel();
light3YPosition = new javax.swing.JSpinner();
jLabel9 = new javax.swing.JLabel();
light3ZPosition = new javax.swing.JSpinner();
resetButton = new javax.swing.JButton();
jLabel10 = new javax.swing.JLabel();
openglInfoPanel = new javax.swing.JPanel();
openInfoText = new javax.swing.JTextArea();
jXTitledSeparator1.setTitle(org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jXTitledSeparator1.title")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(labelAntialiasing, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.labelAntialiasing.text")); // NOI18N
antialisaingCombobox.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "0x", "2x", "4x", "8x", "16x" }));
org.openide.awt.Mnemonics.setLocalizedText(labelShow, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.labelShow.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(fpsCheckbox, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.fpsCheckbox.text")); // NOI18N
fpsCheckbox.setMargin(new java.awt.Insets(2, 0, 2, 2));
jXTitledSeparator3.setTitle(org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jXTitledSeparator3.title")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(labelAmbiant, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.labelAmbiant.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(ambientDiffuseColorButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.ambientDiffuseColorButton.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(ambientSpecularColorButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.ambientSpecularColorButton.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(ambientAmbiantColorButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.ambientAmbiantColorButton.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(labelDirectional, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.labelDirectional.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(light1AmbiantColorButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.light1AmbiantColorButton.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(light1DiffuseColorButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.light1DiffuseColorButton.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(light1SpecularColorButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.light1SpecularColorButton.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(light1Checkbox, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.light1Checkbox.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(light2Checkbox, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.light2Checkbox.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(light2AmbiantColorButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.light2AmbiantColorButton.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(light2DiffuseColorButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.light2DiffuseColorButton.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(light2SpecularColorButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.light2SpecularColorButton.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(light3Checkbox, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.light3Checkbox.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(light3AmbiantColorButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.light3AmbiantColorButton.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(light3DiffuseColorButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.light3DiffuseColorButton.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(light3SpecularColorButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.light3SpecularColorButton.text")); // NOI18N
light1XPosition.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.0f), null, null, Float.valueOf(0.1f)));
org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jLabel1.text")); // NOI18N
light1YPosition.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.0f), null, null, Float.valueOf(0.1f)));
org.openide.awt.Mnemonics.setLocalizedText(jLabel2, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jLabel2.text")); // NOI18N
light1ZPosition.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.0f), null, null, Float.valueOf(0.1f)));
org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jLabel3.text")); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel4, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jLabel4.text")); // NOI18N
light2XPosition.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.0f), null, null, Float.valueOf(0.1f)));
org.openide.awt.Mnemonics.setLocalizedText(jLabel5, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jLabel5.text")); // NOI18N
light2YPosition.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.0f), null, null, Float.valueOf(0.1f)));
org.openide.awt.Mnemonics.setLocalizedText(jLabel6, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jLabel6.text")); // NOI18N
light2ZPosition.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.0f), null, null, Float.valueOf(0.1f)));
org.openide.awt.Mnemonics.setLocalizedText(jLabel7, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jLabel7.text")); // NOI18N
light3XPosition.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.0f), null, null, Float.valueOf(0.1f)));
org.openide.awt.Mnemonics.setLocalizedText(jLabel8, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jLabel8.text")); // NOI18N
light3YPosition.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.0f), null, null, Float.valueOf(0.1f)));
org.openide.awt.Mnemonics.setLocalizedText(jLabel9, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jLabel9.text")); // NOI18N
light3ZPosition.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.0f), null, null, Float.valueOf(0.1f)));
org.openide.awt.Mnemonics.setLocalizedText(resetButton, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.resetButton.text")); // NOI18N
resetButton.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
resetButtonActionPerformed(evt);
}
});
jLabel10.setFont(new java.awt.Font("Tahoma", 0, 10)); // NOI18N
org.openide.awt.Mnemonics.setLocalizedText(jLabel10, org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jLabel10.text")); // NOI18N
jLabel10.setForeground(new java.awt.Color(102, 102, 102));
openglInfoPanel.setLayout(new java.awt.GridBagLayout());
openInfoText.setColumns(5);
openInfoText.setEditable(false);
openInfoText.setFont(new java.awt.Font("Monospaced", 0, 11)); // NOI18N
openInfoText.setRows(3);
openInfoText.setText("Vendor\nModel\nVersion"); // NOI18N
openInfoText.setOpaque(false);
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;
openglInfoPanel.add(openInfoText, gridBagConstraints);
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(jXTitledSeparator1, javax.swing.GroupLayout.DEFAULT_SIZE, 630, Short.MAX_VALUE)
.addComponent(resetButton)
.addGroup(layout.createSequentialGroup()
.addGap(10, 10, 10)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(labelAmbiant)
.addComponent(labelDirectional))
.addGap(21, 21, 21)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(light2Checkbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light2AmbiantColorButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light2DiffuseColorButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light2SpecularColorButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel4)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light2XPosition, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel5)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light2YPosition, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel6)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light2ZPosition, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addComponent(light3Checkbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light3AmbiantColorButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light3DiffuseColorButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light3SpecularColorButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel7)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light3XPosition, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel8)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light3YPosition, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel9)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light3ZPosition, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(layout.createSequentialGroup()
.addComponent(ambientAmbiantColorButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ambientDiffuseColorButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(ambientSpecularColorButton))
.addGroup(layout.createSequentialGroup()
.addComponent(light1Checkbox)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light1AmbiantColorButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light1DiffuseColorButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light1SpecularColorButton)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light1XPosition, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light1YPosition, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(jLabel3)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(light1ZPosition, javax.swing.GroupLayout.PREFERRED_SIZE, 46, javax.swing.GroupLayout.PREFERRED_SIZE))))
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jXTitledSeparator3, javax.swing.GroupLayout.DEFAULT_SIZE, 424, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addGap(10, 10, 10)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(labelShow, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(labelAntialiasing))
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(20, 20, 20)
.addComponent(fpsCheckbox))
.addGroup(layout.createSequentialGroup()
.addGap(18, 18, 18)
.addComponent(antialisaingCombobox, 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.LEADING, false)
.addComponent(openglInfoPanel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(jLabel10, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jXTitledSeparator1, 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.LEADING)
.addComponent(openglInfoPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 86, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(labelAntialiasing)
.addComponent(antialisaingCombobox))
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(labelShow, javax.swing.GroupLayout.DEFAULT_SIZE, 23, Short.MAX_VALUE)
.addComponent(fpsCheckbox))))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(jXTitledSeparator3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel10))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(labelAmbiant)
.addComponent(ambientDiffuseColorButton)
.addComponent(ambientAmbiantColorButton)
.addComponent(ambientSpecularColorButton))
.addGap(13, 13, 13)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(light1DiffuseColorButton)
.addComponent(light1AmbiantColorButton)
.addComponent(light1SpecularColorButton)
.addComponent(labelDirectional)
.addComponent(light1Checkbox)
.addComponent(light1XPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel1)
.addComponent(light1YPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel2)
.addComponent(light1ZPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel3))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(light2DiffuseColorButton)
.addComponent(light2AmbiantColorButton)
.addComponent(light2SpecularColorButton)
.addComponent(light2Checkbox)
.addComponent(light2XPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel4)
.addComponent(light2YPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel5)
.addComponent(light2ZPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel6))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(light3DiffuseColorButton)
.addComponent(light3AmbiantColorButton)
.addComponent(light3SpecularColorButton)
.addComponent(light3Checkbox)
.addComponent(light3XPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel7)
.addComponent(light3YPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel8)
.addComponent(light3ZPosition, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jLabel9))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 60, Short.MAX_VALUE)
.addComponent(resetButton)
.addContainerGap())
);
}// </editor-fold>//GEN-END:initComponents
private void resetButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_resetButtonActionPerformed
try {
NbPreferences.forModule(Lighting.class).clear();
NbPreferences.forModule(Lighting.class).remove(Lighting.AMBIANT_ENABLED);
NbPreferences.forModule(Lighting.class).remove(Lighting.AMBIANT_AMBIANT);
NbPreferences.forModule(Lighting.class).remove(Lighting.AMBIANT_SPECULAR);
NbPreferences.forModule(Lighting.class).remove(Lighting.AMBIANT_DIFFUSE);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT1_ENABLED);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT1_AMBIANT);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT1_SPECULAR);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT1_DIFFUSE);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT1_POSITION);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT2_ENABLED);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT2_AMBIANT);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT2_SPECULAR);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT2_DIFFUSE);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT2_POSITION);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT3_ENABLED);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT3_AMBIANT);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT3_SPECULAR);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT3_DIFFUSE);
NbPreferences.forModule(Lighting.class).remove(Lighting.LIGHT3_POSITION);
NbPreferences.forModule(VizConfig.class).remove(VizConfig.ANTIALIASING);
NbPreferences.forModule(VizConfig.class).remove(VizConfig.SHOW_FPS);
} catch (BackingStoreException ex) {
Exceptions.printStackTrace(ex);
}
load();
}//GEN-LAST:event_resetButtonActionPerformed
void load() {
antiAliasing = NbPreferences.forModule(VizConfig.class).getInt(VizConfig.ANTIALIASING, VizConfig.DEFAULT_ANTIALIASING);
antialisaingCombobox.setSelectedIndex(antiAliasing == 0 ? 0 : Math.round((float) (Math.log(antiAliasing) / Math.log(2))));
fpsCheckbox.setSelected(NbPreferences.forModule(VizConfig.class).getBoolean(VizConfig.SHOW_FPS, VizConfig.DEFAULT_SHOW_FPS));
//Lights
Lighting lighting = new Lighting();
Light ambiant = lighting.getLights().get(0);
Light light1 = lighting.getLights().get(1);
Light light2 = lighting.getLights().get(2);
Light light3 = lighting.getLights().get(3);
//Ambiant
((JColorButton) ambientAmbiantColorButton).setColor(ColorUtils.decode(ambiant.getAmbiant()));
((JColorButton) ambientDiffuseColorButton).setColor(ColorUtils.decode(ambiant.getDiffuse()));
((JColorButton) ambientSpecularColorButton).setColor(ColorUtils.decode(ambiant.getSpecular()));
//Light1
light1Checkbox.setSelected(light1.isEnabled());
((JColorButton) light1AmbiantColorButton).setColor(ColorUtils.decode(light1.getAmbiant()));
((JColorButton) light1DiffuseColorButton).setColor(ColorUtils.decode(light1.getDiffuse()));
((JColorButton) light1SpecularColorButton).setColor(ColorUtils.decode(light1.getSpecular()));
light1XPosition.setValue(Float.valueOf(light1.getDirection()[0]));
light1YPosition.setValue(Float.valueOf(light1.getDirection()[1]));
light1ZPosition.setValue(Float.valueOf(light1.getDirection()[2]));
//Light2
light2Checkbox.setSelected(light2.isEnabled());
((JColorButton) light2AmbiantColorButton).setColor(ColorUtils.decode(light2.getAmbiant()));
((JColorButton) light2DiffuseColorButton).setColor(ColorUtils.decode(light2.getDiffuse()));
((JColorButton) light2SpecularColorButton).setColor(ColorUtils.decode(light2.getSpecular()));
light2XPosition.setValue(Float.valueOf(light2.getDirection()[0]));
light2YPosition.setValue(Float.valueOf(light2.getDirection()[1]));
light2ZPosition.setValue(Float.valueOf(light2.getDirection()[2]));
//Light3
light3Checkbox.setSelected(light3.isEnabled());
((JColorButton) light3AmbiantColorButton).setColor(ColorUtils.decode(light3.getAmbiant()));
((JColorButton) light3DiffuseColorButton).setColor(ColorUtils.decode(light3.getDiffuse()));
((JColorButton) light3SpecularColorButton).setColor(ColorUtils.decode(light3.getSpecular()));
light3XPosition.setValue(Float.valueOf(light3.getDirection()[0]));
light3YPosition.setValue(Float.valueOf(light3.getDirection()[1]));
light3ZPosition.setValue(Float.valueOf(light3.getDirection()[2]));
//OpenGLInfo
GraphicalConfiguration gc = VizController.getInstance().getDrawable().getGraphicalConfiguration();
if (gc != null) {
openInfoText.setText(gc.getVendor() + "\n" + gc.getRenderer() + "\nOpenGL " + gc.getVersionStr());
}
}
void store() {
NbPreferences.forModule(VizConfig.class).putInt(VizConfig.ANTIALIASING, antiAliasing);
NbPreferences.forModule(VizConfig.class).putBoolean(VizConfig.SHOW_FPS, fpsCheckbox.isSelected());
//Ambiant
NbPreferences.forModule(Lighting.class).put(Lighting.AMBIANT_AMBIANT, PrefsUtils.floatArrayToString(((JColorButton) ambientAmbiantColorButton).getColorArray()));
NbPreferences.forModule(Lighting.class).put(Lighting.AMBIANT_DIFFUSE, PrefsUtils.floatArrayToString(((JColorButton) ambientDiffuseColorButton).getColorArray()));
NbPreferences.forModule(Lighting.class).put(Lighting.AMBIANT_SPECULAR, PrefsUtils.floatArrayToString(((JColorButton) ambientSpecularColorButton).getColorArray()));
//Light1
NbPreferences.forModule(Lighting.class).putBoolean(Lighting.LIGHT1_ENABLED, light1Checkbox.isSelected());
NbPreferences.forModule(Lighting.class).put(Lighting.LIGHT1_AMBIANT, PrefsUtils.floatArrayToString(((JColorButton) light1AmbiantColorButton).getColorArray()));
NbPreferences.forModule(Lighting.class).put(Lighting.LIGHT1_DIFFUSE, PrefsUtils.floatArrayToString(((JColorButton) light1DiffuseColorButton).getColorArray()));
NbPreferences.forModule(Lighting.class).put(Lighting.LIGHT1_SPECULAR, PrefsUtils.floatArrayToString(((JColorButton) light1SpecularColorButton).getColorArray()));
NbPreferences.forModule(Lighting.class).put(Lighting.LIGHT1_POSITION, PrefsUtils.floatArrayToString(new float[]{(Float) light1XPosition.getValue(), (Float) light1YPosition.getValue(), (Float) light1ZPosition.getValue(), 0f}));
//Light2
NbPreferences.forModule(Lighting.class).putBoolean(Lighting.LIGHT2_ENABLED, light2Checkbox.isSelected());
NbPreferences.forModule(Lighting.class).put(Lighting.LIGHT2_AMBIANT, PrefsUtils.floatArrayToString(((JColorButton) light2AmbiantColorButton).getColorArray()));
NbPreferences.forModule(Lighting.class).put(Lighting.LIGHT2_DIFFUSE, PrefsUtils.floatArrayToString(((JColorButton) light2DiffuseColorButton).getColorArray()));
NbPreferences.forModule(Lighting.class).put(Lighting.LIGHT2_SPECULAR, PrefsUtils.floatArrayToString(((JColorButton) light2SpecularColorButton).getColorArray()));
NbPreferences.forModule(Lighting.class).put(Lighting.LIGHT2_POSITION, PrefsUtils.floatArrayToString(new float[]{(Float) light2XPosition.getValue(), (Float) light2YPosition.getValue(), (Float) light2ZPosition.getValue(), 0f}));
//Light3
NbPreferences.forModule(Lighting.class).putBoolean(Lighting.LIGHT3_ENABLED, light3Checkbox.isSelected());
NbPreferences.forModule(Lighting.class).put(Lighting.LIGHT3_AMBIANT, PrefsUtils.floatArrayToString(((JColorButton) light3AmbiantColorButton).getColorArray()));
NbPreferences.forModule(Lighting.class).put(Lighting.LIGHT3_DIFFUSE, PrefsUtils.floatArrayToString(((JColorButton) light3DiffuseColorButton).getColorArray()));
NbPreferences.forModule(Lighting.class).put(Lighting.LIGHT3_SPECULAR, PrefsUtils.floatArrayToString(((JColorButton) light3SpecularColorButton).getColorArray()));
NbPreferences.forModule(Lighting.class).put(Lighting.LIGHT3_POSITION, PrefsUtils.floatArrayToString(new float[]{(Float) light3XPosition.getValue(), (Float) light3YPosition.getValue(), (Float) light3ZPosition.getValue(), 0f}));
VizController.getInstance().getEngine().reinit();
}
boolean valid() {
// TODO check whether form is consistent and complete
return true;
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton ambientAmbiantColorButton;
private javax.swing.JButton ambientDiffuseColorButton;
private javax.swing.JButton ambientSpecularColorButton;
private javax.swing.JComboBox antialisaingCombobox;
private javax.swing.JCheckBox fpsCheckbox;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel10;
private javax.swing.JLabel jLabel2;
private javax.swing.JLabel jLabel3;
private javax.swing.JLabel jLabel4;
private javax.swing.JLabel jLabel5;
private javax.swing.JLabel jLabel6;
private javax.swing.JLabel jLabel7;
private javax.swing.JLabel jLabel8;
private javax.swing.JLabel jLabel9;
private org.jdesktop.swingx.JXTitledSeparator jXTitledSeparator1;
private org.jdesktop.swingx.JXTitledSeparator jXTitledSeparator3;
private javax.swing.JLabel labelAmbiant;
private javax.swing.JLabel labelAntialiasing;
private javax.swing.JLabel labelDirectional;
private javax.swing.JLabel labelShow;
private javax.swing.JButton light1AmbiantColorButton;
private javax.swing.JCheckBox light1Checkbox;
private javax.swing.JButton light1DiffuseColorButton;
private javax.swing.JButton light1SpecularColorButton;
private javax.swing.JSpinner light1XPosition;
private javax.swing.JSpinner light1YPosition;
private javax.swing.JSpinner light1ZPosition;
private javax.swing.JButton light2AmbiantColorButton;
private javax.swing.JCheckBox light2Checkbox;
private javax.swing.JButton light2DiffuseColorButton;
private javax.swing.JButton light2SpecularColorButton;
private javax.swing.JSpinner light2XPosition;
private javax.swing.JSpinner light2YPosition;
private javax.swing.JSpinner light2ZPosition;
private javax.swing.JButton light3AmbiantColorButton;
private javax.swing.JCheckBox light3Checkbox;
private javax.swing.JButton light3DiffuseColorButton;
private javax.swing.JButton light3SpecularColorButton;
private javax.swing.JSpinner light3XPosition;
private javax.swing.JSpinner light3YPosition;
private javax.swing.JSpinner light3ZPosition;
private javax.swing.JTextArea openInfoText;
private javax.swing.JPanel openglInfoPanel;
private javax.swing.JButton resetButton;
// End of variables declaration//GEN-END:variables
}