Gridarta Editor
ExitConnectorController.java
Go to the documentation of this file.
1 /*
2  * Gridarta MMORPG map editor for Crossfire, Daimonin and similar games.
3  * Copyright (C) 2000-2023 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.exitconnector;
21 
22 import java.awt.Point;
23 import javax.swing.Action;
34 import net.sf.japi.swing.action.ActionMethod;
35 import org.jetbrains.annotations.NotNull;
36 import org.jetbrains.annotations.Nullable;
37 
42 public class ExitConnectorController<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> implements EditorAction, MapViewManagerListener<G, A, R> {
43 
47  @NotNull
49 
53  @Nullable
54  private Action aExitCopy;
55 
59  @Nullable
60  private Action aExitPaste;
61 
65  @Nullable
66  private Action aExitConnect;
67 
71  @Nullable
73 
77  @NotNull
79 
80  @Override
81  public void exitLocationChanged(@Nullable final ExitLocation exitLocation) {
83  }
84 
85  @Override
86  public void pasteExitNameChanged(final boolean pasteExitName) {
87  // ignore
88  }
89 
90  @Override
91  public void autoCreateExitChanged(final boolean pasteExitName) {
93  }
94 
95  @Override
96  public void exitArchetypeNameChanged(@NotNull final String exitArchetypeName) {
97  // ignore
98  }
99 
100  };
101 
107  public ExitConnectorController(@NotNull final ExitConnectorActions<G, A, R> exitConnectorActions, @NotNull final ExitConnectorModel exitConnectorModel) {
108  this.exitConnectorActions = exitConnectorActions;
109  exitConnectorModel.addExitConnectorModelListener(exitConnectorModelListener);
110  }
111 
115  @ActionMethod
116  public void exitCopy() {
117  doExitCopy(true);
118  }
119 
123  @ActionMethod
124  public void exitPaste() {
125  doExitPaste(true);
126  }
127 
131  @ActionMethod
132  public void exitConnect() {
133  doExitConnect(true);
134  }
135 
139  private void refreshActions() {
140  if (aExitCopy != null) {
141  aExitCopy.setEnabled(doExitCopy(false));
142  }
143  if (aExitPaste != null) {
144  aExitPaste.setEnabled(doExitPaste(false));
145  }
146  if (aExitConnect != null) {
147  aExitConnect.setEnabled(doExitConnect(false));
148  }
149  }
150 
156  private boolean doExitCopy(final boolean performAction) {
157  final MapView<G, A, R> mapView = currentMapView;
158  if (mapView == null) {
159  // no active map view ==> no location to remember
160  return false;
161  }
162 
163  final Point location = mapView.getMapCursor().getLocation();
164  return exitConnectorActions.doExitCopy(performAction, mapView.getMapControl(), location);
165  }
166 
172  private boolean doExitPaste(final boolean performAction) {
173  final MapView<G, A, R> mapView = currentMapView;
174  if (mapView == null) {
175  return false;
176  }
177 
178  final Point targetLocation = mapView.getMapCursor().getLocation();
179  return exitConnectorActions.doExitPaste(performAction, mapView.getMapControl(), targetLocation);
180  }
181 
187  private boolean doExitConnect(final boolean performAction) {
188  final MapView<G, A, R> mapView = currentMapView;
189  if (mapView == null) {
190  return false;
191  }
192 
193  final Point targetLocation = mapView.getMapCursor().getLocation();
194  return exitConnectorActions.doExitConnect(performAction, mapView.getMapControl(), targetLocation);
195  }
196 
197  @Override
198  public void setAction(@NotNull final Action action, @NotNull final String name) {
199  switch (name) {
200  case "exitCopy":
201  aExitCopy = action;
202  break;
203 
204  case "exitPaste":
205  aExitPaste = action;
206  break;
207 
208  case "exitConnect":
209  aExitConnect = action;
210  break;
211 
212  default:
213  throw new IllegalArgumentException("unsupported action name: " + name);
214  }
215  refreshActions();
216  }
217 
218  @Override
219  public void activeMapViewChanged(@Nullable final MapView<G, A, R> mapView) {
220  currentMapView = mapView;
221  refreshActions();
222  }
223 
224  @Override
225  public void mapViewCreated(@NotNull final MapView<G, A, R> mapView) {
226  // ignore
227  }
228 
229  @Override
230  public void mapViewClosing(@NotNull final MapView<G, A, R> mapView) {
231  // ignore
232  }
233 
234 }
name
name
Definition: ArchetypeTypeSetParserTest-ignoreDefaultAttribute1-result.txt:2
net.sf.gridarta.gui.exitconnector.ExitConnectorController.aExitCopy
Action aExitCopy
The action for "copy exit".
Definition: ExitConnectorController.java:54
net.sf.gridarta.gui.exitconnector.ExitConnectorController.exitConnectorModelListener
final ExitConnectorModelListener exitConnectorModelListener
The ExitConnectorModelListener registered to the model.
Definition: ExitConnectorController.java:78
net.sf.gridarta.model.exitconnector.ExitLocation
Stores information about a remembered exit location.
Definition: ExitLocation.java:35
net.sf.gridarta.gui.map.mapview.MapView.getMapControl
MapControl< G, A, R > getMapControl()
Return the controller of this view.
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.gui.exitconnector.ExitConnectorController.activeMapViewChanged
void activeMapViewChanged(@Nullable final MapView< G, A, R > mapView)
This event handler is called when the current map view has changed.
Definition: ExitConnectorController.java:219
net.sf
net.sf.gridarta.gui.exitconnector.ExitConnectorController.exitCopy
void exitCopy()
Action method for "copy exit".
Definition: ExitConnectorController.java:116
net.sf.gridarta.gui.map.mapview.MapViewManagerListener
Interface for listeners interested in events related to {} instances.
Definition: MapViewManagerListener.java:33
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.gameobject.GameObject
Reflects a game object (object on a map).
Definition: GameObject.java:36
net.sf.gridarta.actions.ExitConnectorActions.doExitCopy
boolean doExitCopy(final boolean performAction, @NotNull final MapControl< G, A, R > mapControl, @NotNull final Point location)
Executes the "exit copy" action.
Definition: ExitConnectorActions.java:110
net.sf.gridarta.gui
Graphical User Interface of Gridarta.
net.sf.gridarta.gui.map.mapview.MapView.getMapCursor
MapCursor< G, A, R > getMapCursor()
Returns the MapCursor of this view.
net.sf.gridarta.gui.exitconnector.ExitConnectorController.doExitCopy
boolean doExitCopy(final boolean performAction)
Performs or checks availability of the "exit copy" action.
Definition: ExitConnectorController.java:156
net.sf.gridarta.gui.exitconnector.ExitConnectorController.aExitConnect
Action aExitConnect
The action for "connect exits".
Definition: ExitConnectorController.java:66
net.sf.gridarta.model.gameobject
GameObjects are the objects based on Archetypes found on maps.
Definition: AbstractGameObject.java:20
net
net.sf.gridarta.gui.exitconnector.ExitConnectorController.mapViewClosing
void mapViewClosing(@NotNull final MapView< G, A, R > mapView)
This event handler is called when a map view is to be closed.
Definition: ExitConnectorController.java:230
net.sf.gridarta.model.maparchobject.MapArchObject
Interface for MapArchObjects.
Definition: MapArchObject.java:40
net.sf.gridarta.gui.map.mapview
Definition: AbstractMapView.java:20
net.sf.gridarta.model.mapcursor.MapCursor.getLocation
Point getLocation()
Get position of cursor.
Definition: MapCursor.java:227
net.sf.gridarta.gui.map.mapview.MapView
A map view consists of a map grid and a map cursor, and is attached to a map control.
Definition: MapView.java:43
net.sf.gridarta.gui.exitconnector.ExitConnectorController.doExitPaste
boolean doExitPaste(final boolean performAction)
Performs or checks availability of the "exit paste" action.
Definition: ExitConnectorController.java:172
net.sf.gridarta.gui.exitconnector.ExitConnectorController.exitPaste
void exitPaste()
Action method for "paste exit".
Definition: ExitConnectorController.java:124
net.sf.gridarta.model.exitconnector
Definition: AbstractExitConnectorModel.java:20
net.sf.gridarta.gui.exitconnector.ExitConnectorController.refreshActions
void refreshActions()
Updates the enabled state of all actions.
Definition: ExitConnectorController.java:139
net.sf.gridarta.gui.exitconnector.ExitConnectorController.exitConnect
void exitConnect()
Action method for "connect exit".
Definition: ExitConnectorController.java:132
net.sf.gridarta.actions.ExitConnectorActions
Utility class implementing actions that operate on ExitConnectorModels.
Definition: ExitConnectorActions.java:47
net.sf.gridarta.gui.exitconnector.ExitConnectorController.ExitConnectorController
ExitConnectorController(@NotNull final ExitConnectorActions< G, A, R > exitConnectorActions, @NotNull final ExitConnectorModel exitConnectorModel)
Creates a new instance.
Definition: ExitConnectorController.java:107
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Reflects an Archetype.
Definition: Archetype.java:41
net.sf.gridarta.gui.exitconnector.ExitConnectorController.aExitPaste
Action aExitPaste
The action for "paste exit".
Definition: ExitConnectorController.java:60
net.sf.gridarta.gui.map
Base classes for rendering maps.
Definition: AbstractPerMapDialogManager.java:20
net.sf.gridarta.gui.exitconnector.ExitConnectorController
The controller of the exit connector.
Definition: ExitConnectorController.java:42
net.sf.gridarta.gui.exitconnector.ExitConnectorController.doExitConnect
boolean doExitConnect(final boolean performAction)
Performs or checks availability of the "exit connect" action.
Definition: ExitConnectorController.java:187
net.sf.gridarta.gui.exitconnector.ExitConnectorController.mapViewCreated
void mapViewCreated(@NotNull final MapView< G, A, R > mapView)
This event handler is called when a map view was created.
Definition: ExitConnectorController.java:225
net.sf.gridarta.actions
Definition: AbstractServerActions.java:20
net.sf.gridarta.gui.exitconnector.ExitConnectorController.setAction
void setAction(@NotNull final Action action, @NotNull final String name)
Sets the Action instance for this editor action.
Definition: ExitConnectorController.java:198
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.model.exitconnector.ExitConnectorModel
Stores information needed by the exit connector.
Definition: ExitConnectorModel.java:29
net.sf.gridarta.utils.EditorAction
A global editor action.
Definition: EditorAction.java:29
net.sf.gridarta.gui.exitconnector.ExitConnectorController.exitConnectorActions
final ExitConnectorActions< G, A, R > exitConnectorActions
The actions for this controller.
Definition: ExitConnectorController.java:48
net.sf.gridarta.model.exitconnector.ExitConnectorModelListener
Interface for listeners interested in ExitConnectorModel related events.
Definition: ExitConnectorModelListener.java:31
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20
net.sf.gridarta.actions.ExitConnectorActions.doExitConnect
boolean doExitConnect(final boolean performAction, @NotNull final MapControl< G, A, R > mapControl, @NotNull final Point targetLocation)
Executes the "exit connect" action.
Definition: ExitConnectorActions.java:189
net.sf.gridarta.gui.exitconnector.ExitConnectorController.currentMapView
MapView< G, A, R > currentMapView
The active MapView or.
Definition: ExitConnectorController.java:72
net.sf.gridarta.actions.ExitConnectorActions.doExitPaste
boolean doExitPaste(final boolean performAction, @NotNull final MapControl< G, A, R > mapControl, @NotNull final Point targetLocation)
Executes the "exit paste" action.
Definition: ExitConnectorActions.java:133