From d03bb12c3ff2bcd44dd77619848d5cf88aa922dd Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Thu, 11 Oct 2007 03:16:32 +0000 Subject: [PATCH] * Collapsed and Horizontal Tab for Field Group - Hide tab area for horizontal tab if only one tab. --- .../adempiere/plaf/AdempiereLookAndFeel.java | 2 ++ .../adempiere/plaf/AdempiereTabbedPaneUI.java | 27 +++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/looks/src/org/adempiere/plaf/AdempiereLookAndFeel.java b/looks/src/org/adempiere/plaf/AdempiereLookAndFeel.java index ba63674aee..f51890c915 100755 --- a/looks/src/org/adempiere/plaf/AdempiereLookAndFeel.java +++ b/looks/src/org/adempiere/plaf/AdempiereLookAndFeel.java @@ -46,6 +46,8 @@ public class AdempiereLookAndFeel extends com.jgoodies.looks.plastic.Plastic3DLo public static final String TABLEVEL = "TabLevel"; + public static final String HIDE_IF_ONE_TAB = "adempiere.hideIfOneTab"; + /** * The Name * @return Name diff --git a/looks/src/org/adempiere/plaf/AdempiereTabbedPaneUI.java b/looks/src/org/adempiere/plaf/AdempiereTabbedPaneUI.java index 28bd784945..21bbc2e010 100644 --- a/looks/src/org/adempiere/plaf/AdempiereTabbedPaneUI.java +++ b/looks/src/org/adempiere/plaf/AdempiereTabbedPaneUI.java @@ -143,6 +143,8 @@ public final class AdempiereTabbedPaneUI extends MetalTabbedPaneUI { /** For use when tabLayoutPolicy == SCROLL_TAB_LAYOUT. */ private ScrollableTabSupport tabScroller; + + private Boolean hideIfOneTab; /** * Creates the PlasticTabbedPaneUI. @@ -162,6 +164,7 @@ public final class AdempiereTabbedPaneUI extends MetalTabbedPaneUI { super.installUI(c); embeddedTabs = (Boolean) c.getClientProperty(Options.EMBEDDED_TABS_KEY); noContentBorder = (Boolean) c.getClientProperty(Options.NO_CONTENT_BORDER_KEY); + hideIfOneTab = (Boolean) c.getClientProperty(AdempiereLookAndFeel.HIDE_IF_ONE_TAB); renderer = createRenderer(tabPane); } @@ -261,6 +264,10 @@ public final class AdempiereTabbedPaneUI extends MetalTabbedPaneUI { private boolean hasEmbeddedTabs() { return Boolean.TRUE.equals(embeddedTabs); } + + private boolean isHideIfOneTab() { + return Boolean.TRUE.equals(hideIfOneTab); + } /** * Creates the renderer used to lay out and paint the tabs. @@ -1017,6 +1024,10 @@ public final class AdempiereTabbedPaneUI extends MetalTabbedPaneUI { noContentBorderPropertyChanged((Boolean) e.getNewValue()); return; } + + if (pName.equals(AdempiereLookAndFeel.HIDE_IF_ONE_TAB)) { + hideIfOneTab = (Boolean)e.getNewValue(); + } } } @@ -1088,6 +1099,14 @@ public final class AdempiereTabbedPaneUI extends MetalTabbedPaneUI { return; } + if (tabCount == 1 && isHideIfOneTab()) { + rects[0].height = 0; + rects[0].width = 0; + rects[0].x = 0; + rects[0].y = 0; + return; + } + // Run through tabs and partition them into runs Rectangle rect; for (i = 0; i < tabCount; i++) { @@ -1594,6 +1613,14 @@ public final class AdempiereTabbedPaneUI extends MetalTabbedPaneUI { return; } + if (tabCount == 1 && isHideIfOneTab()) { + rects[0].height = 0; + rects[0].width = 0; + rects[0].x = 0; + rects[0].y = 0; + return; + } + selectedRun = 0; runCount = 1;