diff --git a/sdk/jme3-core/src/com/jme3/gde/core/properties/TextureBrowser.form b/sdk/jme3-core/src/com/jme3/gde/core/properties/TextureBrowser.form
index 424078412..a5ad10fe2 100644
--- a/sdk/jme3-core/src/com/jme3/gde/core/properties/TextureBrowser.form
+++ b/sdk/jme3-core/src/com/jme3/gde/core/properties/TextureBrowser.form
@@ -9,6 +9,7 @@
+
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 c199fe39a..285ada07c 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
@@ -31,9 +31,8 @@
*/
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.properties.preview.TexturePreview;
import com.jme3.gde.core.util.TreeUtil;
import com.jme3.texture.Texture;
import java.awt.event.MouseEvent;
@@ -42,6 +41,7 @@ import java.awt.event.WindowListener;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
+import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.prefs.Preferences;
import javax.swing.DefaultListSelectionModel;
@@ -52,8 +52,6 @@ import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
-import jme3tools.converters.ImageToAwt;
-import org.openide.util.ImageUtilities;
/**
* Displays all textures in the ProjectAssetManager,
@@ -68,7 +66,7 @@ public class TextureBrowser extends javax.swing.JDialog implements TreeSelection
private ProjectAssetManager assetManager;
private TexturePropertyEditor editor;
- private DDSPreview ddsPreview;
+ private TexturePreview texPreview;
private Preferences prefs;
private static final String PREF_LAST_SELECTED = "lastSelectedTexture";
@@ -234,8 +232,8 @@ private void noTexturebuttonActionPerformed(java.awt.event.ActionEvent evt) {//G
if (node != null && node.isLeaf()) {
String selected = TreeUtil.getPath(node.getUserObjectPath());
selected = selected.substring(0, selected.lastIndexOf("/"));
- Texture tex = assetManager.loadTexture(selected);
- editor.setValue(tex);
+// Texture tex = assetManager.loadTexture(selected);
+// editor.setValue(tex);
editor.setAsText(selected);
return true;
}
@@ -270,7 +268,7 @@ private void noTexturebuttonActionPerformed(java.awt.event.ActionEvent evt) {//G
private void setSelectedTexture(Texture texture) {
if (texture != null) {
- Logger.getLogger(TextureBrowser.class.getName()).finer("Looking for Texture: " + texture.getName());
+ Logger.getLogger(TextureBrowser.class.getName()).log(Level.FINER, "Looking for Texture: {0}", texture.getName());
String[] path = ("/" + texture.getName()).split("/");
TreePath parent = new TreePath((TreeNode) jTree1.getModel().getRoot());
TreePath selectedTreePath = TreeUtil.buildTreePath(jTree1, parent, path, 0, true);
@@ -287,6 +285,7 @@ private void noTexturebuttonActionPerformed(java.awt.event.ActionEvent evt) {//G
}
}
+ @Override
public void valueChanged(TreeSelectionEvent e) {
DefaultMutableTreeNode node = (DefaultMutableTreeNode) jTree1.getLastSelectedPathComponent();
@@ -295,25 +294,14 @@ private void noTexturebuttonActionPerformed(java.awt.event.ActionEvent evt) {//G
return;
}
- //Object nodeInfo = node.getUserObject();
if (node.isLeaf()) {
String selected = TreeUtil.getPath(node.getUserObjectPath());
selected = selected.substring(0, selected.lastIndexOf("/"));
Icon newicon = null;
- if (selected.toLowerCase().endsWith(".dds")) {
- if (ddsPreview == null) {
- ddsPreview = new DDSPreview(assetManager);
- }
- ddsPreview.requestPreview(selected, (String) node.getUserObject(), 450, 450, imagePreviewLabel, infoLabel);
-
- } else {
- Texture tex = assetManager.loadTexture(selected);
- newicon = ImageUtilities.image2Icon(ImageToAwt.convert(tex.getImage(), false, true, 0));
- assetManager.deleteFromCache(new TextureKey(selected));
- imagePreviewLabel.setIcon(newicon);
- infoLabel.setText(" " + node.getUserObject() + " w : " + newicon.getIconWidth() + " h : " + newicon.getIconHeight());
+ if (texPreview == null) {
+ texPreview = new TexturePreview(assetManager);
}
-
+ texPreview.requestPreview(selected, (String) node.getUserObject(), 450, 450, imagePreviewLabel, infoLabel);
prefs.put(PREF_LAST_SELECTED, selected);
} else {
imagePreviewLabel.setIcon(null);
@@ -323,27 +311,34 @@ private void noTexturebuttonActionPerformed(java.awt.event.ActionEvent evt) {//G
}
+ @Override
public void windowOpened(WindowEvent e) {
}
+ @Override
public void windowClosing(WindowEvent e) {
- if (ddsPreview != null) {
- ddsPreview.cleanUp();
+ if (texPreview != null) {
+ texPreview.cleanUp();
}
}
+ @Override
public void windowClosed(WindowEvent e) {
}
+ @Override
public void windowIconified(WindowEvent e) {
}
+ @Override
public void windowDeiconified(WindowEvent e) {
}
+ @Override
public void windowActivated(WindowEvent e) {
}
+ @Override
public void windowDeactivated(WindowEvent e) {
}
diff --git a/sdk/jme3-core/src/com/jme3/gde/core/properties/TexturePropertyEditor.java b/sdk/jme3-core/src/com/jme3/gde/core/properties/TexturePropertyEditor.java
index 9f4658e02..555fc5160 100644
--- a/sdk/jme3-core/src/com/jme3/gde/core/properties/TexturePropertyEditor.java
+++ b/sdk/jme3-core/src/com/jme3/gde/core/properties/TexturePropertyEditor.java
@@ -80,7 +80,14 @@ public class TexturePropertyEditor implements PropertyEditor {
}
}
+ @Override
public Object getValue() {
+ if(texture == null && assetKey != null){
+ if (manager == null){
+ manager = SceneApplication.getApplication().getAssetManager();
+ }
+ texture = manager.loadTexture(assetKey);
+ }
return texture;
}
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
deleted file mode 100644
index c6597ff6a..000000000
--- a/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/DDSPreview.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * 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.JButton;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-
-/**
- *
- * @author Nehon
- */
-public class DDSPreview implements SceneListener {
-
- private final ProjectAssetManager assetManager;
- private JComponent picPreview;
- private final Geometry quad;
- private final Geometry quad3D;
- private final Material material;
- private final 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, JComponent 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.setTextureTypeHint(Texture.Type.ThreeDimensional);
- 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, SkyFactory.EnvMapType.CubeMap);
- 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 sceneOpened(SceneRequest request) {
- }
-
- public void sceneClosed(SceneRequest request) {
- }
-
- public void previewCreated(PreviewRequest request) {
- if (request.getRequester() == this) {
- final ImageIcon icon = new ImageIcon(request.getImage());
- if (picPreview instanceof JLabel) {
- ((JLabel) picPreview).setIcon(icon);
- }
- if (picPreview instanceof JButton) {
- ((JButton) picPreview).setIcon(icon);
- }
- }
- }
-}
diff --git a/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/TexturePreview.java b/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/TexturePreview.java
new file mode 100644
index 000000000..337e3a34c
--- /dev/null
+++ b/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/TexturePreview.java
@@ -0,0 +1,179 @@
+/*
+ * 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 java.util.concurrent.Callable;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+
+/**
+ *
+ * @author Nehon
+ */
+public class TexturePreview implements SceneListener {
+
+ private final ProjectAssetManager assetManager;
+ private JComponent picPreview;
+ private final Geometry quad;
+ private final Geometry quad3D;
+ private final Material material;
+ private final Material material3D;
+
+ public TexturePreview(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(final String textureName, final String displayName, final int width, final int height, final JComponent picLabel, final JLabel infoLabel) {
+
+ picPreview = picLabel;
+ clearPreview();
+ if (infoLabel != null) {
+ infoLabel.setText(" Creating preview...");
+ }
+
+ SceneApplication.getApplication().enqueue(new Callable() {
+
+ @Override
+ public Void call() throws Exception {
+ TextureKey key = new TextureKey(textureName);
+ Texture t = assetManager.loadTexture(key);
+ Spatial geom = quad;
+ if (key.getTextureTypeHint() == Texture.Type.TwoDimensional) {
+ material.setTexture("ColorMap", t);
+ geom.setMaterial(material);
+ setLabel(infoLabel, displayName, t.getImage().getWidth(), t.getImage().getHeight(), -1);
+ } else if (key.getTextureTypeHint() == Texture.Type.ThreeDimensional) {
+ geom = quad3D;
+ material3D.setTexture("Texture", t);
+ geom.setMaterial(material3D);
+ setLabel(infoLabel, displayName + " (Texture3D)", t.getImage().getWidth(), t.getImage().getHeight(), t.getImage().getDepth());
+
+ } else if (key.getTextureTypeHint() == Texture.Type.CubeMap) {
+ geom = SkyFactory.createSky(assetManager, textureName, SkyFactory.EnvMapType.CubeMap);
+ setLabel(infoLabel, displayName + " (CubeMap)", t.getImage().getWidth(), t.getImage().getHeight(), -1);
+ }
+
+ PreviewRequest request = new PreviewRequest(TexturePreview.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);
+
+ return null;
+ }
+
+ });
+ }
+
+ public void cleanUp() {
+ SceneApplication.getApplication().removeSceneListener(this);
+ }
+
+ @Override
+ public void sceneOpened(SceneRequest request) {
+ }
+
+ @Override
+ public void sceneClosed(SceneRequest request) {
+ }
+
+ private void setLabel(final JLabel label, final String text, final int width, final int height, final int depth) {
+
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ if (label != null) {
+ String labText = " " + text + " w : " + width + " h : " + height;
+ if (depth > 0) {
+ labText += " d : " + depth;
+ }
+ label.setText(labText);
+ }
+ }
+ });
+ }
+
+ private void clearPreview() {
+ if (picPreview instanceof JLabel) {
+ ((JLabel) picPreview).setIcon(null);
+ }
+ if (picPreview instanceof JButton) {
+ ((JButton) picPreview).setIcon(null);
+ }
+ }
+
+ @Override
+ public void previewCreated(final PreviewRequest request) {
+ java.awt.EventQueue.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ if (request.getRequester() == TexturePreview.this) {
+ final ImageIcon icon = new ImageIcon(request.getImage());
+ if (picPreview instanceof JLabel) {
+ ((JLabel) picPreview).setIcon(icon);
+ }
+ if (picPreview instanceof JButton) {
+ ((JButton) picPreview).setIcon(icon);
+ }
+ }
+ }
+ });
+ }
+}
diff --git a/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/tex3DThumb.frag b/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/tex3DThumb.frag
index f6eb25a3b..4ae52bd3f 100644
--- a/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/tex3DThumb.frag
+++ b/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/tex3DThumb.frag
@@ -5,10 +5,9 @@ uniform float m_InvDepth;
varying vec2 texCoord;
void main(){
-float depthx=floor(texCoord.x);
- float depthy=(m_Rows-1.0) - floor(texCoord.y);
- //vec3 texC=vec3(texCoord.x,texCoord.y ,0.7);//
+ float depthx = floor(texCoord.x);
+ float depthy = (float(m_Rows) - 1.0) - floor(texCoord.y);
- vec3 texC=vec3(fract(texCoord.x),fract(texCoord.y),(depthy*m_Rows+depthx)*m_InvDepth);//
- gl_FragColor= texture3D(m_Texture,texC);
+ vec3 texC = vec3(fract(texCoord.x), fract(texCoord.y), (depthy * float(m_Rows) + depthx) * m_InvDepth);//
+ gl_FragColor = texture3D(m_Texture, texC);
}
\ No newline at end of file
diff --git a/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/tex3DThumb.vert b/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/tex3DThumb.vert
index 6d27bc030..fd940682b 100644
--- a/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/tex3DThumb.vert
+++ b/sdk/jme3-core/src/com/jme3/gde/core/properties/preview/tex3DThumb.vert
@@ -6,6 +6,6 @@ attribute vec3 inPosition;
varying vec2 texCoord;
void main(){
- gl_Position = g_WorldViewProjectionMatrix * vec4(inPosition,1.0);
- texCoord=inTexCoord;
+ gl_Position = g_WorldViewProjectionMatrix * vec4(inPosition, 1.0);
+ texCoord = inTexCoord;
}
\ No newline at end of file
diff --git a/sdk/jme3-materialeditor/src/com/jme3/gde/materials/multiview/widgets/TexturePanel.java b/sdk/jme3-materialeditor/src/com/jme3/gde/materials/multiview/widgets/TexturePanel.java
index 0129535e4..1e5856fd1 100644
--- a/sdk/jme3-materialeditor/src/com/jme3/gde/materials/multiview/widgets/TexturePanel.java
+++ b/sdk/jme3-materialeditor/src/com/jme3/gde/materials/multiview/widgets/TexturePanel.java
@@ -13,7 +13,7 @@ package com.jme3.gde.materials.multiview.widgets;
import com.jme3.asset.AssetNotFoundException;
import com.jme3.gde.core.assets.ProjectAssetManager;
import com.jme3.gde.core.properties.TexturePropertyEditor;
-import com.jme3.gde.core.properties.preview.DDSPreview;
+import com.jme3.gde.core.properties.preview.TexturePreview;
import com.jme3.gde.materials.MaterialProperty;
import com.jme3.gde.materials.multiview.MaterialEditorTopComponent;
import com.jme3.texture.Texture;
@@ -39,7 +39,7 @@ public class TexturePanel extends MaterialPropertyWidget {
private boolean flip = false;
private boolean repeat = false;
private String textureName = null;
- private DDSPreview ddsPreview;
+ private TexturePreview texPreview;
private final ScheduledThreadPoolExecutor exec = new ScheduledThreadPoolExecutor(1);
/** Creates new form SelectionPanel */
@@ -53,22 +53,13 @@ public class TexturePanel extends MaterialPropertyWidget {
if (!"".equals(textureName)) {
exec.execute(new Runnable() {
+ @Override
public void run() {
try{
- Texture tex = manager.loadTexture(textureName);
- if (textureName.toLowerCase().endsWith(".dds")) {
- if (ddsPreview == null) {
- ddsPreview = new DDSPreview(manager);
+ if (texPreview == null) {
+ texPreview = new TexturePreview(manager);
}
- ddsPreview.requestPreview(textureName, "", 80, 80, texturePreview, null);
- } else {
- final Icon newicon = ImageUtilities.image2Icon(resizeImage(ImageToAwt.convert(tex.getImage(), false, true, 0)));
- SwingUtilities.invokeLater(new Runnable() {
- public void run() {
- texturePreview.setIcon(newicon);
- }
- });
- }
+ texPreview.requestPreview(textureName, "", 80, 25, texturePreview, null);
} catch (AssetNotFoundException a) {
Logger.getLogger(MaterialEditorTopComponent.class.getName()).log(Level.WARNING, "Could not load texture {0}", textureName);
}
@@ -318,8 +309,8 @@ public class TexturePanel extends MaterialPropertyWidget {
@Override
public void cleanUp() {
- if (ddsPreview != null) {
- ddsPreview.cleanUp();
+ if (texPreview != null) {
+ texPreview.cleanUp();
}
exec.shutdownNow();
}
diff --git a/sdk/jme3-terrain-editor/src/com/jme3/gde/terraineditor/TerrainEditorTopComponent.java b/sdk/jme3-terrain-editor/src/com/jme3/gde/terraineditor/TerrainEditorTopComponent.java
index 9e12371ea..b99a24274 100644
--- a/sdk/jme3-terrain-editor/src/com/jme3/gde/terraineditor/TerrainEditorTopComponent.java
+++ b/sdk/jme3-terrain-editor/src/com/jme3/gde/terraineditor/TerrainEditorTopComponent.java
@@ -34,7 +34,7 @@ package com.jme3.gde.terraineditor;
import com.jme3.gde.core.assets.AssetDataObject;
import com.jme3.gde.core.assets.ProjectAssetManager;
import com.jme3.gde.core.properties.TexturePropertyEditor;
-import com.jme3.gde.core.properties.preview.DDSPreview;
+import com.jme3.gde.core.properties.preview.TexturePreview;
import com.jme3.gde.core.scene.PreviewRequest;
import com.jme3.gde.core.scene.SceneApplication;
import com.jme3.gde.core.scene.SceneListener;
@@ -122,7 +122,7 @@ public final class TerrainEditorTopComponent extends TopComponent implements Sce
//private TerrainNodeListener terrainDeletedNodeListener;
private boolean availableNormalTextures;
private HelpCtx ctx = new HelpCtx("sdk.terrain_editor");
- private DDSPreview ddsPreview;
+ private TexturePreview texPreview;
private Map buttons = new HashMap();
private JPanel insideToolSettings;
@@ -153,35 +153,29 @@ public final class TerrainEditorTopComponent extends TopComponent implements Sce
private float max = 0;
private final Object lock = new Object();
+ @Override
public void incrementProgress(float f) {
progress += f;
progressHandle.progress((int) progress);
}
+ @Override
public void setMonitorMax(float f) {
max = f;
-// java.awt.EventQueue.invokeLater(new Runnable() {
-// public void run() {
-// synchronized(lock){
if (progressHandle == null) {
progressHandle = ProgressHandleFactory.createHandle("Calculating terrain entropies...");
progressHandle.start((int) max);
}
-// }
-// }
-// });
}
+ @Override
public float getMonitorMax() {
return max;
}
+ @Override
public void progressComplete() {
-// SwingUtilities.invokeLater(new Runnable() {
-// public void run() {
progressHandle.finish();
-// }
-// });
}
}
@@ -1631,6 +1625,13 @@ public final class TerrainEditorTopComponent extends TopComponent implements Sce
protected abstract Texture getTextureFromModel(int index);
protected abstract boolean supportsNullTexture();
+
+ private TexturePreview getTexturePreview(){
+ if (texPreview == null) {
+ texPreview = new TexturePreview((ProjectAssetManager) SceneApplication.getApplication().getAssetManager());
+ }
+ return texPreview;
+ }
private JButton getButton(Object value, final int row, final int column) {
@@ -1656,21 +1657,9 @@ public final class TerrainEditorTopComponent extends TopComponent implements Sce
}
Texture tex = getTextureFromModel(index); // delegate to sub-class
-
- //Texture tex = SceneApplication.getApplication().getAssetManager().loadTexture((String)value);
if (tex != null) {
String selected = tex.getKey().getName();
-
- if (selected.toLowerCase().endsWith(".dds")) {
- if (ddsPreview == null) {
- ddsPreview = new DDSPreview((ProjectAssetManager) SceneApplication.getApplication().getAssetManager());
- }
- ddsPreview.requestPreview(selected, "", 80, 80, lbl, null);
-
- } else {
- Icon icon = ImageUtilities.image2Icon(ImageToAwt.convert(tex.getImage(), false, true, 0));
- lbl.setIcon(icon);
- }
+ getTexturePreview().requestPreview(selected, "", 80, 80, lbl, null);
}
}
@@ -1694,24 +1683,17 @@ public final class TerrainEditorTopComponent extends TopComponent implements Sce
TexturePropertyEditor editor = new TexturePropertyEditor(selectedTex);
Component view = editor.getCustomEditor();
view.setVisible(true);
- Texture tex = (Texture) editor.getValue();
- if (editor.getValue() != null) {
- String selected = tex.getKey().getName();
-
- if (selected.toLowerCase().endsWith(".dds")) {
- if (ddsPreview == null) {
- ddsPreview = new DDSPreview((ProjectAssetManager) SceneApplication.getApplication().getAssetManager());
- }
- ddsPreview.requestPreview(selected, "", 80, 80, lbl, null);
-
- } else {
- Icon newicon = ImageUtilities.image2Icon(ImageToAwt.convert(tex.getImage(), false, true, 0));
- lbl.setIcon(newicon);
- }
+
+ if (editor.getAsText() != null) {
+
+ String selected = editor.getAsText();
+ getTexturePreview().requestPreview(selected, "", 80, 80, lbl, null);
+ Texture tex = SceneApplication.getApplication().getAssetManager().loadTexture(selected);
+ setTextureInModel(row, tex);
} else if (supportsNullTexture()) {
lbl.setIcon(null);
}
- setTextureInModel(row, tex);
+
} finally {
alreadyChoosing = false;
}
diff --git a/sdk/jme3-terrain-editor/src/com/jme3/gde/terraineditor/TerrainToolController.java b/sdk/jme3-terrain-editor/src/com/jme3/gde/terraineditor/TerrainToolController.java
index e89175b76..d0072d06a 100644
--- a/sdk/jme3-terrain-editor/src/com/jme3/gde/terraineditor/TerrainToolController.java
+++ b/sdk/jme3-terrain-editor/src/com/jme3/gde/terraineditor/TerrainToolController.java
@@ -260,8 +260,7 @@ public class TerrainToolController extends SceneToolController {
* The action on the tool has ended (mouse button up), record the Undo (for painting only now)
*/
void doTerrainEditToolActionEnded() {
- if (terrainTool != null) {
- System.out.println("undo tagged");
+ if (terrainTool != null) {
terrainTool.actionEnded(jmeRootNode, editorController.getCurrentDataObject());
}
}
diff --git a/sdk/jme3-terrain-editor/src/com/jme3/gde/terraineditor/sky/SkyboxVisualPanel2.java b/sdk/jme3-terrain-editor/src/com/jme3/gde/terraineditor/sky/SkyboxVisualPanel2.java
index 754f5e933..9e3cd0396 100644
--- a/sdk/jme3-terrain-editor/src/com/jme3/gde/terraineditor/sky/SkyboxVisualPanel2.java
+++ b/sdk/jme3-terrain-editor/src/com/jme3/gde/terraineditor/sky/SkyboxVisualPanel2.java
@@ -33,16 +33,14 @@ package com.jme3.gde.terraineditor.sky;
import com.jme3.gde.core.assets.ProjectAssetManager;
import com.jme3.gde.core.properties.TexturePropertyEditor;
-import com.jme3.gde.core.properties.preview.DDSPreview;
+import com.jme3.gde.core.properties.preview.TexturePreview;
import com.jme3.gde.core.scene.SceneApplication;
import com.jme3.texture.Texture;
import com.jme3.util.SkyFactory;
import java.awt.Component;
-import javax.swing.ComboBoxModel;
import javax.swing.DefaultComboBoxModel;
import javax.swing.Icon;
import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JTextField;
import jme3tools.converters.ImageToAwt;
@@ -50,7 +48,7 @@ import org.openide.util.ImageUtilities;
public final class SkyboxVisualPanel2 extends JPanel {
- private DDSPreview ddsPreview;
+ private TexturePreview texPreview;
/** Creates new form SkyboxVisualPanel2 */
public SkyboxVisualPanel2() {
@@ -111,6 +109,14 @@ public final class SkyboxVisualPanel2 extends JPanel {
return editorWest;
}
+
+ private TexturePreview getTexturePreview(){
+ if (texPreview == null) {
+ texPreview = new TexturePreview((ProjectAssetManager) SceneApplication.getApplication().getAssetManager());
+ }
+ return texPreview;
+ }
+
/** This method is called from within the constructor to
* initialize the form.
* WARNING: Do NOT modify this code. The content of this method is
@@ -450,141 +456,63 @@ public final class SkyboxVisualPanel2 extends JPanel {
private void multipleTexSouthLoadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_multipleTexSouthLoadButtonActionPerformed
Component view = editorSouth.getCustomEditor();
view.setVisible(true);
- if (editorSouth.getValue() != null) {
- Texture tex = (Texture) editorSouth.getValue();
- String selected = tex.getKey().getName();
-
- if (selected.toLowerCase().endsWith(".dds")) {
- if (ddsPreview == null) {
- ddsPreview = new DDSPreview((ProjectAssetManager) SceneApplication.getApplication().getAssetManager());
- }
- ddsPreview.requestPreview(selected, "", 80, 80, southPic, null);
-
- } else {
- Icon newicon = ImageUtilities.image2Icon(ImageToAwt.convert(tex.getImage(), false, true, 0));
- southPic.setIcon(newicon);
- }
+ if (editorSouth.getAsText()!= null) {
+ String selected = editorSouth.getAsText();
+ getTexturePreview().requestPreview(selected, "", 80, 80, southPic, null);
}
}//GEN-LAST:event_multipleTexSouthLoadButtonActionPerformed
private void multipleTexNorthLoadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_multipleTexNorthLoadButtonActionPerformed
Component view = editorNorth.getCustomEditor();
view.setVisible(true);
- if (editorNorth.getValue() != null) {
- Texture tex = (Texture) editorNorth.getValue();
- String selected = tex.getKey().getName();
-
- if (selected.toLowerCase().endsWith(".dds")) {
- if (ddsPreview == null) {
- ddsPreview = new DDSPreview((ProjectAssetManager) SceneApplication.getApplication().getAssetManager());
- }
- ddsPreview.requestPreview(selected, "", 80, 80, northPic, null);
-
- } else {
- Icon newicon = ImageUtilities.image2Icon(ImageToAwt.convert(tex.getImage(), false, true, 0));
- northPic.setIcon(newicon);
- }
+ if (editorNorth.getAsText() != null) {
+ String selected = editorNorth.getAsText();
+ getTexturePreview().requestPreview(selected, "", 80, 80, northPic, null);
}
}//GEN-LAST:event_multipleTexNorthLoadButtonActionPerformed
private void multipleTexEastLoadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_multipleTexEastLoadButtonActionPerformed
Component view = editorEast.getCustomEditor();
view.setVisible(true);
- if (editorEast.getValue() != null) {
- Texture tex = (Texture) editorEast.getValue();
- String selected = tex.getKey().getName();
-
- if (selected.toLowerCase().endsWith(".dds")) {
- if (ddsPreview == null) {
- ddsPreview = new DDSPreview((ProjectAssetManager) SceneApplication.getApplication().getAssetManager());
- }
- ddsPreview.requestPreview(selected, "", 80, 80, eastPic, null);
-
- } else {
- Icon newicon = ImageUtilities.image2Icon(ImageToAwt.convert(tex.getImage(), false, true, 0));
- eastPic.setIcon(newicon);
- }
+ if (editorEast.getAsText() != null) {
+ String selected = editorEast.getAsText();
+ getTexturePreview().requestPreview(selected, "", 80, 80, eastPic, null);
}
}//GEN-LAST:event_multipleTexEastLoadButtonActionPerformed
private void multipleTexWestLoadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_multipleTexWestLoadButtonActionPerformed
Component view = editorWest.getCustomEditor();
view.setVisible(true);
- if (editorWest.getValue() != null) {
- Texture tex = (Texture) editorWest.getValue();
- String selected = tex.getKey().getName();
-
- if (selected.toLowerCase().endsWith(".dds")) {
- if (ddsPreview == null) {
- ddsPreview = new DDSPreview((ProjectAssetManager) SceneApplication.getApplication().getAssetManager());
- }
- ddsPreview.requestPreview(selected, "", 80, 80, westPic, null);
-
- } else {
- Icon newicon = ImageUtilities.image2Icon(ImageToAwt.convert(tex.getImage(), false, true, 0));
- westPic.setIcon(newicon);
- }
+ if (editorWest.getAsText() != null) {
+ String selected = editorWest.getAsText();
+ getTexturePreview().requestPreview(selected, "", 80, 80, westPic, null);
}
}//GEN-LAST:event_multipleTexWestLoadButtonActionPerformed
private void multipleTexTopLoadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_multipleTexTopLoadButtonActionPerformed
Component view = editorTop.getCustomEditor();
view.setVisible(true);
- if (editorTop.getValue() != null) {
- Texture tex = (Texture) editorTop.getValue();
- String selected = tex.getKey().getName();
-
- if (selected.toLowerCase().endsWith(".dds")) {
- if (ddsPreview == null) {
- ddsPreview = new DDSPreview((ProjectAssetManager) SceneApplication.getApplication().getAssetManager());
- }
- ddsPreview.requestPreview(selected, "", 80, 80, topPic, null);
-
- } else {
- Icon newicon = ImageUtilities.image2Icon(ImageToAwt.convert(tex.getImage(), false, true, 0));
- topPic.setIcon(newicon);
- }
+ if (editorTop.getAsText() != null) {
+ String selected = editorTop.getAsText();
+ getTexturePreview().requestPreview(selected, "", 80, 80, topPic, null);
}
}//GEN-LAST:event_multipleTexTopLoadButtonActionPerformed
private void multipleTexBottomLoadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_multipleTexBottomLoadButtonActionPerformed
Component view = editorBottom.getCustomEditor();
view.setVisible(true);
- if (editorBottom.getValue() != null) {
- Texture tex = (Texture) editorBottom.getValue();
- String selected = tex.getKey().getName();
-
- if (selected.toLowerCase().endsWith(".dds")) {
- if (ddsPreview == null) {
- ddsPreview = new DDSPreview((ProjectAssetManager) SceneApplication.getApplication().getAssetManager());
- }
- ddsPreview.requestPreview(selected, "", 80, 80, bottomPic, null);
-
- } else {
- Icon newicon = ImageUtilities.image2Icon(ImageToAwt.convert(tex.getImage(), false, true, 0));
- bottomPic.setIcon(newicon);
- }
+ if (editorBottom.getAsText() != null) {
+ String selected = editorBottom.getAsText();
+ getTexturePreview().requestPreview(selected, "", 80, 80, bottomPic, null);
}
}//GEN-LAST:event_multipleTexBottomLoadButtonActionPerformed
private void singleTexLoadButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_singleTexLoadButtonActionPerformed
Component view = editorSingle.getCustomEditor();
view.setVisible(true);
- if (editorSingle.getValue() != null) {
- Texture tex = (Texture) editorSingle.getValue();
- String selected = tex.getKey().getName();
-
- if (selected.toLowerCase().endsWith(".dds")) {
- if (ddsPreview == null) {
- ddsPreview = new DDSPreview((ProjectAssetManager) SceneApplication.getApplication().getAssetManager());
- }
- ddsPreview.requestPreview(selected, "", 80, 80, singlePic, null);
-
- } else {
-
- Icon newicon = ImageUtilities.image2Icon(ImageToAwt.convert(tex.getImage(), false, true, 0));
- singlePic.setIcon(newicon);
- }
+ if (editorSingle.getAsText()!= null) {
+ String selected = editorSingle.getAsText();
+ getTexturePreview().requestPreview(selected, "", 80, 80, singlePic, null);
}
}//GEN-LAST:event_singleTexLoadButtonActionPerformed