/** * Sets given icon to display between checkbox icon and text. * * @return true in case of success and false otherwise */ public boolean setTextIcon(@NotNull Icon icon) { if (UIUtil.isUnderDarcula() || UIUtil.isUnderIntelliJLaF()) { return false; } ButtonUI ui = getUI(); if (ui instanceof BasicRadioButtonUI) { Icon defaultIcon = ((BasicRadioButtonUI) ui).getDefaultIcon(); if (defaultIcon != null) { MergedIcon mergedIcon = new MergedIcon(defaultIcon, 10, icon); setIcon(mergedIcon); return true; } } return false; }
/** * Sets given icon to display between checkbox icon and text. * * @return true in case of success and false otherwise */ public boolean setTextIcon(@NotNull Icon icon) { ButtonUI ui = getUI(); if (ui instanceof BasicRadioButtonUI) { Icon defaultIcon = ((BasicRadioButtonUI) ui).getDefaultIcon(); if (defaultIcon != null) { MergedIcon mergedIcon = new MergedIcon(defaultIcon, 10, icon); setIcon(mergedIcon); return true; } } return false; }
@Nonnull private static Dimension getCheckBoxDimension(@Nonnull JCheckBox checkBox) { Icon icon = null; BasicRadioButtonUI ui = ObjectUtils.tryCast(checkBox.getUI(), BasicRadioButtonUI.class); if (ui != null) { icon = ui.getDefaultIcon(); } if (icon == null) { // com.intellij.ide.ui.laf.darcula.ui.DarculaCheckBoxUI.getDefaultIcon() icon = JBUI.scale(EmptyIcon.create(20)); } Insets margin = checkBox.getMargin(); return new Dimension(margin.left + icon.getIconWidth(), margin.top + icon.getIconHeight()); }
/** * Sets given icon to display between checkbox icon and text. * * @return true in case of success and false otherwise */ public boolean setTextIcon(@Nonnull Icon icon) { ButtonUI ui = getUI(); if (ui instanceof BasicRadioButtonUI) { Icon defaultIcon = ((BasicRadioButtonUI) ui).getDefaultIcon(); if (defaultIcon != null) { MergedIcon mergedIcon = new MergedIcon(defaultIcon, 10, icon); setIcon(mergedIcon); return true; } } return false; }
private static Rectangle getTextRectangle(AbstractButton button) { String text = button.getText(); Icon icon = (button.isEnabled()) ? button.getIcon() : button.getDisabledIcon(); if (icon == null && button.getUI() instanceof BasicRadioButtonUI) { icon = ((BasicRadioButtonUI)button.getUI()).getDefaultIcon(); } if ((icon == null) && (text == null)) { return null; } Rectangle paintIconR = new Rectangle(); Rectangle paintTextR = new Rectangle(); Rectangle paintViewR = new Rectangle(); Insets paintViewInsets = new Insets(0, 0, 0, 0); paintViewInsets = button.getInsets(paintViewInsets); paintViewR.x = paintViewInsets.left; paintViewR.y = paintViewInsets.top; paintViewR.width = button.getWidth() - (paintViewInsets.left + paintViewInsets.right); paintViewR.height = button.getHeight() - (paintViewInsets.top + paintViewInsets.bottom); Graphics g = button.getGraphics(); if (g == null) { return null; } SwingUtilities.layoutCompoundLabel(button, g.getFontMetrics(), text, icon, button.getVerticalAlignment(), button.getHorizontalAlignment(), button.getVerticalTextPosition(), button.getHorizontalTextPosition(), paintViewR, paintIconR, paintTextR, button.getIconTextGap()); return paintTextR; }
public static int getCheckBoxTextHorizontalOffset(@NotNull JCheckBox cb) { // logic copied from javax.swing.plaf.basic.BasicRadioButtonUI.paint ButtonUI ui = cb.getUI(); String text = cb.getText(); Icon buttonIcon = cb.getIcon(); if (buttonIcon == null && ui != null) { if (ui instanceof BasicRadioButtonUI) { buttonIcon = ((BasicRadioButtonUI)ui).getDefaultIcon(); } else if (isUnderAquaLookAndFeel()) { // inheritors of AquaButtonToggleUI Ref<Method> cached = ourDefaultIconMethodsCache.get(ui.getClass()); if (cached == null) { cached = Ref.create(ReflectionUtil.findMethod(Arrays.asList(ui.getClass().getMethods()), "getDefaultIcon", JComponent.class)); ourDefaultIconMethodsCache.put(ui.getClass(), cached); if (!cached.isNull()) { cached.get().setAccessible(true); } } Method method = cached.get(); if (method != null) { try { buttonIcon = (Icon)method.invoke(ui, cb); } catch (Exception e) { cached.set(null); } } } } Dimension size = new Dimension(); Rectangle viewRect = new Rectangle(); Rectangle iconRect = new Rectangle(); Rectangle textRect = new Rectangle(); Insets i = cb.getInsets(); size = cb.getSize(size); viewRect.x = i.left; viewRect.y = i.top; viewRect.width = size.width - (i.right + viewRect.x); viewRect.height = size.height - (i.bottom + viewRect.y); iconRect.x = iconRect.y = iconRect.width = iconRect.height = 0; textRect.x = textRect.y = textRect.width = textRect.height = 0; SwingUtilities.layoutCompoundLabel( cb, cb.getFontMetrics(cb.getFont()), text, buttonIcon, cb.getVerticalAlignment(), cb.getHorizontalAlignment(), cb.getVerticalTextPosition(), cb.getHorizontalTextPosition(), viewRect, iconRect, textRect, text == null ? 0 : cb.getIconTextGap()); return textRect.x; }
private static Rectangle getTextRectangle(AbstractButton button) { String text = button.getText(); Icon icon = (button.isEnabled()) ? button.getIcon() : button.getDisabledIcon(); if (icon == null && button.getUI() instanceof BasicRadioButtonUI) { icon = ((BasicRadioButtonUI)button.getUI()).getDefaultIcon(); } if ((icon == null) && (text == null)) { return null; } Rectangle paintIconR = new Rectangle(); Rectangle paintTextR = new Rectangle(); Rectangle paintViewR = new Rectangle(); Insets paintViewInsets = new Insets(0, 0, 0, 0); paintViewInsets = button.getInsets(paintViewInsets); paintViewR.x = paintViewInsets.left; paintViewR.y = paintViewInsets.top; paintViewR.width = button.getWidth() - (paintViewInsets.left + paintViewInsets.right); paintViewR.height = button.getHeight() - (paintViewInsets.top + paintViewInsets.bottom); Graphics g = button.getGraphics(); if (g == null) { return null; } String clippedText = SwingUtilities.layoutCompoundLabel(button, g.getFontMetrics(), text, icon, button.getVerticalAlignment(), button.getHorizontalAlignment(), button.getVerticalTextPosition(), button.getHorizontalTextPosition(), paintViewR, paintIconR, paintTextR, button.getIconTextGap()); return paintTextR; }