/*
 *  Copyright (c) 2009-2010 jMonkeyEngine
 *  All rights reserved.
 * 
 *  Redistribution and use in source and binary forms, with or without
 *  modification, are permitted provided that the following conditions are
 *  met:
 * 
 *  * Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 
 *  * Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 
 *  * Neither the name of 'jMonkeyEngine' nor the names of its contributors
 *    may be used to endorse or promote products derived from this software
 *    without specific prior written permission.
 * 
 *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 *  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 *  TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 *  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 *  PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 *  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 *  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 *  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
package com.jme3.gde.core.sceneexplorer.nodes.actions.impl;

import org.netbeans.api.settings.ConvertAsProperties;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.util.NbBundle.Messages;
import org.openide.windows.TopComponent;

/**
 * Top component which displays NewGeometryAction' Settings.
 * 
 * @author david.bernard.31
 */


@ConvertAsProperties(
        dtd = "-//com.jme3.gde.core.sceneexplorer.nodes.actions.impl//NewGeometrySettings//EN",
        autostore = true
)
@TopComponent.Description(
        preferredID = "NewGeometrySettingsTopComponent",
        //iconBase="SET/PATH/TO/ICON/HERE", 
        persistenceType = TopComponent.PERSISTENCE_ALWAYS
)
@TopComponent.Registration(mode = "commonpalette", openAtStartup = false)
@ActionID(category = "Window", id = "com.jme3.gde.core.sceneexplorer.nodes.actions.impl.NewGeometrySettingsTopComponent")
@ActionReference(path = "Menu/Window" /*, position = 333 */)
@TopComponent.OpenActionRegistration(
        displayName = "#CTL_NewGeometrySettingsAction",
        preferredID = "NewGeometrySettingsTopComponent"
)
@Messages({
    "CTL_NewGeometrySettingsAction=NewGeometrySettings",
    "CTL_NewGeometrySettingsTopComponent=NewGeometrySettings",
    "HINT_NewGeometrySettingsTopComponent=This is a NewGeometrySettings window"
})
@SuppressWarnings({"unchecked", "rawtypes"})
public final class NewGeometrySettingsTopComponent extends TopComponent {

    public NewGeometrySettingsTopComponent() {
        initComponents();
        setName(Bundle.CTL_NewGeometrySettingsTopComponent());
        setToolTipText(Bundle.HINT_NewGeometrySettingsTopComponent());

    }

