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();
}
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;
}
Aggregations