From: Frederick W. <fre...@us...> - 2012-02-12 09:39:03
|
rails/ui/swing/ORPanel.java | 20 +++++++++++ rails/ui/swing/ORWindow.java | 6 ++- rails/ui/swing/UpgradesPanel.java | 64 +++++++++++++++++++++++++++++--------- 3 files changed, 74 insertions(+), 16 deletions(-) New commits: commit 223e9fc1754a08fd2eca8aba99b63fb9aeb1bd45 Author: Frederick Weld <fre...@gm...> Date: Sun Feb 12 10:37:37 2012 +0100 Moved upgrade panel buttons to ORPanel button panel (dockable layout only) diff --git a/rails/ui/swing/ORPanel.java b/rails/ui/swing/ORPanel.java index 0dd18ce..58d4967 100644 --- a/rails/ui/swing/ORPanel.java +++ b/rails/ui/swing/ORPanel.java @@ -1366,4 +1366,24 @@ implements ActionListener, KeyListener, RevenueListener { public JMenuBar getMenuBar() { return menuBar; } + + /** + * Adds buttons to the button panel (adjusting their size to the standard size) + * @param index The position where to add the buttons + */ + public void addToButtonPanel(RailsIconButton[] buttons, int index) { + //get standard size + Dimension standardSize = null; + Component[] existingButtons = buttonPanel.getComponents(); + if (existingButtons != null && existingButtons.length > 0) { + standardSize = existingButtons[0].getPreferredSize(); + } + + //apply sizing to new buttons + //add buttons to the panel + for (int i=buttons.length-1 ; i >= 0 ; i--) { + buttons[i].setPreferredSize(standardSize); + buttonPanel.add(buttons[i],index); + } + } } diff --git a/rails/ui/swing/ORWindow.java b/rails/ui/swing/ORWindow.java index 9b049a5..6fc127a 100644 --- a/rails/ui/swing/ORWindow.java +++ b/rails/ui/swing/ORWindow.java @@ -66,7 +66,7 @@ public class ORWindow extends DockingFrame implements ActionPerformer { JScrollPane messagePanelSlider = new JScrollPane(messagePanel); messagePanel.setParentSlider(messagePanelSlider); - upgradePanel = new UpgradesPanel(orUIManager); + upgradePanel = new UpgradesPanel(orUIManager,isDockingFrameworkEnabled()); addMouseListener(upgradePanel); mapPanel = new MapPanel(gameUIManager); @@ -76,6 +76,10 @@ public class ORWindow extends DockingFrame implements ActionPerformer { //create docking / conventional layout if (isDockingFrameworkEnabled()) { + //set up the button panel (which is separated from its OR panel parent) + //adding upgrade panel buttons on top + orPanel.addToButtonPanel(upgradePanel.getButtons(),0); + //initialize remaining tile panel as it is no optional part in the docking layout JScrollPane remainingTilesPanelSlider = new RemainingTilesWindow(this).getScrollPane(); diff --git a/rails/ui/swing/UpgradesPanel.java b/rails/ui/swing/UpgradesPanel.java index c1a9df7..a471004 100644 --- a/rails/ui/swing/UpgradesPanel.java +++ b/rails/ui/swing/UpgradesPanel.java @@ -50,6 +50,13 @@ public class UpgradesPanel extends Box implements MouseListener, ActionListener private RailsIconButton doneButton = new RailsIconButton(RailsIcon.LAY_TILE); private HexMap hexMap; + /** + * If set, done/cancel buttons are not added to the pane. Instead, the + * visibility property of these buttons are handled such that they are set to + * visible if they normally would be added to the pane. + */ + private boolean omitButtons; + //list of tiles with an attached reason why it would represent an invalid upgrade private Map<TileI,String> invalidTileUpgrades = null; private static final String invalidUpgradeNoTilesLeft = "NoTilesLeft"; @@ -58,10 +65,11 @@ public class UpgradesPanel extends Box implements MouseListener, ActionListener protected static Logger log = Logger.getLogger(UpgradesPanel.class.getPackage().getName()); - public UpgradesPanel(ORUIManager orUIManager) { + public UpgradesPanel(ORUIManager orUIManager,boolean omitButtons) { super(BoxLayout.Y_AXIS); this.orUIManager = orUIManager; + this.omitButtons = omitButtons; preferredSize = new Dimension((int)Math.round(110 * (2 + Scale.getFontScale())/3), 200); setSize(preferredSize); @@ -85,6 +93,11 @@ public class UpgradesPanel extends Box implements MouseListener, ActionListener cancelButton.setActionCommand("Cancel"); cancelButton.setMnemonic(KeyEvent.VK_C); cancelButton.addActionListener(this); + + if (omitButtons) { + doneButton.setVisible(false); + cancelButton.setVisible(false); + } add(scrollPane); } @@ -136,7 +149,7 @@ public class UpgradesPanel extends Box implements MouseListener, ActionListener } public void showUpgrades() { - upgradePanel.removeAll(); + clearPanel(); // reset to the number of elements GridLayout panelLayout = (GridLayout)upgradePanel.getLayout(); @@ -214,9 +227,8 @@ public class UpgradesPanel extends Box implements MouseListener, ActionListener } } - upgradePanel.add(doneButton); - upgradePanel.add(cancelButton); - + addButtons(); + //repaint(); revalidate(); } @@ -269,7 +281,7 @@ public class UpgradesPanel extends Box implements MouseListener, ActionListener tokenMode = false; // activate upgrade panel - upgradePanel.removeAll(); + clearPanel(); GridLayout panelLayout = (GridLayout)upgradePanel.getLayout(); List<TileI> tiles = orUIManager.tileUpgrades; @@ -304,8 +316,7 @@ public class UpgradesPanel extends Box implements MouseListener, ActionListener } } - upgradePanel.add(doneButton); - upgradePanel.add(cancelButton); + addButtons(); // repaint(); revalidate(); @@ -318,7 +329,7 @@ public class UpgradesPanel extends Box implements MouseListener, ActionListener tokenMode = false; // activate upgrade panel - upgradePanel.removeAll(); + clearPanel(); GridLayout panelLayout = (GridLayout)upgradePanel.getLayout(); List<? extends TokenI> tokens = orUIManager.tokenLays; @@ -357,8 +368,8 @@ public class UpgradesPanel extends Box implements MouseListener, ActionListener } } - upgradePanel.add(doneButton); - upgradePanel.add(cancelButton); + + addButtons(); // repaint(); revalidate(); @@ -366,9 +377,8 @@ public class UpgradesPanel extends Box implements MouseListener, ActionListener } public void clear() { - upgradePanel.removeAll(); - upgradePanel.add(doneButton); - upgradePanel.add(cancelButton); + clearPanel(); + addButtons(); upgradePanel.repaint(); } @@ -537,7 +547,31 @@ public class UpgradesPanel extends Box implements MouseListener, ActionListener setDoneEnabled(false); setCancelEnabled(false); } - + + private void clearPanel() { + upgradePanel.removeAll(); + if (omitButtons) { + doneButton.setVisible(false); + cancelButton.setVisible(false); + } + } + + private void addButtons() { + if (omitButtons) { + //only set externally managed buttons to visible if at least + //one of them is enabled + boolean isVisible = doneButton.isEnabled() || cancelButton.isEnabled(); + doneButton.setVisible(isVisible); + cancelButton.setVisible(isVisible); + } else { + upgradePanel.add(doneButton); + upgradePanel.add(cancelButton); + } + } + + public RailsIconButton[] getButtons() { + return new RailsIconButton[] {doneButton, cancelButton}; + } /** ActionLabel extension that allows to attach the token */ private class CorrectionTokenLabel extends ActionLabel { |