mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Tooltip font color under Darcula.
This commit is contained in:
@@ -22,10 +22,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.*;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.ui.ColorUtil;
|
||||
import com.intellij.ui.Gray;
|
||||
import com.intellij.ui.PanelWithAnchor;
|
||||
import com.intellij.ui.SideBorder;
|
||||
import com.intellij.ui.*;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.intellij.lang.annotations.Language;
|
||||
@@ -96,9 +93,12 @@ public class UIUtil {
|
||||
if (isUnderAquaLookAndFeel()) {
|
||||
c.putClientProperty("JComponent.sizeVariant",
|
||||
componentStyle == ComponentStyle.REGULAR ? "regular" : componentStyle == ComponentStyle.SMALL ? "small" : "mini");
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
c.setFont(getFont(
|
||||
componentStyle == ComponentStyle.REGULAR ? FontSize.NORMAL : componentStyle == ComponentStyle.SMALL ? FontSize.SMALL : FontSize.MINI, c.getFont()));
|
||||
componentStyle == ComponentStyle.REGULAR
|
||||
? FontSize.NORMAL
|
||||
: componentStyle == ComponentStyle.SMALL ? FontSize.SMALL : FontSize.MINI, c.getFont()));
|
||||
}
|
||||
Container p = c.getParent();
|
||||
if (p != null) {
|
||||
@@ -108,12 +108,13 @@ public class UIUtil {
|
||||
|
||||
public static Cursor getTextCursor(final Color backgroundColor) {
|
||||
return SystemInfo.isMac && ColorUtil.isDark(backgroundColor) ?
|
||||
MacUIUtil.getInvertedTextCursor(): Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR);
|
||||
MacUIUtil.getInvertedTextCursor() : Cursor.getPredefinedCursor(Cursor.TEXT_CURSOR);
|
||||
}
|
||||
|
||||
/**
|
||||
* Draws two horizontal lines, the first at {@code topY}, the second at {@code bottomY}.
|
||||
* The purpose of this method (and the ground of the name) is to draw two lines framing a horizontal filled rectangle.
|
||||
*
|
||||
* @param g Graphics context to draw with.
|
||||
* @param startX x-start point.
|
||||
* @param endX x-end point.
|
||||
@@ -128,12 +129,15 @@ public class UIUtil {
|
||||
|
||||
private static final GrayFilter DEFAULT_GRAY_FILTER = new GrayFilter(true, 65);
|
||||
private static final GrayFilter DARCULA_GRAY_FILTER = new GrayFilter(true, 30);
|
||||
|
||||
public static GrayFilter getGrayFilter() {
|
||||
return isUnderDarcula() ? DARCULA_GRAY_FILTER : DEFAULT_GRAY_FILTER;
|
||||
}
|
||||
|
||||
public enum FontSize {NORMAL, SMALL, MINI}
|
||||
|
||||
public enum ComponentStyle {REGULAR, SMALL, MINI}
|
||||
|
||||
public enum FontColor {NORMAL, BRIGHTER}
|
||||
|
||||
public static final char MNEMONIC = BundleBase.MNEMONIC;
|
||||
@@ -204,7 +208,8 @@ public class UIUtil {
|
||||
|
||||
private static final Ref<Boolean> ourRetina = Ref.create(SystemInfo.isMac ? null : false);
|
||||
|
||||
private UIUtil() { }
|
||||
private UIUtil() {
|
||||
}
|
||||
|
||||
public static boolean isRetina() {
|
||||
synchronized (ourRetina) {
|
||||
@@ -281,13 +286,15 @@ public class UIUtil {
|
||||
public static void drawLinePickedOut(Graphics graphics, int x, int y, int x1, int y1) {
|
||||
if (x == x1) {
|
||||
int minY = Math.min(y, y1);
|
||||
int maxY = Math.max(y, y1);
|
||||
graphics.drawLine(x, minY+1, x1, maxY-1);
|
||||
} else if (y == y1) {
|
||||
int maxY = Math.max(y, y1);
|
||||
graphics.drawLine(x, minY + 1, x1, maxY - 1);
|
||||
}
|
||||
else if (y == y1) {
|
||||
int minX = Math.min(x, x1);
|
||||
int maxX = Math.max(x, x1);
|
||||
graphics.drawLine(minX+1, y, maxX-1, y1);
|
||||
} else {
|
||||
graphics.drawLine(minX + 1, y, maxX - 1, y1);
|
||||
}
|
||||
else {
|
||||
drawLine(graphics, x, y, x1, y1);
|
||||
}
|
||||
}
|
||||
@@ -327,7 +334,6 @@ public class UIUtil {
|
||||
for (int i = 0; i < subComponentCount; i++) {
|
||||
setEnabled(container.getComponent(i), enabled, recursively);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -431,7 +437,8 @@ public class UIUtil {
|
||||
public static Color getLabelFontColor(FontColor fontColor) {
|
||||
Color defColor = getLabelForeground();
|
||||
if (fontColor == FontColor.BRIGHTER) {
|
||||
return new Color(Math.min(defColor.getRed() + 50, 255), Math.min(defColor.getGreen() + 50, 255), Math.min(defColor.getBlue() + 50, 255));
|
||||
return new JBColor(new Color(Math.min(defColor.getRed() + 50, 255), Math.min(defColor.getGreen() + 50, 255), Math.min(
|
||||
defColor.getBlue() + 50, 255)), defColor.darker());
|
||||
}
|
||||
return defColor;
|
||||
}
|
||||
@@ -592,8 +599,13 @@ public class UIUtil {
|
||||
LookAndFeel.installBorder(contentPane, "PopupMenu.border");
|
||||
}
|
||||
|
||||
/** @deprecated Motif is gone (to remove in IDEA 13) */
|
||||
@SuppressWarnings("UnusedDeclaration") public static boolean isMotifLookAndFeel() { return false; }
|
||||
/**
|
||||
* @deprecated Motif is gone (to remove in IDEA 13)
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public static boolean isMotifLookAndFeel() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public static Color getTreeSelectionBorderColor() {
|
||||
return UIManager.getColor("Tree.selectionBorderColor");
|
||||
@@ -816,11 +828,11 @@ public class UIUtil {
|
||||
}
|
||||
|
||||
public static Color getTableFocusCellForeground() {
|
||||
return UIManager.getColor("Table.focusCellForeground");
|
||||
return UIManager.getColor("Table.focusCellForeground");
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated use com.intellij.util.ui.UIUtil#getPanelBackground() instead
|
||||
* @deprecated use com.intellij.util.ui.UIUtil#getPanelBackground() instead
|
||||
*/
|
||||
public static Color getPanelBackgound() {
|
||||
return getPanelBackground();
|
||||
@@ -918,8 +930,13 @@ public class UIUtil {
|
||||
return UIManager.getColor("OptionPane.background");
|
||||
}
|
||||
|
||||
/** @deprecated Quaqua is gone (to remove in IDEA 13) */
|
||||
@SuppressWarnings("UnusedDeclaration") public static boolean isUnderQuaquaLookAndFeel() { return false; }
|
||||
/**
|
||||
* @deprecated Quaqua is gone (to remove in IDEA 13)
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public static boolean isUnderQuaquaLookAndFeel() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@SuppressWarnings({"HardCodedStringLiteral"})
|
||||
public static boolean isUnderAlloyLookAndFeel() {
|
||||
@@ -941,8 +958,13 @@ public class UIUtil {
|
||||
return UIManager.getLookAndFeel().getName().equals("Windows Classic");
|
||||
}
|
||||
|
||||
/** @deprecated Metal is gone (to remove in IDEA 13) */
|
||||
@SuppressWarnings("UnusedDeclaration") public static boolean isUnderMetalLookAndFeel() { return false; }
|
||||
/**
|
||||
* @deprecated Metal is gone (to remove in IDEA 13)
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public static boolean isUnderMetalLookAndFeel() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@SuppressWarnings({"HardCodedStringLiteral"})
|
||||
public static boolean isUnderNimbusLookAndFeel() {
|
||||
@@ -964,8 +986,13 @@ public class UIUtil {
|
||||
return SystemInfo.isMac && (isUnderAquaLookAndFeel() || isUnderDarcula());
|
||||
}
|
||||
|
||||
/** @deprecated Motif is gone (to remove in IDEA 13) */
|
||||
@SuppressWarnings("UnusedDeclaration") public static boolean isUnderMotif() { return false; }
|
||||
/**
|
||||
* @deprecated Motif is gone (to remove in IDEA 13)
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public static boolean isUnderMotif() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@SuppressWarnings({"HardCodedStringLiteral"})
|
||||
public static boolean isUnderDarcula() {
|
||||
@@ -1056,8 +1083,12 @@ public class UIUtil {
|
||||
return !isUnderNativeMacLookAndFeel();
|
||||
}
|
||||
|
||||
/** @deprecated Quaqua is gone (to remove in IDEA 13) */
|
||||
@SuppressWarnings("UnusedDeclaration") public static void removeQuaquaVisualMarginsIn(Component component) { }
|
||||
/**
|
||||
* @deprecated Quaqua is gone (to remove in IDEA 13)
|
||||
*/
|
||||
@SuppressWarnings("UnusedDeclaration")
|
||||
public static void removeQuaquaVisualMarginsIn(Component component) {
|
||||
}
|
||||
|
||||
public static boolean isControlKeyDown(MouseEvent mouseEvent) {
|
||||
return SystemInfo.isMac ? mouseEvent.isMetaDown() : mouseEvent.isControlDown();
|
||||
@@ -1182,9 +1213,9 @@ public class UIUtil {
|
||||
}
|
||||
|
||||
public static void drawSearchMatch(final Graphics2D g,
|
||||
final int startX,
|
||||
final int endX,
|
||||
final int height) {
|
||||
final int startX,
|
||||
final int endX,
|
||||
final int height) {
|
||||
Color c1 = new Color(255, 234, 162);
|
||||
Color c2 = new Color(255, 208, 66);
|
||||
drawSearchMatch(g, startX, endX, height, c1, c2);
|
||||
@@ -1214,8 +1245,8 @@ public class UIUtil {
|
||||
}
|
||||
|
||||
public static void drawRectPickedOut(Graphics2D g, int x, int y, int w, int h) {
|
||||
g.drawLine(x+1, y, x+w-1, y);
|
||||
g.drawLine(x+w, y+1, x+w, y+h-1);
|
||||
g.drawLine(x + 1, y, x + w - 1, y);
|
||||
g.drawLine(x + w, y + 1, x + w, y + h - 1);
|
||||
g.drawLine(x + w - 1, y + h, x + 1, y + h);
|
||||
g.drawLine(x, y + 1, x, y + h - 1);
|
||||
}
|
||||
@@ -1290,27 +1321,27 @@ public class UIUtil {
|
||||
g.drawLine(x, drawTopLine ? 1 : 0, width, drawTopLine ? 1 : 0);
|
||||
|
||||
if (active) {
|
||||
g.setColor(new Color(100, 150, 230, toolWindow? 50 : 30));
|
||||
g.setColor(new Color(100, 150, 230, toolWindow ? 50 : 30));
|
||||
g.fillRect(x, 0, width, height);
|
||||
}
|
||||
}
|
||||
|
||||
public static void drawDoubleSpaceDottedLine(final Graphics2D g,
|
||||
final int start,
|
||||
final int end,
|
||||
final int xOrY,
|
||||
final Color fgColor,
|
||||
boolean horizontal) {
|
||||
final int start,
|
||||
final int end,
|
||||
final int xOrY,
|
||||
final Color fgColor,
|
||||
boolean horizontal) {
|
||||
|
||||
g.setColor(fgColor);
|
||||
for (int dot = start; dot < end; dot+=3) {
|
||||
for (int dot = start; dot < end; dot += 3) {
|
||||
if (horizontal) {
|
||||
g.drawLine(dot, xOrY, dot, xOrY);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
g.drawLine(xOrY, dot, xOrY, dot);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private static void drawAppleDottedLine(final Graphics2D g,
|
||||
@@ -1423,7 +1454,7 @@ public class UIUtil {
|
||||
if (isRetina()) {
|
||||
return RetinaImage.create(width, height, type);
|
||||
}
|
||||
//noinspection UndesirableClassUsage
|
||||
//noinspection UndesirableClassUsage
|
||||
return new BufferedImage(width, height, type);
|
||||
}
|
||||
|
||||
@@ -1431,7 +1462,10 @@ public class UIUtil {
|
||||
paintWithRetina(size, g, true, paintRoutine);
|
||||
}
|
||||
|
||||
public static void paintWithRetina(@NotNull Dimension size, @NotNull Graphics g, boolean useRetinaCondition, Consumer<Graphics2D> paintRoutine) {
|
||||
public static void paintWithRetina(@NotNull Dimension size,
|
||||
@NotNull Graphics g,
|
||||
boolean useRetinaCondition,
|
||||
Consumer<Graphics2D> paintRoutine) {
|
||||
if (!useRetinaCondition || !isRetina() || Registry.is("ide.mac.retina.disableDrawingFix", false)) {
|
||||
paintRoutine.consume((Graphics2D)g);
|
||||
}
|
||||
@@ -1462,7 +1496,7 @@ public class UIUtil {
|
||||
* The whole idea is that <a href="http://en.wikipedia.org/wiki/X_Rendering_Extension">XRender-based</a> pipeline doesn't support
|
||||
* {@link AlphaComposite#SRC} and we should use {@link AlphaComposite#SRC_OVER} instead.
|
||||
*
|
||||
* @param g target graphics container
|
||||
* @param g target graphics container
|
||||
*/
|
||||
public static void setupComposite(@NotNull Graphics2D g) {
|
||||
g.setComposite(X_RENDER_ACTIVE.getValue() ? AlphaComposite.SrcOver : AlphaComposite.Src);
|
||||
@@ -1611,7 +1645,7 @@ public class UIUtil {
|
||||
@NonNls @Language("HTML")
|
||||
String body = "body, div, td, p {" + fontFamilyAndSize + " " + (fgColor != null ? "color:" + ColorUtil.toHex(fgColor) : "") + "}";
|
||||
if (resource != null) {
|
||||
body += "ul {list-style-image: " + resource.toExternalForm() +"}";
|
||||
body += "ul {list-style-image: " + resource.toExternalForm() + "}";
|
||||
}
|
||||
@NonNls String link = linkColor != null ? "a {" + fontFamilyAndSize + " color:" + ColorUtil.toHex(linkColor) + "}" : "";
|
||||
return "<style> " + body + " " + link + "</style>";
|
||||
@@ -1894,13 +1928,15 @@ public class UIUtil {
|
||||
String each = html.substring(currentPos, currentPos + 1);
|
||||
if ("<".equals(each)) {
|
||||
braces++;
|
||||
} else if (">".equals(each)) {
|
||||
}
|
||||
else if (">".equals(each)) {
|
||||
braces--;
|
||||
}
|
||||
|
||||
if (" ".equals(each) && braces == 0) {
|
||||
result.append(" ");
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
result.append(each);
|
||||
}
|
||||
currentPos++;
|
||||
@@ -1955,12 +1991,13 @@ public class UIUtil {
|
||||
|
||||
/**
|
||||
* Avoid blinking while changing background.
|
||||
* @param component component.
|
||||
* @param background new background.
|
||||
*
|
||||
* @param component component.
|
||||
* @param background new background.
|
||||
*/
|
||||
public static void changeBackGround(final Component component, final Color background) {
|
||||
final Color oldBackGround = component.getBackground();
|
||||
if (background == null || !background.equals(oldBackGround)){
|
||||
if (background == null || !background.equals(oldBackGround)) {
|
||||
component.setBackground(background);
|
||||
}
|
||||
}
|
||||
@@ -1974,7 +2011,8 @@ public class UIUtil {
|
||||
ourSystemFontData = Pair.create(font.getName(), font.getSize());
|
||||
}
|
||||
}
|
||||
catch (Exception ignored) { }
|
||||
catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -2024,7 +2062,7 @@ public class UIUtil {
|
||||
else if (component != null) {
|
||||
final String str = component.toString();
|
||||
// skip default Component.toString and handle SimpleColoredComponent case
|
||||
text = str == null || str.startsWith(component.getClass().getName()+"[")? null : str;
|
||||
text = str == null || str.startsWith(component.getClass().getName() + "[") ? null : str;
|
||||
}
|
||||
else {
|
||||
text = null;
|
||||
@@ -2046,7 +2084,7 @@ public class UIUtil {
|
||||
try {
|
||||
final Field popup = BasicComboBoxUI.class.getDeclaredField("popup");
|
||||
popup.setAccessible(true);
|
||||
return (ComboPopup) popup.get(ui);
|
||||
return (ComboPopup)popup.get(ui);
|
||||
}
|
||||
catch (NoSuchFieldException e) {
|
||||
return null;
|
||||
@@ -2107,11 +2145,12 @@ public class UIUtil {
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public static void setComboBoxEditorBounds(int x, int y, int width, int height, JComponent editor) {
|
||||
if(SystemInfo.isMac && isUnderAquaLookAndFeel()) {
|
||||
if (SystemInfo.isMac && isUnderAquaLookAndFeel()) {
|
||||
// fix for too wide combobox editor, see AquaComboBoxUI.layoutContainer:
|
||||
// it adds +4 pixels to editor width. WTF?!
|
||||
editor.reshape(x, y, width - 4, height - 1);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
editor.reshape(x, y, width, height);
|
||||
}
|
||||
}
|
||||
@@ -2354,7 +2393,8 @@ public class UIUtil {
|
||||
if (myDrawShadow) {
|
||||
c = g.getColor();
|
||||
g.setColor(myShadowColor);
|
||||
g.drawLine(x - maxBulletWidth[0] - 10, yOffset[0] + fm.getDescent() + 1, x + maxWidth[0] + 10, yOffset[0] + fm.getDescent() + 1);
|
||||
g.drawLine(x - maxBulletWidth[0] - 10, yOffset[0] + fm.getDescent() + 1, x + maxWidth[0] + 10,
|
||||
yOffset[0] + fm.getDescent() + 1);
|
||||
g.setColor(c);
|
||||
}
|
||||
}
|
||||
@@ -2387,7 +2427,8 @@ public class UIUtil {
|
||||
Component eachParent = c;
|
||||
while (eachParent != null) {
|
||||
if (eachParent instanceof JComponent) {
|
||||
@SuppressWarnings({"unchecked"}) WeakReference<JRootPane> pane = (WeakReference<JRootPane>)((JComponent)eachParent).getClientProperty(ROOT_PANE);
|
||||
@SuppressWarnings({"unchecked"}) WeakReference<JRootPane> pane =
|
||||
(WeakReference<JRootPane>)((JComponent)eachParent).getClientProperty(ROOT_PANE);
|
||||
if (pane != null) return pane.get();
|
||||
}
|
||||
eachParent = eachParent.getParent();
|
||||
@@ -2407,7 +2448,7 @@ public class UIUtil {
|
||||
}
|
||||
|
||||
public static Timer createNamedTimer(@NonNls @NotNull final String name, int delay, @NotNull ActionListener listener) {
|
||||
return new Timer(delay, listener){
|
||||
return new Timer(delay, listener) {
|
||||
@Override
|
||||
public String toString() {
|
||||
return name;
|
||||
@@ -2424,7 +2465,7 @@ public class UIUtil {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static JComponent mergeComponentsWithAnchor(PanelWithAnchor...panels) {
|
||||
public static JComponent mergeComponentsWithAnchor(PanelWithAnchor... panels) {
|
||||
return mergeComponentsWithAnchor(Arrays.asList(panels));
|
||||
}
|
||||
|
||||
@@ -2514,7 +2555,8 @@ public class UIUtil {
|
||||
pixelGrabber.grabPixels();
|
||||
return new Color(pixels[0]);
|
||||
}
|
||||
catch (InterruptedException ignored) { }
|
||||
catch (InterruptedException ignored) {
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -2533,6 +2575,7 @@ public class UIUtil {
|
||||
|
||||
private static final Color DECORATED_ROW_BG_COLOR = new Color(242, 245, 249);
|
||||
private static final Color DECORATED_ROW_BG_COLOR_DARK = Gray._75;
|
||||
|
||||
public static Color getDecoratedRowColor() {
|
||||
return isUnderDarcula() ? DECORATED_ROW_BG_COLOR_DARK : DECORATED_ROW_BG_COLOR;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user