Package net.alteiar.campaign.player.gui.centerViews.map.listener.map.state

Source Code of net.alteiar.campaign.player.gui.centerViews.map.listener.map.state.ShowHidePolygonMapListener

package net.alteiar.campaign.player.gui.centerViews.map.listener.map.state;

import java.awt.Cursor;
import java.awt.Point;
import java.awt.Polygon;
import java.util.List;

import javax.swing.SwingUtilities;

import net.alteiar.beans.map.filter.ManualMapFilter;
import net.alteiar.campaign.CampaignClient;
import net.alteiar.campaign.player.gui.centerViews.map.MapEditableInfo;
import net.alteiar.campaign.player.gui.centerViews.map.drawable.mouse.PolygonToMouse;
import net.alteiar.campaign.player.gui.centerViews.map.listener.MapEvent;
import net.alteiar.campaign.player.gui.centerViews.map.listener.map.ActionMapListener;
import net.alteiar.shared.UniqueID;

public class ShowHidePolygonMapListener extends ActionMapListener {
  private final Boolean isShow;

  private final PolygonToMouse draw;

  public ShowHidePolygonMapListener(MapEditableInfo mapInfo, Point begin,
      Boolean isShow) {
    super(mapInfo);

    draw = new PolygonToMouse(mapInfo, begin);
    mapInfo.addDrawable(draw);
    this.isShow = isShow;
  }

  @Override
  public void mouseClicked(MapEvent event) {
    if (SwingUtilities.isLeftMouseButton(event.getMouseEvent())) {
      draw.addPoint(event.getMapPosition());
    } else if (SwingUtilities.isRightMouseButton(event.getMouseEvent())) {
      finishShowHide();
    }
  }

  public void finishShowHide() {
    if (isShow) {
      showPolygon(draw.getPts());
    } else {
      hidePolygon(draw.getPts());
    }
    getMapInfo().getMapListener().defaultListener();
  }

  @Override
  public void startTask() {
    this.getMapInfo().getPanelMap()
        .setCursor(new Cursor(Cursor.CROSSHAIR_CURSOR));
  }

  @Override
  public void endTask() {
    getMapInfo().removeDrawable(draw);
    this.getMapInfo().getPanelMap()
        .setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
  }

  private ManualMapFilter getMapFilter() {
    UniqueID filterId = getMapInfo().getMap().getFilter();
    return CampaignClient.getInstance().getBean(filterId);
  }

  private void showPolygon(List<Point> cwPts) {
    ManualMapFilter filter = getMapFilter();
    int[] x = new int[cwPts.size()];
    int[] y = new int[cwPts.size()];

    for (int i = 0; i < cwPts.size(); i++) {
      x[i] = cwPts.get(i).x;
      y[i] = cwPts.get(i).y;
    }

    filter.showPolygon(new Polygon(x, y, cwPts.size()));
  }

  private void hidePolygon(List<Point> cwPts) {
    ManualMapFilter filter = getMapFilter();
    int[] x = new int[cwPts.size()];
    int[] y = new int[cwPts.size()];

    for (int i = 0; i < cwPts.size(); i++) {
      x[i] = cwPts.get(i).x;
      y[i] = cwPts.get(i).y;
    }

    filter.hidePolygon(new Polygon(x, y, cwPts.size()));
  }
}
TOP

Related Classes of net.alteiar.campaign.player.gui.centerViews.map.listener.map.state.ShowHidePolygonMapListener

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.