Merge pull request #149 from davidB/sdk_scene_addprimitives

SDK: scene add primitives
experimental
normen 11 years ago
commit 4d39fc86aa
  1. 44
      sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/NewGeometryAction.java
  2. 9
      sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/NewSpatialPopup.java
  3. 20
      sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties
  4. 77
      sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/ConverterVector3f_String.java
  5. 112
      sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometry.java
  6. 57
      sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryBoxAction.java
  7. 57
      sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryLineAction.java
  8. 57
      sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryQuadAction.java
  9. 373
      sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettings.java
  10. 626
      sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettingsTopComponent.form
  11. 565
      sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettingsTopComponent.java
  12. 57
      sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySphereAction.java

@ -0,0 +1,44 @@
/*
* 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;
import com.jme3.gde.core.sceneexplorer.nodes.JmeNode;
import javax.swing.Action;
import org.openide.loaders.DataObject;
/**
*
* @author david.bernard.31
*/
public interface NewGeometryAction {
public Action getAction(JmeNode rootNode, DataObject dataObject);
}

@ -79,8 +79,15 @@ public class NewSpatialPopup extends AbstractAction implements Presenter.Popup {
result.add(new JMenuItem(new AddEmitterAction())); result.add(new JMenuItem(new AddEmitterAction()));
result.add(new JMenuItem(new AddAudioNodeAction())); result.add(new JMenuItem(new AddAudioNodeAction()));
for (NewSpatialAction di : Lookup.getDefault().lookupAll(NewSpatialAction.class)) { for (NewSpatialAction di : Lookup.getDefault().lookupAll(NewSpatialAction.class)) {
result.add(new JMenuItem(di.getAction(jmeNode, dataObject))); if (!(di instanceof NewGeometryAction)) {
result.add(new JMenuItem(di.getAction(jmeNode, dataObject)));
}
}
JMenu geometries = new JMenu("Primitives");
for (NewGeometryAction di : Lookup.getDefault().lookupAll(NewGeometryAction.class)) {
geometries.add(new JMenuItem(di.getAction(jmeNode, dataObject)));
} }
result.add(geometries);
return result; return result;
} }

@ -38,3 +38,23 @@ GenerateLODVisualPanel1.estLabel9.text=
GenerateLODVisualPanel1.estLabel10.text= GenerateLODVisualPanel1.estLabel10.text=
GenerateLODVisualPanel1.estLabel5.text= GenerateLODVisualPanel1.estLabel5.text=
GenerateLODVisualPanel1.estLabel3.text= GenerateLODVisualPanel1.estLabel3.text=
NewGeometrySettingsTopComponent.boxXLabel.text=x
NewGeometrySettingsTopComponent.boxYLabel.text=y
NewGeometrySettingsTopComponent.boxZLabel.text=z
NewGeometrySettingsTopComponent.sphereRadialSamplesLabel.text=radialSamples
NewGeometrySettingsTopComponent.sphereUseEvenSlicesLabel.text=useEvenSlices
NewGeometrySettingsTopComponent.sphereUseEvenSlicesCheckBox.text=
NewGeometrySettingsTopComponent.sphereZSamplesLabel.text=zSamples
NewGeometrySettingsTopComponent.sphereInteriorLabel.text=interior
NewGeometrySettingsTopComponent.sphereRadiusLabel.text=radius
NewGeometrySettingsTopComponent.sphereInteriorCheckBox.text=
NewGeometrySettingsTopComponent.boxPanel.TabConstraints.tabTitle=Box
NewGeometrySettingsTopComponent.spherePanel.TabConstraints.tabTitle=Sphere
NewGeometrySettingsTopComponent.quadPanel.TabConstraints.tabTitle=Quad
NewGeometrySettingsTopComponent.quadWidthLabel.text=width
NewGeometrySettingsTopComponent.quadHeightLabel.text=height
NewGeometrySettingsTopComponent.quadFlipCoordLabel.text=flip Coords
NewGeometrySettingsTopComponent.quadFlipCoordCheckBox.text=
NewGeometrySettingsTopComponent.linePanel.TabConstraints.tabTitle=Line
NewGeometrySettingsTopComponent.lineStartLabel.text=start
NewGeometrySettingsTopComponent.lineEndLabel.text=end

@ -0,0 +1,77 @@
/*
* 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 com.jme3.math.Vector3f;
import org.jdesktop.beansbinding.Converter;
/**
*
* @author david.bernard.31
*/
public class ConverterVector3f_String extends Converter<Vector3f, String> {
public static void parseInto(String text, Vector3f res) throws IllegalArgumentException {
text = text.replace('[', ' ');
text = text.replace(']', ' ').trim();
String[] a = text.split("\\s*(,|\\s)\\s*");
if (a.length == 1) {
if(text.trim().toLowerCase().equals("nan")) {
res.set(Vector3f.NAN);
return;
}
float f = Float.parseFloat(text);
res.set(f, f, f);
return;
}
if (a.length == 3) {
res.set(Float.parseFloat(a[0]), Float.parseFloat(a[1]), Float.parseFloat(a[2]));
return;
}
throw new IllegalArgumentException("String not correct");
}
@Override
public String convertForward(Vector3f vector) {
return "[" + vector.x + ", " + vector.y + ", " + vector.z + "]";
}
@Override
public Vector3f convertReverse(String text) {
Vector3f vector = new Vector3f();
parseInto(text, vector);
return vector;
}
}

