code: public String toShortString(FormLayout layout) {
          StringBuffer buffer = new StringBuffer("(");
          buffer.append(formatInt(gridX));
          buffer.append(", ");
          buffer.append(formatInt(gridY));
          buffer.append(", ");
          buffer.append(formatInt(gridWidth));
          buffer.append(", ");
          buffer.append(formatInt(gridHeight));
          buffer.append(", \"");
          buffer.append(hAlign.abbreviation());
          if (hAlign == DEFAULT && layout != null) {
              buffer.append('=');
              ColumnSpec colSpec = gridWidth == 1
                      ? layout.getColumnSpec(gridX)
                      : null;
              buffer.append(concreteAlignment(hAlign, colSpec).abbreviation());
          }
          buffer.append(", ");
          buffer.append(vAlign.abbreviation());
          if (vAlign == DEFAULT && layout != null) {
              buffer.append('=');
              RowSpec rowSpec = gridHeight == 1
                      ? layout.getRowSpec(gridY)
                      : null;
              buffer.append(concreteAlignment(vAlign, rowSpec).abbreviation());
          }
          buffer.append("\"");
          if (!EMPTY_INSETS.equals(insets)) {
              buffer.append(", ");
              buffer.append(insets);
          }
          if (honorsVisibility != null) {
              buffer.append(honorsVisibility.booleanValue()
                      ? "honors visibility"
                      : "ignores visibility");
          }
  
          buffer.append(')');
          return buffer.toString();
      }
docs: Returns a short string representation of this constraints object. This method can use the
  given {@code FormLayout} to display extra information how default alignments are mapped to
  concrete alignments. Therefore it asks the related column and row as specified by this
  constraints object.
  
  @param layout the layout to be presented as a string
  @return a short string representation of this constraints object