JSeparator jsep = new JSeparator(JSeparator.VERTICAL);
int layoutHGap = 2 * FlamingoUtilities.getHLayoutGap(commandButton);
boolean ltr = commandButton.getComponentOrientation().isLeftToRight();
ResizableIcon buttonIcon = commandButton.getIcon();
if (ltr) {
int x = ins.left;
// small icon, 1-line text, 1-line extra text and action arrow
result.iconRect.x = x;
result.iconRect.y = (height - buttonIcon.getIconHeight()) / 2;
result.iconRect.width = buttonIcon.getIconWidth();
result.iconRect.height = buttonIcon.getIconHeight();
x += commandButton.getIcon().getIconWidth();
if (buttonKind == JCommandButton.CommandButtonKind.ACTION_AND_POPUP_MAIN_POPUP) {
result.actionClickArea.x = 0;
result.actionClickArea.y = 0;
result.actionClickArea.width = x + layoutHGap;
result.actionClickArea.height = height;
result.popupClickArea.x = x + layoutHGap;
result.popupClickArea.y = 0;
result.popupClickArea.width = width - x - layoutHGap;
result.popupClickArea.height = height;
result.separatorOrientation = CommandButtonSeparatorOrientation.VERTICAL;
result.separatorArea = new Rectangle();
result.separatorArea.x = x + layoutHGap;
result.separatorArea.y = 0;
result.separatorArea.width = new JSeparator(JSeparator.VERTICAL)
.getPreferredSize().width;
result.separatorArea.height = height;
result.isTextInActionArea = false;
}
x += 2 * layoutHGap + jsep.getPreferredSize().width;
TextLayoutInfo lineLayoutInfo = new TextLayoutInfo();
lineLayoutInfo.text = commandButton.getText();
lineLayoutInfo.textRect = new Rectangle();
lineLayoutInfo.textRect.x = x;
lineLayoutInfo.textRect.y = (height - labelHeight) / 2;
lineLayoutInfo.textRect.width = fm.stringWidth(commandButton
.getText());
lineLayoutInfo.textRect.height = labelHeight;
result.textLayoutInfoList = new ArrayList<TextLayoutInfo>();
result.textLayoutInfoList.add(lineLayoutInfo);
x += fm.getStringBounds(commandButton.getText(), g).getWidth();
if (buttonKind == JCommandButton.CommandButtonKind.ACTION_AND_POPUP_MAIN_ACTION) {
// popup click areas are right aligned
result.actionClickArea.x = 0;
result.actionClickArea.y = 0;
result.actionClickArea.width = width - ins.right - labelHeight;
result.actionClickArea.height = height;
result.popupClickArea.x = width - ins.right - labelHeight;
result.popupClickArea.y = 0;
result.popupClickArea.width = labelHeight + ins.right;
result.popupClickArea.height = height;
result.separatorOrientation = CommandButtonSeparatorOrientation.VERTICAL;
result.separatorArea = new Rectangle();
result.separatorArea.x = width - ins.right - labelHeight;
result.separatorArea.y = 0;
result.separatorArea.width = new JSeparator(JSeparator.VERTICAL)
.getPreferredSize().width;
result.separatorArea.height = height;
result.isTextInActionArea = true;
}
if (FlamingoUtilities.hasPopupAction(commandButton)) {
result.popupActionRect.x = width - ins.right - labelHeight * 3
/ 4;
result.popupActionRect.y = (height - labelHeight) / 2 - 1;
result.popupActionRect.width = 1 + labelHeight / 2;
result.popupActionRect.height = labelHeight + 2;
}
} else {
int x = commandButton.getWidth() - ins.right;
// small icon, 1-line text, 1-line extra text and action arrow
result.iconRect.x = x - buttonIcon.getIconWidth();
result.iconRect.y = (height - buttonIcon.getIconHeight()) / 2;
result.iconRect.width = buttonIcon.getIconWidth();
result.iconRect.height = buttonIcon.getIconHeight();
x -= commandButton.getIcon().getIconWidth();
if (buttonKind == JCommandButton.CommandButtonKind.ACTION_AND_POPUP_MAIN_POPUP) {
result.actionClickArea.x = x + layoutHGap;
result.actionClickArea.y = 0;