@Override public void setVisible(boolean b) { // In case something changed while the dialog was closed... enforceButtonRules(); if (b) { SwingUtil.centerOver(this, TabletopTool.getFrame()); } super.setVisible(b); }
/** * @see * com.t3.client.tool.drawing.RadiusTemplateTool#handleMouseMovement(java.awt.event.MouseEvent) */ @Override protected void handleMouseMovement(MouseEvent e) { // Set the anchor ZonePoint vertex = template.getVertex(); if (!anchorSet) { setCellAtMouse(e, vertex); controlOffset = null; // Move the anchor if control pressed. } else if (SwingUtil.isControlDown(e)) { handleControlOffset(e, vertex); // Add or delete a new cell } else { // Get mouse point as an offset from the vertex LineTemplate lt = ((LineTemplate) template); ZonePoint mouse = new ScreenPoint(e.getX(), e.getY()).convertToZone(renderer); CellPoint mousePoint = renderer.getZone().getGrid().convert(mouse); CellPoint vertexPoint = renderer.getZone().getGrid().convert(lt.getVertex()); mousePoint.x = mousePoint.x - vertexPoint.x; mousePoint.y = mousePoint.y - vertexPoint.y; // Compare to the second to last point, if == delete last point List<CellPoint> path = lt.getPath(); CellPoint lastPoint = path.get(path.size() - 1); int dx = mousePoint.x - lastPoint.x; int dy = mousePoint.y - lastPoint.y; if (dx != 0 && dy == 0 || dy != 0 && dx == 0) { int count = Math.max(Math.abs(dy), Math.abs(dx)); dx = dx == 0 ? 0 : dx / Math.abs(dx); dy = dy == 0 ? 0 : dy / Math.abs(dy); for (int i = 1; i <= count; i++) { CellPoint current = lt.getPointFromPool(lastPoint.x + dx * i, lastPoint.y + dy * i); if (path.size() > 1 && path.get(path.size() - 2).equals(current)) { lt.addPointToPool(path.remove(path.size() - 1)); lt.addPointToPool(current); } else { path.add(current); } // endif } // endfor } // endif renderer.repaint(); controlOffset = null; } // endif }
@Override protected void paintComponent(Graphics g) { // Image Dimension size = getSize(); if (img != null) { Dimension imgSize = new Dimension(img.getWidth(null), img.getHeight(null)); SwingUtil.constrainTo(imgSize, size.width, size.height); // Border int x = (size.width - imgSize.width) / 2; int y = (size.height - imgSize.height) / 2; g.drawImage(img, x, y, imgSize.width, imgSize.height, null); g.setColor(Color.black); g.drawRect(x, y, imgSize.width - 1, imgSize.height - 1); } }