/* * 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 }