Created iso scene view model listener to handle modifications to the
scene view model more elegantly. Updated editor and scene view panel to make use of said listener. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@499 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,10 +1,11 @@
|
|||||||
//
|
//
|
||||||
// $Id: IsoSceneViewModel.java,v 1.14 2001/10/17 22:21:22 shaper Exp $
|
// $Id: IsoSceneViewModel.java,v 1.15 2001/10/18 21:01:44 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.scene;
|
package com.threerings.miso.scene;
|
||||||
|
|
||||||
import java.awt.Dimension;
|
import java.awt.Dimension;
|
||||||
import java.awt.Point;
|
import java.awt.Point;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
import com.samskivert.util.Config;
|
import com.samskivert.util.Config;
|
||||||
|
|
||||||
@@ -109,6 +110,31 @@ public class IsoSceneViewModel
|
|||||||
showPaths = config.getValue(SHOW_PATHS_KEY, DEF_SHOW_PATHS);
|
showPaths = config.getValue(SHOW_PATHS_KEY, DEF_SHOW_PATHS);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add an iso scene view model listener.
|
||||||
|
*
|
||||||
|
* @param l the listener.
|
||||||
|
*/
|
||||||
|
public void addListener (IsoSceneViewModelListener l)
|
||||||
|
{
|
||||||
|
if (!_listeners.contains(l)) {
|
||||||
|
_listeners.add(l);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Notify all model listeners that the iso scene view model has
|
||||||
|
* changed.
|
||||||
|
*/
|
||||||
|
protected void notifyListeners (int event)
|
||||||
|
{
|
||||||
|
int size = _listeners.size();
|
||||||
|
for (int ii = 0; ii < size; ii++) {
|
||||||
|
((IsoSceneViewModelListener)_listeners.get(ii)).
|
||||||
|
viewChanged(event);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns whether the given tile coordinate is a valid coordinate
|
* Returns whether the given tile coordinate is a valid coordinate
|
||||||
* within the scene.
|
* within the scene.
|
||||||
@@ -133,49 +159,21 @@ public class IsoSceneViewModel
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return whether locations in the scene are currently drawn.
|
* Toggle whether locations in the scene should be drawn.
|
||||||
*/
|
*/
|
||||||
public boolean getShowLocations ()
|
public void toggleShowLocations ()
|
||||||
{
|
{
|
||||||
return showLocs;
|
showLocs = !showLocs;
|
||||||
|
notifyListeners(IsoSceneViewModelListener.SHOW_LOCATIONS_CHANGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set whether locations in the scene should be drawn.
|
* Toggle whether coordinates should be drawn for each tile.
|
||||||
*
|
|
||||||
* @param show whether to show locations.
|
|
||||||
*/
|
*/
|
||||||
public void setShowLocations (boolean show)
|
public void toggleShowCoordinates ()
|
||||||
{
|
{
|
||||||
showLocs = show;
|
showCoords = !showCoords;
|
||||||
}
|
notifyListeners(IsoSceneViewModelListener.SHOW_COORDINATES_CHANGED);
|
||||||
|
|
||||||
/**
|
|
||||||
* Return whether coordinates are currently drawn for each tile.
|
|
||||||
*/
|
|
||||||
public boolean getShowCoordinates ()
|
|
||||||
{
|
|
||||||
return showCoords;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set whether coordinates should be drawn for each tile.
|
|
||||||
*
|
|
||||||
* @param show whether to show coordinates.
|
|
||||||
*/
|
|
||||||
public void setShowCoordinates (boolean show)
|
|
||||||
{
|
|
||||||
showCoords = show;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Set whether sprite paths should be drawn.
|
|
||||||
*
|
|
||||||
* @param show whether to show paths.
|
|
||||||
*/
|
|
||||||
public void setShowSpritePaths (boolean show)
|
|
||||||
{
|
|
||||||
showPaths = show;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -297,4 +295,7 @@ public class IsoSceneViewModel
|
|||||||
protected static final boolean DEF_SHOW_COORDS = false;
|
protected static final boolean DEF_SHOW_COORDS = false;
|
||||||
protected static final boolean DEF_SHOW_LOCS = false;
|
protected static final boolean DEF_SHOW_LOCS = false;
|
||||||
protected static final boolean DEF_SHOW_PATHS = false;
|
protected static final boolean DEF_SHOW_PATHS = false;
|
||||||
|
|
||||||
|
/** The model listeners. */
|
||||||
|
protected ArrayList _listeners = new ArrayList();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,23 @@
|
|||||||
|
//
|
||||||
|
// $Id: IsoSceneViewModelListener.java,v 1.1 2001/10/18 21:01:44 shaper Exp $
|
||||||
|
|
||||||
|
package com.threerings.miso.scene;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The iso scene view model listener interface should be implemented
|
||||||
|
* by classes that would like to be notified when the iso scene view
|
||||||
|
* model is changed.
|
||||||
|
*
|
||||||
|
* @see IsoSceneViewModel
|
||||||
|
*/
|
||||||
|
public interface IsoSceneViewModelListener
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Called by the {@link IsoSceneView} when the model is changed.
|
||||||
|
*/
|
||||||
|
public void viewChanged (int event);
|
||||||
|
|
||||||
|
/** Notification event constants. */
|
||||||
|
public static final int SHOW_LOCATIONS_CHANGED = 0;
|
||||||
|
public static final int SHOW_COORDINATES_CHANGED = 1;
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: SceneViewPanel.java,v 1.16 2001/10/17 22:21:22 shaper Exp $
|
// $Id: SceneViewPanel.java,v 1.17 2001/10/18 21:01:44 shaper Exp $
|
||||||
|
|
||||||
package com.threerings.miso.scene;
|
package com.threerings.miso.scene;
|
||||||
|
|
||||||
@@ -18,6 +18,7 @@ import com.threerings.miso.util.MisoUtil;
|
|||||||
* UI events.
|
* UI events.
|
||||||
*/
|
*/
|
||||||
public class SceneViewPanel extends AnimatedPanel
|
public class SceneViewPanel extends AnimatedPanel
|
||||||
|
implements IsoSceneViewModelListener
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* Constructs the scene view panel.
|
* Constructs the scene view panel.
|
||||||
@@ -25,10 +26,22 @@ public class SceneViewPanel extends AnimatedPanel
|
|||||||
public SceneViewPanel (Config config, SpriteManager spritemgr)
|
public SceneViewPanel (Config config, SpriteManager spritemgr)
|
||||||
{
|
{
|
||||||
// create the data model for the scene view
|
// create the data model for the scene view
|
||||||
_smodel = new IsoSceneViewModel(config);
|
_scenemodel = new IsoSceneViewModel(config);
|
||||||
|
|
||||||
|
// listen to the iso scene view model to receive notice when
|
||||||
|
// location or coordinate display is toggled
|
||||||
|
_scenemodel.addListener(this);
|
||||||
|
|
||||||
// create the scene view
|
// create the scene view
|
||||||
_view = newSceneView(spritemgr, _smodel);
|
_view = newSceneView(spritemgr, _scenemodel);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the iso scene view model associated with this panel.
|
||||||
|
*/
|
||||||
|
public IsoSceneViewModel getModel ()
|
||||||
|
{
|
||||||
|
return _scenemodel;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -75,13 +88,20 @@ public class SceneViewPanel extends AnimatedPanel
|
|||||||
*/
|
*/
|
||||||
public Dimension getPreferredSize ()
|
public Dimension getPreferredSize ()
|
||||||
{
|
{
|
||||||
Dimension psize = (_smodel == null) ?
|
Dimension psize = (_scenemodel == null) ?
|
||||||
super.getPreferredSize() : _smodel.bounds;
|
super.getPreferredSize() : _scenemodel.bounds;
|
||||||
return psize;
|
return psize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// documentation inherited
|
||||||
|
public void viewChanged (int event)
|
||||||
|
{
|
||||||
|
// update the scene view display
|
||||||
|
repaint();
|
||||||
|
}
|
||||||
|
|
||||||
/** The scene view data model. */
|
/** The scene view data model. */
|
||||||
protected IsoSceneViewModel _smodel;
|
protected IsoSceneViewModel _scenemodel;
|
||||||
|
|
||||||
/** The scene view we're managing. */
|
/** The scene view we're managing. */
|
||||||
protected SceneView _view;
|
protected SceneView _view;
|
||||||
|
|||||||
Reference in New Issue
Block a user