|
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 {
|