@ -0,0 +1,112 @@
/*
* 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 com.jme3.asset.AssetManager;
import com.jme3.material.Material;
import com.jme3.math.ColorRGBA;
import com.jme3.math.Quaternion;
import com.jme3.scene.Geometry;
import com.jme3.scene.shape.Box;
import com.jme3.scene.shape.Line;
import com.jme3.scene.shape.Quad;
import com.jme3.scene.shape.Sphere;
/**
*
* @author david.bernard.31
*/
public class NewGeometry {
public static Material material(AssetManager assetManaget, NewGeometrySettings cfg) {
Material mat = new Material(assetManaget, "Common/MatDefs/Misc/Unshaded.j3md");
ColorRGBA c = cfg.getMatRandom() ?ColorRGBA.randomColor() : cfg.getMatColor();
mat.setColor("Color", c);
return mat;
}
public static Geometry box(AssetManager assetManager) {
NewGeometrySettings cfg = new NewGeometrySettings();
Box b = new Box(cfg.getBoxX(), cfg.getBoxY(), cfg.getBoxZ());
b.setMode(cfg.getBoxMode());
Geometry geom = new Geometry(cfg.getBoxName(), b);
geom.setMaterial(material(assetManager, cfg));
return geom;
}
public static Geometry sphere(AssetManager assetManager) {
NewGeometrySettings cfg = new NewGeometrySettings();
Sphere b = new Sphere(
cfg.getSphereZSamples()
, cfg.getSpherRadialSamples()
, cfg.getSphereRadius()
, cfg.getSphereUseEvenSlices()
, cfg.getSphereInterior()
);
b.setMode(cfg.getSphereMode());
Geometry geom = new Geometry(cfg.getSphereName(), b);
geom.setMaterial(material(assetManager, cfg));
return geom;
}
public static Geometry line(AssetManager assetManager) {
NewGeometrySettings cfg = new NewGeometrySettings();
Line b = new Line(cfg.getLineStart(), cfg.getLineEnd());
b.setMode(cfg.getLineMode());
Geometry geom = new Geometry(cfg.getLineName(), b);
geom.setMaterial(material(assetManager, cfg));
return geom;
}
public static Geometry quad(AssetManager assetManager) {
NewGeometrySettings cfg = new NewGeometrySettings();
Quad b = new Quad(cfg.getQuadWidth(), cfg.getQuadHeight(), cfg.getQuadFlipCoords());
b.setMode(cfg.getQuadMode());
Geometry geom = new Geometry(cfg.getQuadName(), b);
switch(cfg.getQuadPlan()) {
case XZ: {
Quaternion q = new Quaternion();
q.fromAngles((float)Math.PI/-2f, 0.0f, 0.0f);
geom.setLocalRotation(q);
break;
}
case YZ: {
Quaternion q = new Quaternion();
q.fromAngles(0.0f, (float)Math.PI/-2f, 0.0f);
geom.setLocalRotation(q);
break;
}
}
geom.setMaterial(material(assetManager, cfg));
return geom;
}
}

@ -0,0 +1,57 @@
/*
* 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 com.jme3.gde.core.sceneexplorer.nodes.actions.AbstractNewSpatialAction;
import com.jme3.gde.core.sceneexplorer.nodes.actions.NewGeometryAction;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
/**
*
* @author david.bernard.31
*/
@org.openide.util.lookup.ServiceProvider(service = NewGeometryAction.class)
public class NewGeometryBoxAction extends AbstractNewSpatialAction implements NewGeometryAction {
public NewGeometryBoxAction() {
name = "Box";
}
@Override
protected Spatial doCreateSpatial(Node parent) {
Geometry geom = NewGeometry.box(pm);
parent.attachChild(geom);
return geom;
}
}

@ -0,0 +1,57 @@
/*
* 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 com.jme3.gde.core.sceneexplorer.nodes.actions.AbstractNewSpatialAction;
import com.jme3.gde.core.sceneexplorer.nodes.actions.NewGeometryAction;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
/**
*
* @author david.bernard.31
*/
@org.openide.util.lookup.ServiceProvider(service = NewGeometryAction.class)
public class NewGeometryLineAction extends AbstractNewSpatialAction implements NewGeometryAction {
public NewGeometryLineAction() {
name = "Line";
}
@Override
protected Spatial doCreateSpatial(Node parent) {
Geometry geom = NewGeometry.line(pm);
parent.attachChild(geom);
return geom;
}
}

@ -0,0 +1,57 @@
/*
* 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 com.jme3.gde.core.sceneexplorer.nodes.actions.AbstractNewSpatialAction;
import com.jme3.gde.core.sceneexplorer.nodes.actions.NewGeometryAction;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
/**
*
* @author david.bernard.31
*/
@org.openide.util.lookup.ServiceProvider(service = NewGeometryAction.class)
public class NewGeometryQuadAction extends AbstractNewSpatialAction implements NewGeometryAction {
public NewGeometryQuadAction() {
name = "Quad";
}
@Override
protected Spatial doCreateSpatial(Node parent) {
Geometry geom = NewGeometry.quad(pm);
parent.attachChild(geom);
return geom;
}
}

