Search in sources :

Example 1 with MenuItemLayoutHelper

use of com.github.weisj.darklaf.compatibility.MenuItemLayoutHelper in project darklaf by weisJ.

the class MenuItemUI method paintMenuItemImpl.

default void paintMenuItemImpl(final Graphics g, final JComponent c, final Icon checkIcon, final Icon arrowIcon, final int defaultTextIconGap) {
    // Save original graphics font and color
    GraphicsContext context = new GraphicsContext(g);
    JMenuItem mi = (JMenuItem) c;
    g.setFont(mi.getFont());
    Rectangle viewRect = new Rectangle(0, 0, mi.getWidth(), mi.getHeight());
    DarkUIUtil.applyInsets(viewRect, mi.getInsets());
    MenuItemLayoutHelper lh = getMenuItemLayoutHelper(checkIcon, arrowIcon, defaultTextIconGap, mi, viewRect);
    MenuItemLayoutHelper.MILayoutResult lr = lh.layoutMenuItem();
    Color background = getBackground(mi);
    Color foreground = getForeground(mi);
    paintBackgroundImpl(g, mi, background);
    context.restore();
    paintCheckIcon(g, mi, lh, lr, foreground);
    context.restore();
    paintIcon(g, mi, lh, lr);
    g.setColor(foreground);
    paintText(g, mi, lh, lr);
    paintAccText(g, mi, lh, lr);
    paintArrowIcon(g, mi, lh, lr, foreground);
    context.restore();
}
Also used : MenuItemLayoutHelper(com.github.weisj.darklaf.compatibility.MenuItemLayoutHelper) GraphicsContext(com.github.weisj.darklaf.util.graphics.GraphicsContext) Color(java.awt.Color) Rectangle(java.awt.Rectangle) JMenuItem(javax.swing.JMenuItem)

Example 2 with MenuItemLayoutHelper

use of com.github.weisj.darklaf.compatibility.MenuItemLayoutHelper in project darklaf by weisJ.

the class MenuItemUI method getPreferredMenuItemSizeImpl.

default Dimension getPreferredMenuItemSizeImpl(final JComponent c, final Icon checkIcon, final Icon arrowIcon, final int defaultTextIconGap) {
    JMenuItem mi = (JMenuItem) c;
    MenuItemLayoutHelper lh = getMenuItemLayoutHelper(checkIcon, arrowIcon, defaultTextIconGap, mi, MenuItemLayoutHelper.createMaxRect());
    Dimension result = new Dimension();
    // Calculate the result width
    result.width = lh.getLeadingGap();
    MenuItemLayoutHelper.addMaxWidth(lh.getCheckSize(), lh.getAfterCheckIconGap(), result);
    // Take into account minimal text offset.
    if (!lh.isTopLevelMenu() && (lh.getMinTextOffset() > 0) && (result.width < lh.getMinTextOffset())) {
        result.width = lh.getMinTextOffset();
    }
    int acceleratorTextOffset = getAcceleratorTextOffset();
    MenuItemLayoutHelper.addMaxWidth(lh.getLabelSize(), acceleratorTextOffset, result);
    MenuItemLayoutHelper.addMaxWidth(lh.getAccSize(), acceleratorTextOffset, result);
    MenuItemLayoutHelper.addMaxWidth(lh.getArrowSize(), lh.getGap(), result);
    // Calculate the result height
    result.height = Arrays.stream(new int[] { lh.getCheckSize().getHeight(), lh.getLabelSize().getHeight(), lh.getAccSize().getHeight(), lh.getArrowSize().getHeight() }).max().orElse(Integer.MIN_VALUE);
    // Take into account menu item insets
    Insets insets = mi.getInsets();
    if (insets != null) {
        result.width += insets.left + insets.right;
        result.height += insets.top + insets.bottom;
    }
    // for the text to center properly
    if (result.height % 2 == 0 && isUseEvenHeight()) {
        result.height++;
    }
    return result;
}
Also used : MenuItemLayoutHelper(com.github.weisj.darklaf.compatibility.MenuItemLayoutHelper) Insets(java.awt.Insets) Dimension(java.awt.Dimension) JMenuItem(javax.swing.JMenuItem)

Aggregations

MenuItemLayoutHelper (com.github.weisj.darklaf.compatibility.MenuItemLayoutHelper)2 JMenuItem (javax.swing.JMenuItem)2 GraphicsContext (com.github.weisj.darklaf.util.graphics.GraphicsContext)1 Color (java.awt.Color)1 Dimension (java.awt.Dimension)1 Insets (java.awt.Insets)1 Rectangle (java.awt.Rectangle)1