/*
* Geotoolkit - An Open Source Java GIS Toolkit
* http://www.geotoolkit.org
*
* (C) 2013, Geomatys
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library 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.
*/
package org.geotoolkit.gui.swing.render3d.control;
import org.geotoolkit.display3d.Map3D;
import org.geotoolkit.gui.swing.render3d.JMap3D;
import org.geotoolkit.gui.swing.resource.MessageBundle;
/**
*
* @author Thomas Trouby (Geomatys)
*/
public class JTerrainShadowPanel extends javax.swing.JPanel {
private final JMap3D map;
/**
* Creates new form JTerrainShadowPanel
* @param map3d
*/
public JTerrainShadowPanel(final JMap3D map3d) {
initComponents();
this.map = map3d;
final Map3D m3d = map.getMap3D();
guiShadowEnable.setSelected(m3d.getLightManager().isEnable());
rotationSpinner.setValue((double)m3d.getLightRotation());
azimutSpinner.setValue((double)m3d.getLightAzimut());
}
/**
* 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() {
guiShadowEnable = new javax.swing.JCheckBox();
jLabel1 = new javax.swing.JLabel();
jLabel2 = new javax.swing.JLabel();
azimutSpinner = new javax.swing.JSpinner();
rotationSpinner = new javax.swing.JSpinner();
guiShadowEnable.setText(MessageBundle.format("org_geotoolkit_gui_swing_render3d_show")); // NOI18N
guiShadowEnable.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
guiShadowEnableActionPerformed(evt);
}
});
jLabel1.setText(MessageBundle.format("org_geotoolkit_gui_swing_render3d_azimut")); // NOI18N
jLabel2.setText(MessageBundle.format("org_geotoolkit_gui_swing_render3d_rotation")); // NOI18N
azimutSpinner.setModel(new javax.swing.SpinnerNumberModel(45.0d, 0.0d, 90.0d, 1.0d));
azimutSpinner.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
azimutSpinnerStateChanged(evt);
}
});
rotationSpinner.setModel(new javax.swing.SpinnerNumberModel(45.0d, 0.0d, 360.0d, 1.0d));
rotationSpinner.addChangeListener(new javax.swing.event.ChangeListener() {
public void stateChanged(javax.swing.event.ChangeEvent evt) {
rotationSpinnerStateChanged(evt);
}
});
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
this.setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(guiShadowEnable)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false)
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel1)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(azimutSpinner))
.addGroup(layout.createSequentialGroup()
.addComponent(jLabel2)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(rotationSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
);
layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {jLabel1, jLabel2});
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(guiShadowEnable)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jLabel1)
.addComponent(azimutSpinner, 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(rotationSpinner, 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 guiShadowEnableActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_guiShadowEnableActionPerformed
if (map.getMap3D() == null){
return;
}
final Map3D map3d = map.getMap3D();
map3d.getLightManager().setEnable(guiShadowEnable.isSelected());
}//GEN-LAST:event_guiShadowEnableActionPerformed
private void rotationSpinnerStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_rotationSpinnerStateChanged
if (map.getMap3D() == null){
return;
}
final Map3D map3d = map.getMap3D();
map3d.setLightRotation(((Number) rotationSpinner.getValue()).floatValue());
}//GEN-LAST:event_rotationSpinnerStateChanged
private void azimutSpinnerStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_azimutSpinnerStateChanged
if (map.getMap3D() == null){
return;
}
final Map3D map3d = map.getMap3D();
map3d.setLightAzimut(((Number) azimutSpinner.getValue()).floatValue());
}//GEN-LAST:event_azimutSpinnerStateChanged
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JSpinner azimutSpinner;
private javax.swing.JCheckBox guiShadowEnable;
private javax.swing.JLabel jLabel1;
private javax.swing.JLabel jLabel2;
private javax.swing.JSpinner rotationSpinner;
// End of variables declaration//GEN-END:variables
}