- hide un-editable properties in Model Import Tool, fix reloading, reload on separate thread

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8427 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
3.0
nor..67 13 years ago
parent cfc6036bf2
commit d6649ab87d
  1. 54
      sdk/jme3-model-importer/src/com/jme3/gde/modelimporter/ImportKeyNode.java
  2. 60
      sdk/jme3-model-importer/src/com/jme3/gde/modelimporter/ModelImporterVisualPanel1.java

@ -0,0 +1,54 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.modelimporter;
import com.jme3.asset.AssetKey;
import com.jme3.gde.core.assets.AssetData;
import com.jme3.gde.core.util.PropertyUtils;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Field;
import org.openide.nodes.AbstractNode;
import org.openide.nodes.Children;
import org.openide.nodes.Node.Property;
import org.openide.nodes.PropertySupport;
import org.openide.nodes.Sheet;
import org.openide.util.Exceptions;
/**
*
* @author normenhansen
*/
public class ImportKeyNode extends AbstractNode {
private AssetKey key;
public ImportKeyNode(AssetKey key) {
super(Children.LEAF);
this.key=key;
}
@Override
protected Sheet createSheet() {
Sheet sheet = super.createSheet();
Sheet.Set set = sheet.createPropertiesSet();
set.setName("AssetKey");
set.setDisplayName("Conversion Settings");
for (Field field : key.getClass().getDeclaredFields()) {
PropertyDescriptor prop = PropertyUtils.getPropertyDescriptor(key.getClass(), field);
if (prop != null) {
try {
Property sup = new PropertySupport.Reflection(key, prop.getPropertyType(), prop.getReadMethod(), prop.getWriteMethod());
sup.setName(prop.getName());
sup.setDisplayName(prop.getDisplayName());
set.put(sup);
} catch (Exception e) {
Exceptions.printStackTrace(e);
}
}
}
sheet.put(set);
return sheet;
}
}

