From 9499207bae3b9079230ab2d2236b86501d2f645c Mon Sep 17 00:00:00 2001 From: drdev Date: Sat, 7 Sep 2013 17:06:52 +0000 Subject: [PATCH] Fix so menu bar not blanked out when changing skins and status message is retained --- src/main/java/forge/gui/home/CHomeUI.java | 1 - src/main/java/forge/gui/menubar/FMenuBar.java | 31 ++++++++++++------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/src/main/java/forge/gui/home/CHomeUI.java b/src/main/java/forge/gui/home/CHomeUI.java index 73b7ad19e5f..b4a0800a65c 100644 --- a/src/main/java/forge/gui/home/CHomeUI.java +++ b/src/main/java/forge/gui/home/CHomeUI.java @@ -114,7 +114,6 @@ public enum CHomeUI implements ICDoc, IMenuProvider { private void setupMyMenuBar() { Singletons.getControl().getMenuBar().setupMenuBar(this); - Singletons.getControl().getMenuBar().setStatusText("F1 : hide menu"); } /* (non-Javadoc) diff --git a/src/main/java/forge/gui/menubar/FMenuBar.java b/src/main/java/forge/gui/menubar/FMenuBar.java index 3d8537076d7..d0c1b96fc76 100644 --- a/src/main/java/forge/gui/menubar/FMenuBar.java +++ b/src/main/java/forge/gui/menubar/FMenuBar.java @@ -14,21 +14,24 @@ import forge.gui.menus.ForgeMenu; import forge.gui.menus.HelpMenu; import forge.gui.menus.LayoutMenu; import forge.gui.toolbox.FSkin; +import forge.gui.toolbox.FSkin.JLabelSkin; @SuppressWarnings("serial") public class FMenuBar extends JMenuBar { - private JLabel statusCaption; + private String statusText; + private JLabel lblStatus; private IMenuProvider provider; public FMenuBar(JFrame f) { f.setJMenuBar(this); setPreferredSize(new Dimension(f.getWidth(), 26)); refresh(); + setStatusText(""); //set default status text } public void setupMenuBar(IMenuProvider provider0) { - this.provider = provider0; + provider = provider0; refresh(); } @@ -38,25 +41,31 @@ public class FMenuBar extends JMenuBar { addProviderMenus(); add(LayoutMenu.getMenu()); add(HelpMenu.getMenu()); - setStatusCaption(); - repaint(); + addStatusLabel(); + revalidate(); } /** * Adds a label to the right-hand side of the MenuBar which can * be used to show hints or status information. */ - private void setStatusCaption() { + private void addStatusLabel() { add(Box.createHorizontalGlue()); // align right hack/patch. - statusCaption = new JLabel(); - statusCaption.setForeground(getForeground()); - statusCaption.setFont(FSkin.getItalicFont(11)); - statusCaption.setOpaque(false); - add(statusCaption); + lblStatus = new JLabel(statusText); + JLabelSkin labelSkin = FSkin.get(lblStatus); + labelSkin.setForeground(FSkin.getColor(FSkin.Colors.CLR_TEXT)); + lblStatus.setFont(FSkin.getItalicFont(11)); + lblStatus.setOpaque(false); + add(lblStatus); } public void setStatusText(String text) { - statusCaption.setText(text.trim() + " "); + statusText = text.trim(); + if (statusText.isEmpty()) { + statusText = "F1 : hide menu"; //show shortcut to hide menu if no other status to show + } + statusText += " "; //add padding from right edge of menu bar + lblStatus.setText(statusText); } private void addProviderMenus() {