Parcourir la source

SDK:
- make SceneComposer reload scene automatically on ClassPath change

git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8632 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

nor..67 il y a 14 ans
Parent
commit
b59e081822

+ 51 - 51
jme3-scenecomposer/src/com/jme3/gde/scenecomposer/SceneComposerTopComponent.java

@@ -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);