View Javadoc
1   /******************************************************************************
2    * BoardTab.java - The board as it appears under the "Board Tab" of the main dialog.
3    * $Id$
4    * 
5    * BuckoFIBS - Backgammon by BuckoSoft
6    * Copyright© 2009,2010 - Dick Balaska - BuckoSoft, Corp.
7    * 
8    * $Log$
9    * Revision 1.4  2011/06/10 20:37:11  dick
10   * yourMove() is not public anymore as it only comes from the AnimateManager.
11   *
12   * Revision 1.3  2011/05/31 19:45:15  dick
13   * Javadoc.
14   *
15   * Revision 1.2  2011/05/21 05:02:10  dick
16   * BoardGui doesn't want the document?
17   *
18   * Revision 1.1  2011/05/15 02:17:33  dick
19   * c.b.f.B.gui.board becomes c.b.f.B.gui.boardTab.
20   *
21   * Revision 1.7  2011/05/14 04:43:01  dick
22   * I needed to deal with some lightweight Boards.
23   * So finally make the primary document Document
24   * and demote just the Board handling to a domain object.
25   *
26   * Revision 1.6  2011/05/13 14:56:15  dick
27   * Add support for animating checkers on the board.
28   *
29   * Revision 1.5  2010/12/31 05:30:11  dick
30   * cvsweb loc has changed.
31   *
32   * Revision 1.4  2010/12/22 04:37:45  dick
33   * matchStatusPanel now needs a reference to the mainDialog.
34   *
35   * Revision 1.3  2010/03/03 13:12:21  inim
36   * Replaced (c) sign in comment mangled by CVS default encoding back to UTF-8
37   *
38   * Revision 1.2  2010/03/03 12:19:49  inim
39   * Moved source to UTF8 encoding from CP1252 encoding. To this end all source files' (c) message was updated to "Copyright© 2009,2010 - Dick Balaska - BuckoSoft, Corp.". This replaces the (c) sign to UTF8, and adds the new year 2010.
40   *
41   * Revision 1.1  2010/02/04 05:57:53  inim
42   * Mavenized project folder layout
43   *
44   * Revision 1.7  2009/02/14 15:24:21  dick
45   * BuckoFIBS is released under the GNU license.
46   * Javadoc.
47   *
48   * Revision 1.6  2009/02/09 22:42:36  dick
49   * getBoardGui() is public.
50   *
51   * Revision 1.5  2009/02/05 06:00:54  dick
52   * getGameToolBar needs to be public.
53   *
54   * Revision 1.4  2009/01/31 08:50:43  dick
55   * yourMove(int) takes the number of checkers to move.
56   *
57   * Revision 1.3  2009/01/31 06:06:10  dick
58   * Move the local toolbar foo to GameToolbar.
59   *
60   * Revision 1.2  2009/01/28 22:10:17  dick
61   * Add the ReplayToolbar.
62   *
63   * Revision 1.1  2009/01/28 19:37:28  dick
64   * package com.buckosoft.fibs.gui.board becomes com.buckosoft.fibs.BuckoFIBS.gui.board.
65   *
66   * Revision 1.4  2009/01/24 17:07:41  dick
67   * Add the "game" toolbar.
68   *
69   * Revision 1.3  2009/01/22 05:05:01  dick
70   * yourMove() doesn't need an argument.
71   *
72   * Revision 1.2  2009/01/18 05:06:56  dick
73   * the BoardPanel child becomes a BoardGui.
74   *
75   * Revision 1.1  2009/01/08 18:31:51  dick
76   * The board as it appears under the "Board Tab" of the main dialog.
77   */
78  
79  /* 
80   * This program is free software: you can redistribute it and/or modify
81   * it under the terms of the GNU General Public License as published by
82   * the Free Software Foundation, either version 3 of the License, or
83   * (at your option) any later version.
84   *
85   * This program is distributed in the hope that it will be useful,
86   * but WITHOUT ANY WARRANTY; without even the implied warranty of
87   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
88   * GNU General Public License for more details.
89   *
90   * You should have received a copy of the GNU General Public License
91   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
92   *
93   * The Original Code is BuckoFIBS, <http://www.buckosoft.com/BuckoFIBS/>.
94   * The Initial Developer of the Original Code is Dick Balaska and BuckoSoft, Corp.
95   * 
96   */
97  package com.buckosoft.fibs.BuckoFIBS.gui.boardTab;
98  
99  import java.awt.Dimension;
100 import java.awt.GridBagConstraints;
101 import java.awt.GridBagLayout;
102 
103 import javax.swing.JPanel;
104 
105 import com.buckosoft.fibs.BuckoFIBS.CommandDispatcher;
106 import com.buckosoft.fibs.document.Document;
107 import com.buckosoft.fibs.domain.Board;
108 
109 /** The board as it appears under the "Board Tab" of the main dialog.
110  * @author Dick Balaska
111  * @since 2009/01/08
112  * @version $Revision$ <br> $Date$
113  * @see <a href="http://cvs.buckosoft.com/Projects/BuckoFIBS/BuckoFIBS/src/main/java/com/buckosoft/fibs/BuckoFIBS/gui/board/BoardTab.java">cvs BoardTab.java</a>
114  */
115 public class BoardTab extends JPanel {
116 	private static final long serialVersionUID = 1L;
117 	private MatchStatusPanel matchStatusPanel = null;
118 	private BoardGui		boardGui = null;
119 	private	Document		document = new Document();
120 	//private Board			board = new Board();  //  @jve:decl-index=0:
121 	private GameToolbar		gameToolbar = null;
122 	private ReplayToolbar	replayToolbar = null;
123 
124 	/** Create and initialize a BoardTab
125 	 */
126 	public BoardTab() {
127 		super();
128 		initialize();
129 	}
130 
131 	/** Set the reference to our Board
132 	 * @param document Reference to our document
133 	 */
134 	public void setDocument(Document document) {
135 		this.document = document;
136 		//this.board = document.getBoard();
137 		//if (boardGui != null)
138 		//	boardGui.setDocument(document);
139 		if (this.matchStatusPanel != null)
140 			this.matchStatusPanel.setDocument(document);
141 	}
142 
143 	/** Update the board in the matchStatusPanel
144 	 * @param board The board to display (scores, names, and pip-counts)
145 	 */
146 	public void setMatchStatusPanelBoard(Board board) {
147 		this.matchStatusPanel.setBoard(board);
148 	}
149 
150 	/** Set the reference to the CommandDispatcher
151 	 * @param commandDispatcher The application CommandDispatcher
152 	 */
153 	public	void	setCommandDispatcher(CommandDispatcher commandDispatcher) {
154 		this.boardGui.setCommandDispatcher(commandDispatcher);
155 		this.replayToolbar.setToolbarHandler(commandDispatcher);
156 		this.gameToolbar.setToolbarHandler(commandDispatcher);
157 		this.matchStatusPanel.setMainDialog(commandDispatcher.getMainDialog());
158 	}
159 
160 	/** Repaint the board
161 	 */
162 	public void updateBoard() {
163 		this.boardGui.updateBoard();
164 		this.boardGui.repaint();
165 		if (this.matchStatusPanel != null)
166 			this.matchStatusPanel.updateStatus();
167 	}
168 	/**
169 	 * This method initializes this
170 	 * 
171 	 */
172 	private void initialize() {
173         GridBagConstraints gridBagConstraints12 = new GridBagConstraints();
174         gridBagConstraints12.fill = GridBagConstraints.VERTICAL;
175         gridBagConstraints12.weightx = 1.0;
176         gridBagConstraints12.gridx = 1;
177         gridBagConstraints12.anchor = GridBagConstraints.EAST;
178         gridBagConstraints12.gridy = 0;
179         GridBagConstraints gridBagConstraints11 = new GridBagConstraints();
180         gridBagConstraints11.fill = GridBagConstraints.VERTICAL;
181         gridBagConstraints11.weightx = 1.0;
182 		gridBagConstraints11.gridx = 0;
183 		gridBagConstraints11.gridy = 0;
184 		gridBagConstraints11.anchor = GridBagConstraints.WEST;
185         GridBagConstraints gridBagConstraints = new GridBagConstraints();
186         gridBagConstraints.anchor = GridBagConstraints.NORTH;
187         gridBagConstraints.fill = GridBagConstraints.BOTH;
188         gridBagConstraints.weightx = 1.0;
189         gridBagConstraints.weighty = 0.2;
190 		gridBagConstraints.gridx = 0;
191 		gridBagConstraints.gridy = 1;
192 		gridBagConstraints.gridwidth = 2;
193         GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
194         gridBagConstraints1.weighty = 10.0;
195         gridBagConstraints1.weightx = 1.0;
196 		gridBagConstraints1.gridx = 0;
197 		gridBagConstraints1.gridy = 2;
198         gridBagConstraints1.fill = GridBagConstraints.BOTH;
199         gridBagConstraints1.gridwidth = 2;
200         gridBagConstraints1.anchor = GridBagConstraints.SOUTH;
201         this.setLayout(new GridBagLayout());
202         this.setSize(new Dimension(450, 246));
203         this.add(getMatchStatusPanel(), gridBagConstraints);
204         this.add(getBoardGui(), gridBagConstraints1);
205         this.add(getGameToolBar(), gridBagConstraints11);
206         this.add(getJToolBarReplay(), gridBagConstraints12);
207 			
208 	}
209 
210 	/**
211 	 * This method initializes matchStatusPanel	
212 	 * 	
213 	 * @return javax.swing.JPanel	
214 	 */
215 	private JPanel getMatchStatusPanel() {
216 		if (matchStatusPanel == null) {
217 			matchStatusPanel = new MatchStatusPanel();
218 			matchStatusPanel.setDocument(document);
219 		}
220 		return matchStatusPanel;
221 	}
222 
223 	/** Return a handle to the BoardGui
224 	 * This method initializes boardGui	
225 	 * @return javax.swing.JPanel	
226 	 */
227 	public BoardGui getBoardGui() {
228 		if (boardGui== null) {
229 			boardGui = new BoardGui();
230 			//boardGui.setDocument(document);
231 			boardGui.setBoardTab(this);
232 		}
233 		return boardGui;
234 	}
235 
236 	/**
237 	 * This method initializes jToolBar	
238 	 * 	
239 	 * @return javax.swing.JToolBar	
240 	 */
241 	public GameToolbar getGameToolBar() {
242 		if (gameToolbar == null) {
243 			gameToolbar = new GameToolbar();
244 			gameToolbar.setFloatable(false);
245 		}
246 		return gameToolbar;
247 	}
248 
249 	/**
250 	 * This method initializes jToolBarReplay	
251 	 * 	
252 	 * @return javax.swing.JToolBar	
253 	 */
254 	public ReplayToolbar getJToolBarReplay() {
255 		if (replayToolbar == null) {
256 			replayToolbar = new ReplayToolbar();
257 			replayToolbar.setFloatable(false);
258 		}
259 		return replayToolbar;
260 	}
261 
262 }  //  @jve:decl-index=0:visual-constraint="6,11"