@ -0,0 +1,373 @@
/*
* 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 com.jme3.math.ColorRGBA;
import com.jme3.math.Vector3f;
import com.jme3.scene.Mesh.Mode;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.Arrays;
import java.util.List;
import java.util.prefs.PreferenceChangeEvent;
import java.util.prefs.PreferenceChangeListener;
import java.util.prefs.Preferences;
import org.openide.util.NbPreferences;
/**
*
* @author david.bernard.31
*/
public class NewGeometrySettings implements Serializable, PreferenceChangeListener {
public static enum Plan {
XY, XZ, YZ
}
private transient final PropertyChangeSupport propertySupport;
private transient final Preferences pref;
public NewGeometrySettings() {
propertySupport = new PropertyChangeSupport(this);
pref = NbPreferences.forModule(NewGeometrySettings.class);
}
// -- Listeners management
public void open() {
pref.addPreferenceChangeListener(this);
}
public void close() {
pref.removePreferenceChangeListener(this);
}
public void preferenceChange(PreferenceChangeEvent evt) {
propertySupport.firePropertyChange(evt.getKey(), null, evt.getNewValue());
}
public void addPropertyChangeListener(final PropertyChangeListener listener) {
propertySupport.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertySupport.removePropertyChangeListener(listener);
}
//-- Material info
public static final String PROP_MatRandom = "MatRandom";
public boolean getMatRandom() {
return pref.getBoolean(PROP_MatRandom, true);
}
public void setMatRandom(boolean value) {
pref.putBoolean(PROP_MatRandom, value);
}
public static final String PROP_MatColor = "MatColor";
public ColorRGBA getMatColor() {
ColorRGBA b = new ColorRGBA();
b.fromIntRGBA(pref.getInt(PROP_MatColor, ColorRGBA.Orange.asIntRGBA()));
return b;
}
public void setMatColor(ColorRGBA value) {
pref.putInt(PROP_MatColor, value.asIntRGBA());
}
//-- Box
public static final String PROP_BoxName = "BoxName";
public String getBoxName() {
return pref.get(PROP_BoxName, "Box");
}
public void setBoxName(String value) {
pref.put(PROP_BoxName, value);
}
public static final String PROP_BoxMode = "BoxMode";
public Mode getBoxMode() {
return getMode(PROP_BoxMode);
}
public void setBoxMode(Mode value) {
putMode(PROP_BoxMode, value);
}
public static final String PROP_BoxX = "BoxX";
public float getBoxX() {
return pref.getFloat(PROP_BoxX, 1.0f);
}
public void setBoxX(float value) {
pref.putFloat(PROP_BoxX, value);
}
public static final String PROP_BoxY = "BoxY";
public float getBoxY() {
return pref.getFloat(PROP_BoxY, 1.0f);
}
public void setBoxY(float value) {
pref.putFloat(PROP_BoxY, value);
}
public static final String PROP_BoxZ = "BoxZ";
public float getBoxZ() {
return pref.getFloat(PROP_BoxZ, 1.0f);
}
public void setBoxZ(float value) {
pref.putFloat(PROP_BoxZ, value);
}
//-- Sphere
public static final String PROP_SphereName = "SphereName";
public String getSphereName() {
return pref.get(PROP_SphereName, "Sphere");
}
public void setSphereName(String value) {
pref.put(PROP_SphereName, value);
}
public static final String PROP_SphereMode = "SphereMode";
public Mode getSphereMode() {
return getMode(PROP_SphereMode);
}
public void setSphereMode(Mode value) {
putMode(PROP_SphereMode, value);
}
public static final String PROP_SphereZSamples = "SphereZSamples";
public int getSphereZSamples() {
return pref.getInt(PROP_SphereZSamples, 10);
}
public void setSphereZSamples(int value) {
pref.putInt(PROP_SphereZSamples, value);
}
public static final String PROP_SpherRadialSamples = "SpherRadialSamples";
public int getSpherRadialSamples() {
return pref.getInt(PROP_SpherRadialSamples, 10);
}
public void setSpherRadialSamples(int value) {
pref.putInt(PROP_SpherRadialSamples, value);
}
public static final String PROP_SphereRadius = "SphereRadius";
public float getSphereRadius() {
return pref.getFloat(PROP_SphereRadius, 1.0f);
}
public void setSphereRadius(float value) {
pref.putFloat(PROP_SphereRadius, value);
}
public static final String PROP_SphereUseEvenSlices = "SphereUseEvenSlices";
public boolean getSphereUseEvenSlices() {
return pref.getBoolean(PROP_SphereUseEvenSlices, false);
}
public void setSphereUseEvenSlices(boolean value) {
pref.putBoolean(PROP_SphereUseEvenSlices, value);
}
public static final String PROP_SphereInterior = "SphereInterior";
public boolean getSphereInterior() {
return pref.getBoolean(PROP_SphereInterior, false);
}
public void setSphereInterior(boolean value) {
pref.putBoolean(PROP_SphereInterior, value);
}
//-- Line
public static final String PROP_LineName = "LineName";
public String getLineName() {
return pref.get(PROP_LineName, "Line");
}
public void setLineName(String value) {
pref.put(PROP_LineName, value);
}
public static final String PROP_LineMode = "LineMode";
public Mode getLineMode() {
return getMode(PROP_LineMode);
}
public void setLineMode(Mode value) {
putMode(PROP_LineMode, value);
}
public static final String PROP_LineStart = "LineStart";
public Vector3f getLineStart() {
return getVector3f(PROP_LineStart, new Vector3f(0,0,0));
}
public void setLineStart(Vector3f value) {
putVector3f(PROP_LineStart, value);
}
public static final String PROP_LineEnd = "LineEnd";
public Vector3f getLineEnd() {
return getVector3f(PROP_LineEnd, new Vector3f(2f,0,2f));
}
public void setLineEnd(Vector3f value) {
putVector3f(PROP_LineEnd, value);
}
//-- Quad
public static final String PROP_QuadName = "QuadName";
public String getQuadName() {
return pref.get(PROP_QuadName, "Quad");
}
public void setQuadName(String value) {
pref.put(PROP_QuadName, value);
}
public static final String PROP_QuadMode = "QuadMode";
public Mode getQuadMode() {
return getMode(PROP_QuadMode);
}
public void setQuadMode(Mode value) {
putMode(PROP_QuadMode, value);
}
public static final String PROP_QuadWidth = "QuadWidth";
public float getQuadWidth() {
return pref.getFloat(PROP_QuadWidth, 1.0f);
}
public void setQuadWidth(float value) {
pref.putFloat(PROP_QuadWidth, value);
}
public static final String PROP_QuadHeight = "QuadHeight";
public float getQuadHeight() {
return pref.getFloat(PROP_QuadHeight, 1.0f);
}
public void setQuadHeight(float value) {
pref.putFloat(PROP_QuadHeight, value);
}
public static final String PROP_QuadFlipCoords = "QuadFlipCoords";
public boolean getQuadFlipCoords() {
return pref.getBoolean(PROP_QuadFlipCoords, false);
}
public void setQuadFlipCoords(boolean value) {
pref.putBoolean(PROP_QuadFlipCoords, value);
}
public static final String PROP_QuadPlan = "QuadPlan";
public Plan getQuadPlan() {
return Plan.values()[pref.getInt(PROP_QuadPlan, Plan.XZ.ordinal())];
}
public void setQuadPlan(Plan value) {
pref.putInt(PROP_QuadPlan, value.ordinal());
}
//-- Tools
protected Vector3f getVector3f(String baseName, Vector3f def) {
return new Vector3f(
pref.getFloat(baseName + "X", def.x)
,pref.getFloat(baseName + "Y", def.y)
,pref.getFloat(baseName + "Z", def.z)
);
}
protected void putVector3f(String baseName, Vector3f value) {
pref.putFloat(baseName + "X", value.x);
pref.putFloat(baseName + "Y", value.y);
pref.putFloat(baseName + "Z", value.z);
}
protected Mode getMode(String baseName) {
return Mode.values()[pref.getInt(baseName, Mode.Lines.ordinal())];
}
public void putMode(String baseName, Mode value) {
pref.putInt(baseName, value.ordinal());
}
public List<Mode> getModes() {
return Arrays.asList(Mode.values());
}
public List<Plan> getPlans() {
return Arrays.asList(Plan.values());
}
}

