private void show(boolean fixed) {
   this.affixed = fixed;
   if (panner == null) {
     panner = new Panner(target);
     panner.setTransparency(transparency);
     panner.setPreserveAspect(preserveAspect);
   }
   attach(panner, !fixed);
 }
 public void hide() {
   this.affixed = false;
   if (panner != null) {
     lastHidden = System.currentTimeMillis();
     panner.detach();
     panner = null;
   }
 }
  private void attach(Panner panner, boolean nextCorner) {

    Rectangle visible = target.getVisibleRect();
    Dimension sz = size;
    if (sz == null) {
      sz = new Dimension(visible.width, visible.height);
      sz.width = sz.width * percent / 100;
      sz.height = sz.height * percent / 100;
    }
    panner.setSize(sz);
    if (corner != CENTER && nextCorner) {
      if (System.currentTimeMillis() - lastHidden < MOVE_TIMEOUT) {
        corner = (corner + 1) & 0x3;
      } else {
        corner = 0;
      }
    }
    int x = visible.x;
    int y = visible.y;
    switch (corner) {
      case UL:
        x += offset.x;
        y += offset.y;
        break;
      case UR:
        x += visible.width - offset.x - panner.getPreferredSize().width;
        y += offset.y;
        break;
      case LR:
        x += visible.width - offset.x - panner.getPreferredSize().width;
        y += visible.height - offset.y - panner.getPreferredSize().height;
        break;
      case LL:
        x += offset.x;
        y += visible.height - offset.y - panner.getPreferredSize().height;
        break;
      case CENTER:
      default:
        x += (visible.width - panner.getPreferredSize().width) / 2;
        y += (visible.height - panner.getPreferredSize().height) / 2;
        break;
    }
    panner.attach(x, y);
    panner.revalidate();
    panner.repaint();
  }
 public void setTransparency(float t) {
   this.transparency = t;
   if (panner != null) panner.setTransparency(t);
 }
 public void setPreserveAspect(boolean preserve) {
   this.preserveAspect = preserve;
   if (panner != null) panner.setPreserveAspect(preserve);
 }