When we undo/redo in the editor, we need to ensure that our model switch gets propagated to the scene being held by the frame and info panel.
git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@902 c613c5cb-e716-0410-b11b-feb51c14d237
This commit is contained in:
@@ -55,8 +55,10 @@ import com.threerings.media.ManagedJFrame;
|
|||||||
|
|
||||||
import com.threerings.miso.tile.BaseTileSet;
|
import com.threerings.miso.tile.BaseTileSet;
|
||||||
|
|
||||||
|
import com.threerings.whirled.data.AuxModel;
|
||||||
import com.threerings.whirled.tools.xml.SceneParser;
|
import com.threerings.whirled.tools.xml.SceneParser;
|
||||||
|
|
||||||
|
import com.threerings.stage.data.StageMisoSceneModel;
|
||||||
import com.threerings.stage.data.StageScene;
|
import com.threerings.stage.data.StageScene;
|
||||||
import com.threerings.stage.data.StageSceneModel;
|
import com.threerings.stage.data.StageSceneModel;
|
||||||
import com.threerings.stage.tools.editor.util.EditorContext;
|
import com.threerings.stage.tools.editor.util.EditorContext;
|
||||||
@@ -67,6 +69,7 @@ import com.threerings.stage.tools.xml.StageSceneWriter;
|
|||||||
import static com.threerings.stage.Log.log;
|
import static com.threerings.stage.Log.log;
|
||||||
|
|
||||||
public class EditorFrame extends ManagedJFrame
|
public class EditorFrame extends ManagedJFrame
|
||||||
|
implements EditorScenePanel.SceneModelListener
|
||||||
{
|
{
|
||||||
public EditorFrame (StageSceneWriter writer)
|
public EditorFrame (StageSceneWriter writer)
|
||||||
{
|
{
|
||||||
@@ -191,7 +194,7 @@ public class EditorFrame extends ManagedJFrame
|
|||||||
*/
|
*/
|
||||||
protected EditorScenePanel createScenePanel ()
|
protected EditorScenePanel createScenePanel ()
|
||||||
{
|
{
|
||||||
return new EditorScenePanel(_ctx, this, _model);
|
return new EditorScenePanel(_ctx, this, _model, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -307,6 +310,16 @@ public class EditorFrame extends ManagedJFrame
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setMisoSceneModel (StageMisoSceneModel model)
|
||||||
|
{
|
||||||
|
AuxModel[] models = _scene.getSceneModel().auxModels;
|
||||||
|
for (int ii = 0; ii < models.length; ii++) {
|
||||||
|
if (models[ii] instanceof StageMisoSceneModel) {
|
||||||
|
models[ii] = model;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a blank scene and configures the editor to begin editing
|
* Creates a blank scene and configures the editor to begin editing
|
||||||
* it. Eventually this should make sure the user has a chance to save
|
* it. Eventually this should make sure the user has a chance to save
|
||||||
|
|||||||
@@ -89,13 +89,21 @@ import static com.threerings.stage.Log.log;
|
|||||||
public class EditorScenePanel extends StageScenePanel
|
public class EditorScenePanel extends StageScenePanel
|
||||||
implements EditorModelListener, ChangeListener
|
implements EditorModelListener, ChangeListener
|
||||||
{
|
{
|
||||||
|
public interface SceneModelListener
|
||||||
|
{
|
||||||
|
public void setMisoSceneModel (StageMisoSceneModel sceneModel);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Constructs the editor scene view panel.
|
* Constructs the editor scene view panel.
|
||||||
*/
|
*/
|
||||||
public EditorScenePanel (EditorContext ctx, JFrame frame, EditorModel model)
|
public EditorScenePanel (EditorContext ctx, JFrame frame, EditorModel model,
|
||||||
|
SceneModelListener sceneListener)
|
||||||
{
|
{
|
||||||
super(ctx, new Controller() { });
|
super(ctx, new Controller() { });
|
||||||
|
|
||||||
|
_sceneListener = sceneListener;
|
||||||
|
|
||||||
// keep these around for later
|
// keep these around for later
|
||||||
_ctx = ctx;
|
_ctx = ctx;
|
||||||
_frame = frame;
|
_frame = frame;
|
||||||
@@ -1164,6 +1172,7 @@ public class EditorScenePanel extends StageScenePanel
|
|||||||
public void rollback () {
|
public void rollback () {
|
||||||
if (_list.size() > 0) {
|
if (_list.size() > 0) {
|
||||||
_model = _list.removeFirst();
|
_model = _list.removeFirst();
|
||||||
|
_sceneListener.setMisoSceneModel((StageMisoSceneModel)_model);
|
||||||
refreshScene();
|
refreshScene();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1243,6 +1252,8 @@ public class EditorScenePanel extends StageScenePanel
|
|||||||
protected UndoStack _undo = new UndoStack();
|
protected UndoStack _undo = new UndoStack();
|
||||||
protected UndoStack _redo = new UndoStack();
|
protected UndoStack _redo = new UndoStack();
|
||||||
|
|
||||||
|
protected SceneModelListener _sceneListener;
|
||||||
|
|
||||||
/** The triangle used to render a portal on-screen. */
|
/** The triangle used to render a portal on-screen. */
|
||||||
protected static Polygon _locTri;
|
protected static Polygon _locTri;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user