@Override
  public void showFeedback() {
    createFeedback();

    myBounds =
        myContext.getTransformedRectangle(
            myComponent.getBounds(myContext.getArea().getFeedbackLayer()));
    myBounds.width = Math.max(myBounds.width, 0);
    myBounds.height = Math.max(myBounds.height, 0);

    int direction = myContext.getResizeDirection();

    if ((direction & Position.EAST) != 0) {
      if (!snapToWidth(myBounds, myWrapSize, SNAP_DELTA)) {
        snapToWidth(myBounds, myFillSize, SNAP_DELTA);
      }
    }
    if ((direction & Position.SOUTH) != 0) {
      if (!snapToHeight(myBounds, myWrapSize, SNAP_DELTA)) {
        snapToHeight(myBounds, myFillSize, SNAP_DELTA);
      }
    }

    myFeedback.setBounds(myBounds);

    myTextFeedback.clear();

    addTextSize(myStaticWidth, myBounds.width, myWrapSize.width, myFillSize.width);
    myTextFeedback.append(" x ", SimpleTextAttributes.REGULAR_BOLD_ATTRIBUTES);
    addTextSize(myStaticHeight, myBounds.height, myWrapSize.height, myFillSize.height);

    myTextFeedback.locationTo(myContext.getLocation(), 15);
  }
 private void addTextSize(String staticText, int size, int wrap, int fill) {
   if (staticText == null) {
     if (size == wrap) {
       myTextFeedback.snap("wrap_content");
     } else if (size == fill) {
       myTextFeedback.snap("match_parent");
     } else {
       myTextFeedback.append(Integer.toString(size));
       myTextFeedback.dimension("dp");
     }
   } else {
     if (staticText.length() > 2) {
       int index = staticText.length() - 2;
       String dimension = staticText.substring(index);
       if (ArrayUtil.indexOf(ResourceRenderer.DIMENSIONS, dimension) != -1) {
         myTextFeedback.append(staticText.substring(0, index));
         myTextFeedback.dimension(dimension);
       } else {
         myTextFeedback.append(staticText);
       }
     } else {
       myTextFeedback.append(staticText);
     }
   }
 }
  private void createFeedback() {
    if (myFeedback == null) {
      FeedbackLayer layer = myContext.getArea().getFeedbackLayer();

      myFeedback = new RectangleFeedback(Color.blue, 2);
      layer.add(myFeedback);

      myTextFeedback = new TextFeedback();
      myTextFeedback.setBorder(new LineMarginBorder(0, 5, 3, 0));
      layer.add(myTextFeedback);
      layer.add(myWrapFeedback);
      layer.add(myFillFeedback);

      layer.repaint();
    }
  }
 @Override
 public void addTextInfo(TextFeedback feedback) {
   feedback.append("layout:" + (myHorizontal ? "width " : "height "));
   feedback.snap("wrap_content");
 }