Gridarta Editor
StartStopDragAction.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;
29 import net.sf.japi.swing.action.ActionMethod;
30 import org.jetbrains.annotations.NotNull;
31 import org.jetbrains.annotations.Nullable;
32 
37 public class StartStopDragAction<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> extends AbstractMapCursorAction<G, A, R> implements EditorAction {
38 
43  @Nullable
44  private Action action;
45 
46  @Override
47  public void setAction(@NotNull final Action action, @NotNull final String name) {
48  this.action = action;
49  }
50 
54  @ActionMethod
55  public void startStopDrag() {
56  doStartStopDrag(true);
57  }
58 
64  private boolean doStartStopDrag(final boolean performAction) {
65  final MapCursor<G, A, R> mapCursor = getActiveMapCursor();
66  if (mapCursor == null) {
67  return false;
68  }
69 
70  if (performAction) {
71  if (mapCursor.isDragging()) {
72  mapCursor.dragSelect(SelectionMode.FLIP, true);
73  } else {
74  mapCursor.dragStart();
75  }
76  }
77 
78  return true;
79  }
80 
81  @Override
82  protected void updateAction() {
83  if (action != null) {
84  //noinspection ConstantConditions
85  action.setEnabled(doStartStopDrag(false));
86  }
87  }
88 
89 }
void dragSelect(@NotNull final SelectionMode selectionMode, final boolean forceSelect)
Leave drag mode and select pre-selection using selectionMode.
Definition: MapCursor.java:337
MapCursor< G, A, R > getActiveMapCursor()
Return the map cursor of the current map view if it is active.
An EditorAction that toggles a selection process.
MapCursor provides methods to move and drag on map.
Definition: MapCursor.java:57
boolean doStartStopDrag(final boolean performAction)
Executes the "start stop drag" action.
void startStopDrag()
Action method for "start stop drag".
Base package of all Gridarta classes.
Reflects a game object (object on a map).
Definition: GameObject.java:36
A global editor action.
void setAction(@NotNull final Action action, @NotNull final String name)
Sets the Action instance for this editor action.
GameObjects are the objects based on Archetypes found on maps.
FLIP
All squares that are preselected change state of selection.
final Point dragStart
Position where dragging has started.
Definition: MapCursor.java:70
Modes that describe how squares get selected.
Abstract base class for actions that have to track the current map cursor.
boolean isDragging()
Returns whether the cursor is currently being dragged.
Definition: MapCursor.java:411
Action action
The Action associated with this editor action.