Merge branch 'appcode10' into merge_appcode10
[idea/community.git] / platform / util / src / com / intellij / util / ui / UIUtil.java
index 3fad261b9f5dfffae802b308552caf15bc5265df..bb02b5029b25ffb9c533d57ae164a7de4eb5e5ce 100644 (file)
@@ -96,11 +96,10 @@ public class UIUtil {
                                 MacUIUtil.getInvertedTextCursor(): Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR);
   }
 
-  public enum FontSize { NORMAL, TREE, SMALL, MINI }
+  public enum FontSize {NORMAL, TREE, SMALL, MINI}
   public enum ComponentStyle {REGULAR, SMALL, MINI}
   public enum FontColor {NORMAL, BRIGHTER}
 
-
   public static final char MNEMONIC = 0x1B;
   @NonNls public static final String HTML_MIME = "text/html";
   @NonNls public static final String JSLIDER_ISFILLED = "JSlider.isFilled";
@@ -121,8 +120,10 @@ public class UIUtil {
   private static final Color ACTIVE_HEADER_COLOR = new Color(160, 186, 213);
   private static final Color INACTIVE_HEADER_COLOR = new Color(128, 128, 128);
   private static final Color BORDER_COLOR = Color.LIGHT_GRAY;
-  public static Color AQUA_SEPARATOR_FOREGROUND_COLOR = new Color(190, 190, 190);
-  public static Color AQUA_SEPARATOR_BACKGROUND_COLOR = new Color(240, 240, 240);
+
+  public static final Color AQUA_SEPARATOR_FOREGROUND_COLOR = new Color(190, 190, 190);
+  public static final Color AQUA_SEPARATOR_BACKGROUND_COLOR = new Color(240, 240, 240);
+  public static final Color TRANSPARENT_COLOR = new Color(0, 0, 0, 0);
 
   public static final int DEFAULT_HGAP = 8;
   public static final int DEFAULT_VGAP = 4;
@@ -283,18 +284,22 @@ public class UIUtil {
 
   @NotNull
   public static Font getFont(@NotNull FontSize size, @Nullable Font base) {
-    Font defFont = getLabelFont();
-    if (base == null) base = defFont;
+    if (base == null) base = getLabelFont();
+
+    return base.deriveFont(getFontSize(size));
+  }
 
+  public static float getFontSize(FontSize size) {
+    int defSize = getLabelFont().getSize();
     switch (size) {
       case TREE:
-        return base.deriveFont(Math.max(defFont.getSize() - 2f, 12f));
+        return Math.max(defSize - 2f, 12f);
       case SMALL:
-        return base.deriveFont(Math.max(defFont.getSize() - 2f, 11f));
+        return Math.max(defSize - 2f, 11f);
       case MINI:
-        return base.deriveFont(Math.max(defFont.getSize() - 4f, 9f));
+        return Math.max(defSize - 4f, 9f);
       default:
-        return base.deriveFont(defFont.getSize());
+        return defSize;
     }
   }
 
@@ -741,6 +746,11 @@ public class UIUtil {
     return UIManager.getLookAndFeel().getName().contains("Alloy");
   }
 
+  @SuppressWarnings({"HardCodedStringLiteral"})
+  public static boolean isUnderAlloyIDEALookAndFeel() {
+    return isUnderAlloyLookAndFeel() && UIManager.getLookAndFeel().getName().contains("IDEA");
+  }
+
   @SuppressWarnings({"HardCodedStringLiteral"})
   public static boolean isUnderWindowsLookAndFeel() {
     return UIManager.getLookAndFeel().getName().contains("Windows");
@@ -2451,7 +2461,7 @@ public class UIUtil {
     return false;
   }
 
-  public static void mergeComponentsWithAnchor(PanelWithAnchor c1,PanelWithAnchor c2) {
+  public static void mergeComponentsWithAnchor(PanelWithAnchor c1, PanelWithAnchor c2) {
     if (c1 == null || c2 == null) return;
 
     if (c1.getAnchor() == null) {
@@ -2468,8 +2478,7 @@ public class UIUtil {
     }
   }
   
-  public static void setNotOpaqueRecursively(Component component) {
-    if (component == null) return;
+  public static void setNotOpaqueRecursively(@NotNull Component component) {
     if (!isUnderAquaLookAndFeel()) return;
 
     if (component.getBackground().equals(getPanelBackground()) || component instanceof JScrollPane || component instanceof JViewport) {
@@ -2484,7 +2493,7 @@ public class UIUtil {
     }
   }
 
-  public static void addInsets(JComponent component, Insets insets) {
+  public static void addInsets(@NotNull JComponent component, @NotNull Insets insets) {
     if (component.getBorder() != null) {
       component.setBorder(new CompoundBorder(new EmptyBorder(insets), component.getBorder()));
     }
@@ -2492,5 +2501,16 @@ public class UIUtil {
       component.setBorder(new EmptyBorder(insets));
     }
   }
+  
+  public static Dimension addInsets(@NotNull Dimension dimension, @NotNull Insets insets) {
+
+    Dimension ans = new Dimension(dimension);
+    ans.width += insets.left;
+    ans.width += insets.right;
+    ans.height += insets.top;
+    ans.height += insets.bottom;
+
+    return ans;
+  }
 }