SDK:
- make SceneComposer reload scene automatically on ClassPath change git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8632 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
c350e33214
commit
2df43b3baa
@ -70,7 +70,7 @@ public final class SceneComposerTopComponent extends TopComponent implements Sce
|
||||
private SceneRequest sentRequest;
|
||||
private SceneRequest currentRequest;
|
||||
private HelpCtx ctx = new HelpCtx("sdk.scene_composer");
|
||||
// private ProjectAssetManager.ClassPathChangeListener listener;
|
||||
private ProjectAssetManager.ClassPathChangeListener listener;
|
||||
|
||||
public SceneComposerTopComponent() {
|
||||
initComponents();
|
||||
@ -912,62 +912,62 @@ private void scaleButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-F
|
||||
toolController.refreshNonSpatialMarkers();
|
||||
|
||||
editorController.setTerrainLodCamera();
|
||||
// final SpatialAssetDataObject dobj = ((SpatialAssetDataObject) currentRequest.getDataObject());
|
||||
// listener = new ProjectAssetManager.ClassPathChangeListener() {
|
||||
//
|
||||
// public void classPathChanged(final ProjectAssetManager manager) {
|
||||
// if (dobj.isModified()) {
|
||||
// Confirmation msg = new NotifyDescriptor.Confirmation(
|
||||
// "Classes have been changed, reload scene?",
|
||||
// NotifyDescriptor.OK_CANCEL_OPTION,
|
||||
// NotifyDescriptor.ERROR_MESSAGE);
|
||||
// Object result = DialogDisplayer.getDefault().notify(msg);
|
||||
// if (!NotifyDescriptor.OK_OPTION.equals(result)) {
|
||||
// return;
|
||||
// }
|
||||
// }
|
||||
// Runnable call = new Runnable() {
|
||||
//
|
||||
// public void run() {
|
||||
// ProgressHandle progressHandle = ProgressHandleFactory.createHandle("Opening in SceneComposer");
|
||||
// progressHandle.start();
|
||||
// try {
|
||||
// manager.clearCache();
|
||||
// final Spatial asset = dobj.loadAsset();
|
||||
// if (asset != null) {
|
||||
// java.awt.EventQueue.invokeLater(new Runnable() {
|
||||
//
|
||||
// public void run() {
|
||||
// SceneComposerTopComponent composer = SceneComposerTopComponent.findInstance();
|
||||
// composer.openScene(asset, dobj, manager);
|
||||
// }
|
||||
// });
|
||||
// } else {
|
||||
// Confirmation msg = new NotifyDescriptor.Confirmation(
|
||||
// "Error opening " + dobj.getPrimaryFile().getNameExt(),
|
||||
// NotifyDescriptor.OK_CANCEL_OPTION,
|
||||
// NotifyDescriptor.ERROR_MESSAGE);
|
||||
// DialogDisplayer.getDefault().notify(msg);
|
||||
// }
|
||||
// } finally {
|
||||
// progressHandle.finish();
|
||||
// }
|
||||
// }
|
||||
// };
|
||||
// new Thread(call).start();
|
||||
// }
|
||||
// };
|
||||
// currentRequest.getManager().addClassPathEventListener(listener);
|
||||
final SpatialAssetDataObject dobj = ((SpatialAssetDataObject) currentRequest.getDataObject());
|
||||
listener = new ProjectAssetManager.ClassPathChangeListener() {
|
||||
|
||||
public void classPathChanged(final ProjectAssetManager manager) {
|
||||
if (dobj.isModified()) {
|
||||
Confirmation msg = new NotifyDescriptor.Confirmation(
|
||||
"Classes have been changed, reload scene?",
|
||||
NotifyDescriptor.OK_CANCEL_OPTION,
|
||||
NotifyDescriptor.ERROR_MESSAGE);
|
||||
Object result = DialogDisplayer.getDefault().notify(msg);
|
||||
if (!NotifyDescriptor.OK_OPTION.equals(result)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
Runnable call = new Runnable() {
|
||||
|
||||
public void run() {
|
||||
ProgressHandle progressHandle = ProgressHandleFactory.createHandle("Opening in SceneComposer");
|
||||
progressHandle.start();
|
||||
try {
|
||||
manager.clearCache();
|
||||
final Spatial asset = dobj.loadAsset();
|
||||
if (asset != null) {
|
||||
java.awt.EventQueue.invokeLater(new Runnable() {
|
||||
|
||||
public void run() {
|
||||
SceneComposerTopComponent composer = SceneComposerTopComponent.findInstance();
|
||||
composer.openScene(asset, dobj, manager);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
Confirmation msg = new NotifyDescriptor.Confirmation(
|
||||
"Error opening " + dobj.getPrimaryFile().getNameExt(),
|
||||
NotifyDescriptor.OK_CANCEL_OPTION,
|
||||
NotifyDescriptor.ERROR_MESSAGE);
|
||||
DialogDisplayer.getDefault().notify(msg);
|
||||
}
|
||||
} finally {
|
||||
progressHandle.finish();
|
||||
}
|
||||
}
|
||||
};
|
||||
new Thread(call).start();
|
||||
}
|
||||
};
|
||||
currentRequest.getManager().addClassPathEventListener(listener);
|
||||
}
|
||||
}
|
||||
|
||||
public void sceneClosed(SceneRequest request) {
|
||||
if (request.equals(currentRequest)) {
|
||||
setActivatedNodes(new org.openide.nodes.Node[]{});
|
||||
// if (currentRequest != null) {
|
||||
// currentRequest.getManager().removeClassPathEventListener(listener);
|
||||
// listener = null;
|
||||
// }
|
||||
if (request != null) {
|
||||
request.getManager().removeClassPathEventListener(listener);
|
||||
listener = null;
|
||||
}
|
||||
SceneApplication.getApplication().removeSceneListener(this);
|
||||
currentRequest = null;
|
||||
setSceneInfo(null, null, false);
|
||||
|
Loading…
x
Reference in New Issue
Block a user