From fd57361a0541e56855c60a367d497e30562b7d8e Mon Sep 17 00:00:00 2001 From: "nor..67" Date: Tue, 15 Nov 2011 21:46:44 +0000 Subject: [PATCH] - add TerrainGrid support to SceneExplorer git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8686 75d07b2b-3a1a-0410-a2c5-0572b91ccdca --- .../sceneexplorer/nodes/JmeTerrainGrid.java | 132 ++++++++++++++++++ .../sceneexplorer/nodes/JmeTerrainQuad.java | 3 +- 2 files changed, 133 insertions(+), 2 deletions(-) create mode 100644 sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeTerrainGrid.java diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeTerrainGrid.java b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeTerrainGrid.java new file mode 100644 index 000000000..cf8170a08 --- /dev/null +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeTerrainGrid.java @@ -0,0 +1,132 @@ +/* + * 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; + +import com.jme3.math.Vector3f; +import com.jme3.terrain.geomipmap.TerrainGrid; +import com.jme3.terrain.geomipmap.TerrainGridListener; +import com.jme3.terrain.geomipmap.TerrainQuad; +import java.awt.Image; +import java.util.logging.Level; +import java.util.logging.Logger; +import org.openide.loaders.DataObject; +import org.openide.nodes.Sheet; +import org.openide.util.ImageUtilities; + +/** + * + * @author normenhansen + */ +@org.openide.util.lookup.ServiceProvider(service = SceneExplorerNode.class) +public class JmeTerrainGrid extends JmeTerrainQuad implements TerrainGridListener { + + private static Image smallImage = + ImageUtilities.loadImage("com/jme3/gde/core/sceneexplorer/nodes/icons/terrain.png"); + private TerrainGrid geom; + + public JmeTerrainGrid() { + } + + public JmeTerrainGrid(TerrainGrid spatial, JmeSpatialChildren children) { + super(spatial, children); + getLookupContents().add(spatial); + this.geom = spatial; + setName(spatial.getName()); + geom.addListener("GuiListener", this); + } + + @Override + public Image getIcon(int type) { + return smallImage; + } + + @Override + public Image getOpenedIcon(int type) { + return smallImage; + } + + @Override + protected Sheet createSheet() { + Sheet sheet = super.createSheet(); + Sheet.Set set = Sheet.createPropertiesSet(); + set.setDisplayName("TerrainGrid"); + set.setName(TerrainGrid.class.getName()); + TerrainGrid obj = geom;//getLookup().lookup(Spatial.class); + if (obj == null) { + return sheet; + } + + createFields(obj.getClass(), set, obj); + + sheet.put(set); + return sheet; + + } + + public Class getExplorerObjectClass() { + return TerrainGrid.class; + } + + public Class getExplorerNodeClass() { + return JmeTerrainGrid.class; + } + + public org.openide.nodes.Node[] createNodes(Object key, DataObject key2, boolean cookie) { + JmeSpatialChildren children = new JmeSpatialChildren((com.jme3.scene.Spatial) key); + children.setReadOnly(cookie); + children.setDataObject(key2); + return new org.openide.nodes.Node[]{new JmeTerrainGrid((TerrainGrid) key, children).setReadOnly(cookie)}; + } + + public void gridMoved(Vector3f vctrf) { + } + + public void tileAttached(Vector3f vctrf, TerrainQuad tq) { + Logger.getLogger(this.getClass().getName()).log(Level.INFO, "Calling TerrainGrid update for node: {0}" + this); + java.awt.EventQueue.invokeLater(new Runnable() { + + public void run() { + refresh(false); + } + }); + } + + public void tileDetached(Vector3f vctrf, TerrainQuad tq) { + Logger.getLogger(this.getClass().getName()).log(Level.INFO, "Calling TerrainGrid update for node: {0}" + this); + java.awt.EventQueue.invokeLater(new Runnable() { + + public void run() { + refresh(false); + } + }); + } +} diff --git a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeTerrainQuad.java b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeTerrainQuad.java index 38225a0c7..873c3551c 100644 --- a/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeTerrainQuad.java +++ b/sdk/jme3-core/src/com/jme3/gde/core/sceneexplorer/nodes/JmeTerrainQuad.java @@ -80,8 +80,7 @@ public class JmeTerrainQuad extends JmeNode { return sheet; } - set.put(makeProperty(obj, int.class, "getMaxLod", "Max Lod")); - set.put(makeProperty(obj, short.class, "getQuadrant", "setQuadrant", "Quadrant")); + createFields(obj.getClass(), set, obj); sheet.put(set); return sheet;