/* * Copyright (c) 2014 tabletoptool.com team. * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Public License v3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/gpl.html * * Contributors: * rptools.com team - initial implementation * tabletoptool.com team - further development */ package com.t3.client.tool.drawing; import java.awt.Color; import java.awt.Graphics2D; import java.awt.event.MouseEvent; import java.awt.geom.Area; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.ImageIcon; import javax.swing.SwingUtilities; import com.t3.client.AppStyle; import com.t3.client.TabletopTool; import com.t3.client.tool.DefaultTool; import com.t3.client.ui.zone.ZoneOverlay; import com.t3.client.ui.zone.ZoneRenderer; import com.t3.model.Zone; /** * Tool for filling in enclosed areas of topology */ public class FillTopologyTool extends DefaultTool implements ZoneOverlay { private static final long serialVersionUID = -2125841145363502135L; public FillTopologyTool() { try { setIcon(new ImageIcon(ImageIO.read(getClass().getClassLoader().getResourceAsStream("com/t3/client/image/tool/top-blue-free.png")))); } catch (IOException ioe) { ioe.printStackTrace(); } } @Override public String getTooltip() { return "tool.filltopology.tooltip"; } @Override public String getInstructions() { return "tool.filltopology.instructions"; } @Override public void mouseClicked(MouseEvent e) { if (!SwingUtilities.isLeftMouseButton(e)) { return; } // ZonePoint zp = new ScreenPoint(e.getX(), e.getY()).convertToZone(renderer); // Area holeArea = renderer.getTopologyAreaData().getHoleAt(zp.x, zp.y); // if (holeArea == null) { // TabletopTool.showError("Must click in an enclosed area"); // return; // } // // renderer.getZone().addTopology(holeArea); // TabletopTool.serverCommand().addTopology(renderer.getZone().getId(), holeArea); renderer.repaint(); } @Override public void paintOverlay(ZoneRenderer renderer, Graphics2D g2) { Graphics2D g = (Graphics2D)g2.create(); Color oldColor = g.getColor(); if (TabletopTool.getPlayer().isGM()) { Zone zone = renderer.getZone(); Area topology = zone.getTopology(); double scale = renderer.getScale(); g.translate(renderer.getViewOffsetX(), renderer.getViewOffsetY()); g.scale(scale, scale); g.setColor(AppStyle.topologyColor); g.fill(topology); g.setColor(oldColor); } } }