@ -6,17 +6,16 @@ package com.jme3.gde.modelimporter;
import com.jme3.asset.AssetEventListener; import com.jme3.asset.AssetEventListener;
import com.jme3.asset.AssetKey; import com.jme3.asset.AssetKey;
import com.jme3.asset.ModelKey;
import com.jme3.gde.core.assets.AssetData; import com.jme3.gde.core.assets.AssetData;
import com.jme3.gde.core.assets.AssetDataObject; import com.jme3.gde.core.assets.AssetDataObject;
import com.jme3.gde.core.assets.ProjectAssetManager; import com.jme3.gde.core.assets.ProjectAssetManager;
import com.jme3.gde.core.scene.OffScenePanel; import com.jme3.gde.core.scene.OffScenePanel;
import com.jme3.math.Vector3f; import com.jme3.math.Vector3f;
import com.jme3.scene.Spatial; import com.jme3.scene.Spatial;
import java.beans.IntrospectionException;
import java.io.File; import java.io.File;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.concurrent.atomic.AtomicBoolean;
import javax.swing.JPanel; import javax.swing.JPanel;
import org.netbeans.api.progress.ProgressHandle; import org.netbeans.api.progress.ProgressHandle;
import org.netbeans.api.progress.ProgressHandleFactory; import org.netbeans.api.progress.ProgressHandleFactory;
@ -28,8 +27,6 @@ import org.openide.explorer.propertysheet.PropertySheet;
import org.openide.filesystems.FileChooserBuilder; import org.openide.filesystems.FileChooserBuilder;
import org.openide.filesystems.FileUtil; import org.openide.filesystems.FileUtil;
import org.openide.loaders.DataObject; import org.openide.loaders.DataObject;
import org.openide.loaders.DataObjectNotFoundException;
import org.openide.nodes.BeanNode;
import org.openide.nodes.Node; import org.openide.nodes.Node;
import org.openide.util.Exceptions; import org.openide.util.Exceptions;
@ -43,6 +40,7 @@ public final class ModelImporterVisualPanel1 extends JPanel implements AssetEven
private List<AssetKey> requestedAssets = new LinkedList<AssetKey>(); private List<AssetKey> requestedAssets = new LinkedList<AssetKey>();
private AssetKey mainKey; private AssetKey mainKey;
private PropertySheet ps; private PropertySheet ps;
private AtomicBoolean loading = new AtomicBoolean(false);
/** Creates new form ModelImporterVisualPanel1 */ /** Creates new form ModelImporterVisualPanel1 */
public ModelImporterVisualPanel1() { public ModelImporterVisualPanel1() {
@ -79,38 +77,32 @@ public final class ModelImporterVisualPanel1 extends JPanel implements AssetEven
public synchronized void loadModel(File path, AssetKey modelKey) { public synchronized void loadModel(File path, AssetKey modelKey) {
try { try {
mainKey = modelKey;
ProjectAssetManager manager = new ProjectAssetManager(FileUtil.toFileObject(path).getParent()); ProjectAssetManager manager = new ProjectAssetManager(FileUtil.toFileObject(path).getParent());
manager.setAssetEventListener(this); manager.setAssetEventListener(this);
if (currentPath != null) {
requestedAssets.clear(); requestedAssets.clear();
currentPath = null;
updateProperties(null);
}
if (currentModel != null) { if (currentModel != null) {
offPanel.detach(currentModel); offPanel.detach(currentModel);
currentModel = null; currentModel = null;
} }
currentPath = path.getParent();
currentModelPath = path.getPath(); currentModelPath = path.getPath();
if (mainKey == null) { currentPath = path.getParent();
try {
DataObject obj = DataObject.find(FileUtil.toFileObject(path)); DataObject obj = DataObject.find(FileUtil.toFileObject(path));
AssetData data = obj.getLookup().lookup(AssetData.class); AssetData data = obj != null ? obj.getLookup().lookup(AssetData.class) : null;
if (data != null) { if (data != null) {
if (modelKey == null) {
((AssetDataObject) obj).getLookupContents().add(manager); ((AssetDataObject) obj).getLookupContents().add(manager);
mainKey = data.getAssetKey(); modelKey = data.getAssetKey();
currentModel = (Spatial) data.loadAsset();
} else {
((AssetDataObject) obj).getLookupContents().add(manager);
data.setAssetKey(modelKey);
currentModel = (Spatial) data.loadAsset(); currentModel = (Spatial) data.loadAsset();
}
} catch (DataObjectNotFoundException ex) {
Exceptions.printStackTrace(ex);
mainKey = new ModelKey(path.getName());
} }
} }
// currentModel = (Spatial) manager.loadAsset(mainKey); mainKey = modelKey;
updateProperties(mainKey);
if (currentModel != null) { if (currentModel != null) {
offPanel.attach(currentModel); offPanel.attach(currentModel);
updateProperties(mainKey);
} else { } else {
Message msg = new NotifyDescriptor.Message( Message msg = new NotifyDescriptor.Message(
"Cannot import this file!", "Cannot import this file!",
@ -133,14 +125,10 @@ public final class ModelImporterVisualPanel1 extends JPanel implements AssetEven
java.awt.EventQueue.invokeLater(new Runnable() { java.awt.EventQueue.invokeLater(new Runnable() {
public void run() { public void run() {
try {
if (key == null) { if (key == null) {
ps.setNodes(new Node[]{}); ps.setNodes(new Node[]{});
} else { } else {
ps.setNodes(new Node[]{new BeanNode(key)}); ps.setNodes(new Node[]{new ImportKeyNode(key)});
}
} catch (IntrospectionException ex) {
Exceptions.printStackTrace(ex);
} }
} }
}); });
@ -311,6 +299,10 @@ public final class ModelImporterVisualPanel1 extends JPanel implements AssetEven
}//GEN-LAST:event_jButton2ActionPerformed }//GEN-LAST:event_jButton2ActionPerformed
private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed
if (loading.get()) {
return;
}
loading.set(true);
FileChooserBuilder builder = new FileChooserBuilder(this.getClass()); FileChooserBuilder builder = new FileChooserBuilder(this.getClass());
builder.setTitle("Select Model File"); builder.setTitle("Select Model File");
final File file = builder.showOpenDialog(); final File file = builder.showOpenDialog();
@ -323,6 +315,7 @@ public final class ModelImporterVisualPanel1 extends JPanel implements AssetEven
handle.start(); handle.start();
loadModel(file); loadModel(file);
handle.finish(); handle.finish();
loading.set(false);
} }
}).start(); }).start();
} }
@ -342,7 +335,22 @@ public final class ModelImporterVisualPanel1 extends JPanel implements AssetEven
private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed private void jButton6ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton6ActionPerformed
if (currentModelPath != null) { if (currentModelPath != null) {
loadModel(new File(currentModelPath), mainKey); if (loading.get()) {
return;
}
loading.set(true);
final String modelPath = currentModelPath;
final AssetKey key = mainKey;
new Thread(new Runnable() {
public void run() {
ProgressHandle handle = ProgressHandleFactory.createHandle("Opening Model..");
handle.start();
loadModel(new File(modelPath), key);
handle.finish();
loading.set(false);
}
}).start();
} }
}//GEN-LAST:event_jButton6ActionPerformed }//GEN-LAST:event_jButton6ActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables // Variables declaration - do not modify//GEN-BEGIN:variables

Loading…
Cancel
Save