From: Stefan F. <ste...@us...> - 2010-06-24 21:48:19
|
Update of /cvsroot/rails/18xx/rails/ui/swing In directory sfp-cvsdas-4.v30.ch3.sourceforge.com:/tmp/cvs-serv25799/rails/ui/swing Modified Files: ORWindow.java GameUIManager.java ORUIManager.java MapPanel.java Log Message: Refactoring of HexMap classes to remove zoom problems Added autoscrolling support Added gamespecific config settings Index: GameUIManager.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/ui/swing/GameUIManager.java,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** GameUIManager.java 22 Jun 2010 18:10:14 -0000 1.47 --- GameUIManager.java 24 Jun 2010 21:48:08 -0000 1.48 *************** *** 109,118 **** configuredStockChartVisibility = "yes".equalsIgnoreCase(Config.get("stockchart.window.open")); ! // font settings ! String fontType = Config.get("font.global.name"); Font font = null; if (Util.hasValue(fontType)) { boolean boldStyle = true; ! String fontStyle = Config.get("font.global.style"); if (Util.hasValue(fontStyle)) { if (fontStyle.equalsIgnoreCase("plain")) { --- 109,118 ---- configuredStockChartVisibility = "yes".equalsIgnoreCase(Config.get("stockchart.window.open")); ! // font settings, can be game specific ! String fontType = Config.getGameSpecific("font.ui.name"); Font font = null; if (Util.hasValue(fontType)) { boolean boldStyle = true; ! String fontStyle = Config.getGameSpecific("font.ui.style"); if (Util.hasValue(fontStyle)) { if (fontStyle.equalsIgnoreCase("plain")) { *************** *** 128,132 **** } ! String fontScale = Config.get("font.global.scale"); if (Util.hasValue(fontScale)) { try { --- 128,132 ---- } ! String fontScale = Config.getGameSpecific("font.ui.scale"); if (Util.hasValue(fontScale)) { try { Index: ORUIManager.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/ui/swing/ORUIManager.java,v retrieving revision 1.79 retrieving revision 1.80 diff -C2 -d -r1.79 -r1.80 *** ORUIManager.java 17 Jun 2010 22:10:53 -0000 1.79 --- ORUIManager.java 24 Jun 2010 21:48:08 -0000 1.80 *************** *** 19,22 **** --- 19,23 ---- import rails.ui.swing.hexmap.GUIHex; import rails.ui.swing.hexmap.HexMap; + import rails.util.Config; import rails.util.LocalText; import rails.util.Util; *************** *** 220,228 **** if (mapHexes) { // generate network graph to indicate the allowed tiles ! List<MapHex> mapHexUpgrades = NetworkGraphBuilder.getMapHexes(getCompanyGraph()); for (MapHex hex:mapHexUpgrades) { if (hex.isUpgradeableNow(gameUIManager.getCurrentPhase())) hexUpgrades.add(hex); } } --- 221,237 ---- if (mapHexes) { // generate network graph to indicate the allowed tiles ! SimpleGraph<NetworkVertex, NetworkEdge> companyGraph = getCompanyGraph(); ! List<MapHex> mapHexUpgrades = NetworkGraphBuilder.getMapHexes(companyGraph); for (MapHex hex:mapHexUpgrades) { if (hex.isUpgradeableNow(gameUIManager.getCurrentPhase())) hexUpgrades.add(hex); } + String autoScroll = Config.getGameSpecific("map.autoscroll"); + if (Util.hasValue(autoScroll) && autoScroll.equalsIgnoreCase("no")) { + // do nothing + } else { + mapPanel.scrollPaneShowRectangle( + NetworkVertex.getVertexMapCoverage(map, companyGraph.vertexSet())); + } } Index: ORWindow.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/ui/swing/ORWindow.java,v retrieving revision 1.35 retrieving revision 1.36 diff -C2 -d -r1.35 -r1.36 *** ORWindow.java 17 Feb 2010 00:21:33 -0000 1.35 --- ORWindow.java 24 Jun 2010 21:48:08 -0000 1.36 *************** *** 68,71 **** --- 68,72 ---- getContentPane().add(mapPanel, BorderLayout.CENTER); + upgradePanel = new UpgradesPanel(orUIManager); getContentPane().add(upgradePanel, BorderLayout.WEST); *************** *** 89,92 **** --- 90,96 ---- setSize(800, 600); + log.debug("OrWindow: MapPanel size = " + mapPanel.getSize()); + log.debug("OrWindow size = " + this.getSize()); + final JFrame frame = this; addWindowListener(new WindowAdapter() { Index: MapPanel.java =================================================================== RCS file: /cvsroot/rails/18xx/rails/ui/swing/MapPanel.java,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** MapPanel.java 31 Jan 2010 22:22:34 -0000 1.14 --- MapPanel.java 24 Jun 2010 21:48:08 -0000 1.15 *************** *** 3,6 **** --- 3,8 ---- import java.awt.BorderLayout; + import java.awt.Point; + import java.awt.Rectangle; import java.awt.event.KeyEvent; import java.util.List; *************** *** 53,61 **** scrollPane.setSize(map.getPreferredSize()); ! setSize(map.getPreferredSize().width, map.getPreferredSize().height); setLocation(25, 25); } public void setAllowedTileLays(List<LayTile> allowedTileLays) { map.setAllowedTileLays(allowedTileLays); --- 55,91 ---- scrollPane.setSize(map.getPreferredSize()); ! setSize(map.getPreferredSize().width, map.getPreferredSize().height); + setLocation(25, 25); } + + public void scrollPaneShowRectangle(Rectangle rectangle) { + + JViewport viewport = scrollPane.getViewport(); + log.debug("ScrollPane viewPort =" + viewport); + + // check dimensions + log.debug("Map size =" + map.getSize()); + log.debug("ScrollPane visibleRect =" + scrollPane.getVisibleRect()); + log.debug("viewport size =" + viewport.getSize()); + + double setX, setY; + setX = Math.max(0, (rectangle.getCenterX() - viewport.getWidth() / 2)); + setY = Math.max(0, (rectangle.getCenterY() - viewport.getHeight() / 2)); + + setX = Math.min(setX, Math.max(0, map.getSize().getWidth() - viewport.getWidth())); + setY = Math.min(setY, Math.max(0, map.getSize().getHeight() - viewport.getHeight())); + + final Point viewPosition = new Point((int)setX, (int)setY); + log.debug("ViewPosition for ScrollPane = " + viewPosition); + SwingUtilities.invokeLater(new Runnable() { + public void run() { + scrollPane.getViewport().setViewPosition(viewPosition); + } + }); + } + public void setAllowedTileLays(List<LayTile> allowedTileLays) { map.setAllowedTileLays(allowedTileLays); |