protected void drawToolTip(
      DrawContext dc,
      java.awt.Rectangle viewport,
      String text,
      int x,
      int y,
      ToolTipAttributes attributes) {
    java.awt.geom.Rectangle2D textBounds = this.computeTextBounds(dc, text, attributes.getFont());
    java.awt.geom.Rectangle2D bgBounds =
        this.computeBackgroundBounds(
            dc, textBounds.getWidth(), textBounds.getHeight(), attributes.getInsets());

    java.awt.Point screenPoint = this.adjustDrawPointToViewport(x, y, bgBounds, viewport);
    java.awt.geom.Point2D textTranslation =
        this.computeTextTranslation(dc, textBounds, attributes.getInsets());

    GL2 gl = dc.getGL();
    OGLStackHandler stackHandler = new OGLStackHandler();

    stackHandler.pushModelview(gl);
    try {
      gl.glTranslated(
          screenPoint.getX() + bgBounds.getX(), screenPoint.getY() + bgBounds.getY(), 0);
      this.drawToolTipInterior(dc, bgBounds.getWidth(), bgBounds.getHeight(), attributes);
      this.drawToolTipOutline(dc, bgBounds.getWidth(), bgBounds.getHeight(), attributes);

      gl.glTranslated(textTranslation.getX(), textTranslation.getY(), 0);
      this.drawToolTipText(dc, text, 0, 0, attributes);
    } finally {
      stackHandler.pop(gl);
    }
  }
Esempio n. 2
0
 /**
  * handy little utility for determining the length in pixels the given string will use if drawn
  * into the given Graphics object. Note: perhaps belongs in some utility package.
  */
 public static Dimension stringSize(String str, Graphics g) {
   if (g instanceof Graphics2D) {
     java.awt.geom.Rectangle2D bounds =
         g.getFont().getStringBounds(str, ((Graphics2D) g).getFontRenderContext());
     return new Dimension((int) (bounds.getWidth() + .5), (int) (bounds.getHeight() + .5));
   } else
     return new Dimension(g.getFontMetrics().stringWidth(str), g.getFontMetrics().getHeight());
 }
  protected java.awt.Point adjustDrawPointToViewport(
      int x, int y, java.awt.geom.Rectangle2D bounds, java.awt.Rectangle viewport) {
    if (x + bounds.getMaxX() > viewport.getWidth())
      x = (int) (viewport.getWidth() - bounds.getWidth()) - 1;
    else if (x < 0) x = 0;

    if (y + bounds.getMaxY() > viewport.getHeight())
      y = (int) (viewport.getHeight() - bounds.getHeight()) - 1;
    else if (y < 0) y = 0;

    return new java.awt.Point(x, y);
  }
  @SuppressWarnings({"UnusedDeclaration"})
  protected java.awt.geom.Point2D computeTextTranslation(
      DrawContext dc, java.awt.geom.Rectangle2D textBounds, java.awt.Insets insets) {
    // The text bounds are assumed to come from the return value of a call to
    // TextRenderer.getBounds(). The bounds
    // place the origin in the upper left hand corner, with the y axis increasing downward. The y
    // coordinate in the bounds corresponds to the baseline of the leftmost character.

    return new java.awt.geom.Point2D.Double(
        insets.left - textBounds.getX(),
        insets.bottom + textBounds.getY() + textBounds.getHeight());
  }
Esempio n. 5
0
  public void paint(Graphics g) {
    try {
      Thread.sleep(5);
    } catch (InterruptedException e) {
      e.printStackTrace();
    }
    g.setColor(Color.black);
    g.fillRect(0, 0, width, height);

    g.setColor(Color.darkGray);

    for (int x = 0; x < gpSize; x++) {
      g.drawLine(
          (int) width / gpSize * x + width / gpSize,
          (int) 0,
          (int) width / gpSize * x + width / gpSize,
          (int) height);
    }
    for (int y = 0; y < gpSize; y++) {
      g.drawLine((int) 0, (int) height / gpSize * y, (int) width, (int) height / gpSize * y);
    }

    for (int i = 0; i < gravList.size(); i++) {
      gravList.get(i).draw(g);
    }

    g.setColor(Color.GREEN);
    for (int y = 0; y < numLines; y++) {

      for (int x = 0; x < size; x++) {
        try {
          grid[x][y].draw(g);
        } catch (Exception e) {

        }
      }
    }

    if (!showGuide) {
      go.draw(g);
      info.draw(g);
    } else {
      FontMetrics fm = g.getFontMetrics(g.getFont());
      java.awt.geom.Rectangle2D rect = fm.getStringBounds("DEAL WITH IT.", g);

      int textHeight = (int) (rect.getHeight());
      int textWidth = (int) (rect.getWidth());
      int panelHeight = height;
      int panelWidth = width;

      // Center text horizontally and vertically
      int x2 = (panelWidth - textWidth) / 2;
      int y2 = (panelHeight - textHeight) / 2 + fm.getAscent();

      g.drawString("DEAL WITH IT.", x2, y2);

      g.drawRect(width / 4, height / 4 + 100, width / 2 + 50, height / 4 + 25);

      back.draw(g);
    }

    for (int i = 0; i < boomList.size(); i++) {
      boomList.get(i).draw(g);
    }
  }