Gridarta Editor
InsertArchAction.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.action;
21 
22 import javax.swing.Action;
31 import net.sf.japi.swing.action.ActionMethod;
32 import org.jetbrains.annotations.NotNull;
33 import org.jetbrains.annotations.Nullable;
34 
39 public class InsertArchAction<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> extends AbstractMapCursorAction<G, A, R> implements EditorAction {
40 
44  @NotNull
46 
50  @NotNull
52 
57  @Nullable
58  private Action action;
59 
66  public InsertArchAction(@NotNull final ObjectChooser<G, A, R> objectChooser, @NotNull final MapViewSettings mapViewSettings) {
67  this.objectChooser = objectChooser;
68  this.mapViewSettings = mapViewSettings;
69  }
70 
71  @Override
72  public void setAction(@NotNull final Action action, @NotNull final String name) {
73  this.action = action;
74  }
75 
79  @ActionMethod
80  public void insertArch() {
81  doInsertArch(true);
82  }
83 
89  private boolean doInsertArch(final boolean performAction) {
90  final MapCursor<G, A, R> mapCursor = getActiveMapCursor();
91  final BaseObject<G, A, R, ?> gameObject = objectChooser.getSelection();
92  return mapCursor != null && gameObject != null && mapCursor.insertGameObject(performAction, gameObject, false, mapViewSettings.isAutojoin());
93  }
94 
95  @Override
96  protected void updateAction() {
97  if (action != null) {
98  //noinspection ConstantConditions
99  action.setEnabled(doInsertArch(false));
100  }
101  }
102 
103 }
Action action
The Action associated with this editor action.
void setAction(@NotNull final Action action, @NotNull final String name)
Sets the Action instance for this editor action.
MapCursor< G, A, R > getActiveMapCursor()
Return the map cursor of the current map view if it is active.
boolean doInsertArch(final boolean performAction)
Executes the "insert arch" action.
boolean isAutojoin()
Returns whether "autojoin" is enabled.
Graphical User Interface of Gridarta.
InsertArchAction(@NotNull final ObjectChooser< G, A, R > objectChooser, @NotNull final MapViewSettings mapViewSettings)
Creates a new instance.
BaseObject< G, A, R, ?> getSelection()
Returns the active arch in the left-side panel.
MapCursor provides methods to move and drag on map.
Definition: MapCursor.java:57
final ObjectChooser< G, A, R > objectChooser
The object chooser.
Base package of all Gridarta classes.
An EditorAction that inserts a new game object into the current map.
Reflects a game object (object on a map).
Definition: GameObject.java:36
A global editor action.
void insertArch()
Action method for "insert arch".
Container for settings that affect the rendering of maps.
GameObjects are the objects based on Archetypes found on maps.
boolean insertGameObject(final boolean performAction, @NotNull final BaseObject< G, A, R, ?> gameObject, final boolean insertAtEnd, final boolean join)
Inserts a GameObject before the selected game object.
Definition: MapCursor.java:631
Common base interface for ObjectChoosers.
Abstract base class for actions that have to track the current map cursor.
final MapViewSettings mapViewSettings
The MapViewSettings instance for looking up options.