SDK:
- add workaround for unsaved scene "hanging" in save button when editor was closed git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@8174 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
d293d00867
commit
4cc1909beb
@ -28,6 +28,7 @@ import com.jme3.app.Application;
|
||||
import com.jme3.app.StatsView;
|
||||
import com.jme3.font.BitmapFont;
|
||||
import com.jme3.font.BitmapText;
|
||||
import com.jme3.gde.core.assets.AssetData;
|
||||
import com.jme3.gde.core.scene.controller.AbstractCameraController;
|
||||
import com.jme3.gde.core.sceneexplorer.nodes.JmeSpatial;
|
||||
import com.jme3.gde.core.scene.processors.WireProcessor;
|
||||
@ -47,6 +48,7 @@ import com.jme3.scene.Node;
|
||||
import com.jme3.scene.Spatial;
|
||||
import com.jme3.scene.Spatial.CullHint;
|
||||
import com.jme3.system.AppSettings;
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.concurrent.Callable;
|
||||
@ -57,6 +59,7 @@ import org.netbeans.api.progress.ProgressHandleFactory;
|
||||
import org.netbeans.spi.project.LookupProvider;
|
||||
import org.openide.DialogDisplayer;
|
||||
import org.openide.NotifyDescriptor;
|
||||
import org.openide.NotifyDescriptor.Confirmation;
|
||||
import org.openide.NotifyDescriptor.Message;
|
||||
import org.openide.awt.StatusDisplayer;
|
||||
import org.openide.util.Exceptions;
|
||||
@ -341,6 +344,33 @@ public class SceneApplication extends Application implements LookupProvider, Loo
|
||||
});
|
||||
}
|
||||
|
||||
private void checkSave() {
|
||||
if ((currentSceneRequest != null)
|
||||
&& currentSceneRequest.getDataObject().isModified()) {
|
||||
final SceneRequest req = currentSceneRequest;
|
||||
java.awt.EventQueue.invokeLater(new Runnable() {
|
||||
|
||||
public void run() {
|
||||
Confirmation mesg = new NotifyDescriptor.Confirmation("Scene has not been saved,\ndo you want to save it?",
|
||||
"Not Saved",
|
||||
NotifyDescriptor.YES_NO_OPTION);
|
||||
DialogDisplayer.getDefault().notify(mesg);
|
||||
if (mesg.getValue() == Confirmation.YES_OPTION) {
|
||||
try {
|
||||
req.getDataObject().getLookup().lookup(AssetData.class).saveAsset();
|
||||
} catch (IOException ex) {
|
||||
Exceptions.printStackTrace(ex);
|
||||
}
|
||||
} else if (mesg.getValue() == Confirmation.CANCEL_OPTION) {
|
||||
return;
|
||||
} else if (mesg.getValue() == Confirmation.NO_OPTION) {
|
||||
req.getDataObject().setModified(false);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* method to close a scene displayed by a scene request (threadsafe)
|
||||
* @param tree
|
||||
@ -375,6 +405,7 @@ public class SceneApplication extends Application implements LookupProvider, Loo
|
||||
return false;
|
||||
}
|
||||
}
|
||||
checkSave();
|
||||
currentSceneRequest.setDisplayed(false);
|
||||
}
|
||||
toolsNode.detachAllChildren();
|
||||
|
Loading…
x
Reference in New Issue
Block a user