From afa995ebb9ffc7e014406be58e0ec776429e0e15 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Wed, 30 Mar 2005 01:09:30 +0000 Subject: [PATCH] Finally broke down and changed createPlaceView() to eliminate the annoying potential fuckola of being called before the controller gets around to initializing the casted context it almost certainly needs to create its place view. git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3440 542714f4-19e9-0310-aa3c-eee0fc999fb1 --- .../crowd/client/PlaceController.java | 21 +++++++++++++++++-- .../micasa/lobby/LobbyController.java | 2 +- .../stage/client/StageSceneController.java | 5 +++-- .../com/threerings/parlor/TestController.java | 3 ++- .../threerings/whirled/TestController.java | 5 +++-- 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/src/java/com/threerings/crowd/client/PlaceController.java b/src/java/com/threerings/crowd/client/PlaceController.java index 3c88552b4..5fa167bf8 100644 --- a/src/java/com/threerings/crowd/client/PlaceController.java +++ b/src/java/com/threerings/crowd/client/PlaceController.java @@ -57,7 +57,7 @@ public abstract class PlaceController extends Controller _config = config; // create our user interface - _view = createPlaceView(); + _view = createPlaceView(_ctx); // initialize our delegates applyToDelegates(new DelegateOp() { @@ -101,8 +101,25 @@ public abstract class PlaceController extends Controller * Creates the user interface that will be used to display this place. * The view instance returned will later be configured with the place * object, once it becomes available. + * + * @param ctx a reference to the {@link CrowdContext} associated with + * this controller. */ - protected abstract PlaceView createPlaceView (); + protected PlaceView createPlaceView (CrowdContext ctx) + { + return createPlaceView(); + } + + /** + * Obsolete but retained for runtime compatibility with the old and + * busted. + * + * @deprecated Use {@link #createPlaceView(CrowdContext)}. + */ + protected PlaceView createPlaceView () + { + return null; + } /** * This is called by the location director once the place object has diff --git a/src/java/com/threerings/micasa/lobby/LobbyController.java b/src/java/com/threerings/micasa/lobby/LobbyController.java index b3eec3833..f73b2011f 100644 --- a/src/java/com/threerings/micasa/lobby/LobbyController.java +++ b/src/java/com/threerings/micasa/lobby/LobbyController.java @@ -50,7 +50,7 @@ public class LobbyController extends PlaceController _ctx.getParlorDirector().setInvitationHandler(this); } - protected PlaceView createPlaceView () + protected PlaceView createPlaceView (CrowdContext ctx) { return new LobbyPanel(_ctx, _config); } diff --git a/src/java/com/threerings/stage/client/StageSceneController.java b/src/java/com/threerings/stage/client/StageSceneController.java index 06e459507..4e405b378 100644 --- a/src/java/com/threerings/stage/client/StageSceneController.java +++ b/src/java/com/threerings/stage/client/StageSceneController.java @@ -4,6 +4,7 @@ package com.threerings.stage.client; import com.threerings.crowd.client.PlaceView; +import com.threerings.crowd.util.CrowdContext; import com.threerings.whirled.data.SceneUpdate; import com.threerings.whirled.spot.client.SpotSceneController; @@ -17,9 +18,9 @@ import com.threerings.stage.util.StageContext; public class StageSceneController extends SpotSceneController { // documentation inherited - protected PlaceView createPlaceView () + protected PlaceView createPlaceView (CrowdContext ctx) { - return new StageScenePanel((StageContext)_ctx, this); + return new StageScenePanel((StageContext)ctx, this); } // documentation inherited diff --git a/tests/src/java/com/threerings/parlor/TestController.java b/tests/src/java/com/threerings/parlor/TestController.java index 764d5fcf7..255688268 100644 --- a/tests/src/java/com/threerings/parlor/TestController.java +++ b/tests/src/java/com/threerings/parlor/TestController.java @@ -22,11 +22,12 @@ package com.threerings.parlor; import com.threerings.crowd.client.PlaceView; +import com.threerings.crowd.util.CrowdContext; import com.threerings.parlor.game.client.GameController; public class TestController extends GameController { - public PlaceView createPlaceView () + public PlaceView createPlaceView (CrowdContext ctx) { // nothing doing return null; diff --git a/tests/src/java/com/threerings/whirled/TestController.java b/tests/src/java/com/threerings/whirled/TestController.java index f0341e983..4734620bb 100644 --- a/tests/src/java/com/threerings/whirled/TestController.java +++ b/tests/src/java/com/threerings/whirled/TestController.java @@ -1,5 +1,5 @@ // -// $Id: TestController.java,v 1.4 2004/08/27 02:21:05 mdb Exp $ +// $Id$ // // Narya library - tools for developing networked games // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved @@ -22,10 +22,11 @@ package com.threerings.whirled; import com.threerings.crowd.client.*; +import com.threerings.crowd.util.CrowdContext; public class TestController extends PlaceController { - protected PlaceView createPlaceView () + protected PlaceView createPlaceView (CrowdContext ctx) { // nothing doing return null;