From 0ce500f1970173a6fe910de277b1ecb535cb97f2 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Tue, 23 Jun 2015 14:50:56 +0300 Subject: [PATCH] refactor darcula textfield --- .../ui/laf/darcula/ui/DarculaTextFieldUI.java | 84 ++++++++++--------- 1 file changed, 46 insertions(+), 38 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaTextFieldUI.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaTextFieldUI.java index 9a5f429a92ef..776a682fe00e 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaTextFieldUI.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaTextFieldUI.java @@ -41,7 +41,7 @@ public class DarculaTextFieldUI extends BasicTextFieldUI { private enum SearchAction {POPUP, CLEAR} - private final JTextField myTextField; + protected final JTextField myTextField; protected JLabel myClearIcon; protected JLabel myRecentIcon; @@ -162,50 +162,58 @@ public class DarculaTextFieldUI extends BasicTextFieldUI { final Border border = c.getBorder(); if (isSearchField(c)) { - g.setColor(c.getBackground()); - final boolean noBorder = c.getClientProperty("JTextField.Search.noBorderRing") == Boolean.TRUE; - int radius = r.height-1; - g.fillRoundRect(r.x, r.y+1, r.width, r.height - (noBorder ? 2 : 1), radius, radius); - g.setColor(c.isEnabled() ? Gray._100 : Gray._83); - if (!noBorder) { - if (c.hasFocus()) { - DarculaUIUtil.paintSearchFocusRing(g, r); - } else { - g.drawRoundRect(r.x, r.y, r.width, r.height-1, radius, radius); - } - } - Point p = getSearchIconCoord(); - Icon searchIcon = myTextField.getClientProperty("JTextField.Search.FindPopup") instanceof JPopupMenu ? UIManager.getIcon("TextField.darcula.searchWithHistory.icon") : UIManager.getIcon("TextField.darcula.search.icon"); - if (searchIcon == null) { - searchIcon = IconLoader.findIcon("/com/intellij/ide/ui/laf/icons/search.png", DarculaTextFieldUI.class, true); - } - searchIcon.paintIcon(null, g, p.x, p.y); - if (hasText()) { - p = getClearIconCoord(); - Icon clearIcon = UIManager.getIcon("TextField.darcula.clear.icon"); - if (clearIcon == null) { - clearIcon = IconLoader.findIcon("/com/intellij/ide/ui/laf/icons/clear.png", DarculaTextFieldUI.class, true); - } - clearIcon.paintIcon(null, g, p.x, p.y); - } + paintSearchField(g, c, r); } else if (border instanceof DarculaTextBorder) { - if (c.isEnabled() && c.isEditable()) { - g.setColor(c.getBackground()); - } - final int width = c.getWidth(); - final int height = c.getHeight(); - final Insets i = border.getBorderInsets(c); - if (c.hasFocus()) { - g.fillRoundRect(i.left - JBUI.scale(5), i.top - JBUI.scale(2), width - i.right - i.left + JBUI.scale(10), height - i.top - i.bottom + JBUI.scale(6), JBUI.scale(5), JBUI.scale(5)); - } else { - g.fillRect(i.left - JBUI.scale(5), i.top - JBUI.scale(2), width - i.right - i.left + JBUI.scale(12), height - i.top - i.bottom + JBUI.scale(6)); - } + paintDarculaBackground(g, c, border); } else { super.paintBackground(g); } config.restore(); } + protected void paintDarculaBackground(Graphics2D g, JTextComponent c, Border border) { + if (c.isEnabled() && c.isEditable()) { + g.setColor(c.getBackground()); + } + final int width = c.getWidth(); + final int height = c.getHeight(); + final Insets i = border.getBorderInsets(c); + if (c.hasFocus()) { + g.fillRoundRect(i.left - JBUI.scale(5), i.top - JBUI.scale(2), width - i.right - i.left + JBUI.scale(10), height - i.top - i.bottom + JBUI.scale(6), JBUI.scale(5), JBUI.scale(5)); + } else { + g.fillRect(i.left - JBUI.scale(5), i.top - JBUI.scale(2), width - i.right - i.left + JBUI.scale(12), height - i.top - i.bottom + JBUI.scale(6)); + } + } + + protected void paintSearchField(Graphics2D g, JTextComponent c, Rectangle r) { + g.setColor(c.getBackground()); + final boolean noBorder = c.getClientProperty("JTextField.Search.noBorderRing") == Boolean.TRUE; + int radius = r.height-1; + g.fillRoundRect(r.x, r.y+1, r.width, r.height - (noBorder ? 2 : 1), radius, radius); + g.setColor(c.isEnabled() ? Gray._100 : Gray._83); + if (!noBorder) { + if (c.hasFocus()) { + DarculaUIUtil.paintSearchFocusRing(g, r); + } else { + g.drawRoundRect(r.x, r.y, r.width, r.height-1, radius, radius); + } + } + Point p = getSearchIconCoord(); + Icon searchIcon = myTextField.getClientProperty("JTextField.Search.FindPopup") instanceof JPopupMenu ? UIManager.getIcon("TextField.darcula.searchWithHistory.icon") : UIManager.getIcon("TextField.darcula.search.icon"); + if (searchIcon == null) { + searchIcon = IconLoader.findIcon("/com/intellij/ide/ui/laf/icons/search.png", DarculaTextFieldUI.class, true); + } + searchIcon.paintIcon(null, g, p.x, p.y); + if (hasText()) { + p = getClearIconCoord(); + Icon clearIcon = UIManager.getIcon("TextField.darcula.clear.icon"); + if (clearIcon == null) { + clearIcon = IconLoader.findIcon("/com/intellij/ide/ui/laf/icons/clear.png", DarculaTextFieldUI.class, true); + } + clearIcon.paintIcon(null, g, p.x, p.y); + } + } + @Override protected void paintSafely(Graphics g) { paintBackground(g);