@ -0,0 +1,626 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Form version="1.5" maxVersion="1.9" type="org.netbeans.modules.form.forminfo.JPanelFormInfo">
<NonVisualComponents>
<Component class="com.jme3.gde.core.sceneexplorer.nodes.actions.impl.NewGeometrySettings" name="newGeometrySettings">
</Component>
<Component class="com.jme3.gde.core.sceneexplorer.nodes.actions.impl.ConverterVector3f_String" name="converterVector3f_String">
</Component>
</NonVisualComponents>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_autoSetComponentName" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_generateFQN" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_generateMnemonicsCode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_i18nAutoMode" type="java.lang.Boolean" value="true"/>
<AuxValue name="FormSettings_layoutCodeTarget" type="java.lang.Integer" value="1"/>
<AuxValue name="FormSettings_listenerGenerationStyle" type="java.lang.Integer" value="0"/>
<AuxValue name="FormSettings_variablesLocal" type="java.lang.Boolean" value="false"/>
<AuxValue name="FormSettings_variablesModifier" type="java.lang.Integer" value="2"/>
</AuxValues>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jTabbedPane1" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="jTabbedPane1" alignment="1" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Container class="javax.swing.JTabbedPane" name="jTabbedPane1">
<Layout class="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout"/>
<SubComponents>
<Container class="javax.swing.JPanel" name="boxPanel">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
<JTabbedPaneConstraints tabName="Box">
<Property name="tabTitle" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.boxPanel.TabConstraints.tabTitle" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</JTabbedPaneConstraints>
</Constraint>
</Constraints>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace min="-2" max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Component id="boxXLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="boxXSpinner" min="-2" pref="62" max="-2" attributes="0"/>
<EmptySpace min="-2" pref="26" max="-2" attributes="0"/>
<Component id="boxYLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="boxYSpinner" min="-2" pref="62" max="-2" attributes="0"/>
<EmptySpace min="-2" pref="28" max="-2" attributes="0"/>
<Component id="boxZLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="boxZSpinner" min="-2" pref="62" max="-2" attributes="0"/>
</Group>
<Group type="102" attributes="0">
<Component id="boxNameTextField" pref="426" max="32767" attributes="0"/>
<EmptySpace min="-2" max="-2" attributes="0"/>
<Component id="boxModeComboBox" pref="133" max="32767" attributes="0"/>
</Group>
</Group>
<EmptySpace min="-2" max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="1" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="2" attributes="0">
<Component id="boxNameTextField" alignment="2" min="-2" max="-2" attributes="0"/>
<Component id="boxModeComboBox" alignment="2" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="boxXSpinner" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="boxXLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="boxYLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="boxYSpinner" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="boxZSpinner" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="boxZLabel" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace pref="197" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JTextField" name="boxNameTextField">
<BindingProperties>
<BindingProperty name="text" source="newGeometrySettings" sourcePath="${boxName}" target="boxNameTextField" targetPath="text" updateStrategy="0" immediately="false">
<BindingParameter name="javax.swing.binding.ParameterKeys.TEXT_CHANGE_STRATEGY" value="javax.swing.binding.TextChangeStrategy.ON_TYPE"/>
</BindingProperty>
</BindingProperties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="boxNameTextFieldActionPerformed"/>
</Events>
</Component>
<Component class="javax.swing.JLabel" name="boxXLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.boxXLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JSpinner" name="boxXSpinner">
<Properties>
<Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
<SpinnerModel initial="1.0" numberType="java.lang.Float" stepSize="0.5" type="number"/>
</Property>
</Properties>
<BindingProperties>
<BindingProperty name="value" source="newGeometrySettings" sourcePath="${boxX}" target="boxXSpinner" targetPath="value" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
<Component class="javax.swing.JLabel" name="boxYLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.boxYLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JSpinner" name="boxYSpinner">
<Properties>
<Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
<SpinnerModel initial="1.0" minimum="0.0" numberType="java.lang.Float" stepSize="0.5" type="number"/>
</Property>
</Properties>
<BindingProperties>
<BindingProperty name="value" source="newGeometrySettings" sourcePath="${boxY}" target="boxYSpinner" targetPath="value" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
<Component class="javax.swing.JLabel" name="boxZLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.boxZLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JSpinner" name="boxZSpinner">
<Properties>
<Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
<SpinnerModel initial="1.0" minimum="0.0" numberType="java.lang.Float" stepSize="0.5" type="number"/>
</Property>
</Properties>
<BindingProperties>
<BindingProperty name="value" source="newGeometrySettings" sourcePath="${boxZ}" target="boxZSpinner" targetPath="value" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
<Component class="javax.swing.JComboBox" name="boxModeComboBox">
<BindingProperties>
<BindingProperty name="elements" source="newGeometrySettings" sourcePath="${modes}" target="boxModeComboBox" targetPath="elements" updateStrategy="0" immediately="false"/>
<BindingProperty name="selectedItem" source="newGeometrySettings" sourcePath="${boxMode}" target="boxModeComboBox" targetPath="selectedItem" updateStrategy="0" immediately="false"/>
</BindingProperties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="boxModeComboBoxActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="spherePanel">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
<JTabbedPaneConstraints tabName="Sphere">
<Property name="tabTitle" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.spherePanel.TabConstraints.tabTitle" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</JTabbedPaneConstraints>
</Constraint>
</Constraints>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<Component id="sphereNameTextField" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="sphereModeComboBox" min="-2" max="-2" attributes="0"/>
</Group>
<Group type="102" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="sphereZSamplesLabel" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="sphereRadialSamplesLabel" min="-2" max="-2" attributes="0"/>
<Component id="sphereRadiusLabel" alignment="0" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="sphereRadiusSpinner" alignment="0" min="-2" pref="62" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Group type="103" groupAlignment="1" max="-2" attributes="0">
<Group type="102" attributes="0">
<Component id="sphereRadialSamplesSpinner" min="-2" pref="62" max="-2" attributes="0"/>
<EmptySpace max="32767" attributes="0"/>
<Component id="sphereUseEvenSlicesLabel" min="-2" max="-2" attributes="0"/>
</Group>
<Group type="102" alignment="0" attributes="0">
<Component id="sphereZSamplesSpinner" min="-2" pref="62" max="-2" attributes="0"/>
<EmptySpace min="-2" pref="144" max="-2" attributes="0"/>
<Component id="sphereInteriorLabel" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="sphereInteriorCheckBox" min="-2" max="-2" attributes="0"/>
<Component id="sphereUseEvenSlicesCheckBox" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
</Group>
</Group>
</Group>
<EmptySpace min="0" pref="164" max="32767" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace type="separate" max="-2" attributes="0"/>
<Group type="103" groupAlignment="1" attributes="0">
<Group type="102" attributes="0">
<Group type="103" groupAlignment="3" attributes="0">
<Component id="sphereNameTextField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="sphereModeComboBox" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace min="-2" pref="4" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="sphereRadialSamplesLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="sphereRadialSamplesSpinner" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="sphereUseEvenSlicesLabel" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<Component id="sphereUseEvenSlicesCheckBox" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="sphereZSamplesLabel" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="sphereZSamplesSpinner" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="sphereInteriorLabel" alignment="1" min="-2" max="-2" attributes="0"/>
<Component id="sphereInteriorCheckBox" alignment="1" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="sphereRadiusSpinner" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="sphereRadiusLabel" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace pref="147" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="sphereZSamplesLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.sphereZSamplesLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JSpinner" name="sphereZSamplesSpinner">
<BindingProperties>
<BindingProperty name="value" source="newGeometrySettings" sourcePath="${spherRadialSamples}" target="sphereZSamplesSpinner" targetPath="value" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
<Component class="javax.swing.JLabel" name="sphereRadialSamplesLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.sphereRadialSamplesLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JSpinner" name="sphereRadialSamplesSpinner">
<Properties>
<Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
<SpinnerModel initial="10" minimum="1" numberType="java.lang.Integer" stepSize="1" type="number"/>
</Property>
</Properties>
<BindingProperties>
<BindingProperty name="value" source="newGeometrySettings" sourcePath="${sphereZSamples}" target="sphereRadialSamplesSpinner" targetPath="value" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
<Component class="javax.swing.JLabel" name="sphereUseEvenSlicesLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.sphereUseEvenSlicesLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="sphereUseEvenSlicesCheckBox">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.sphereUseEvenSlicesCheckBox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
<BindingProperties>
<BindingProperty name="selected" source="newGeometrySettings" sourcePath="${sphereUseEvenSlices}" target="sphereUseEvenSlicesCheckBox" targetPath="selected" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
<Component class="javax.swing.JCheckBox" name="sphereInteriorCheckBox">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.sphereInteriorCheckBox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
<BindingProperties>
<BindingProperty name="selected" source="newGeometrySettings" sourcePath="${sphereInterior}" target="sphereInteriorCheckBox" targetPath="selected" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
<Component class="javax.swing.JLabel" name="sphereInteriorLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.sphereInteriorLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JSpinner" name="sphereRadiusSpinner">
<Properties>
<Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
<SpinnerModel initial="1.0" minimum="0.0" numberType="java.lang.Float" stepSize="0.1" type="number"/>
</Property>
</Properties>
<BindingProperties>
<BindingProperty name="value" source="newGeometrySettings" sourcePath="${sphereRadius}" target="sphereRadiusSpinner" targetPath="value" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
<Component class="javax.swing.JLabel" name="sphereRadiusLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.sphereRadiusLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="sphereNameTextField">
<BindingProperties>
<BindingProperty name="text" source="newGeometrySettings" sourcePath="${sphereName}" target="sphereNameTextField" targetPath="text" updateStrategy="0" immediately="false">
<BindingParameter name="javax.swing.binding.ParameterKeys.TEXT_CHANGE_STRATEGY" value="javax.swing.binding.TextChangeStrategy.ON_TYPE"/>
</BindingProperty>
</BindingProperties>
</Component>
<Component class="javax.swing.JComboBox" name="sphereModeComboBox">
<BindingProperties>
<BindingProperty name="elements" source="newGeometrySettings" sourcePath="${modes}" target="sphereModeComboBox" targetPath="elements" updateStrategy="0" immediately="false"/>
<BindingProperty name="selectedItem" source="newGeometrySettings" sourcePath="${sphereMode}" target="sphereModeComboBox" targetPath="selectedItem" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="quadPanel">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
<JTabbedPaneConstraints tabName="Quad">
<Property name="tabTitle" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.quadPanel.TabConstraints.tabTitle" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</JTabbedPaneConstraints>
</Constraint>
</Constraints>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="quadNameTextField" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="quadModeComboBox" min="-2" max="-2" attributes="0"/>
</Group>
<Group type="102" attributes="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="quadFlipCoordLabel" min="-2" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="jComboBox2" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="quadWidthLabel" min="-2" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="quadFlipCoordCheckBox" alignment="0" min="-2" pref="101" max="-2" attributes="0"/>
<Group type="102" alignment="0" attributes="0">
<Component id="quadWidthSpinner" min="-2" pref="101" max="-2" attributes="0"/>
<EmptySpace type="unrelated" max="-2" attributes="0"/>
<Component id="quadHeightLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="quadHeightSpinner" min="-2" pref="101" max="-2" attributes="0"/>
</Group>
</Group>
<EmptySpace min="0" pref="176" max="32767" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="quadNameTextField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="quadModeComboBox" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="quadWidthLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="quadWidthSpinner" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="quadHeightLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="quadHeightSpinner" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jComboBox2" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Component id="quadFlipCoordLabel" min="-2" max="-2" attributes="0"/>
<Component id="quadFlipCoordCheckBox" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace pref="166" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JTextField" name="quadNameTextField">
<BindingProperties>
<BindingProperty name="text" source="newGeometrySettings" sourcePath="${quadName}" target="quadNameTextField" targetPath="text" updateStrategy="0" immediately="false">
<BindingParameter name="javax.swing.binding.ParameterKeys.TEXT_CHANGE_STRATEGY" value="javax.swing.binding.TextChangeStrategy.ON_TYPE"/>
</BindingProperty>
</BindingProperties>
</Component>
<Component class="javax.swing.JLabel" name="quadWidthLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.quadWidthLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JLabel" name="quadHeightLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.quadHeightLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JSpinner" name="quadWidthSpinner">
<Properties>
<Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
<SpinnerModel initial="0.0" minimum="0.0" numberType="java.lang.Float" stepSize="0.5" type="number"/>
</Property>
</Properties>
<BindingProperties>
<BindingProperty name="value" source="newGeometrySettings" sourcePath="${quadWidth}" target="quadWidthSpinner" targetPath="value" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
<Component class="javax.swing.JSpinner" name="quadHeightSpinner">
<Properties>
<Property name="model" type="javax.swing.SpinnerModel" editor="org.netbeans.modules.form.editors2.SpinnerModelEditor">
<SpinnerModel initial="0.0" minimum="0.0" numberType="java.lang.Float" stepSize="0.5" type="number"/>
</Property>
</Properties>
<BindingProperties>
<BindingProperty name="value" source="newGeometrySettings" sourcePath="${quadHeight}" target="quadHeightSpinner" targetPath="value" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
<Component class="javax.swing.JLabel" name="quadFlipCoordLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.quadFlipCoordLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="quadFlipCoordCheckBox">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.quadFlipCoordCheckBox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
<BindingProperties>
<BindingProperty name="selected" source="newGeometrySettings" sourcePath="${quadFlipCoords}" target="quadFlipCoordCheckBox" targetPath="selected" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
<Component class="javax.swing.JComboBox" name="quadModeComboBox">
<BindingProperties>
<BindingProperty name="elements" source="newGeometrySettings" sourcePath="${modes}" target="quadModeComboBox" targetPath="elements" updateStrategy="0" immediately="false"/>
<BindingProperty name="selectedItem" source="newGeometrySettings" sourcePath="${quadMode}" target="quadModeComboBox" targetPath="selectedItem" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
<Component class="javax.swing.JComboBox" name="jComboBox2">
<BindingProperties>
<BindingProperty name="elements" source="newGeometrySettings" sourcePath="${plans}" target="jComboBox2" targetPath="elements" updateStrategy="0" immediately="false"/>
<BindingProperty name="selectedItem" source="newGeometrySettings" sourcePath="${quadPlan}" target="jComboBox2" targetPath="selectedItem" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="linePanel">
<Constraints>
<Constraint layoutClass="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout" value="org.netbeans.modules.form.compat2.layouts.support.JTabbedPaneSupportLayout$JTabbedPaneConstraintsDescription">
<JTabbedPaneConstraints tabName="Line">
<Property name="tabTitle" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.linePanel.TabConstraints.tabTitle" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</JTabbedPaneConstraints>
</Constraint>
</Constraints>
<Layout>
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<Component id="lineNameTextField" max="32767" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="jComboBox1" min="-2" max="-2" attributes="0"/>
</Group>
<Group type="102" alignment="0" attributes="0">
<Component id="lineStartLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="lineStartTextField" min="-2" pref="109" max="-2" attributes="0"/>
<EmptySpace min="-2" pref="78" max="-2" attributes="0"/>
<Component id="lineEndLabel" min="-2" max="-2" attributes="0"/>
<EmptySpace max="-2" attributes="0"/>
<Component id="lineEndTextField" min="-2" pref="123" max="-2" attributes="0"/>
<EmptySpace min="0" pref="169" max="32767" attributes="0"/>
</Group>
</Group>
<EmptySpace max="-2" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
<Group type="103" groupAlignment="0" attributes="0">
<Group type="102" alignment="0" attributes="0">
<EmptySpace max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="lineNameTextField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="jComboBox1" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace min="-2" pref="1" max="-2" attributes="0"/>
<Group type="103" groupAlignment="3" attributes="0">
<Component id="lineStartLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="lineStartTextField" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="lineEndLabel" alignment="3" min="-2" max="-2" attributes="0"/>
<Component id="lineEndTextField" alignment="3" min="-2" max="-2" attributes="0"/>
</Group>
<EmptySpace pref="203" max="32767" attributes="0"/>
</Group>
</Group>
</DimensionLayout>
</Layout>
<SubComponents>
<Component class="javax.swing.JTextField" name="lineNameTextField">
<BindingProperties>
<BindingProperty name="text" source="newGeometrySettings" sourcePath="${lineName}" target="lineNameTextField" targetPath="text" updateStrategy="0" immediately="false">
<BindingParameter name="javax.swing.binding.ParameterKeys.TEXT_CHANGE_STRATEGY" value="javax.swing.binding.TextChangeStrategy.ON_TYPE"/>
</BindingProperty>
</BindingProperties>
</Component>
<Component class="javax.swing.JLabel" name="lineStartLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.lineStartLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="lineStartTextField">
<BindingProperties>
<BindingProperty name="text" source="newGeometrySettings" sourcePath="${lineStart}" target="lineStartTextField" targetPath="text" updateStrategy="0" immediately="false">
<BindingParameter name="javax.swing.binding.ParameterKeys.TEXT_CHANGE_STRATEGY" value="javax.swing.binding.TextChangeStrategy.ON_ACTION_OR_FOCUS_LOST"/>
<Property name="converter" type="org.jdesktop.beansbinding.Converter" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
<Connection component="converterVector3f_String" type="bean"/>
</Property>
</BindingProperty>
</BindingProperties>
</Component>
<Component class="javax.swing.JLabel" name="lineEndLabel">
<Properties>
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
<ResourceString bundle="com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties" key="NewGeometrySettingsTopComponent.lineEndLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, &quot;{key}&quot;)"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JTextField" name="lineEndTextField">
<BindingProperties>
<BindingProperty name="text" source="newGeometrySettings" sourcePath="${lineEnd}" target="lineEndTextField" targetPath="text" updateStrategy="0" immediately="false">
<BindingParameter name="javax.swing.binding.ParameterKeys.TEXT_CHANGE_STRATEGY" value="javax.swing.binding.TextChangeStrategy.ON_ACTION_OR_FOCUS_LOST"/>
<Property name="converter" type="org.jdesktop.beansbinding.Converter" editor="org.netbeans.modules.form.RADConnectionPropertyEditor">
<Connection component="converterVector3f_String" type="bean"/>
</Property>
</BindingProperty>
</BindingProperties>
</Component>
<Component class="javax.swing.JComboBox" name="jComboBox1">
<BindingProperties>
<BindingProperty name="elements" source="newGeometrySettings" sourcePath="${modes}" target="jComboBox1" targetPath="elements" updateStrategy="0" immediately="false"/>
<BindingProperty name="selectedItem" source="newGeometrySettings" sourcePath="${lineMode}" target="jComboBox1" targetPath="selectedItem" updateStrategy="0" immediately="false"/>
</BindingProperties>
</Component>
</SubComponents>
</Container>
</SubComponents>
</Container>
</SubComponents>
</Form>

