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); }