From: Stefan F. <ste...@us...> - 2012-07-08 20:59:31
|
src/rails/game/OperatingRound.java | 12 +----------- src/rails/game/model/PresidentModel.java | 11 +++-------- src/rails/game/state/Observer.java | 12 ++---------- src/rails/ui/swing/GridPanel.java | 22 ++++++++-------------- src/rails/ui/swing/elements/Field.java | 18 ++++-------------- src/rails/ui/swing/elements/GUIStockSpace.java | 22 +--------------------- src/rails/ui/swing/hexmap/GUIHex.java | 15 +-------------- 7 files changed, 20 insertions(+), 92 deletions(-) New commits: commit 39169f9f7195e3b705d712780d589fa26dea3a39 Author: Stefan Frey <ste...@we...> Date: Sun Jul 8 22:59:08 2012 +0200 started rethinking the Observer interface diff --git a/src/rails/game/OperatingRound.java b/src/rails/game/OperatingRound.java index 4e2c305..50becdd 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() { + public void update(Observable observable, String text) { prepareStep(); } @@ -3144,14 +3144,4 @@ public class OperatingRound extends Round implements Observer { return toString(); } - // Observer Interface - public Observable getObservable() { - return stepObject; - } - - public boolean deRegister() { - if (stepObject == null) return false; - return stepObject.removeObserver(this); - } - } \ No newline at end of file diff --git a/src/rails/game/model/PresidentModel.java b/src/rails/game/model/PresidentModel.java index 442385d..0f7cbb4 100644 --- a/src/rails/game/model/PresidentModel.java +++ b/src/rails/game/model/PresidentModel.java @@ -43,14 +43,9 @@ public final class PresidentModel extends Model implements Observer { else return company.getPresident().getNameAndPriority(); } - public Observable getObservable() { - // TODO Auto-generated method stub - return null; - } - - public boolean deRegister() { - // TODO Auto-generated method stub - return false; + // FIXME: Add code what to do here + public void update(Observable observable, String text) { + } } diff --git a/src/rails/game/state/Observer.java b/src/rails/game/state/Observer.java index c1b1eb5..2cdd4ea 100644 --- a/src/rails/game/state/Observer.java +++ b/src/rails/game/state/Observer.java @@ -1,18 +1,10 @@ package rails.game.state; /** - * An interface defining an observer for states and models - * - * It is a very simple approach that only relays the update information itself. - * - * @author freystef + * An interface defining an Observer to Observable classes */ public interface Observer{ - void update(); - - Observable getObservable(); - - boolean deRegister(); + void update(Observable observable, String text); } diff --git a/src/rails/ui/swing/GridPanel.java b/src/rails/ui/swing/GridPanel.java index 02bc2ef..f61dca3 100644 --- a/src/rails/ui/swing/GridPanel.java +++ b/src/rails/ui/swing/GridPanel.java @@ -75,10 +75,11 @@ implements ActionListener, KeyListener { revalidate(); } + // FIXME: This has to be replaced protected void deRegisterObservers() { log.debug("Deregistering observers"); for (Observer vo : observers) { - vo.deRegister(); +// vo.deRegister(); } } @@ -106,10 +107,11 @@ implements ActionListener, KeyListener { gridPanel.add(comp, gbc); - if (comp instanceof Observer - && ((Observer) comp).getObservable() != null) { - observers.add((Observer) comp); - } + // FIXME: This has to be replaced +// if (comp instanceof Observer +// && ((Observer) comp).getObservable() != null) { +// observers.add((Observer) comp); +// } if (fields != null && fields[x][y] == null) fields[x][y] = comp; comp.setVisible(visible); @@ -178,20 +180,12 @@ implements ActionListener, KeyListener { } */ - public void update() { + public void update(Observable observable, 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 } - public Observable getObservable() { - return observable; - } - - public boolean deRegister() { - return observable.removeObserver(this); - } - } diff --git a/src/rails/ui/swing/elements/Field.java b/src/rails/ui/swing/elements/Field.java index ae4199d..95dcaf9 100644 --- a/src/rails/ui/swing/elements/Field.java +++ b/src/rails/ui/swing/elements/Field.java @@ -71,10 +71,11 @@ public class Field extends JLabel implements Observer { return observable; } + // FIXME: Rewrite that part here public void setModel(Observable m) { observable = m; observable.addObserver(this); - update(); +// update(); } public void setHighlight(boolean highlight) { @@ -115,19 +116,8 @@ public class Field extends JLabel implements Observer { } /** Needed to satisfy the Observer interface. */ - public void update() { - setText(observable.getText()); + public void update(Observable observable, String text) { + setText(text); } - public boolean deRegister() { - dependents = null; - if (observable == null) return false; - return observable.removeObserver(this); - } - - public Observable getObservable() { - return observable; - } - - } diff --git a/src/rails/ui/swing/elements/GUIStockSpace.java b/src/rails/ui/swing/elements/GUIStockSpace.java index f121a09..0c388da 100644 --- a/src/rails/ui/swing/elements/GUIStockSpace.java +++ b/src/rails/ui/swing/elements/GUIStockSpace.java @@ -135,32 +135,12 @@ public class GUIStockSpace extends JLayeredPane implements Observer { /* * (non-Javadoc) * - * @see rails.ui.swing.elements.ViewObject#deRegister() - */ - public boolean deRegister() { - if (model == null) return false; - return model.removeObserver(this); - } - - /* - * (non-Javadoc) - * * @see java.rails.util.Observer#update(java.rails.util.Observable, * java.lang.Object) */ - public void update(String data) { + public void update(Observable observable, String text) { recreate(); } - public void update() { - // TODO Auto-generated method stub - - } - - public Observable getObservable() { - // TODO Auto-generated method stub - return null; - } - } diff --git a/src/rails/ui/swing/hexmap/GUIHex.java b/src/rails/ui/swing/hexmap/GUIHex.java index 86cd721..ad9d27d 100644 --- a/src/rails/ui/swing/hexmap/GUIHex.java +++ b/src/rails/ui/swing/hexmap/GUIHex.java @@ -891,13 +891,6 @@ public class GUIHex implements Observer { toolTip = null; } - /** Needed to satisfy the ViewObject interface. Currently not used. */ - public boolean deRegister() { - if (model == null) return false; - model.removeObserver(this); - return true; - } - // FIXME: Why is this called getModel instead of getMapHex? public MapHex getModel() { return model; @@ -931,15 +924,9 @@ public class GUIHex implements Observer { } // FIMXE: Add the code here - public void update() { + public void update(Observable observable, String id) { // TODO Auto-generated method stub } - public Observable getObservable() { - // TODO Auto-generated method stub - return null; - } - - } |
From: Stefan F. <ste...@us...> - 2012-09-19 11:54:01
|
src/rails/game/model/SpecialPropertiesModel.java | 71 +++++++++++++++++++++++ 1 file changed, 71 insertions(+) New commits: commit 6040f259cdca8439ff68fca311fee508a92e8439 Author: Stefan Frey <ste...@we...> Date: Wed Sep 19 09:51:56 2012 +0200 fixed issues with 1856 testgames diff --git a/src/rails/game/model/SpecialPropertiesModel.java b/src/rails/game/model/SpecialPropertiesModel.java new file mode 100644 index 0000000..4d3fa5a --- /dev/null +++ b/src/rails/game/model/SpecialPropertiesModel.java @@ -0,0 +1,71 @@ +package rails.game.model; + +import rails.common.LocalText; +import rails.game.Bonus; +import rails.game.Currency; +import rails.game.PublicCompany; +import rails.game.ReportBuffer; +import rails.game.state.Change; +import rails.game.state.Model; +import rails.game.state.Observable; +import rails.game.state.Owner; +import rails.game.state.PortfolioChange; +import rails.game.state.PortfolioSet; +import rails.game.state.Triggerable; +import rails.game.special.LocatedBonus; +import rails.game.special.SpecialProperty; + +public class SpecialPropertiesModel extends Model implements Triggerable { + + public final static String ID = "SpecialPropertiesModel"; + + private final PortfolioSet<SpecialProperty> specialProperties; + + private SpecialPropertiesModel(Owner parent) { + super(parent, ID); + // specialProperties have the Owner as parent directly + specialProperties = PortfolioSet.create(parent, "specialProperties", SpecialProperty.class); + // so make this model updating + specialProperties.addModel(this); + // and add it as triggerable + specialProperties.addTrigger(this); + } + + public static SpecialPropertiesModel create(Owner parent) { + return new SpecialPropertiesModel(parent); + } + + @Override + public Owner getParent() { + return (Owner)super.getParent(); + } + + PortfolioSet<SpecialProperty> getPortfolio() { + return specialProperties; + } + + // triggerable interface + + public void triggered(Observable observable, Change change) { + + // checks if the specialproperty moved into the portfolio carries a LocatedBonus + @SuppressWarnings("rawtypes") + PortfolioChange pchange = (PortfolioChange)change; + if (!pchange.isIntoPortfolio()) return; + + SpecialProperty property = (SpecialProperty)pchange.getItem(); + if (getParent() instanceof PublicCompany && property instanceof LocatedBonus) { + PublicCompany company = (PublicCompany)getParent(); + LocatedBonus locBonus = (LocatedBonus)property; + Bonus bonus = new Bonus(company, locBonus.getId(), locBonus.getValue(), + locBonus.getLocations()); + company.addBonus(bonus); + ReportBuffer.add(LocalText.getText("AcquiresBonus", + getParent().getId(), + locBonus.getName(), + Currency.format(company, locBonus.getValue()), + locBonus.getLocationNameString())); + } + } + +} |