Examples of LineBreakMeasurer


Examples of java.awt.font.LineBreakMeasurer

      } else {
        AttributedString attributedDescription = new AttributedString(
            commandButton.getExtraText());
        attributedDescription.addAttribute(TextAttribute.FONT,
            g.getFont());
        LineBreakMeasurer lineBreakMeasurer = new LineBreakMeasurer(
            attributedDescription.getIterator(),
            ((Graphics2D) g).getFontRenderContext());
        // The max width of the extra text line - need to leave
        // space for the popup arrow icon
        int maxFirstExtraLineWidth = width - x - ins.right - layoutHGap
            - labelHeight;
        int breakIndex = lineBreakMeasurer
            .nextOffset(maxFirstExtraLineWidth);

        TextLayoutInfo extraLineLayoutInfo1 = new TextLayoutInfo();
        extraLineLayoutInfo1.text = commandButton.getExtraText()
            .substring(0, breakIndex);
        extraLineLayoutInfo1.textRect = new Rectangle();

        extraLineLayoutInfo1.textRect.x = x;
        extraLineLayoutInfo1.textRect.y = ins.top + layoutVGap
            + labelHeight;
        extraLineLayoutInfo1.textRect.width = fm
            .stringWidth(extraLineLayoutInfo1.text);
        extraLineLayoutInfo1.textRect.height = labelHeight;

        TextLayoutInfo extraLineLayoutInfo2 = new TextLayoutInfo();
        extraLineLayoutInfo2.text = commandButton.getExtraText()
            .substring(breakIndex);
        extraLineLayoutInfo2.textRect = new Rectangle();

        extraLineLayoutInfo2.textRect.x = x;
        extraLineLayoutInfo2.textRect.y = ins.top + layoutVGap + 2
            * labelHeight;
        extraLineLayoutInfo2.textRect.width = fm
            .stringWidth(extraLineLayoutInfo2.text);
        extraLineLayoutInfo2.textRect.height = labelHeight;

        result.extraTextLayoutInfoList = new ArrayList<TextLayoutInfo>();
        result.extraTextLayoutInfoList.add(extraLineLayoutInfo1);
        result.extraTextLayoutInfoList.add(extraLineLayoutInfo2);
      }

      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;
      // medium icon, 1-line text, 1-line extra text and action arrow
      if (buttonIcon != null) {
        result.iconRect.x = x - buttonIcon.getIconWidth();
        result.iconRect.y = ins.top + layoutVGap;
        result.iconRect.width = buttonIcon.getIconWidth();
        result.iconRect.height = buttonIcon.getIconHeight();

        x -= buttonIcon.getIconWidth();
      }
      if (buttonKind == JCommandButton.CommandButtonKind.ACTION_AND_POPUP_MAIN_POPUP) {
        result.actionClickArea.x = x + layoutHGap;
        result.actionClickArea.y = 0;
        result.actionClickArea.width = width - x - layoutHGap;
        result.actionClickArea.height = height;

        result.popupClickArea.x = 0;
        result.popupClickArea.y = 0;
        result.popupClickArea.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.width = fm.stringWidth(commandButton
          .getText());
      lineLayoutInfo.textRect.x = x - lineLayoutInfo.textRect.width;
      lineLayoutInfo.textRect.y = ins.top + layoutVGap / 2;
      lineLayoutInfo.textRect.height = labelHeight;

      result.textLayoutInfoList = new ArrayList<TextLayoutInfo>();
      result.textLayoutInfoList.add(lineLayoutInfo);

      String extraText = commandButton.getExtraText();
      if ((extraText == null) || (extraText.length() == 0)) {
        lineLayoutInfo.textRect.y = (height - labelHeight) / 2;
      } else {
        AttributedString attributedDescription = new AttributedString(
            commandButton.getExtraText());
        attributedDescription.addAttribute(TextAttribute.FONT,
            g.getFont());
        LineBreakMeasurer lineBreakMeasurer = new LineBreakMeasurer(
            attributedDescription.getIterator(),
            ((Graphics2D) g).getFontRenderContext());
        // The max width of the extra text line - need to leave
        // space for the popup arrow icon
        int maxFirstExtraLineWidth = x - ins.left - layoutHGap
            - labelHeight;
        int breakIndex = lineBreakMeasurer
            .nextOffset(maxFirstExtraLineWidth);

        TextLayoutInfo extraLineLayoutInfo1 = new TextLayoutInfo();
        extraLineLayoutInfo1.text = commandButton.getExtraText()
            .substring(0, breakIndex);
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.