Browse Source

ComboBox and Spinner now have smaller insets.

ComboBox and Spinner now use the correct icons on intellij_mac.
TextFields now correctly paint their background in a table.

Signed-off-by: weisj <weisj@arcor.de>
pull/42/head
weisj 5 years ago
parent
commit
4a3041ace8
  1. 44
      core/src/main/java/com/github/weisj/darklaf/ui/combobox/DarkComboBoxUI.java
  2. 3
      core/src/main/java/com/github/weisj/darklaf/ui/spinner/DarkSpinnerBorder.java
  3. 22
      core/src/main/java/com/github/weisj/darklaf/ui/spinner/DarkSpinnerUI.java
  4. 6
      core/src/main/java/com/github/weisj/darklaf/ui/text/DarkFormattedTextFieldUI.java
  5. 14
      core/src/main/java/com/github/weisj/darklaf/ui/text/DarkTextUI.java
  6. 4
      core/src/main/java/com/github/weisj/darklaf/util/DarkUIUtil.java
  7. 5
      core/src/main/resources/com/github/weisj/darklaf/properties/ui/comboBox.properties
  8. 3
      core/src/main/resources/com/github/weisj/darklaf/properties/ui/spinner.properties
  9. 3
      core/src/main/resources/com/github/weisj/darklaf/theme/intellij/intellij_mac.properties

44
core/src/main/java/com/github/weisj/darklaf/ui/combobox/DarkComboBoxUI.java

@ -47,8 +47,6 @@ import java.beans.PropertyChangeListener;
*/ */
public class DarkComboBoxUI extends BasicComboBoxUI implements Border, PropertyChangeListener { public class DarkComboBoxUI extends BasicComboBoxUI implements Border, PropertyChangeListener {
private static final int BUTTON_PAD = 7;
private final MouseListener mouseListener = new MouseAdapter() { private final MouseListener mouseListener = new MouseAdapter() {
@Override @Override
public void mousePressed(final MouseEvent e) { public void mousePressed(final MouseEvent e) {
@ -69,7 +67,6 @@ public class DarkComboBoxUI extends BasicComboBoxUI implements Border, PropertyC
private Insets boxPadding; private Insets boxPadding;
private Insets cellPadding; private Insets cellPadding;
public static ComponentUI createUI(final JComponent c) { public static ComponentUI createUI(final JComponent c) {
return new DarkComboBoxUI(); return new DarkComboBoxUI();
} }
@ -163,11 +160,14 @@ public class DarkComboBoxUI extends BasicComboBoxUI implements Border, PropertyC
} }
protected JButton createArrowButton() { protected JButton createArrowButton() {
int buttonPad = UIManager.getInt("ComboBox.buttonPad");
JButton button = ArrowButton.createUpDownArrow(comboBox, JButton button = ArrowButton.createUpDownArrow(comboBox,
UIManager.getIcon("ComboBox.arrow.icon"), new ComboIcon(comboBox,
UIManager.getIcon("ComboBox.arrowEditable.icon"),
UIManager.getIcon("ComboBox.arrow.icon")),
UIManager.getIcon("ComboBox.arrowInactive.icon"), UIManager.getIcon("ComboBox.arrowInactive.icon"),
SwingConstants.SOUTH, true, false, SwingConstants.SOUTH, true, false,
new Insets(0, BUTTON_PAD, 0, BUTTON_PAD)); new Insets(0, buttonPad, 0, buttonPad));
button.setBorder(BorderFactory.createEmptyBorder()); button.setBorder(BorderFactory.createEmptyBorder());
button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); button.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
return button; return button;
@ -325,7 +325,7 @@ public class DarkComboBoxUI extends BasicComboBoxUI implements Border, PropertyC
Area rect; Area rect;
Area iconRect; Area iconRect;
if (!isTableCellEditor && !isTreeCellEditor) { if (!isTableCellEditor && !isTreeCellEditor) {
rect = new Area(new RoundRectangle2D.Double(bSize, bSize, width - 2 * bSize, rect = new Area(new RoundRectangle2D.Double(bSize - 1, bSize, width - 2 * bSize + 2,
height - 2 * bSize, arc, arc)); height - 2 * bSize, arc, arc));
iconRect = new Area(new Rectangle(off, 0, width, height)); iconRect = new Area(new Rectangle(off, 0, width, height));
} else { } else {
@ -430,4 +430,36 @@ public class DarkComboBoxUI extends BasicComboBoxUI implements Border, PropertyC
comboBox.repaint(); comboBox.repaint();
} }
} }
private static class ComboIcon implements Icon {
private final JComboBox<?> box;
private final Icon editableIcon;
private final Icon icon;
private ComboIcon(final JComboBox<?> box, final Icon editableIcon, final Icon icon) {
this.box = box;
this.editableIcon = editableIcon;
this.icon = icon;
}
private Icon getIcon() {
return box.isEditable() ? editableIcon : icon;
}
@Override
public void paintIcon(final Component c, final Graphics g, final int x, final int y) {
getIcon().paintIcon(c, g, x, y);
}
@Override
public int getIconWidth() {
return getIcon().getIconWidth();
}
@Override
public int getIconHeight() {
return getIcon().getIconHeight();
}
}
} }

3
core/src/main/java/com/github/weisj/darklaf/ui/spinner/DarkSpinnerBorder.java

@ -121,7 +121,8 @@ public class DarkSpinnerBorder implements Border, UIResource {
if (DarkSpinnerUI.isTableCellEditor(c) || DarkSpinnerUI.isTreeCellEditor(c)) { if (DarkSpinnerUI.isTableCellEditor(c) || DarkSpinnerUI.isTreeCellEditor(c)) {
return new InsetsUIResource(cellInsets.top, insets.left, insets.bottom, insets.right); return new InsetsUIResource(cellInsets.top, insets.left, insets.bottom, insets.right);
} }
return new InsetsUIResource(insets.top, insets.left, insets.bottom, insets.right); return new InsetsUIResource(insets.top + borderSize, insets.left + borderSize,
insets.bottom + borderSize, insets.right + borderSize);
} }
@Override @Override

