From ed06161f49202f4b2551594b77bea8e73fadcbac Mon Sep 17 00:00:00 2001 From: David Bernard Date: Mon, 9 Jun 2014 20:17:51 +0200 Subject: [PATCH] SDK: add action to Quad, Line geometries in SceneExplorer and a NewGeometrySettingsTopComponent to configure the creation. --- .../nodes/actions/NewSpatialPopup.java | 4 +- .../nodes/actions/impl/Bundle.properties | 32 +- .../impl/ConverterVector3f_String.java | 77 ++ .../nodes/actions/impl/NewGeometry.java | 112 +++ .../actions/impl/NewGeometryBoxAction.java | 10 +- .../actions/impl/NewGeometryLineAction.java | 57 ++ .../actions/impl/NewGeometryQuadAction.java | 57 ++ .../actions/impl/NewGeometrySettings.java | 234 ++++- .../impl/NewGeometrySettingsTopComponent.form | 828 ++++++++++++------ .../impl/NewGeometrySettingsTopComponent.java | 565 ++++++++---- .../actions/impl/NewGeometrySphereAction.java | 16 +- 11 files changed, 1550 insertions(+), 442 deletions(-) create mode 100644 sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/ConverterVector3f_String.java create mode 100644 sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometry.java create mode 100644 sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryLineAction.java create mode 100644 sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryQuadAction.java diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/NewSpatialPopup.java b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/NewSpatialPopup.java index c46c7a416..a531e51ce 100644 --- a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/NewSpatialPopup.java +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/NewSpatialPopup.java @@ -79,7 +79,9 @@ public class NewSpatialPopup extends AbstractAction implements Presenter.Popup { result.add(new JMenuItem(new AddEmitterAction())); result.add(new JMenuItem(new AddAudioNodeAction())); 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)) { diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties index 80eae6ba4..20b2fc0e9 100644 --- a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/Bundle.properties @@ -38,15 +38,23 @@ GenerateLODVisualPanel1.estLabel9.text= GenerateLODVisualPanel1.estLabel10.text= GenerateLODVisualPanel1.estLabel5.text= GenerateLODVisualPanel1.estLabel3.text= -NewGeometrySettingsTopComponent.jLabel5.text=y -NewGeometrySettingsTopComponent.jLabel4.text=x -NewGeometrySettingsTopComponent.jLabel3.text=Sphere -NewGeometrySettingsTopComponent.jLabel1.text=Box -NewGeometrySettingsTopComponent.jLabel13.text=interior -NewGeometrySettingsTopComponent.jLabel12.text=useEvenSlices -NewGeometrySettingsTopComponent.jLabel11.text=radius -NewGeometrySettingsTopComponent.jLabel10.text=radialSamples -NewGeometrySettingsTopComponent.jLabel9.text=zSamples -NewGeometrySettingsTopComponent.jCheckBox2.text= -NewGeometrySettingsTopComponent.jCheckBox1.text= -NewGeometrySettingsTopComponent.jLabel6.text=z +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 diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/ConverterVector3f_String.java b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/ConverterVector3f_String.java new file mode 100644 index 000000000..0e50afa04 --- /dev/null +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/ConverterVector3f_String.java @@ -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 { + + 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; + } +} diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometry.java b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometry.java new file mode 100644 index 000000000..1160cda82 --- /dev/null +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometry.java @@ -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; + } +} diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryBoxAction.java b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryBoxAction.java index a25156278..680e0ca35 100644 --- a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryBoxAction.java +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryBoxAction.java @@ -33,12 +33,9 @@ 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.material.Material; -import com.jme3.math.ColorRGBA; import com.jme3.scene.Geometry; import com.jme3.scene.Node; import com.jme3.scene.Spatial; -import com.jme3.scene.shape.Box; /** * @@ -53,12 +50,7 @@ public class NewGeometryBoxAction extends AbstractNewSpatialAction implements Ne @Override protected Spatial doCreateSpatial(Node parent) { - NewGeometrySettings cfg = new NewGeometrySettings(); - Box b = new Box(cfg.getBoxX(), cfg.getBoxY(), cfg.getBoxZ()); // create cube shape - Geometry geom = new Geometry("Box", b); - Material mat = new Material(pm, "Common/MatDefs/Misc/Unshaded.j3md"); - mat.setColor("Color", ColorRGBA.randomColor()); - geom.setMaterial(mat); + Geometry geom = NewGeometry.box(pm); parent.attachChild(geom); return geom; } diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryLineAction.java b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryLineAction.java new file mode 100644 index 000000000..5da424f86 --- /dev/null +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryLineAction.java @@ -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; + } +} diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryQuadAction.java b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryQuadAction.java new file mode 100644 index 000000000..581ea5a43 --- /dev/null +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometryQuadAction.java @@ -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; + } +} diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettings.java b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettings.java index 274b19067..e4220512d 100644 --- a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettings.java +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettings.java @@ -31,9 +31,14 @@ */ 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; @@ -46,6 +51,9 @@ import org.openide.util.NbPreferences; public class NewGeometrySettings implements Serializable, PreferenceChangeListener { + public static enum Plan { + XY, XZ, YZ + } private transient final PropertyChangeSupport propertySupport; private transient final Preferences pref; @@ -54,11 +62,77 @@ public class NewGeometrySettings implements Serializable, PreferenceChangeListen 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() { @@ -89,6 +163,28 @@ public class NewGeometrySettings implements Serializable, PreferenceChangeListen 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() { @@ -139,23 +235,139 @@ public class NewGeometrySettings implements Serializable, PreferenceChangeListen pref.putBoolean(PROP_SphereInterior, value); } + //-- Line + public static final String PROP_LineName = "LineName"; - - public void addPropertyChangeListener(final PropertyChangeListener listener) { - propertySupport.addPropertyChangeListener(listener); + public String getLineName() { + return pref.get(PROP_LineName, "Line"); } - - public void removePropertyChangeListener(PropertyChangeListener listener) { - propertySupport.removePropertyChangeListener(listener); + + public void setLineName(String value) { + pref.put(PROP_LineName, value); } + + public static final String PROP_LineMode = "LineMode"; - public void preferenceChange(PreferenceChangeEvent evt) { - propertySupport.firePropertyChange(evt.getKey(), null, evt.getNewValue()); + public Mode getLineMode() { + return getMode(PROP_LineMode); } - public void close() { - pref.removePreferenceChangeListener(this); + 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 getModes() { + return Arrays.asList(Mode.values()); + } + + public List getPlans() { + return Arrays.asList(Plan.values()); + } } diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettingsTopComponent.form b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettingsTopComponent.form index 58e989be5..5f14c1f25 100644 --- a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettingsTopComponent.form +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettingsTopComponent.form @@ -2,7 +2,9 @@
- + + + @@ -20,267 +22,605 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + + + - - + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - - - - + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettingsTopComponent.java b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettingsTopComponent.java index 0e78651d2..ab35e434c 100644 --- a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettingsTopComponent.java +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySettingsTopComponent.java @@ -83,207 +83,471 @@ public final class NewGeometrySettingsTopComponent extends TopComponent { private void initComponents() { bindingGroup = new org.jdesktop.beansbinding.BindingGroup(); - newGeometrySettings1 = new com.jme3.gde.core.sceneexplorer.nodes.actions.impl.NewGeometrySettings(); - jLabel5 = new javax.swing.JLabel(); - jSpinner3 = new javax.swing.JSpinner(); - jLabel6 = new javax.swing.JLabel(); - jCheckBox1 = new javax.swing.JCheckBox(); - jSpinner4 = new javax.swing.JSpinner(); - jCheckBox2 = new javax.swing.JCheckBox(); - jSpinner5 = new javax.swing.JSpinner(); - jLabel9 = new javax.swing.JLabel(); - jLabel10 = new javax.swing.JLabel(); - jLabel11 = new javax.swing.JLabel(); - jLabel12 = new javax.swing.JLabel(); - jLabel13 = new javax.swing.JLabel(); - jLabel1 = new javax.swing.JLabel(); - jSpinner6 = new javax.swing.JSpinner(); - jLabel3 = new javax.swing.JLabel(); - jSpinner1 = new javax.swing.JSpinner(); - jLabel4 = new javax.swing.JLabel(); - jSpinner2 = new javax.swing.JSpinner(); - - org.openide.awt.Mnemonics.setLocalizedText(jLabel5, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.jLabel5.text")); // NOI18N - - jSpinner3.setModel(new javax.swing.SpinnerNumberModel(Integer.valueOf(10), Integer.valueOf(1), null, Integer.valueOf(1))); - - org.jdesktop.beansbinding.Binding binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings1, org.jdesktop.beansbinding.ELProperty.create("${sphereZSamples}"), jSpinner3, org.jdesktop.beansbinding.BeanProperty.create("value")); + 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); - org.openide.awt.Mnemonics.setLocalizedText(jLabel6, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.jLabel6.text")); // NOI18N + boxNameTextField.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + boxNameTextFieldActionPerformed(evt); + } + }); - org.openide.awt.Mnemonics.setLocalizedText(jCheckBox1, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.jCheckBox1.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(boxXLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.boxXLabel.text")); // NOI18N - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings1, org.jdesktop.beansbinding.ELProperty.create("${sphereUseEvenSlices}"), jCheckBox1, org.jdesktop.beansbinding.BeanProperty.create("selected")); + 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); - jSpinner4.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(1.0f), Float.valueOf(0.0f), null, Float.valueOf(0.1f))); + 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, newGeometrySettings1, org.jdesktop.beansbinding.ELProperty.create("${sphereRadius}"), jSpinner4, org.jdesktop.beansbinding.BeanProperty.create("value")); + 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(jCheckBox2, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.jCheckBox2.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(sphereRadialSamplesLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.sphereRadialSamplesLabel.text")); // NOI18N - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings1, org.jdesktop.beansbinding.ELProperty.create("${sphereInterior}"), jCheckBox2, org.jdesktop.beansbinding.BeanProperty.create("selected")); + 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); - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings1, org.jdesktop.beansbinding.ELProperty.create("${spherRadialSamples}"), jSpinner5, org.jdesktop.beansbinding.BeanProperty.create("value")); + 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(jLabel9, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.jLabel9.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(sphereInteriorCheckBox, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.sphereInteriorCheckBox.text")); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(jLabel10, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.jLabel10.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(jLabel11, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.jLabel11.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(sphereInteriorLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.sphereInteriorLabel.text")); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(jLabel12, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.jLabel12.text")); // NOI18N + sphereRadiusSpinner.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(1.0f), Float.valueOf(0.0f), null, Float.valueOf(0.1f))); - org.openide.awt.Mnemonics.setLocalizedText(jLabel13, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.jLabel13.text")); // NOI18N + 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); - jLabel1.setBackground(getBackground()); - jLabel1.setFont(new java.awt.Font("Dialog", 1, 11)); // NOI18N - jLabel1.setForeground(getForeground()); - org.openide.awt.Mnemonics.setLocalizedText(jLabel1, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.jLabel1.text")); // NOI18N + org.openide.awt.Mnemonics.setLocalizedText(sphereRadiusLabel, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.sphereRadiusLabel.text")); // NOI18N - jSpinner6.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("${sphereName}"), sphereNameTextField, org.jdesktop.beansbinding.BeanProperty.create("text")); + bindingGroup.addBinding(binding); - binding = org.jdesktop.beansbinding.Bindings.createAutoBinding(org.jdesktop.beansbinding.AutoBinding.UpdateStrategy.READ_WRITE, newGeometrySettings1, org.jdesktop.beansbinding.ELProperty.create("${boxZ}"), jSpinner6, org.jdesktop.beansbinding.BeanProperty.create("value")); + 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); - jLabel3.setFont(new java.awt.Font("Dialog", 1, 11)); // NOI18N - org.openide.awt.Mnemonics.setLocalizedText(jLabel3, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.jLabel3.text")); // NOI18N + 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)) + ); - jSpinner1.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(1.0f), null, null, Float.valueOf(0.5f))); + 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, newGeometrySettings1, org.jdesktop.beansbinding.ELProperty.create("${boxX}"), jSpinner1, org.jdesktop.beansbinding.BeanProperty.create("value")); + 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(jLabel4, org.openide.util.NbBundle.getMessage(NewGeometrySettingsTopComponent.class, "NewGeometrySettingsTopComponent.jLabel4.text")); // NOI18N + 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 - jSpinner2.setModel(new javax.swing.SpinnerNumberModel(Float.valueOf(1.0f), Float.valueOf(0.0f), null, Float.valueOf(0.5f))); + 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, newGeometrySettings1, org.jdesktop.beansbinding.ELProperty.create("${boxY}"), jSpinner2, org.jdesktop.beansbinding.BeanProperty.create("value")); + 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) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addGroup(layout.createSequentialGroup() - .addComponent(jLabel1) - .addGap(433, 433, 433)) - .addGroup(layout.createSequentialGroup() - .addGap(12, 12, 12) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel4) - .addComponent(jLabel10) - .addComponent(jLabel12)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jSpinner3, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jCheckBox1)) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel9)) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel13, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel5, javax.swing.GroupLayout.Alignment.TRAILING)))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSpinner5, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jSpinner2, 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) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel6) - .addComponent(jLabel11)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jSpinner4, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jSpinner6, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE))) - .addGroup(layout.createSequentialGroup() - .addComponent(jCheckBox2) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 193, javax.swing.GroupLayout.PREFERRED_SIZE))))) - .addGroup(layout.createSequentialGroup() - .addComponent(jLabel3) - .addGap(412, 412, 412))) - .addGap(0, 196, Short.MAX_VALUE)) + .addComponent(jTabbedPane1) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jLabel1) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel4) - .addComponent(jSpinner1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel5) - .addComponent(jSpinner2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel6) - .addComponent(jSpinner6, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jLabel3) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel10) - .addComponent(jLabel11) - .addComponent(jSpinner3, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel9) - .addComponent(jSpinner5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jSpinner4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel12) - .addComponent(jCheckBox1) - .addComponent(jLabel13) - .addComponent(jCheckBox2)) - .addContainerGap(299, Short.MAX_VALUE)) + .addComponent(jTabbedPane1, javax.swing.GroupLayout.Alignment.TRAILING) ); bindingGroup.bind(); }// //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.JCheckBox jCheckBox1; - private javax.swing.JCheckBox jCheckBox2; - private javax.swing.JLabel jLabel1; - private javax.swing.JLabel jLabel10; - private javax.swing.JLabel jLabel11; - private javax.swing.JLabel jLabel12; - private javax.swing.JLabel jLabel13; - private javax.swing.JLabel jLabel3; - private javax.swing.JLabel jLabel4; - private javax.swing.JLabel jLabel5; - private javax.swing.JLabel jLabel6; - private javax.swing.JLabel jLabel9; - private javax.swing.JSpinner jSpinner1; - private javax.swing.JSpinner jSpinner2; - private javax.swing.JSpinner jSpinner3; - private javax.swing.JSpinner jSpinner4; - private javax.swing.JSpinner jSpinner5; - private javax.swing.JSpinner jSpinner6; - private com.jme3.gde.core.sceneexplorer.nodes.actions.impl.NewGeometrySettings newGeometrySettings1; + 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 - newGeometrySettings1.open(); + public void componentOpened() { // TODO add custom code on component opening + newGeometrySettings.open(); } @Override public void componentClosed() { - // TODO add custom code on component closing - newGeometrySettings1.close(); + newGeometrySettings.close(); } void writeProperties(java.util.Properties p) { @@ -297,4 +561,5 @@ public final class NewGeometrySettingsTopComponent extends TopComponent { String version = p.getProperty("version"); // TODO read your settings according to their version } + } diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySphereAction.java b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySphereAction.java index 5617e2f35..0c67ce760 100644 --- a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySphereAction.java +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/actions/impl/NewGeometrySphereAction.java @@ -33,12 +33,9 @@ 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.material.Material; -import com.jme3.math.ColorRGBA; import com.jme3.scene.Geometry; import com.jme3.scene.Node; import com.jme3.scene.Spatial; -import com.jme3.scene.shape.Sphere; /** * @@ -53,18 +50,7 @@ public class NewGeometrySphereAction extends AbstractNewSpatialAction implements @Override protected Spatial doCreateSpatial(Node parent) { - NewGeometrySettings cfg = new NewGeometrySettings(); - Sphere b = new Sphere( - cfg.getSphereZSamples() - , cfg.getSpherRadialSamples() - , cfg.getSphereRadius() - , cfg.getSphereUseEvenSlices() - , cfg.getSphereInterior() - ); - Geometry geom = new Geometry("Sphere", b); - Material mat = new Material(pm, "Common/MatDefs/Misc/Unshaded.j3md"); - mat.setColor("Color", ColorRGBA.randomColor()); - geom.setMaterial(mat); + Geometry geom = NewGeometry.sphere(pm); parent.attachChild(geom); return geom; }