@ -0,0 +1,565 @@
/*
* 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 = "output", 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 Window",
"HINT_NewGeometrySettingsTopComponent=This is a NewGeometrySettings window"
})
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(boxXLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(boxXSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(26, 26, 26)
.addComponent(boxYLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(boxYSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(28, 28, 28)
.addComponent(boxZLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(boxZSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(boxPanelLayout.createSequentialGroup()
.addComponent(boxNameTextField, javax.swing.GroupLayout.DEFAULT_SIZE, 426, Short.MAX_VALUE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(boxModeComboBox, 0, 133, Short.MAX_VALUE)))
.addContainerGap())
);
boxPanelLayout.setVerticalGroup(
boxPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, boxPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(boxPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER)
.addComponent(boxNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(boxModeComboBox, 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(boxXSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(boxXLabel)
.addComponent(boxYLabel)
.addComponent(boxYSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(boxZSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(boxZLabel))
.addContainerGap(197, 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)
.addGroup(spherePanelLayout.createSequentialGroup()
.addComponent(sphereNameTextField)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(sphereModeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(spherePanelLayout.createSequentialGroup()
.addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(sphereZSamplesLabel)
.addGroup(spherePanelLayout.createSequentialGroup()
.addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(sphereRadialSamplesLabel)
.addComponent(sphereRadiusLabel))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(sphereRadiusSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(spherePanelLayout.createSequentialGroup()
.addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
.addGroup(spherePanelLayout.createSequentialGroup()
.addComponent(sphereRadialSamplesSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(sphereUseEvenSlicesLabel))
.addGroup(javax.swing.GroupLayout.Alignment.LEADING, spherePanelLayout.createSequentialGroup()
.addComponent(sphereZSamplesSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(144, 144, 144)
.addComponent(sphereInteriorLabel)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(sphereInteriorCheckBox)
.addComponent(sphereUseEvenSlicesCheckBox))))))
.addGap(0, 164, Short.MAX_VALUE)))
.addContainerGap())
);
spherePanelLayout.setVerticalGroup(
spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(spherePanelLayout.createSequentialGroup()
.addGap(18, 18, 18)
.addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
.addGroup(spherePanelLayout.createSequentialGroup()
.addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(sphereNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(sphereModeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(4, 4, 4)
.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)
.addComponent(sphereUseEvenSlicesLabel)))
.addComponent(sphereUseEvenSlicesCheckBox))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(sphereZSamplesLabel, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(sphereZSamplesSpinner, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(sphereInteriorLabel, javax.swing.GroupLayout.Alignment.TRAILING)
.addComponent(sphereInteriorCheckBox, javax.swing.GroupLayout.Alignment.TRAILING))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(spherePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(sphereRadiusSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(sphereRadiusLabel))
.addContainerGap(147, 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)
.addGroup(quadPanelLayout.createSequentialGroup()
.addComponent(quadNameTextField)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(quadModeComboBox, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(quadPanelLayout.createSequentialGroup()
.addGroup(quadPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(quadFlipCoordLabel)
.addGroup(quadPanelLayout.createSequentialGroup()
.addComponent(jComboBox2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(quadWidthLabel)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addGroup(quadPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(quadFlipCoordCheckBox, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGroup(quadPanelLayout.createSequentialGroup()
.addComponent(quadWidthSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(quadHeightLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(quadHeightSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, 101, javax.swing.GroupLayout.PREFERRED_SIZE)))
.addGap(0, 176, Short.MAX_VALUE)))
.addContainerGap())
);
quadPanelLayout.setVerticalGroup(
quadPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(quadPanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(quadPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(quadNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(quadModeComboBox, 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(quadWidthLabel)
.addComponent(quadWidthSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(quadHeightLabel)
.addComponent(quadHeightSpinner, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jComboBox2, 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(166, 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(linePanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(linePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(linePanelLayout.createSequentialGroup()
.addComponent(lineNameTextField)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGroup(linePanelLayout.createSequentialGroup()
.addComponent(lineStartLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lineStartTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 109, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(78, 78, 78)
.addComponent(lineEndLabel)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
.addComponent(lineEndTextField, javax.swing.GroupLayout.PREFERRED_SIZE, 123, javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(0, 169, Short.MAX_VALUE)))
.addContainerGap())
);
linePanelLayout.setVerticalGroup(
linePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(linePanelLayout.createSequentialGroup()
.addContainerGap()
.addGroup(linePanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(lineNameTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
.addComponent(jComboBox1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addGap(1, 1, 1)
.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)
.addComponent(lineEndLabel)
.addComponent(lineEndTextField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
.addContainerGap(203, 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
}
}

@ -0,0 +1,57 @@
/*
* 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 com.jme3.gde.core.sceneexplorer.nodes.actions.AbstractNewSpatialAction;
import com.jme3.gde.core.sceneexplorer.nodes.actions.NewGeometryAction;
import com.jme3.scene.Geometry;
import com.jme3.scene.Node;
import com.jme3.scene.Spatial;
/**
*
* @author david.bernard.31
*/
@org.openide.util.lookup.ServiceProvider(service = NewGeometryAction.class)
public class NewGeometrySphereAction extends AbstractNewSpatialAction implements NewGeometryAction {
public NewGeometrySphereAction() {
name = "Sphere";
}
@Override
protected Spatial doCreateSpatial(Node parent) {
Geometry geom = NewGeometry.sphere(pm);
parent.attachChild(geom);
return geom;
}
}
Loading…
Cancel
Save