nor..67 10ce82f423 SDK:
- changes in Scene opening (all callbacks are coming on the EDT now)
- optimize selection callbacks
- optimize/simplify threading
- recognize changes in classpath and recreate ClassPath for AssetManager based on that

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8621 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
2011-11-09 22:11:24 +00:00

62 lines
2.3 KiB
Java

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.jme3.gde.scenecomposer;
import com.jme3.gde.core.assets.ProjectAssetManager;
import com.jme3.gde.core.assets.BinaryModelDataObject;
import com.jme3.scene.Spatial;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import org.netbeans.api.progress.ProgressHandle;
import org.netbeans.api.progress.ProgressHandleFactory;
import org.openide.DialogDisplayer;
import org.openide.NotifyDescriptor;
import org.openide.NotifyDescriptor.Confirmation;
public final class OpenSceneComposer implements ActionListener {
private final BinaryModelDataObject context;
public OpenSceneComposer(BinaryModelDataObject context) {
this.context = context;
}
public void actionPerformed(ActionEvent ev) {
final ProjectAssetManager manager = context.getLookup().lookup(ProjectAssetManager.class);
if (manager == null) {
return;
}
Runnable call = new Runnable() {
public void run() {
ProgressHandle progressHandle = ProgressHandleFactory.createHandle("Opening in SceneComposer");
progressHandle.start();
try {
manager.clearCache();
final Spatial asset = context.loadAsset();
if (asset != null) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
SceneComposerTopComponent composer = SceneComposerTopComponent.findInstance();
composer.openScene(asset, context, manager);
}
});
} else {
Confirmation msg = new NotifyDescriptor.Confirmation(
"Error opening " + context.getPrimaryFile().getNameExt(),
NotifyDescriptor.OK_CANCEL_OPTION,
NotifyDescriptor.ERROR_MESSAGE);
DialogDisplayer.getDefault().notify(msg);
}
} finally {
progressHandle.finish();
}
}
};
new Thread(call).start();
}
}