Gridarta Editor
ReloadFacesAction.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 ReloadFacesAction<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> implements EditorAction {
38 
42  @NotNull
44 
48  @NotNull
50 
55  @Nullable
56  private Action action;
57 
64  public ReloadFacesAction(@NotNull final ArchetypeSet<G, A, R> archetypeSet, @NotNull final FaceObjectProviders faceObjectProviders) {
65  this.archetypeSet = archetypeSet;
66  this.faceObjectProviders = faceObjectProviders;
67  }
68 
72  @ActionMethod
73  public void reloadFaces() {
74  doReloadFaces(true);
75  }
76 
77  @Override
78  public void setAction(@NotNull final Action action, @NotNull final String name) {
79  this.action = action;
80  }
81 
85  private void updateAction() {
86  if (action != null) {
87  //noinspection ConstantConditions
88  action.setEnabled(doReloadFaces(false));
89  }
90  }
91 
97  private boolean doReloadFaces(final boolean performAction) {
98  if (archetypeSet.isLoadedFromArchive()) {
99  return false;
100  }
101 
102  if (performAction) {
103  faceObjectProviders.reloadAll();
104  }
105 
106  return true;
107  }
108 
109 }
Action action
The Action associated to this editor action.
An EditorAction that reloads all images from disk.
Base package of all Gridarta classes.
Reflects a game object (object on a map).
Definition: GameObject.java:36
A global editor action.
GameObjects are the objects based on Archetypes found on maps.
ReloadFacesAction(@NotNull final ArchetypeSet< G, A, R > archetypeSet, @NotNull final FaceObjectProviders faceObjectProviders)
Creates a new instance.
boolean doReloadFaces(final boolean performAction)
Executes the action.
final ArchetypeSet< G, A, R > archetypeSet
The archetype set instance.
final FaceObjectProviders faceObjectProviders
The FaceObjectProviders for looking up faces.
Provider for faces of GameObjects and Archetypes.
The face is the appearance of an object.
void reloadFaces()
Invoked when the user wants to reload the images.
void setAction(@NotNull final Action action, @NotNull final String name)
Sets the Action instance for this editor action.
Interface that captures similarities between different ArchetypeSet implementations.
boolean isLoadedFromArchive()
Returns whether the Archetypes in this ArchetypeSet were loaded from an archive.
void reloadAll()
Reloads all providers provided by this FaceObjects.
void updateAction()
Updates the enabled state of action.