diff --git a/sdk/jme3-core/manifest.mf b/sdk/jme3-core/manifest.mf
index d1a2d12e2..691281ff9 100644
--- a/sdk/jme3-core/manifest.mf
+++ b/sdk/jme3-core/manifest.mf
@@ -1,8 +1,8 @@
-Manifest-Version: 1.0
-OpenIDE-Module: com.jme3.gde.core/1
-OpenIDE-Module-Implementation-Version: 0
-OpenIDE-Module-Install: com/jme3/gde/core/Installer.class
-OpenIDE-Module-Layer: com/jme3/gde/core/layer.xml
-OpenIDE-Module-Localizing-Bundle: com/jme3/gde/core/Bundle.properties
-OpenIDE-Module-Requires: org.netbeans.api.javahelp.Help, org.openide.windows.WindowManager
-
+Manifest-Version: 1.0
+OpenIDE-Module: com.jme3.gde.core/1
+OpenIDE-Module-Implementation-Version: 0
+OpenIDE-Module-Install: com/jme3/gde/core/Installer.class
+OpenIDE-Module-Layer: com/jme3/gde/core/layer.xml
+OpenIDE-Module-Localizing-Bundle: com/jme3/gde/core/Bundle.properties
+OpenIDE-Module-Requires: org.netbeans.api.javahelp.Help, org.openide.windows.WindowManager
+
diff --git a/sdk/jme3-core/nbproject/project.xml b/sdk/jme3-core/nbproject/project.xml
index 49e55c89c..e3f04e03c 100644
--- a/sdk/jme3-core/nbproject/project.xml
+++ b/sdk/jme3-core/nbproject/project.xml
@@ -244,22 +244,24 @@
com.jme3.gde.core.assets.actions
com.jme3.gde.core.assets.nodes
com.jme3.gde.core.codeless
+ com.jme3.gde.core.errorreport
com.jme3.gde.core.filters
com.jme3.gde.core.filters.actions
com.jme3.gde.core.filters.impl
+ com.jme3.gde.core.filters.impl.bloom
com.jme3.gde.core.j2seproject
- com.jme3.gde.core.nodes
com.jme3.gde.core.properties
+ com.jme3.gde.core.properties.preview
com.jme3.gde.core.scene
- com.jme3.gde.core.scene.actions
com.jme3.gde.core.scene.controller
+ com.jme3.gde.core.scene.controller.toolbars
com.jme3.gde.core.scene.processors
com.jme3.gde.core.sceneexplorer
com.jme3.gde.core.sceneexplorer.nodes
com.jme3.gde.core.sceneexplorer.nodes.actions
com.jme3.gde.core.sceneexplorer.nodes.actions.impl
- com.jme3.gde.core.sceneexplorer.nodes.properties
com.jme3.gde.core.sceneviewer
+ com.jme3.gde.core.sceneviewer.actions
com.jme3.gde.core.undoredo
com.jme3.gde.core.util
diff --git a/sdk/jme3-core/src/com/jme3/gde/core/properties/TextureBrowser.java b/sdk/jme3-core/src/com/jme3/gde/core/properties/TextureBrowser.java
index 21c02d9d0..4c3b07ad7 100644
--- a/sdk/jme3-core/src/com/jme3/gde/core/properties/TextureBrowser.java
+++ b/sdk/jme3-core/src/com/jme3/gde/core/properties/TextureBrowser.java
@@ -33,6 +33,7 @@ package com.jme3.gde.core.properties;
import com.jme3.asset.TextureKey;
import com.jme3.gde.core.assets.ProjectAssetManager;
+import com.jme3.gde.core.properties.preview.DDSPreview;
import com.jme3.gde.core.scene.PreviewRequest;
import com.jme3.gde.core.scene.SceneApplication;
import com.jme3.gde.core.scene.SceneListener;
@@ -47,6 +48,8 @@ import com.jme3.scene.shape.Quad;
import com.jme3.texture.Texture;
import com.jme3.util.SkyFactory;
import java.awt.event.MouseEvent;
+import java.awt.event.WindowEvent;
+import java.awt.event.WindowListener;
import java.util.logging.Logger;
import javax.swing.DefaultListSelectionModel;
import javax.swing.Icon;
@@ -69,16 +72,12 @@ import org.openide.util.ImageUtilities;
*
* @author bowens
*/
-public class TextureBrowser extends javax.swing.JDialog implements TreeSelectionListener, SceneListener {
+public class TextureBrowser extends javax.swing.JDialog implements TreeSelectionListener, WindowListener {
private ProjectAssetManager assetManager;
private TexturePropertyEditor editor;
- private Geometry quad;
- private Geometry quad3D;
- private Material material;
- private Material material3D;
+ private DDSPreview ddsPreview;
-
public TextureBrowser(java.awt.Frame parent, boolean modal, ProjectAssetManager assetManager, TexturePropertyEditor editor) {
super(parent, modal);
this.assetManager = assetManager;
@@ -88,20 +87,7 @@ public class TextureBrowser extends javax.swing.JDialog implements TreeSelection
setSelectedTexture((Texture) editor.getValue());
setLocationRelativeTo(null);
- Quad quadMesh = new Quad(4.5f, 4.5f);
- Quad quadMesh3D = new Quad(4.5f, 4.5f);
- quadMesh3D.scaleTextureCoordinates(new Vector2f(4, 4));
- quad = new Geometry("previewQuad", quadMesh);
- quad.setLocalTranslation(new Vector3f(-2.25f, -2.25f, 0));
- quad3D = new Geometry("previewQuad", quadMesh3D);
- quad3D.setLocalTranslation(new Vector3f(-2.25f, -2.25f, 0));
- material3D = new Material(assetManager, "com/jme3/gde/core/properties/preview/tex3DThumb.j3md");
- material3D.setFloat("InvDepth", 1f / 16f);
- material3D.setInt("Rows", 4);
- material = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
-
- //quad.setMaterial(material);
- SceneApplication.getApplication().addSceneListener(this);
+
}
@@ -245,18 +231,6 @@ private void jTree1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:even
return true;
}
return false;
-
-
-// if (textureList.getSelectedIndex() > -1) {
-// textureList.getSelectedValue();
-// String selected = (String) textureList.getSelectedValue();
-// Texture tex = assetManager.loadTexture(selected);
-// editor.setValue(tex);
-// editor.setAsText(selected);
-// } else {
-// editor.setValue(null);
-// editor.setAsText(null);
-// }
}
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton cancelButton;
@@ -276,35 +250,12 @@ private void jTree1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:even
}
String[] leaves = assetManager.getTextures();
- // textureList.setListData(leaves);
TreeUtil.createTree(jTree1, leaves);
TreeUtil.expandTree(jTree1, (TreeNode) jTree1.getModel().getRoot(), 1);
jTree1.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
jTree1.addTreeSelectionListener(this);
}
-// private void selectionChanged() {
-// if (textureList.getSelectedIndex() > -1) {
-// String selected = (String) textureList.getSelectedValue();
-// Texture tex = assetManager.loadTexture(selected);
-// Icon newicon = null;
-// if (selected.endsWith(".dds") || selected.endsWith(".DDS")) {
-// try {
-// File file = FileUtil.toFile(assetManager.getAssetFolder().getFileObject(selected));
-// DDSImageFile ddsImageFile = new DDSImageFile(file);
-// BufferedImage bufferedImage = ddsImageFile.getData();
-// newicon = new ImageIcon(bufferedImage);
-// } catch (IOException ex) {
-// Exceptions.printStackTrace(ex);
-// }
-// } else {
-// newicon = ImageUtilities.image2Icon(ImageToAwt.convert(tex.getImage(), false, true, 0));
-// }
-// imagePreviewLabel.setIcon(newicon);
-// } else {
-// imagePreviewLabel.setIcon(null);
-// }
-// }
private void setSelectedTexture(Texture texture) {
if (texture != null) {
Logger.getLogger(TextureBrowser.class.getName()).finer("Looking for Texture: " + texture.getName());
@@ -313,14 +264,6 @@ private void jTree1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:even
jTree1.expandPath(TreeUtil.buildTreePath(jTree1, parent, path, 0, true));
jTree1.getSelectionModel().setSelectionPath(TreeUtil.buildTreePath(jTree1, parent, path, 0, false));
-
-// for (int i = 0; i < textureList.getModel().getSize(); i++) {
-// Logger.getLogger(TextureBrowser.class.getName()).finer("Texture name: " + textureList.getModel().getElementAt(i));
-// if (textureList.getModel().getElementAt(i).equals(texture.getName())) {
-// textureList.setSelectedIndex(i);
-// break;
-// }
-// }
}
}
@@ -338,33 +281,10 @@ private void jTree1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:even
selected = selected.substring(0, selected.lastIndexOf("/"));
Icon newicon = null;
if (selected.endsWith(".dds") || selected.endsWith(".DDS")) {
- TextureKey key = new TextureKey(selected);
- assetManager.deleteFromCache(key);
- Texture t = assetManager.loadTexture(key);
- Spatial geom = quad;
- if (key.getTextureTypeHint() == Texture.Type.TwoDimensional) {
- material.setTexture("ColorMap", t);
- geom.setMaterial(material);
- infoLabel.setText(" " + node.getUserObject() + " w : " + t.getImage().getWidth() + " h : " + t.getImage().getHeight());
- } else if (key.getTextureTypeHint() == Texture.Type.ThreeDimensional) {
- geom = quad3D;
- assetManager.deleteFromCache(key);
- key.setAsTexture3D(true);
- t = assetManager.loadTexture(key);
- material3D.setTexture("Texture", t);
- geom.setMaterial(material3D);
- infoLabel.setText(" " + node.getUserObject() + " (Texture3D) w : " + t.getImage().getWidth() + " h : " + t.getImage().getHeight()+ " d : " + t.getImage().getDepth());
- } else if (key.getTextureTypeHint() == Texture.Type.CubeMap) {
- assetManager.deleteFromCache(key);
- geom = SkyFactory.createSky(assetManager, selected, false);
- infoLabel.setText(" " + node.getUserObject() + " (CubeMap) w : " + t.getImage().getWidth() + " h : " + t.getImage().getHeight());
+ if (ddsPreview == null) {
+ ddsPreview = new DDSPreview(assetManager);
}
-
- PreviewRequest request = new PreviewRequest(this, geom, 450, 450);
- request.getCameraRequest().setLocation(new Vector3f(0, 0, 5.3f));
- request.getCameraRequest().setLookAt(new Vector3f(0, 0, 0), Vector3f.UNIT_Y.mult(-1));
- SceneApplication.getApplication().createPreview(request);
-
+ ddsPreview.requestPreview(selected, (String) node.getUserObject(), 450, 450, imagePreviewLabel, infoLabel);
} else {
Texture tex = assetManager.loadTexture(selected);
@@ -381,23 +301,28 @@ private void jTree1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:even
}
- public void sceneRequested(SceneRequest request) {
+ public void windowOpened(WindowEvent e) {
+ }
+
+ public void windowClosing(WindowEvent e) {
+ if (ddsPreview != null) {
+ ddsPreview.cleanUp();
+ }
+ }
+
+ public void windowClosed(WindowEvent e) {
+ }
+
+ public void windowIconified(WindowEvent e) {
}
- public boolean sceneClose(SceneRequest request) {
- return true;
+ public void windowDeiconified(WindowEvent e) {
}
- public void previewRequested(PreviewRequest request) {
- if (request.getRequester() == this) {
- final ImageIcon icon = new ImageIcon(request.getImage());
- java.awt.EventQueue.invokeLater(new Runnable() {
+ public void windowActivated(WindowEvent e) {
+ }
- public void run() {
- imagePreviewLabel.setIcon(icon);
- }
- });
- }
+ public void windowDeactivated(WindowEvent e) {
}
class ToggleSelectionModel extends DefaultListSelectionModel {
diff --git a/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/DDSPreview.java b/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/DDSPreview.java
new file mode 100644
index 000000000..cd1ec7cb6
--- /dev/null
+++ b/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/DDSPreview.java
@@ -0,0 +1,139 @@
+/*
+ * 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.properties.preview;
+
+import com.jme3.asset.TextureKey;
+import com.jme3.gde.core.assets.ProjectAssetManager;
+import com.jme3.gde.core.scene.PreviewRequest;
+import com.jme3.gde.core.scene.SceneApplication;
+import com.jme3.gde.core.scene.SceneListener;
+import com.jme3.gde.core.scene.SceneRequest;
+import com.jme3.material.Material;
+import com.jme3.math.Vector2f;
+import com.jme3.math.Vector3f;
+import com.jme3.scene.Geometry;
+import com.jme3.scene.Spatial;
+import com.jme3.scene.shape.Quad;
+import com.jme3.texture.Texture;
+import com.jme3.util.SkyFactory;
+import javax.swing.ImageIcon;
+import javax.swing.JLabel;
+
+/**
+ *
+ * @author Nehon
+ */
+public class DDSPreview implements SceneListener {
+
+ private ProjectAssetManager assetManager;
+ private JLabel picPreview;
+ private Geometry quad;
+ private Geometry quad3D;
+ private Material material;
+ private Material material3D;
+
+ public DDSPreview(ProjectAssetManager assetManager) {
+ this.assetManager = assetManager;
+
+ Quad quadMesh = new Quad(4.5f, 4.5f);
+ Quad quadMesh3D = new Quad(4.5f, 4.5f);
+ quadMesh3D.scaleTextureCoordinates(new Vector2f(4, 4));
+ quad = new Geometry("previewQuad", quadMesh);
+ quad.setLocalTranslation(new Vector3f(-2.25f, -2.25f, 0));
+ quad3D = new Geometry("previewQuad", quadMesh3D);
+ quad3D.setLocalTranslation(new Vector3f(-2.25f, -2.25f, 0));
+ material3D = new Material(assetManager, "com/jme3/gde/core/properties/preview/tex3DThumb.j3md");
+ material3D.setFloat("InvDepth", 1f / 16f);
+ material3D.setInt("Rows", 4);
+ material = new Material(assetManager, "Common/MatDefs/Misc/Unshaded.j3md");
+ SceneApplication.getApplication().addSceneListener(this);
+ }
+
+ public void requestPreview(String textureName, String displayName, int width, int height, JLabel picLabel, JLabel infoLabel) {
+ TextureKey key = new TextureKey(textureName);
+ picPreview = picLabel;
+ assetManager.deleteFromCache(key);
+ Texture t = assetManager.loadTexture(key);
+ Spatial geom = quad;
+ if (key.getTextureTypeHint() == Texture.Type.TwoDimensional) {
+ material.setTexture("ColorMap", t);
+ geom.setMaterial(material);
+ if (infoLabel != null) {
+ infoLabel.setText(" " + displayName + " w : " + t.getImage().getWidth() + " h : " + t.getImage().getHeight());
+ }
+ } else if (key.getTextureTypeHint() == Texture.Type.ThreeDimensional) {
+ geom = quad3D;
+ assetManager.deleteFromCache(key);
+ key.setAsTexture3D(true);
+ t = assetManager.loadTexture(key);
+ material3D.setTexture("Texture", t);
+ geom.setMaterial(material3D);
+ if (infoLabel != null) {
+ infoLabel.setText(" " + displayName + " (Texture3D) w : " + t.getImage().getWidth() + " h : " + t.getImage().getHeight() + " d : " + t.getImage().getDepth());
+ }
+ } else if (key.getTextureTypeHint() == Texture.Type.CubeMap) {
+ assetManager.deleteFromCache(key);
+ geom = SkyFactory.createSky(assetManager, textureName, false);
+ if (infoLabel != null) {
+ infoLabel.setText(" " + displayName + " (CubeMap) w : " + t.getImage().getWidth() + " h : " + t.getImage().getHeight());
+ }
+ }
+
+ PreviewRequest request = new PreviewRequest(this, geom, width, height);
+ request.getCameraRequest().setLocation(new Vector3f(0, 0, 5.3f));
+ request.getCameraRequest().setLookAt(new Vector3f(0, 0, 0), Vector3f.UNIT_Y.mult(-1));
+ SceneApplication.getApplication().createPreview(request);
+ }
+
+ public void cleanUp() {
+ SceneApplication.getApplication().removeSceneListener(this);
+ }
+
+ public void sceneRequested(SceneRequest request) {
+ }
+
+ public boolean sceneClose(SceneRequest request) {
+ return true;
+ }
+
+ public void previewRequested(PreviewRequest request) {
+ if (request.getRequester() == this) {
+ final ImageIcon icon = new ImageIcon(request.getImage());
+ java.awt.EventQueue.invokeLater(new Runnable() {
+
+ public void run() {
+ picPreview.setIcon(icon);
+ }
+ });
+ }
+ }
+}