    /**
     * 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() {
        bindingGroup = new org.jdesktop.beansbinding.BindingGroup();

        newGeometrySettings = new com.jme3.gde.core.sceneexplorer.nodes.actions.impl.NewGeometrySettings();
        converterVector3f_String = new com.jme3.gde.core.sceneexplorer.nodes.actions.impl.ConverterVector3f_String();
        jTabbedPane1 = new javax.swing.JTabbedPane();
        boxPanel = new javax.swing.JPanel();
        boxNameTextField = new javax.swing.JTextField();
        boxXLabel = new javax.swing.JLabel();
        boxXSpinner = new javax.swing.JSpinner();
        boxYLabel = new javax.swing.JLabel();
        boxYSpinner = new javax.swing.JSpinner();
        boxZLabel = new javax.swing.JLabel();
        boxZSpinner = new javax.swing.JSpinner();
        boxModeComboBox = new javax.swing.JComboBox();
        spherePanel = new javax.swing.JPanel();
        sphereZSamplesLabel = new javax.swing.JLabel();
        sphereZSamplesSpinner = new javax.swing.JSpinner();
        sphereRadialSamplesLabel = new javax.swing.JLabel();
        sphereRadialSamplesSpinner = new javax.swing.JSpinner();
        sphereUseEvenSlicesLabel = new javax.swing.JLabel();
        sphereUseEvenSlicesCheckBox = new javax.swing.JCheckBox();
        sphereInteriorCheckBox = new javax.swing.JCheckBox();
        sphereInteriorLabel = new javax.swing.JLabel();
        sphereRadiusSpinner = new javax.swing.JSpinner();
        sphereRadiusLabel = new javax.swing.JLabel();
        sphereNameTextField = new javax.swing.JTextField();
        sphereModeComboBox = new javax.swing.JComboBox();
        quadPanel = new javax.swing.JPanel();
        quadNameTextField = new javax.swing.JTextField();
        quadWidthLabel = new javax.swing.JLabel();
        quadHeightLabel = new javax.swing.JLabel();
        quadWidthSpinner = new javax.swing.JSpinner();
        quadHeightSpinner = new javax.swing.JSpinner();
        quadFlipCoordLabel = new javax.swing.JLabel();
        quadFlipCoordCheckBox = new javax.swing.JCheckBox();
        quadModeComboBox = new javax.swing.JComboBox();
        jComboBox2 = new javax.swing.JComboBox();
        linePanel = new javax.swing.JPanel();
        lineNameTextField = new javax.swing.JTextField();
        lineStartLabel = new javax.swing.JLabel();
        lineStartTextField = new javax.swing.JTextField();
        lineEndLabel = new javax.swing.JLabel();
        lineEndTextField = new javax.swing.JTextField();
        jComboBox1 = new javax.swing.JComboBox();

        org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${boxName}"), boxNameTextField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        boxNameTextField.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                boxNameTextFieldActionPerformed(evt);
            }
        });

        org.openide.awt.Mnemonics.setLocalizedText(boxXLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.boxXLabel.text")); // NOI18N

        boxXSpinner.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(1.0f), null, null, Float.valueOf(0.5f)));

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${boxX}"), boxXSpinner, org.jdesktop.beansbinding.BeanProperty.create("value"));
        bindingGroup.addBinding(binding);

        org.openide.awt.Mnemonics.setLocalizedText(boxYLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.boxYLabel.text")); // NOI18N

        boxYSpinner.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(1.0f), Float.valueOf(0.0f), null, Float.valueOf(0.5f)));

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${boxY}"), boxYSpinner, org.jdesktop.beansbinding.BeanProperty.create("value"));
        bindingGroup.addBinding(binding);

        org.openide.awt.Mnemonics.setLocalizedText(boxZLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.boxZLabel.text")); // NOI18N

        boxZSpinner.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(1.0f), Float.valueOf(0.0f), null, Float.valueOf(0.5f)));

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${boxZ}"), boxZSpinner, org.jdesktop.beansbinding.BeanProperty.create("value"));
        bindingGroup.addBinding(binding);

        org.jdesktop.beansbinding.ELProperty eLProperty = org.jdesktop.beansbinding.ELProperty.create("${modes}");
        org.jdesktop.swingbinding.JComboBoxBinding jComboBoxBinding = org.jdesktop.swingbinding.SwingBindings.createJComboBoxBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, eLProperty, boxModeComboBox);
        bindingGroup.addBinding(jComboBoxBinding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${boxMode}"), boxModeComboBox, org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
        bindingGroup.addBinding(binding);

        boxModeComboBox.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                boxModeComboBoxActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout boxPanelLayout = new javax.swing.GroupLayout(boxPanel);
        boxPanel.setLayout(boxPanelLayout);
        boxPanelLayout.setHorizontalGroup(
            boxPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(boxPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(boxPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(boxPanelLayout.createSequentialGroup()
                        .addComponent(boxZLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(boxZSpinner))
                    .addGroup(boxPanelLayout.createSequentialGroup()
                        .addComponent(boxYLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(boxYSpinner))
                    .addGroup(boxPanelLayout.createSequentialGroup()
                        .addComponent(boxXLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(boxXSpinner))
                    .addComponent(boxModeComboBox, 0, 224, Short.MAX_VALUE)
                    .addComponent(boxNameTextField, javax.swing.GroupLayout.Alignment.TRAILING))
                .addContainerGap())
        );
        boxPanelLayout.setVerticalGroup(
            boxPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, boxPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(boxNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(boxModeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(5, 5, 5)
                .addGroup(boxPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(boxXLabel)
                    .addComponent(boxXSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(boxPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(boxYLabel)
                    .addComponent(boxYSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(boxPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(boxZLabel)
                    .addComponent(boxZSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(233, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.boxPanel.TabConstraints.tabTitle"), boxPanel); // NOI18N

        org.openide.awt.Mnemonics.setLocalizedText(sphereZSamplesLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.sphereZSamplesLabel.text")); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${spherRadialSamples}"), sphereZSamplesSpinner, org.jdesktop.beansbinding.BeanProperty.create("value"));
        bindingGroup.addBinding(binding);

        org.openide.awt.Mnemonics.setLocalizedText(sphereRadialSamplesLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.sphereRadialSamplesLabel.text")); // NOI18N

        sphereRadialSamplesSpinner.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(10), Integer.valueOf(1), null, Integer.valueOf(1)));

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${sphereZSamples}"), sphereRadialSamplesSpinner, org.jdesktop.beansbinding.BeanProperty.create("value"));
        bindingGroup.addBinding(binding);

        org.openide.awt.Mnemonics.setLocalizedText(sphereUseEvenSlicesLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.sphereUseEvenSlicesLabel.text")); // NOI18N

        org.openide.awt.Mnemonics.setLocalizedText(sphereUseEvenSlicesCheckBox, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.sphereUseEvenSlicesCheckBox.text")); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${sphereUseEvenSlices}"), sphereUseEvenSlicesCheckBox, org.jdesktop.beansbinding.BeanProperty.create("selected"));
        bindingGroup.addBinding(binding);

        org.openide.awt.Mnemonics.setLocalizedText(sphereInteriorCheckBox, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.sphereInteriorCheckBox.text")); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${sphereInterior}"), sphereInteriorCheckBox, org.jdesktop.beansbinding.BeanProperty.create("selected"));
        bindingGroup.addBinding(binding);

        org.openide.awt.Mnemonics.setLocalizedText(sphereInteriorLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.sphereInteriorLabel.text")); // NOI18N

        sphereRadiusSpinner.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(1.0f), Float.valueOf(0.0f), null, Float.valueOf(0.1f)));

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${sphereRadius}"), sphereRadiusSpinner, org.jdesktop.beansbinding.BeanProperty.create("value"));
        bindingGroup.addBinding(binding);

        org.openide.awt.Mnemonics.setLocalizedText(sphereRadiusLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.sphereRadiusLabel.text")); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${sphereName}"), sphereNameTextField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        eLProperty = org.jdesktop.beansbinding.ELProperty.create("${modes}");
        jComboBoxBinding = org.jdesktop.swingbinding.SwingBindings.createJComboBoxBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, eLProperty, sphereModeComboBox);
        bindingGroup.addBinding(jComboBoxBinding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${sphereMode}"), sphereModeComboBox, org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
        bindingGroup.addBinding(binding);

        javax.swing.GroupLayout spherePanelLayout = new javax.swing.GroupLayout(spherePanel);
        spherePanel.setLayout(spherePanelLayout);
        spherePanelLayout.setHorizontalGroup(
            spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(spherePanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(sphereNameTextField)
                    .addComponent(sphereRadiusLabel)
                    .addComponent(sphereModeComboBox, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(spherePanelLayout.createSequentialGroup()
                        .addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(sphereRadialSamplesLabel)
                            .addComponent(sphereZSamplesLabel)
                            .addComponent(sphereUseEvenSlicesLabel)
                            .addComponent(sphereInteriorLabel))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(sphereZSamplesSpinner, javax.swing.GroupLayout.DEFAULT_SIZE, 111, Short.MAX_VALUE)
                            .addComponent(sphereRadialSamplesSpinner)
                            .addComponent(sphereRadiusSpinner)
                            .addGroup(spherePanelLayout.createSequentialGroup()
                                .addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(sphereInteriorCheckBox)
                                    .addComponent(sphereUseEvenSlicesCheckBox))
                                .addGap(0, 0, Short.MAX_VALUE)))))
                .addContainerGap())
        );
        spherePanelLayout.setVerticalGroup(
            spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(spherePanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(sphereNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(3, 3, 3)
                .addComponent(sphereModeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(sphereRadialSamplesLabel)
                    .addComponent(sphereRadialSamplesSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(5, 5, 5)
                .addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(sphereZSamplesLabel)
                    .addComponent(sphereZSamplesSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(8, 8, 8)
                .addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(sphereRadiusLabel)
                    .addComponent(sphereRadiusSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(sphereUseEvenSlicesLabel)
                    .addComponent(sphereUseEvenSlicesCheckBox))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(sphereInteriorLabel)
                    .addComponent(sphereInteriorCheckBox))
                .addContainerGap(184, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.spherePanel.TabConstraints.tabTitle"), spherePanel); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${quadName}"), quadNameTextField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        org.openide.awt.Mnemonics.setLocalizedText(quadWidthLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.quadWidthLabel.text")); // NOI18N

        org.openide.awt.Mnemonics.setLocalizedText(quadHeightLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.quadHeightLabel.text")); // NOI18N

        quadWidthSpinner.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.0f), Float.valueOf(0.0f), null, Float.valueOf(0.5f)));

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${quadWidth}"), quadWidthSpinner, org.jdesktop.beansbinding.BeanProperty.create("value"));
        bindingGroup.addBinding(binding);

        quadHeightSpinner.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(0.0f), Float.valueOf(0.0f), null, Float.valueOf(0.5f)));

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${quadHeight}"), quadHeightSpinner, org.jdesktop.beansbinding.BeanProperty.create("value"));
        bindingGroup.addBinding(binding);

        org.openide.awt.Mnemonics.setLocalizedText(quadFlipCoordLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.quadFlipCoordLabel.text")); // NOI18N

        org.openide.awt.Mnemonics.setLocalizedText(quadFlipCoordCheckBox, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.quadFlipCoordCheckBox.text")); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${quadFlipCoords}"), quadFlipCoordCheckBox, org.jdesktop.beansbinding.BeanProperty.create("selected"));
        bindingGroup.addBinding(binding);

        eLProperty = org.jdesktop.beansbinding.ELProperty.create("${modes}");
        jComboBoxBinding = org.jdesktop.swingbinding.SwingBindings.createJComboBoxBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, eLProperty, quadModeComboBox);
        bindingGroup.addBinding(jComboBoxBinding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${quadMode}"), quadModeComboBox, org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
        bindingGroup.addBinding(binding);

        eLProperty = org.jdesktop.beansbinding.ELProperty.create("${plans}");
        jComboBoxBinding = org.jdesktop.swingbinding.SwingBindings.createJComboBoxBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, eLProperty, jComboBox2);
        bindingGroup.addBinding(jComboBoxBinding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${quadPlan}"), jComboBox2, org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
        bindingGroup.addBinding(binding);

        javax.swing.GroupLayout quadPanelLayout = new javax.swing.GroupLayout(quadPanel);
        quadPanel.setLayout(quadPanelLayout);
        quadPanelLayout.setHorizontalGroup(
            quadPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(quadPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(quadPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(quadModeComboBox, javax.swing.GroupLayout.Alignment.TRAILING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addComponent(quadNameTextField)
                    .addComponent(jComboBox2, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(quadPanelLayout.createSequentialGroup()
                        .addComponent(quadFlipCoordLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(quadFlipCoordCheckBox, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(0, 39, Short.MAX_VALUE))
                    .addGroup(quadPanelLayout.createSequentialGroup()
                        .addGroup(quadPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(quadWidthLabel)
                            .addComponent(quadHeightLabel))
                        .addGap(38, 38, 38)
                        .addGroup(quadPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(quadHeightSpinner)
                            .addComponent(quadWidthSpinner))))
                .addContainerGap())
        );
        quadPanelLayout.setVerticalGroup(
            quadPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(quadPanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(quadNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(4, 4, 4)
                .addComponent(quadModeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(8, 8, 8)
                .addGroup(quadPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(quadWidthLabel)
                    .addComponent(quadWidthSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(quadPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(quadHeightLabel)
                    .addComponent(quadHeightSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(quadPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(quadFlipCoordLabel)
                    .addComponent(quadFlipCoordCheckBox))
                .addContainerGap(201, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.quadPanel.TabConstraints.tabTitle"), quadPanel); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${lineName}"), lineNameTextField, org.jdesktop.beansbinding.BeanProperty.create("text"));
        bindingGroup.addBinding(binding);

        org.openide.awt.Mnemonics.setLocalizedText(lineStartLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.lineStartLabel.text")); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${lineStart}"), lineStartTextField, org.jdesktop.beansbinding.BeanProperty.create("text_ON_ACTION_OR_FOCUS_LOST"));
        binding.setConverter(converterVector3f_String);
        bindingGroup.addBinding(binding);

        org.openide.awt.Mnemonics.setLocalizedText(lineEndLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.lineEndLabel.text")); // NOI18N

        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${lineEnd}"), lineEndTextField, org.jdesktop.beansbinding.BeanProperty.create("text_ON_ACTION_OR_FOCUS_LOST"));
        binding.setConverter(converterVector3f_String);
        bindingGroup.addBinding(binding);

        eLProperty = org.jdesktop.beansbinding.ELProperty.create("${modes}");
        jComboBoxBinding = org.jdesktop.swingbinding.SwingBindings.createJComboBoxBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, eLProperty, jComboBox1);
        bindingGroup.addBinding(jComboBoxBinding);
        binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings, org.jdesktop.beansbinding.ELProperty.create("${lineMode}"), jComboBox1, org.jdesktop.beansbinding.BeanProperty.create("selectedItem"));
        bindingGroup.addBinding(binding);

        javax.swing.GroupLayout linePanelLayout = new javax.swing.GroupLayout(linePanel);
        linePanel.setLayout(linePanelLayout);
        linePanelLayout.setHorizontalGroup(
            linePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, linePanelLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(linePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(lineNameTextField)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, linePanelLayout.createSequentialGroup()
                        .addComponent(lineEndLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(lineEndTextField))
                    .addComponent(jComboBox1, javax.swing.GroupLayout.Alignment.LEADING, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(javax.swing.GroupLayout.Alignment.LEADING, linePanelLayout.createSequentialGroup()
                        .addComponent(lineStartLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(lineStartTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 177, Short.MAX_VALUE)))
                .addContainerGap())
        );
        linePanelLayout.setVerticalGroup(
            linePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(linePanelLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(lineNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addGap(5, 5, 5)
                .addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(linePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lineStartLabel)
                    .addComponent(lineStartTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(8, 8, 8)
                .addGroup(linePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(lineEndLabel)
                    .addComponent(lineEndTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addContainerGap(259, Short.MAX_VALUE))
        );

        jTabbedPane1.addTab(org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.linePanel.TabConstraints.tabTitle"), linePanel); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane1)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.TRAILING)
        );

        bindingGroup.bind();
    }// </editor-fold>//GEN-END:initComponents

    private void boxNameTextFieldActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_boxNameTextFieldActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_boxNameTextFieldActionPerformed

    private void boxModeComboBoxActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_boxModeComboBoxActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_boxModeComboBoxActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox boxModeComboBox;
    private javax.swing.JTextField boxNameTextField;
    private javax.swing.JPanel boxPanel;
    private javax.swing.JLabel boxXLabel;
    private javax.swing.JSpinner boxXSpinner;
    private javax.swing.JLabel boxYLabel;
    private javax.swing.JSpinner boxYSpinner;
    private javax.swing.JLabel boxZLabel;
    private javax.swing.JSpinner boxZSpinner;
    private com.jme3.gde.core.sceneexplorer.nodes.actions.impl.ConverterVector3f_String converterVector3f_String;
    private javax.swing.JComboBox jComboBox1;
    private javax.swing.JComboBox jComboBox2;
    private javax.swing.JTabbedPane jTabbedPane1;
    private javax.swing.JLabel lineEndLabel;
    private javax.swing.JTextField lineEndTextField;
    private javax.swing.JTextField lineNameTextField;
    private javax.swing.JPanel linePanel;
    private javax.swing.JLabel lineStartLabel;
    private javax.swing.JTextField lineStartTextField;
    private com.jme3.gde.core.sceneexplorer.nodes.actions.impl.NewGeometrySettings newGeometrySettings;
    private javax.swing.JCheckBox quadFlipCoordCheckBox;
    private javax.swing.JLabel quadFlipCoordLabel;
    private javax.swing.JLabel quadHeightLabel;
    private javax.swing.JSpinner quadHeightSpinner;
    private javax.swing.JComboBox quadModeComboBox;
    private javax.swing.JTextField quadNameTextField;
    private javax.swing.JPanel quadPanel;
    private javax.swing.JLabel quadWidthLabel;
    private javax.swing.JSpinner quadWidthSpinner;
    private javax.swing.JCheckBox sphereInteriorCheckBox;
    private javax.swing.JLabel sphereInteriorLabel;
    private javax.swing.JComboBox sphereModeComboBox;
    private javax.swing.JTextField sphereNameTextField;
    private javax.swing.JPanel spherePanel;
    private javax.swing.JLabel sphereRadialSamplesLabel;
    private javax.swing.JSpinner sphereRadialSamplesSpinner;
    private javax.swing.JLabel sphereRadiusLabel;
    private javax.swing.JSpinner sphereRadiusSpinner;
    private javax.swing.JCheckBox sphereUseEvenSlicesCheckBox;
    private javax.swing.JLabel sphereUseEvenSlicesLabel;
    private javax.swing.JLabel sphereZSamplesLabel;
    private javax.swing.JSpinner sphereZSamplesSpinner;
    private org.jdesktop.beansbinding.BindingGroup bindingGroup;
    // End of variables declaration//GEN-END:variables
    @Override
    public void componentOpened() { // TODO add custom code on component opening
        newGeometrySettings.open();
    }

    @Override
    public void componentClosed() {
        newGeometrySettings.close();
    }

    void writeProperties(java.util.Properties p) {
        // better to version settings since initial version as advocated at
        // http://wiki.apidesign.org/wiki/PropertyFiles
        p.setProperty("version", "1.0");
        // TODO store your settings
    }

    void readProperties(java.util.Properties p) {
        String version = p.getProperty("version");
        // TODO read your settings according to their version
    }
    
}
