Gridarta Editor
EditorActionManager.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.maincontrol;
21 
22 import java.util.ArrayList;
23 import java.util.Collection;
24 import javax.swing.Action;
34 import net.sf.japi.swing.action.ActionBuilder;
35 import net.sf.japi.swing.action.ActionBuilderFactory;
36 import org.jetbrains.annotations.NotNull;
37 import org.jetbrains.annotations.Nullable;
38 
52 public class EditorActionManager<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> {
53 
57  @NotNull
58  private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta");
59 
63  @NotNull
65 
70  @NotNull
71  private final Collection<MapCursorListener<G, A, R>> mapCursorListeners = new ArrayList<>();
72 
76  @Nullable
78 
83  @NotNull
85 
86  @Override
87  public void activeMapViewChanged(@Nullable final MapView<G, A, R> mapView) {
88  final MapView<G, A, R> tmpMapView = currentMapView;
89  if (tmpMapView != null) {
90  for (final MapCursorListener<G, A, R> mapCursorListener : mapCursorListeners) {
91  tmpMapView.getMapCursor().removeMapCursorListener(mapCursorListener);
92  }
93  }
94  currentMapView = mapView;
95  if (mapView != null) {
96  for (final MapCursorListener<G, A, R> mapCursorListener : mapCursorListeners) {
97  mapView.getMapCursor().addMapCursorListener(mapCursorListener);
98  }
99  }
100  }
101 
102  @Override
103  public void mapViewCreated(@NotNull final MapView<G, A, R> mapView) {
104  // ignore
105  }
106 
107  @Override
108  public void mapViewClosing(@NotNull final MapView<G, A, R> mapView) {
109  // ignore
110  }
111 
112  };
113 
119  this.mapViewManager = mapViewManager;
122  }
123 
131  @NotNull
132  public Action createAction(@NotNull final String name, @NotNull final String category, @NotNull final EditorAction editorAction) {
133  addEditorAction(editorAction);
134  return ActionUtils.newAction(ACTION_BUILDER, category, editorAction, name);
135  }
136 
144  public void createActionOptional(@NotNull final String name, @NotNull final String category, @Nullable final EditorAction editorAction) {
145  if (editorAction != null) {
146  createAction(name, category, editorAction);
147  }
148  }
149 
156  public void createToggleAction(@NotNull final String name, @NotNull final String category, @NotNull final EditorAction editorAction) {
157  addEditorAction(editorAction);
158  ActionUtils.newToggleAction(ACTION_BUILDER, category, editorAction, name);
159  }
160 
165  private void addEditorAction(@NotNull final EditorAction editorAction) {
166  if (currentMapView != null) {
167  // MapViewManagerListener instances would not know this
168  throw new IllegalStateException("current map view is unset");
169  }
170 
171  if (editorAction instanceof MapCursorListener) {
172  final MapCursorListener<G, A, R> mapCursorListener = (MapCursorListener<G, A, R>) editorAction;
173  mapCursorListeners.add(mapCursorListener);
174  }
175  if (editorAction instanceof MapViewManagerListener) {
178  }
179  }
180 
181 }
name
name
Definition: ArchetypeTypeSetParserTest-ignoreDefaultAttribute1-result.txt:2
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.gui.map.mapview.MapViewManager
Maintains all map views.
Definition: MapViewManager.java:38
net.sf.gridarta.maincontrol.EditorActionManager.createToggleAction
void createToggleAction(@NotNull final String name, @NotNull final String category, @NotNull final EditorAction editorAction)
Initializes a new action.
Definition: EditorActionManager.java:156
net.sf
net.sf.gridarta.gui.map.mapview.MapViewManagerListener
Interface for listeners interested in events related to {} instances.
Definition: MapViewManagerListener.java:33
net.sf.gridarta.maincontrol.EditorActionManager
Maintains a set of EditorAction instances and calls their event listener callbacks.
Definition: EditorActionManager.java:52
net.sf.gridarta.maincontrol.EditorActionManager.createActionOptional
void createActionOptional(@NotNull final String name, @NotNull final String category, @Nullable final EditorAction editorAction)
Initializes a new action.
Definition: EditorActionManager.java:144
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.maincontrol.EditorActionManager.mapCursorListeners
final Collection< MapCursorListener< G, A, R > > mapCursorListeners
The EditorActions that are interested in {} events.
Definition: EditorActionManager.java:71
net.sf.gridarta.model.mapcursor.MapCursorListener
Interface for listeners listening to MapCursor related events.
Definition: MapCursorListener.java:36
net.sf.gridarta.utils.ActionUtils
Utility class implementing Action related functions.
Definition: ActionUtils.java:33
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.maincontrol.EditorActionManager.ACTION_BUILDER
static final ActionBuilder ACTION_BUILDER
The ActionBuilder.
Definition: EditorActionManager.java:58
net.sf.gridarta.maincontrol.EditorActionManager.mapViewManager
final MapViewManager< G, A, R > mapViewManager
The MapViewManager for tracking open maps.
Definition: EditorActionManager.java:64
net.sf.gridarta.maincontrol.EditorActionManager.EditorActionManager
EditorActionManager(@NotNull final MapViewManager< G, A, R > mapViewManager)
Creates a new instance.
Definition: EditorActionManager.java:118
net.sf.gridarta.model.gameobject
GameObjects are the objects based on Archetypes found on maps.
Definition: AbstractGameObject.java:20
net.sf.gridarta.maincontrol.EditorActionManager.mapViewManagerListener
final MapViewManagerListener< G, A, R > mapViewManagerListener
The map view manager listener used to detect changed current maps.
Definition: EditorActionManager.java:84
net
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.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.model.mapcursor.MapCursor.removeMapCursorListener
void removeMapCursorListener(@NotNull final MapCursorListener< G, A, R > listener)
Remove a MapCursorListener.
Definition: MapCursor.java:427
net.sf.gridarta.maincontrol.EditorActionManager.createAction
Action createAction(@NotNull final String name, @NotNull final String category, @NotNull final EditorAction editorAction)
Initializes a new action.
Definition: EditorActionManager.java:132
net.sf.gridarta.model.mapcursor.MapCursor.addMapCursorListener
void addMapCursorListener(@NotNull final MapCursorListener< G, A, R > listener)
Register a MapCursorListener.
Definition: MapCursor.java:419
net.sf.gridarta.maincontrol.EditorActionManager.currentMapView
MapView< G, A, R > currentMapView
The active map view, or.
Definition: EditorActionManager.java:77
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Reflects an Archetype.
Definition: Archetype.java:41
net.sf.gridarta.utils.ActionUtils.newAction
static Action newAction(@NotNull final ActionBuilder actionBuilder, @NotNull final String category, @NotNull final EditorAction editorAction, @NotNull final String key)
Creates a new Action instance.
Definition: ActionUtils.java:204
net.sf.gridarta.utils.ActionUtils.newToggleAction
static Action newToggleAction(@NotNull final ActionBuilder actionBuilder, @NotNull final String category, @NotNull final EditorAction editorAction, @NotNull final String key)
Creates a new Action instance.
Definition: ActionUtils.java:222
net.sf.gridarta.gui.map
Base classes for rendering maps.
Definition: AbstractPerMapDialogManager.java:20
net.sf.gridarta.gui.map.mapview.MapViewManager.getActiveMapView
MapView< G, A, R > getActiveMapView()
Returns the active top map view we are working with.
Definition: MapViewManager.java:174
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.maincontrol.EditorActionManager.addEditorAction
void addEditorAction(@NotNull final EditorAction editorAction)
Records the event types an EditorAction is interested in.
Definition: EditorActionManager.java:165
net.sf.gridarta.utils.EditorAction
A global editor action.
Definition: EditorAction.java:29
net.sf.gridarta.model.mapcursor
Definition: MapCursor.java:20
net.sf.gridarta.gui.map.mapview.MapViewManager.addMapViewManagerListener
void addMapViewManagerListener(@NotNull final MapViewManagerListener< G, A, R > listener)
Adds a listener to be notified.
Definition: MapViewManager.java:156
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20