|
From: Stefan F. <ste...@us...> - 2012-07-11 18:25:43
|
junit/rails/game/state/FormatterTest.java | 54 +++++++++++++------
junit/rails/game/state/GenericStateTest.java | 3 -
junit/rails/game/state/ObservableTest.java | 2
junit/rails/game/state/ObserverTest.java | 37 +++++++++++++
junit/rails/game/state/StateTest.java | 8 +-
src/rails/game/GameManager.java | 2
src/rails/game/OperatingRound.java | 2
src/rails/game/PublicCompany.java | 2
src/rails/game/model/PresidentModel.java | 11 ---
src/rails/game/state/Change.java | 2
src/rails/game/state/ChangeSet.java | 12 +++-
src/rails/game/state/ChangeStack.java | 28 ++++++++--
src/rails/game/state/Formatter.java | 22 ++++++-
src/rails/game/state/Model.java | 31 ++++++-----
src/rails/game/state/Observable.java | 35 ++++++------
src/rails/game/state/Observer.java | 2
src/rails/game/state/Root.java | 13 ++--
src/rails/game/state/State.java | 32 ++---------
src/rails/game/state/StateManager.java | 70 ++++++++++++++++++++++++-
src/rails/ui/swing/GridPanel.java | 2
src/rails/ui/swing/elements/Field.java | 4 -
src/rails/ui/swing/elements/GUIStockSpace.java | 3 -
src/rails/ui/swing/hexmap/GUIHex.java | 9 ---
23 files changed, 260 insertions(+), 126 deletions(-)
New commits:
commit afd1a0667ca3e872149f6657eec7e9b676338f70
Author: Stefan Frey <ste...@we...>
Date: Wed Jul 11 11:35:02 2012 +0200
refactored Observer and Formatter classes
diff --git a/junit/rails/game/state/FormatterTest.java b/junit/rails/game/state/FormatterTest.java
index 626f0be..51f6b48 100644
--- a/junit/rails/game/state/FormatterTest.java
+++ b/junit/rails/game/state/FormatterTest.java
@@ -1,40 +1,60 @@
package rails.game.state;
-import static org.junit.Assert.*;
+import static org.mockito.Mockito.*;
import org.junit.Before;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.InOrder;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+@RunWith(MockitoJUnitRunner.class)
public class FormatterTest {
+
+ private static final String YES = "yes";
+ private static final String NO = "no";
// This formatter doubles the text of the state
- private class FormatterImpl implements Formatter<State> {
- public String formatValue(State state) {
- return state.toString() + state.toString();
+ private class FormatterImpl extends Formatter<BooleanState> {
+ private final BooleanState state;
+ private FormatterImpl(BooleanState state){
+ super(state);
+ this.state = state;
+ }
+ public String observerText() {
+ if (state.value()) {
+ return YES;
+ } else {
+ return NO;
+ }
}
}
private final static String STATE_ID = "State";
- private final static String STATE_TEXT = "Test";
private Root root;
- private State state;
- private Formatter<State> formatter;
-
+ private BooleanState state;
+ private Formatter<BooleanState> formatter;
+ @Mock private Observer observer;
+
@Before
public void setUp() {
- root = Root.create();
- state = new StateImpl(root, STATE_ID, STATE_TEXT);
- formatter = new FormatterImpl();
+ root = StateTestUtils.setUpRoot();
+ state = BooleanState.create(root, STATE_ID);
+ formatter = new FormatterImpl(state);
+ formatter.addObserver(observer);
}
@Test
public void testFormatValue() {
- assertEquals(STATE_TEXT, state.getText());
- state.setFormatter(formatter);
- assertEquals(STATE_TEXT + STATE_TEXT, state.getText());
- state.setFormatter(null);
- assertEquals(STATE_TEXT, state.getText());
- }
+ state.set(true);
+ root.getStateManager().getChangeStack().closeCurrentChangeSet();
+ state.set(false);
+ root.getStateManager().getChangeStack().closeCurrentChangeSet();
+ InOrder inOrder = inOrder(observer);
+ inOrder.verify(observer).update(YES);
+ inOrder.verify(observer).update(NO);
+ }
}
diff --git a/junit/rails/game/state/GenericStateTest.java b/junit/rails/game/state/GenericStateTest.java
index c25424c..36926f9 100644
--- a/junit/rails/game/state/GenericStateTest.java
+++ b/junit/rails/game/state/GenericStateTest.java
@@ -66,7 +66,8 @@ public class GenericStateTest {
assertSame(another_item, state_init.get());
stack.closeCurrentChangeSet();
- assertThat(stack.getLastClosedChangeSet().getStates()).contains(state_default, state_init);
+ // remark: state_init is an internal (isObservable = false)
+ assertThat(stack.getLastClosedChangeSet().getStates()).contains(state_default);
stack.undo();
assertNull(state_default.get());
diff --git a/junit/rails/game/state/ObservableTest.java b/junit/rails/game/state/ObservableTest.java
index 2e2000b..98d96f3 100644
--- a/junit/rails/game/state/ObservableTest.java
+++ b/junit/rails/game/state/ObservableTest.java
@@ -20,7 +20,7 @@ public class ObservableTest {
}
@Override
- public String getText() {
+ public String observerText() {
return null;
}
}
diff --git a/junit/rails/game/state/ObserverTest.java b/junit/rails/game/state/ObserverTest.java
new file mode 100644
index 0000000..94b0671
--- /dev/null
+++ b/junit/rails/game/state/ObserverTest.java
@@ -0,0 +1,37 @@
+package rails.game.state;
+
+import static org.mockito.Mockito.*;
+import static org.fest.assertions.api.Assertions.assertThat;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.runners.MockitoJUnitRunner;
+
+@RunWith(MockitoJUnitRunner.class)
+public class ObserverTest {
+
+ private final static String STATE_ID = "State";
+
+ private Root root;
+ private BooleanState state;
+ @Mock private Observer observer;
+
+ @Before
+ public void setUp() {
+ root = StateTestUtils.setUpRoot();
+ state = BooleanState.create(root, STATE_ID, false);
+ state.addObserver(observer);
+ }
+
+ @Test
+ public void testUpdate() {
+ assertThat(state.getObservers()).contains(observer);
+ state.set(true);
+ verify(observer, never()).update(state.observerText());
+ root.getStateManager().getChangeStack().closeCurrentChangeSet();
+ verify(observer).update(state.observerText());
+ }
+
+}
diff --git a/junit/rails/game/state/StateTest.java b/junit/rails/game/state/StateTest.java
index 61bffab..0fb56a5 100644
--- a/junit/rails/game/state/StateTest.java
+++ b/junit/rails/game/state/StateTest.java
@@ -46,9 +46,9 @@ public class StateTest {
}
@Test
- public void testGetText() {
- assertNull(state.getText());
- assertEquals(STATE_TEXT, state_wo_id.getText());
- }
+ public void testObserverText() {
+ assertNull(state.observerText());
+ assertEquals(STATE_TEXT, state_wo_id.observerText());
+ }
}
diff --git a/src/rails/game/GameManager.java b/src/rails/game/GameManager.java
index acb3453..083fba6 100644
--- a/src/rails/game/GameManager.java
+++ b/src/rails/game/GameManager.java
@@ -782,7 +782,7 @@ public class GameManager extends AbstractItem implements ConfigurableComponent,
}
public String getNumOfORs () {
- return numOfORs.getText();
+ return numOfORs.observerText();
}
/* (non-Javadoc)
diff --git a/src/rails/game/OperatingRound.java b/src/rails/game/OperatingRound.java
index 50becdd..b5b56ad 100644
--- a/src/rails/game/OperatingRound.java
+++ b/src/rails/game/OperatingRound.java
@@ -3124,7 +3124,7 @@ public class OperatingRound extends Round implements Observer {
/**
* Update the status if the step has changed by an Undo or Redo
*/
- public void update(Observable observable, String text) {
+ public void update(String text) {
prepareStep();
}
diff --git a/src/rails/game/PublicCompany.java b/src/rails/game/PublicCompany.java
index 30f7527..683c471 100644
--- a/src/rails/game/PublicCompany.java
+++ b/src/rails/game/PublicCompany.java
@@ -1191,7 +1191,7 @@ public class PublicCompany extends Company implements CashOwner, PortfolioOwner,
}
public String getFormattedCash() {
- return treasury.getText();
+ return treasury.observerText();
}
public Model getText() {
diff --git a/src/rails/game/model/PresidentModel.java b/src/rails/game/model/PresidentModel.java
index 0f7cbb4..f167c72 100644
--- a/src/rails/game/model/PresidentModel.java
+++ b/src/rails/game/model/PresidentModel.java
@@ -3,18 +3,16 @@ package rails.game.model;
import rails.game.Player;
import rails.game.PublicCompany;
import rails.game.state.Model;
-import rails.game.state.Observable;
-import rails.game.state.Observer;
/**
* model object for the current company president
* gets registered by the ShareModels
*
- * FIXME: Finalize implementation
+ * FIXME: Finalize implementation, this does not work currently
* TODO: Check if this is all done correctly, where is the observable stored?
*/
-public final class PresidentModel extends Model implements Observer {
+public final class PresidentModel extends Model {
public static final String ID = "PresidentModel";
@@ -43,9 +41,4 @@ public final class PresidentModel extends Model implements Observer {
else return company.getPresident().getNameAndPriority();
}
- // FIXME: Add code what to do here
- public void update(Observable observable, String text) {
-
- }
-
}
diff --git a/src/rails/game/state/Change.java b/src/rails/game/state/Change.java
index eecaafc..c01bdcb 100644
--- a/src/rails/game/state/Change.java
+++ b/src/rails/game/state/Change.java
@@ -7,7 +7,7 @@ package rails.game.state;
abstract class Change {
protected void init(State state){
- state.getRoot().getStateManager().getChangeStack().getCurrentChangeSet().addChange(this);
+ state.getStateManager().getChangeStack().getCurrentChangeSet().addChange(this);
}
abstract void execute();
diff --git a/src/rails/game/state/ChangeSet.java b/src/rails/game/state/ChangeSet.java
index d57c599..5c4d0c3 100644
--- a/src/rails/game/state/ChangeSet.java
+++ b/src/rails/game/state/ChangeSet.java
@@ -58,7 +58,9 @@ abstract class ChangeSet {
private void defineStates() {
ImmutableSet.Builder<State> builder = new ImmutableSet.Builder<State>();
for (Change change:changes) {
- builder.add(change.getState());
+ if (change.getState().isObservable()){
+ builder.add(change.getState());
+ }
}
states = builder.build();
}
@@ -92,8 +94,16 @@ abstract class ChangeSet {
abstract boolean isTerminal();
+ /**
+ * @return set of States in the ChangeSet
+ * Remark: It only includes those which are observable (isObservable = true)
+ */
ImmutableSet<State> getStates() {
if (!closed) throw new IllegalStateException("ChangeSet is still open");
return states;
}
+
+
+
+
}
diff --git a/src/rails/game/state/ChangeStack.java b/src/rails/game/state/ChangeStack.java
index b3585e6..0d2687a 100644
--- a/src/rails/game/state/ChangeStack.java
+++ b/src/rails/game/state/ChangeStack.java
@@ -2,10 +2,14 @@ package rails.game.state;
import java.util.ArrayDeque;
import java.util.Deque;
+import java.util.HashSet;
+import java.util.Set;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import com.google.common.collect.Sets;
+
import rails.game.Player;
import rails.game.action.PossibleAction;
@@ -18,12 +22,16 @@ public class ChangeStack {
private final Deque<ChangeSet> undoStack = new ArrayDeque<ChangeSet>();
private final Deque<ChangeSet> redoStack = new ArrayDeque<ChangeSet>();
+ private final StateManager stateManager;
+
private ChangeSet currentSet;
- private ChangeStack() {};
+ private ChangeStack(StateManager stateManager) {
+ this.stateManager = stateManager;
+ }
- public static ChangeStack create() {
- ChangeStack changeStack = new ChangeStack();
+ public static ChangeStack create(StateManager stateManager) {
+ ChangeStack changeStack = new ChangeStack(stateManager);
changeStack.startAutoChangeSet(true); // first set is terminal
return changeStack;
}
@@ -50,6 +58,8 @@ public class ChangeStack {
return false;
} else {
currentSet.close();
+ // FIXME: This is a hack, has to replaced
+ updateObservers(Sets.newHashSet(currentSet));
}
undoStack.addFirst(currentSet);
return true;
@@ -139,11 +149,21 @@ public class ChangeStack {
}
/**
+ * Update the relevant observers
+ */
+ private void updateObservers(Set<ChangeSet> changeSets) {
+ Set<State> states = Sets.newHashSet();
+ for (ChangeSet cs:changeSets) {
+ states.addAll(cs.getStates());
+ }
+ stateManager.updateObservers(states);
+ }
+
+ /**
* @return size of ChangeStack
*/
public int sizeUndoStack() {
return undoStack.size();
}
-
}
diff --git a/src/rails/game/state/Formatter.java b/src/rails/game/state/Formatter.java
index 223fab8..c0b5ab5 100644
--- a/src/rails/game/state/Formatter.java
+++ b/src/rails/game/state/Formatter.java
@@ -1,9 +1,23 @@
package rails.game.state;
/**
- * An interface defining a formatter for a state variable
- * @author freystef
+ * Abstract class for a Formatter
*/
-public interface Formatter<E extends State> {
- public String formatValue(E state);
+public abstract class Formatter<T extends Observable> {
+
+ private final T observable;
+
+ protected Formatter(T observable) {
+ this.observable = observable;
+ }
+
+ public abstract String observerText();
+
+ public void addObserver(Observer observer) {
+ observable.getStateManager().addObserver(observer, this);
+ }
+
+ public T getObservable() {
+ return observable;
+ }
}
diff --git a/src/rails/game/state/Model.java b/src/rails/game/state/Model.java
index d774e11..2143924 100644
--- a/src/rails/game/state/Model.java
+++ b/src/rails/game/state/Model.java
@@ -1,6 +1,5 @@
package rails.game.state;
-
/**
* Model is an abstract generic class
* that defines the a middle layer between State(s) and
@@ -8,14 +7,12 @@ package rails.game.state;
*
* Models themselves can be layered upon each other.
*
- *
* It replaces the ModelObject class in Rails 1.0
- *
- * @author freystef
*/
+
public abstract class Model extends Observable {
- private boolean updated = false;
+ private boolean current = false;
private String cache = null;
protected Model(Item parent, String id) {
@@ -23,24 +20,30 @@ public abstract class Model extends Observable {
}
/**
- * Indicates that the model is updated, so the getText() cache
- * is flushed
+ * Calling of update informs the model that some prerequisites has been updated
*/
public void update() {
- updated = false;
+ current = false;
}
/**
- * For a model the text shown to observer is derived from toString()
- * The value is cached until the model is updated
+ * {@inheritDoc}
+ * Remark: A Model has to either override this or cachedText(), the latter automatically caches results
*/
@Override
- public final String getText() {
- if (!updated){
- updated = true;
- cache = toString();
+ public String observerText() {
+ if (!current){
+ current = true;
+ cache = this.cachedText();
}
return cache;
}
+ /**
+ * @return Default Model text used for Observer updates (gets cached automatically)
+ */
+ public String cachedText() {
+ return null;
+ }
+
}
diff --git a/src/rails/game/state/Observable.java b/src/rails/game/state/Observable.java
index 0ac1ffb..9bdde04 100644
--- a/src/rails/game/state/Observable.java
+++ b/src/rails/game/state/Observable.java
@@ -15,11 +15,6 @@ public abstract class Observable implements Item {
private final Item parent;
private final Context context;
- // stores observers and models if observable
- // those are unobservable states themselves
- private final HashSetState<Observer> observers;
- private final HashSetState<Model> models;
-
/**
* @param parent parent node in item hierarchy (cannot be null)
* @param id id of the observable
@@ -43,45 +38,45 @@ public abstract class Observable implements Item {
// if id is null this is an "unobservable" observable
if (id == null) {
- observers = null;
- models = null;
} else {
- observers = HashSetState.create(this, null);
- models = HashSetState.create(this, null);
// add item to context if it has an id
context.addItem(this);
}
}
+
+ protected StateManager getStateManager() {
+ return context.getRoot().getStateManager();
+ }
public void addObserver(Observer o) {
checkState(id != null, "Cannot add observer to unobservable object");
- observers.add(o);
+ getStateManager().addObserver(o, this);
}
public boolean removeObserver(Observer o) {
checkState(id != null, "Cannot remove observer from unobservable object");
- return observers.remove(o);
+ return getStateManager().removeObserver(o, this);
}
public ImmutableSet<Observer> getObservers() {
checkState(id != null, "Cannot get observers of unobservable object");
- return observers.view();
+ return getStateManager().getObservers(this);
}
public void addModel(Model m) {
checkState(id != null, "Cannot add model to unobservable object");
- models.add(m);
+ getStateManager().addModel(m, this);
}
public boolean removeModel(Model m) {
checkState(id != null, "Cannot remove model from unobservable object");
- return models.remove(m);
+ return getStateManager().removeModel(m, this);
}
public ImmutableSet<Model> getModels() {
checkState(id != null, "Cannot get models of unobservable object");
- return models.view();
+ return getStateManager().getModels(this);
}
/**
@@ -90,11 +85,15 @@ public abstract class Observable implements Item {
*/
public void updateModels() {
if (id == null) return;
- for (Model m:models) {
+ for (Model m:this.getModels()) {
m.update();
}
}
+ public boolean isObservable() {
+ return (id != null);
+ }
+
// Item methods
public String getId() {
@@ -132,8 +131,8 @@ public abstract class Observable implements Item {
/**
- * @return text to be read by observers
+ * @return text delivered to observers, if no formatter is used
*/
- public abstract String getText();
+ public abstract String observerText();
}
diff --git a/src/rails/game/state/Observer.java b/src/rails/game/state/Observer.java
index 2cdd4ea..d392e41 100644
--- a/src/rails/game/state/Observer.java
+++ b/src/rails/game/state/Observer.java
@@ -5,6 +5,6 @@ package rails.game.state;
*/
public interface Observer{
- void update(Observable observable, String text);
+ void update(String text);
}
diff --git a/src/rails/game/state/Root.java b/src/rails/game/state/Root.java
index 29c85e3..af481cd 100644
--- a/src/rails/game/state/Root.java
+++ b/src/rails/game/state/Root.java
@@ -9,27 +9,26 @@ public final class Root extends Context {
public final static String ID = "";
private StateManager stateManager;
- private final HashMapState<String, Item> items = HashMapState.create(this, null);
+ private HashMapState<String, Item> items;
private Root() {
+
}
/**
* @return a Root object with initialized StateManager embedded
*/
public static Root create() {
+ // precise sequence to avoid any unintialized problems
Root root = new Root();
StateManager stateManager = StateManager.create(root, "states");
- root.addStateManager(stateManager);
+ root.stateManager = stateManager;
+ root.items = HashMapState.create(root, null);
+ root.addItem(stateManager);
root.addItem(root);
return root;
}
- private void addStateManager(StateManager stateManager) {
- this.stateManager = stateManager;
- this.addItem(stateManager);
- }
-
public StateManager getStateManager() {
return stateManager;
}
diff --git a/src/rails/game/state/State.java b/src/rails/game/state/State.java
index 59a95c0..324c99f 100644
--- a/src/rails/game/state/State.java
+++ b/src/rails/game/state/State.java
@@ -1,7 +1,5 @@
package rails.game.state;
-import static com.google.common.base.Preconditions.*;
-
/**
* State is an abstract generic class
* that defines the base layer of objects that contain game state.
@@ -15,45 +13,27 @@ import static com.google.common.base.Preconditions.*;
*/
public abstract class State extends Observable {
- // optional formatter
- private Formatter<State> formatter = null;
-
protected State(Item parent, String id) {
super(parent, id);
-
// register if observable state
if (id != null) {
// check if parent is a model and add as dependent model
if (parent instanceof Model) {
addModel((Model)parent);
}
- // check if there is a StateManager available
- checkState(getContext().getRoot().getStateManager() != null, "Root of state has no StateManager attached");
- // if so => register state there
- getRoot().getStateManager().registerState(this);
+ this.getStateManager().registerState(this);
}
}
// Observable methods
/**
- * For a state getText() it is identical to toString()
- * If this does not work use a formatter
+ * {@inheritDoc}
+ * For a state defaultText() it is identical to toString()
+ * If this is not the correct behavior, overwrite it
*/
@Override
- public final String getText() {
- if (formatter == null) {
- return toString();
- } else {
- return formatter.formatValue(this);
- }
- }
-
- /**
- * Adds a Formatter
- * @param formatter
- */
- public void setFormatter(Formatter<State> formatter) {
- this.formatter = formatter;
+ public String observerText() {
+ return toString();
}
}
\ No newline at end of file
diff --git a/src/rails/game/state/StateManager.java b/src/rails/game/state/StateManager.java
index 37cc852..3dd66eb 100644
--- a/src/rails/game/state/StateManager.java
+++ b/src/rails/game/state/StateManager.java
@@ -1,5 +1,7 @@
package rails.game.state;
+import static com.google.common.base.Preconditions.checkArgument;
+
import java.util.List;
import java.util.Set;
@@ -17,8 +19,16 @@ public final class StateManager extends Manager {
protected static Logger log =
LoggerFactory.getLogger(StateManager.class.getPackage().getName());
- private final ChangeStack changeStack = ChangeStack.create();
+ private final ChangeStack changeStack = ChangeStack.create(this);
private final HashSetState<State> allStates = HashSetState.create(this, null);
+
+ private final HashMultimapState<Observable, Observer>
+ observers = HashMultimapState.create(this, null);
+ private final HashMapState<Observer, Formatter<? extends Observable>>
+ formatters = HashMapState.create(this, null);
+ private final HashMultimapState<Observable, Model>
+ models = HashMultimapState.create(this, null);
+
// private final PortfolioManager portfolioManager = PortfolioManager.create(this, "portfolioManager");
// private final WalletManager walletManager = WalletManager.create(this, "walletManager");
@@ -58,6 +68,48 @@ public final class StateManager extends Manager {
}
/**
+ * Adds the combination of observer to observable
+ * @throws an IllegalArgumentException - if observer is already assigned to an observable
+ */
+ void addObserver(Observer observer, Observable observable) {
+ checkArgument(!observers.containsValue(observer), "Observer can only be assigned to one Observable");
+ observers.put(observable, observer);
+ }
+
+ /**
+ * Adds the combination of observer to observable, using a Formatter
+ * @throws an IllegalArgumentException - if observer is already assigned to an observable
+ */
+ <T extends Observable> void addObserver(Observer observer, Formatter<T> formatter) {
+ this.addObserver(observer, formatter.getObservable());
+ formatters.put(observer, formatter);
+ }
+
+ boolean removeObserver(Observer observer, Observable observable) {
+ formatters.remove(observer);
+ return observers.remove(observable, observer);
+ }
+
+ public ImmutableSet<Observer> getObservers(Observable observable) {
+ return observers.get(observable);
+ }
+
+ /**
+ * Adds the combination of model to observable
+ */
+ void addModel(Model model, Observable observable) {
+ models.put(observable, model);
+ }
+
+ boolean removeModel(Model model, Observable observable) {
+ return models.remove(observable, model);
+ }
+
+ public ImmutableSet<Model> getModels(Observable observable) {
+ return models.get(observable);
+ }
+
+ /**
* A set of states is given as input
* and then calculates all observer to update in the correct sequence
*
@@ -121,7 +173,7 @@ public final class StateManager extends Manager {
* @param states Set of states
* @return all observers to be updated from states (either directly or via Models)
*/
- Set<Observer> getObservers(Set<State> states){
+ private Set<Observer> getObservers(Set<State> states){
Set<Observer> observers = Sets.newHashSet();
@@ -138,6 +190,20 @@ public final class StateManager extends Manager {
return observers;
}
+ void updateObservers(Set<State> states) {
+ for (Observable observable:getSortedObservables(states)) {
+ for (Observer observer:observable.getObservers()) {
+ // check if formatter is defined
+ if (formatters.containsKey(observer)) {
+ observer.update(formatters.get(observer).observerText());
+ } else {
+ // otherwise use observable text
+ observer.update(observable.observerText());
+ }
+ }
+ }
+ }
+
/**
* @param states Set of states
* @return all models to be updated from states
diff --git a/src/rails/ui/swing/GridPanel.java b/src/rails/ui/swing/GridPanel.java
index f61dca3..5430170 100644
--- a/src/rails/ui/swing/GridPanel.java
+++ b/src/rails/ui/swing/GridPanel.java
@@ -180,7 +180,7 @@ implements ActionListener, KeyListener {
}
*/
- public void update(Observable observable, String text) {
+ public void update(String text) {
// FIXME: There was a Boolean object submitted if the company is closed
// TODO: Make this functionality available again
// see above the old update method
diff --git a/src/rails/ui/swing/elements/Field.java b/src/rails/ui/swing/elements/Field.java
index 95dcaf9..9c440a8 100644
--- a/src/rails/ui/swing/elements/Field.java
+++ b/src/rails/ui/swing/elements/Field.java
@@ -87,7 +87,7 @@ public class Field extends JLabel implements Observer {
@Override
public void paintComponent(Graphics g) {
if (observable != null && pull) {
- setText(observable.getText());
+ setText(observable.observerText());
}
super.paintComponent(g);
}
@@ -116,7 +116,7 @@ public class Field extends JLabel implements Observer {
}
/** Needed to satisfy the Observer interface. */
- public void update(Observable observable, String text) {
+ public void update(String text) {
setText(text);
}
diff --git a/src/rails/ui/swing/elements/GUIStockSpace.java b/src/rails/ui/swing/elements/GUIStockSpace.java
index 0c388da..d1d0ab5 100644
--- a/src/rails/ui/swing/elements/GUIStockSpace.java
+++ b/src/rails/ui/swing/elements/GUIStockSpace.java
@@ -17,7 +17,6 @@ import org.slf4j.LoggerFactory;
import rails.game.PublicCompany;
import rails.game.StockSpace;
import rails.game.state.Model;
-import rails.game.state.Observable;
import rails.game.state.Observer;
import rails.ui.swing.GUIToken;
import rails.util.Util;
@@ -138,7 +137,7 @@ public class GUIStockSpace extends JLayeredPane implements Observer {
* @see java.rails.util.Observer#update(java.rails.util.Observable,
* java.lang.Object)
*/
- public void update(Observable observable, String text) {
+ public void update(String text) {
recreate();
}
diff --git a/src/rails/ui/swing/hexmap/GUIHex.java b/src/rails/ui/swing/hexmap/GUIHex.java
index ad9d27d..8a36d78 100644
--- a/src/rails/ui/swing/hexmap/GUIHex.java
+++ b/src/rails/ui/swing/hexmap/GUIHex.java
@@ -37,7 +37,6 @@ import rails.game.Stop;
import rails.game.Tile;
import rails.game.TileOrientation;
import rails.game.Token;
-import rails.game.state.Observable;
import rails.game.state.Observer;
import rails.ui.swing.GUIToken;
import rails.util.Util;
@@ -897,6 +896,7 @@ public class GUIHex implements Observer {
}
// Used by Undo/Redo
+ // FIMXE: Does this still work?
public void update(String notification) {
// The below code so far only deals with tile lay undo/redo.
// Tokens still to do
@@ -922,11 +922,4 @@ public class GUIHex implements Observer {
public String toString () {
return getName() + " (" + currentTile.getId() + ")";
}
-
- // FIMXE: Add the code here
- public void update(Observable observable, String id) {
- // TODO Auto-generated method stub
-
- }
-
}
|