22
core/src/main/java/com/github/weisj/darklaf/ui/spinner/DarkSpinnerUI.java

@ -35,12 +35,7 @@ import javax.swing.plaf.ComponentUI;
import javax.swing.plaf.UIResource; import javax.swing.plaf.UIResource;
import javax.swing.plaf.basic.BasicSpinnerUI; import javax.swing.plaf.basic.BasicSpinnerUI;
import java.awt.*; import java.awt.*;
import java.awt.event.FocusAdapter; import java.awt.event.*;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.geom.Area; import java.awt.geom.Area;
import java.awt.geom.RoundRectangle2D; import java.awt.geom.RoundRectangle2D;
import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeEvent;
@ -52,7 +47,6 @@ import java.beans.PropertyChangeListener;
*/ */
public class DarkSpinnerUI extends BasicSpinnerUI implements PropertyChangeListener { public class DarkSpinnerUI extends BasicSpinnerUI implements PropertyChangeListener {
private static final int BUTTON_PAD = 7;
private final FocusListener focusListener = new FocusAdapter() { private final FocusListener focusListener = new FocusAdapter() {
@Override @Override
public void focusGained(final FocusEvent e) { public void focusGained(final FocusEvent e) {
@ -204,7 +198,8 @@ public class DarkSpinnerUI extends BasicSpinnerUI implements PropertyChangeListe
private JButton createArrow(final int direction) { private JButton createArrow(final int direction) {
Insets insets = new Insets(0, BUTTON_PAD, 0, BUTTON_PAD); int buttonPad = UIManager.getInt("Spinner.buttonPad");
Insets insets = new Insets(0, buttonPad, 0, buttonPad);
JButton button = ArrowButton.createUpDownArrow(spinner, JButton button = ArrowButton.createUpDownArrow(spinner,
getArrowIcon(direction), getArrowIcon(direction),
getArrowInactiveIcon(direction), direction, getArrowInactiveIcon(direction), direction,
@ -244,14 +239,7 @@ public class DarkSpinnerUI extends BasicSpinnerUI implements PropertyChangeListe
int height = c.getHeight(); int height = c.getHeight();
JComponent editor = spinner.getEditor(); JComponent editor = spinner.getEditor();
if (editorComponent != null) { if (editorComponent != null) {
if (!editorComponent.isEnabled()) { editorComponent.setBackground(getBackground(c));
if (compColor == null) {
compColor = editorComponent.getBackground();
editorComponent.setBackground(getBackground(c));
} else {
compColor = null;
}
}
g.setColor(editorComponent.getBackground()); g.setColor(editorComponent.getBackground());
} else { } else {
((Graphics2D) g).setPaint(getBackground(c)); ((Graphics2D) g).setPaint(getBackground(c));
@ -292,7 +280,7 @@ public class DarkSpinnerUI extends BasicSpinnerUI implements PropertyChangeListe
Rectangle bounds = prevButton.getBounds(); Rectangle bounds = prevButton.getBounds();
boolean leftToRight = spinner.getComponentOrientation().isLeftToRight(); boolean leftToRight = spinner.getComponentOrientation().isLeftToRight();
int off = leftToRight ? bounds.x : bounds.x + bounds.width; int off = leftToRight ? bounds.x : bounds.x + bounds.width;
Area rect = new Area(new RoundRectangle2D.Double(bSize, bSize, width - 2 * bSize, height - 2 * bSize, Area rect = new Area(new RoundRectangle2D.Double(bSize - 1, bSize - 1, width - 2 * bSize + 2, height - 2 * bSize + 1,
arc, arc)); arc, arc));
Area iconRect = new Area(new Rectangle(off, 0, width, height)); Area iconRect = new Area(new Rectangle(off, 0, width, height));
if (leftToRight) { if (leftToRight) {

6
core/src/main/java/com/github/weisj/darklaf/ui/text/DarkFormattedTextFieldUI.java

@ -28,6 +28,7 @@ import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener; import javax.swing.event.DocumentListener;
import javax.swing.plaf.ComponentUI; import javax.swing.plaf.ComponentUI;
import javax.swing.text.Document; import javax.swing.text.Document;
import java.awt.*;
import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener; import java.beans.PropertyChangeListener;
import java.text.ParseException; import java.text.ParseException;
@ -54,6 +55,11 @@ public class DarkFormattedTextFieldUI extends DarkTextFieldUI implements Propert
super.installUI(c); super.installUI(c);
} }
@Override
protected void paintBackground(final Graphics graphics) {
super.paintBackground(graphics);
}
@Override @Override
public void propertyChange(final PropertyChangeEvent evt) { public void propertyChange(final PropertyChangeEvent evt) {
super.propertyChange(evt); super.propertyChange(evt);

14
core/src/main/java/com/github/weisj/darklaf/ui/text/DarkTextUI.java

@ -97,9 +97,14 @@ public abstract class DarkTextUI extends BasicTextUI implements PropertyChangeLi
@Override @Override
protected void paintBackground(final Graphics g) { protected void paintBackground(final Graphics g) {
Container parent = editor.getParent(); if (editor.isOpaque()) {
if (editor.isOpaque() && parent != null) { Container parent = editor.getParent();
g.setColor(parent.getBackground()); if (parent != null) {
g.setColor(parent.getBackground());
}
if (DarkTextBorder.isCellEditor(editor) || DarkUIUtil.isInCell(editor)) {
g.setColor(editor.getBackground());
}
g.fillRect(0, 0, editor.getWidth(), editor.getHeight()); g.fillRect(0, 0, editor.getWidth(), editor.getHeight());
} }
@ -113,6 +118,9 @@ public abstract class DarkTextUI extends BasicTextUI implements PropertyChangeLi
g.fillRect(ins.left, ins.top, editor.getWidth() - ins.left - ins.right, g.fillRect(ins.left, ins.top, editor.getWidth() - ins.left - ins.right,
editor.getHeight() - ins.top - ins.bottom); editor.getHeight() - ins.top - ins.bottom);
} }
} else {
g.setColor(editor.getBackground());
g.fillRect(0, 0, editor.getWidth(), editor.getHeight());
} }
} }

4
core/src/main/java/com/github/weisj/darklaf/util/DarkUIUtil.java

@ -128,7 +128,9 @@ public final class DarkUIUtil {
public static void fillRoundRect(final Graphics2D g, final float x, final float y, public static void fillRoundRect(final Graphics2D g, final float x, final float y,
final float width, final float height, final int arc) { final float width, final float height, final int arc) {
g.fill(new RoundRectangle2D.Float(x, y, width, height, arc, arc)); Stroke stroke = g.getStroke();
float lw = stroke instanceof BasicStroke ? ((BasicStroke) stroke).getLineWidth() : 1;
g.fill(new RoundRectangle2D.Float(x - lw, y - lw, width + lw, height + lw, arc, arc));
} }

5
core/src/main/resources/com/github/weisj/darklaf/properties/ui/comboBox.properties

@ -39,10 +39,11 @@ ComboBox.selectionBackground = %highlightFillFocus
ComboBox.arc = %arc ComboBox.arc = %arc
ComboBox.borderThickness = %borderThickness ComboBox.borderThickness = %borderThickness
ComboBox.selectionForeground = %textSelectionForeground ComboBox.selectionForeground = %textSelectionForeground
ComboBox.insets = 4,6,4,6 ComboBox.insets = 2,2,2,2
ComboBox.cellEditorInsets = 2,5,2,5 ComboBox.cellEditorInsets = 2,5,2,5
ComboBox.buttonPad = 4
#Icons #Icons
ComboBox.arrow.icon = navigation/arrowDown.svg[themed] ComboBox.arrow.icon = navigation/arrowDown.svg[themed]
ComboBox.arrowEditable.icon = navigation/arrowDown.svg[themed]
ComboBox.arrowInactive.icon = navigation/arrowDownDisabled.svg[themed] ComboBox.arrowInactive.icon = navigation/arrowDownDisabled.svg[themed]

3
core/src/main/resources/com/github/weisj/darklaf/properties/ui/spinner.properties

@ -39,7 +39,8 @@ Spinner.arc = %arc
Spinner.borderThickness = %borderThickness Spinner.borderThickness = %borderThickness
Spinner.cellEditorInsets = 2,5,2,5 Spinner.cellEditorInsets = 2,5,2,5
Spinner.insets = 7,7,7,7 Spinner.insets = 2,2,2,2
Spinner.buttonPad = 4
Spinner.plus.icon = misc/plus.svg[themed] Spinner.plus.icon = misc/plus.svg[themed]
Spinner.plusInactive.icon = misc/plus.svg[themed] Spinner.plusInactive.icon = misc/plus.svg[themed]

3
core/src/main/resources/com/github/weisj/darklaf/theme/intellij/intellij_mac.properties

@ -23,7 +23,8 @@
# #
ComboBox.arrowBackgroundStart = 68B2FA ComboBox.arrowBackgroundStart = 68B2FA
ComboBox.arrowBackgroundEnd = 0E80FF ComboBox.arrowBackgroundEnd = 0E80FF
ComboBox.arrow.icon = navigation/arrowDownSelected.svg[themed] ComboBox.arrow.icon = navigation/arrowDown.svg[themed]
ComboBox.arrowEditable.icon = navigation/arrowDownSelected.svg[themed]
Spinner.arrowBackgroundStart = 68B2FA Spinner.arrowBackgroundStart = 68B2FA
Spinner.arrowBackgroundEnd = 0E80FF Spinner.arrowBackgroundEnd = 0E80FF

Loading…
Cancel
Save