Gridarta Editor
MapMouseListener.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2015 The Gridarta Developers.
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18  */
19 
20 package net.sf.gridarta.gui.mapuserlistener;
21 
22 import java.awt.Point;
23 import java.awt.event.MouseEvent;
24 import java.awt.event.MouseListener;
25 import java.awt.event.MouseMotionListener;
34 import org.jetbrains.annotations.NotNull;
35 import org.jetbrains.annotations.Nullable;
36 
43 public class MapMouseListener<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> {
44 
49  @NotNull
51 
55  @NotNull
56  private final MapRenderer renderer;
57 
61  @NotNull
62  private final Point tmpPoint = new Point();
63 
68  @NotNull
70 
74  @NotNull
75  private final MouseListener mouseListener = new MouseListener() {
76 
77  @Override
78  public void mouseClicked(@NotNull final MouseEvent e) {
79  final MouseOpListener<G, A, R> mouseOpListener = getMouseOperation(e);
80  if (mouseOpListener != null) {
81  mouseOpListener.clicked(mouseOpEvent);
82  }
83  }
84 
85  @Override
86  public void mousePressed(@NotNull final MouseEvent e) {
87  final MouseOpListener<G, A, R> mouseOpListener = getMouseOperation(e);
88  if (mouseOpListener != null) {
89  mouseOpListener.pressed(mouseOpEvent);
90  }
91  }
92 
93  @Override
94  public void mouseReleased(@NotNull final MouseEvent e) {
95  final MouseOpListener<G, A, R> mouseOpListener = getMouseOperation(e);
96  if (mouseOpListener != null) {
97  mouseOpListener.released(mouseOpEvent);
98  }
99  }
100 
101  @Override
102  public void mouseEntered(@NotNull final MouseEvent e) {
103  // ignore
104  }
105 
106  @Override
107  public void mouseExited(@NotNull final MouseEvent e) {
108  // ignore
109  }
110 
111  };
112 
116  @NotNull
117  private final MouseMotionListener mouseMotionListener = new MouseMotionListener() {
118 
119  @Override
120  public void mouseDragged(@NotNull final MouseEvent e) {
121  final MouseOpListener<G, A, R> mouseOpListener = getMouseOperation(e);
122  if (mouseOpListener != null) {
123  mouseOpListener.dragged(mouseOpEvent);
124  }
125  }
126 
127  @Override
128  public void mouseMoved(@NotNull final MouseEvent e) {
129  final MouseOpListener<G, A, R> mouseOpListener = getMouseOperation(e);
130  if (mouseOpListener != null) {
131  mouseOpListener.moved(mouseOpEvent);
132  }
133  }
134 
135  };
136 
143  public MapMouseListener(@NotNull final MapRenderer renderer, @NotNull final ToolPalette<G, A, R> toolPalette, @NotNull final MapView<G, A, R> mapView) {
144  this.toolPalette = toolPalette;
145  this.renderer = renderer;
148  mouseOpEvent = new MouseOpEvent<>(mapView);
149  }
150 
154  public void closeNotify() {
157  }
158 
163  private void initEvent(@NotNull final MouseEvent event) {
164  mouseOpEvent.setButton(event.getButton());
165  mouseOpEvent.setId(event.getID());
167  mouseOpEvent.setModifiers(event.getModifiersEx());
168  mouseOpEvent.setClickCount(event.getClickCount());
169  event.consume();
170  }
171 
177  @Nullable
178  private MouseOpListener<G, A, R> getMouseOperation(@NotNull final MouseEvent event) {
179  initEvent(event);
181  }
182 
188  @Nullable
189  private Point getMapLocation(@NotNull final MouseEvent event) {
190  return renderer.getSquareLocationAt(event.getPoint(), tmpPoint) ? tmpPoint : null;
191  }
192 
193 }
net.sf.gridarta.gui.map.event.MouseOpEvent
Definition: MouseOpEvent.java:37
net.sf.gridarta.gui.panel
net.sf.gridarta.gui.map.renderer.MapRenderer.addMouseMotionListener
void addMouseMotionListener(@NotNull MouseMotionListener mouseMotionListener)
net.sf.gridarta.gui.mapuserlistener.MapMouseListener.getMouseOperation
MouseOpListener< G, A, R > getMouseOperation(@NotNull final MouseEvent event)
Definition: MapMouseListener.java:178
net.sf.gridarta.gui.mapuserlistener.MapMouseListener
Definition: MapMouseListener.java:43
net.sf.gridarta.gui.mapuserlistener.MapMouseListener.mouseMotionListener
final MouseMotionListener mouseMotionListener
Definition: MapMouseListener.java:117
net.sf.gridarta
net.sf.gridarta.gui.map.event.MouseOpListener.clicked
void clicked(@NotNull MouseOpEvent< G, A, R > e)
net.sf.gridarta.gui.map.event.MouseOpListener
Definition: MouseOpListener.java:31
net.sf
net.sf.gridarta.gui.mapuserlistener.MapMouseListener.tmpPoint
final Point tmpPoint
Definition: MapMouseListener.java:62
net.sf.gridarta.gui.map.renderer
Definition: AbstractIsoMapRenderer.java:20
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.gameobject.GameObject
Definition: GameObject.java:36
net.sf.gridarta.gui.map.event.MouseOpListener.moved
void moved(@NotNull MouseOpEvent< G, A, R > e)
net.sf.gridarta.gui.map.event.MouseOpEvent.setClickCount
void setClickCount(final int clickCount)
Definition: MouseOpEvent.java:150
net.sf.gridarta.gui
net.sf.gridarta.gui.map.renderer.MapRenderer.addMouseListener
void addMouseListener(@NotNull MouseListener l)
net.sf.gridarta.gui.panel.tools.ToolPalette.getTool
MouseOpListener< G, A, R > getTool(final MouseOpEvent< G, A, R > event)
Definition: ToolPalette.java:113
net.sf.gridarta.gui.map.event.MouseOpListener.dragged
void dragged(@NotNull MouseOpEvent< G, A, R > e)
net.sf.gridarta.model.gameobject
Definition: AbstractGameObject.java:20
net.sf.gridarta.gui.map.event.MouseOpListener.released
void released(@NotNull MouseOpEvent< G, A, R > e)
net
net.sf.gridarta.gui.map.event.MouseOpEvent.setId
void setId(final int id)
Definition: MouseOpEvent.java:172
net.sf.gridarta.model.maparchobject.MapArchObject
Definition: MapArchObject.java:40
net.sf.gridarta.gui.map.mapview
Definition: AbstractMapView.java:20
net.sf.gridarta.gui.map.event
Definition: MouseOpEvent.java:20
net.sf.gridarta.gui.map.mapview.MapView
Definition: MapView.java:43
net.sf.gridarta.gui.map.event.MouseOpEvent.setButton
void setButton(final int button)
Definition: MouseOpEvent.java:138
net.sf.gridarta.gui.panel.tools
Definition: AbstractTool.java:20
net.sf.gridarta.gui.mapuserlistener.MapMouseListener.closeNotify
void closeNotify()
Definition: MapMouseListener.java:154
net.sf.gridarta.gui.map.event.MouseOpEvent.setMapLocation
void setMapLocation(final Point mapLocation)
Definition: MouseOpEvent.java:142
net.sf.gridarta.gui.panel.tools.ToolPalette
Definition: ToolPalette.java:50
net.sf.gridarta.gui.map.event.MouseOpListener.pressed
void pressed(@NotNull MouseOpEvent< G, A, R > e)
net.sf.gridarta.gui.mapuserlistener.MapMouseListener.toolPalette
final ToolPalette< G, A, R > toolPalette
Definition: MapMouseListener.java:50
net.sf.gridarta.gui.map.renderer.MapRenderer.removeMouseListener
void removeMouseListener(@NotNull MouseListener l)
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Definition: Archetype.java:41
net.sf.gridarta.gui.mapuserlistener.MapMouseListener.mouseOpEvent
final MouseOpEvent< G, A, R > mouseOpEvent
Definition: MapMouseListener.java:69
net.sf.gridarta.gui.mapuserlistener.MapMouseListener.MapMouseListener
MapMouseListener(@NotNull final MapRenderer renderer, @NotNull final ToolPalette< G, A, R > toolPalette, @NotNull final MapView< G, A, R > mapView)
Definition: MapMouseListener.java:143
net.sf.gridarta.gui.map
Definition: AbstractPerMapDialogManager.java:20
net.sf.gridarta.gui.mapuserlistener.MapMouseListener.mouseListener
final MouseListener mouseListener
Definition: MapMouseListener.java:75
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.gui.map.renderer.MapRenderer
Definition: MapRenderer.java:36
net.sf.gridarta.gui.mapuserlistener.MapMouseListener.getMapLocation
Point getMapLocation(@NotNull final MouseEvent event)
Definition: MapMouseListener.java:189
net.sf.gridarta.gui.mapuserlistener.MapMouseListener.renderer
final MapRenderer renderer
Definition: MapMouseListener.java:56
net.sf.gridarta.gui.map.renderer.MapRenderer.removeMouseMotionListener
void removeMouseMotionListener(@NotNull MouseMotionListener mouseMotionListener)
net.sf.gridarta.gui.map.event.MouseOpEvent.setModifiers
void setModifiers(final int modifiers)
Definition: MouseOpEvent.java:146
net.sf.gridarta.gui.map.renderer.MapRenderer.getSquareLocationAt
boolean getSquareLocationAt(@NotNull Point point, @NotNull Point retPoint)
net.sf.gridarta.gui.mapuserlistener.MapMouseListener.initEvent
void initEvent(@NotNull final MouseEvent event)
Definition: MapMouseListener.java:163