From: Erik V. <ev...@us...> - 2010-01-03 20:31:42
|
Update of /cvsroot/rails/18xx/rails/ui/swing In directory sfp-cvsdas-1.v30.ch3.sourceforge.com:/tmp/cvs-serv9651/rails/ui/swing Modified Files: GameStatus.java ORPanel.java Log Message: Both Game Status and OR/Map windows now hide closed company rows. Index: GameStatus.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/ui/swing/GameStatus.java,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** GameStatus.java 1 Jan 2010 16:40:42 -0000 1.33 --- GameStatus.java 3 Jan 2010 20:31:29 -0000 1.34 *************** *** 23,27 **** * rails.game status information. */ ! public class GameStatus extends JPanel implements ActionListener { private static final long serialVersionUID = 1L; --- 23,27 ---- * rails.game status information. */ ! public class GameStatus extends JPanel implements ActionListener, RowHideable { private static final long serialVersionUID = 1L; *************** *** 318,322 **** companyIndex.put(c, new Integer(i)); rowVisibilityObservers[i] ! = new RowVisibility (certPerPlayerYOffset + i, c.getClosedModel()); boolean visible = !c.isClosed(); --- 318,322 ---- companyIndex.put(c, new Integer(i)); rowVisibilityObservers[i] ! = new RowVisibility (this, certPerPlayerYOffset + i, c.getClosedModel()); boolean visible = !c.isClosed(); *************** *** 938,942 **** } ! protected void setRowVisibility (int rowIndex, boolean value) { for (int j=0; j < fields.length; j++) { if (fields[j][rowIndex] != null) { --- 938,942 ---- } ! public void setRowVisibility (int rowIndex, boolean value) { for (int j=0; j < fields.length; j++) { if (fields[j][rowIndex] != null) { *************** *** 947,987 **** } - class RowVisibility implements ViewObject - { - private ModelObject modelObject; - private int rowIndex; - private boolean lastValue; - - RowVisibility (int rowIndex, ModelObject model) { - this.modelObject = model; - this.rowIndex = rowIndex; - modelObject.addObserver(this); - lastValue = !((BooleanState)modelObject).booleanValue(); - } - - protected boolean lastValue () { - return lastValue; - } - - /** Needed to satisfy the ViewObject interface. */ - public ModelObject getModel() { - return modelObject; - } - - /** Needed to satisfy the Observer interface. - * The closedObject model will send true if the company is closed. */ - public void update(Observable o1, Object o2) { - if (o2 instanceof Boolean) { - lastValue = !(Boolean)o2; - setRowVisibility(rowIndex, lastValue); - } - } - - /** Needed to satisfy the ViewObject interface. Currently not used. */ - public void deRegister() { - if (modelObject != null) - modelObject.deleteObserver(this); - } - } - } --- 947,949 ---- Index: ORPanel.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/ui/swing/ORPanel.java,v retrieving revision 1.36 retrieving revision 1.37 diff -C2 -d -r1.36 -r1.37 *** ORPanel.java 29 Dec 2009 21:58:11 -0000 1.36 --- ORPanel.java 3 Jan 2010 20:31:29 -0000 1.37 *************** *** 17,21 **** import rails.util.LocalText; ! public class ORPanel extends JPanel implements ActionListener, KeyListener { private static final long serialVersionUID = 1L; --- 17,22 ---- import rails.util.LocalText; ! public class ORPanel extends JPanel ! implements ActionListener, KeyListener, RowHideable { private static final long serialVersionUID = 1L; *************** *** 115,118 **** --- 116,124 ---- private List<ViewObject> observers = new ArrayList<ViewObject>(); + /** 2D-array of fields to enable show/hide per row or column */ + protected JComponent[][] fields; + /** Array of Observer objects to set row visibility */ + protected RowVisibility[] rowVisibilityObservers; + // Current state private int playerIndex = -1; *************** *** 310,315 **** /* Top titles */ ! addField(new Caption("Company"), 0, 0, lastXWidth = 1, 2, WIDE_BOTTOM ! + WIDE_RIGHT); presidentXOffset = currentXOffset += lastXWidth; --- 316,321 ---- /* Top titles */ ! addField(new Caption("Company"), 0, 0, lastXWidth = 1, 2, ! WIDE_BOTTOM + WIDE_RIGHT); presidentXOffset = currentXOffset += lastXWidth; *************** *** 389,394 **** --- 395,408 ---- WIDE_BOTTOM); + fields = new JComponent[1+currentXOffset][2+nc]; + rowVisibilityObservers = new RowVisibility[nc]; + for (int i = 0; i < nc; i++) { c = companies[i]; + rowVisibilityObservers[i] + = new RowVisibility (this, leftCompNameYOffset + i, c.getClosedModel()); + observers.add(rowVisibilityObservers[i]); + + boolean visible = !c.isClosed(); f = leftCompName[i] = new Caption(c.getName()); *************** *** 396,400 **** f.setForeground(c.getFgColour()); addField(f, leftCompNameXOffset, leftCompNameYOffset + i, 1, 1, ! WIDE_RIGHT); f = --- 410,414 ---- f.setForeground(c.getFgColour()); addField(f, leftCompNameXOffset, leftCompNameYOffset + i, 1, 1, ! WIDE_RIGHT, visible); f = *************** *** 402,412 **** new Field(c.hasStarted() && !c.isClosed() ? c.getPresident().getNameAndPriority() : ""); ! addField(f, presidentXOffset, presidentYOffset + i, 1, 1, 0); f = sharePrice[i] = new Field(c.getCurrentPriceModel()); ! addField(f, sharePriceXOffset, sharePriceYOffset + i, 1, 1, 0); f = cash[i] = new Field(c.getCashModel()); ! addField(f, cashXOffset, cashYOffset + i, 1, 1, WIDE_RIGHT); if (privatesCanBeBought) { --- 416,426 ---- new Field(c.hasStarted() && !c.isClosed() ? c.getPresident().getNameAndPriority() : ""); ! addField(f, presidentXOffset, presidentYOffset + i, 1, 1, 0, visible); f = sharePrice[i] = new Field(c.getCurrentPriceModel()); ! addField(f, sharePriceXOffset, sharePriceYOffset + i, 1, 1, 0, visible); f = cash[i] = new Field(c.getCashModel()); ! addField(f, cashXOffset, cashYOffset + i, 1, 1, WIDE_RIGHT, visible); if (privatesCanBeBought) { *************** *** 416,420 **** c.getPortfolio().getPrivatesOwnedModel()); addField(f, privatesXOffset, privatesYOffset + i, 1, 1, ! WIDE_RIGHT); f = --- 430,434 ---- c.getPortfolio().getPrivatesOwnedModel()); addField(f, privatesXOffset, privatesYOffset + i, 1, 1, ! WIDE_RIGHT, visible); f = *************** *** 422,426 **** new Field(c.getPrivatesSpentThisTurnModel()); addField(f, privatesXOffset + 1, privatesYOffset + i, 1, 1, ! WIDE_RIGHT); } --- 436,440 ---- new Field(c.getPrivatesSpentThisTurnModel()); addField(f, privatesXOffset + 1, privatesYOffset + i, 1, 1, ! WIDE_RIGHT, visible); } *************** *** 432,485 **** f = compLoans[i] = new Field (""); } ! addField (f, loansXOffset, loansYOffset + i, 1, 1, WIDE_RIGHT); } f = tiles[i] = new Field(c.getTilesLaidThisTurnModel()); ! addField(f, tilesXOffset, tilesYOffset + i, 1, 1, 0); f = tileCost[i] = new Field(c.getTilesCostThisTurnModel()); ! addField(f, tilesXOffset + 1, tilesYOffset + i, 1, 1, WIDE_RIGHT); f = tokens[i] = new Field(c.getTokensLaidThisTurnModel()); ! addField(f, tokensXOffset, tokensYOffset + i, 1, 1, 0); f = tokenCost[i] = new Field(c.getTokensCostThisTurnModel()); ! addField(f, tokensXOffset + 1, tokensYOffset + i, 1, 1, 0); f = tokensLeft[i] = new Field(c.getBaseTokensModel()); addField(f, tokensXOffset + 2, tokensYOffset + i, 1, 1, ! bonusTokensExist ? 0 : WIDE_RIGHT); if (bonusTokensExist) { f = tokenBonus[i] = new Field(c.getBonusTokensModel()); addField(f, tokensXOffset + 3, tokensYOffset + i, 1, 1, ! WIDE_RIGHT); } f = revenue[i] = new Field(c.getLastRevenueModel()); ! addField(f, revXOffset, revYOffset + i, 1, 1, 0); f = revenueSelect[i] = new Spinner(0, 0, 0, 10); ! addField(f, revXOffset, revYOffset + i, 1, 1, 0); f = decision[i] = new Field(c.getLastRevenueAllocationModel()); ! addField(f, revXOffset + 1, revYOffset + i, 1, 1, WIDE_RIGHT); f = trains[i] = new Field(c.getPortfolio().getTrainsModel()); ! addField(f, trainsXOffset, trainsYOffset + i, 1, 1, 0); f = newTrainCost[i] = new Field(c.getTrainsSpentThisTurnModel()); ! addField(f, trainsXOffset + 1, trainsYOffset + i, 1, 1, WIDE_RIGHT); f = rightCompName[i] = new Caption(c.getName()); f.setBackground(companies[i].getBgColour()); f.setForeground(companies[i].getFgColour()); ! addField(f, rightCompNameXOffset, rightCompNameYOffset + i, 1, 1, 0); } } - private void addField(JComponent comp, int x, int y, int width, int height, int wideGapPositions) { int padTop, padLeft, padBottom, padRight; --- 446,503 ---- f = compLoans[i] = new Field (""); } ! addField (f, loansXOffset, loansYOffset + i, 1, 1, WIDE_RIGHT, visible); } f = tiles[i] = new Field(c.getTilesLaidThisTurnModel()); ! addField(f, tilesXOffset, tilesYOffset + i, 1, 1, 0, visible); f = tileCost[i] = new Field(c.getTilesCostThisTurnModel()); ! addField(f, tilesXOffset + 1, tilesYOffset + i, 1, 1, WIDE_RIGHT, visible); f = tokens[i] = new Field(c.getTokensLaidThisTurnModel()); ! addField(f, tokensXOffset, tokensYOffset + i, 1, 1, 0, visible); f = tokenCost[i] = new Field(c.getTokensCostThisTurnModel()); ! addField(f, tokensXOffset + 1, tokensYOffset + i, 1, 1, 0, visible); f = tokensLeft[i] = new Field(c.getBaseTokensModel()); addField(f, tokensXOffset + 2, tokensYOffset + i, 1, 1, ! bonusTokensExist ? 0 : WIDE_RIGHT, visible); if (bonusTokensExist) { f = tokenBonus[i] = new Field(c.getBonusTokensModel()); addField(f, tokensXOffset + 3, tokensYOffset + i, 1, 1, ! WIDE_RIGHT, visible); } f = revenue[i] = new Field(c.getLastRevenueModel()); ! addField(f, revXOffset, revYOffset + i, 1, 1, 0, visible); f = revenueSelect[i] = new Spinner(0, 0, 0, 10); ! addField(f, revXOffset, revYOffset + i, 1, 1, 0, visible); f = decision[i] = new Field(c.getLastRevenueAllocationModel()); ! addField(f, revXOffset + 1, revYOffset + i, 1, 1, WIDE_RIGHT, visible); f = trains[i] = new Field(c.getPortfolio().getTrainsModel()); ! addField(f, trainsXOffset, trainsYOffset + i, 1, 1, 0, visible); f = newTrainCost[i] = new Field(c.getTrainsSpentThisTurnModel()); ! addField(f, trainsXOffset + 1, trainsYOffset + i, 1, 1, WIDE_RIGHT, visible); f = rightCompName[i] = new Caption(c.getName()); f.setBackground(companies[i].getBgColour()); f.setForeground(companies[i].getFgColour()); ! addField(f, rightCompNameXOffset, rightCompNameYOffset + i, 1, 1, 0, visible); } } private void addField(JComponent comp, int x, int y, int width, int height, int wideGapPositions) { + addField (comp, x, y, width, height, wideGapPositions, true); + } + + private void addField(JComponent comp, int x, int y, int width, int height, + int wideGapPositions, boolean visible) { int padTop, padLeft, padBottom, padRight; *************** *** 503,507 **** observers.add((ViewObject) comp); } ! } public void finish() { --- 521,528 ---- observers.add((ViewObject) comp); } ! ! if (fields != null && fields[x][y] == null) fields[x][y] = comp; ! comp.setVisible(visible); ! } public void finish() { *************** *** 804,806 **** --- 825,838 ---- } + public void setRowVisibility (int rowIndex, boolean value) { + + for (int j=0; j < fields.length; j++) { + if (fields[j][rowIndex] != null) { + fields[j][rowIndex].setVisible(value); + } + } + orWindow.pack(); + } + + } |