Gridarta Editor
GameObjectTextEditorTab.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.gui.mainwindow;
21 
22 import java.awt.event.FocusEvent;
23 import java.awt.event.FocusListener;
24 import java.util.Set;
43 import net.sf.gridarta.utils.Size2D;
44 import org.jetbrains.annotations.NotNull;
45 import org.jetbrains.annotations.Nullable;
46 
51 public class GameObjectTextEditorTab<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> extends Tab {
52 
56  @NotNull
58 
62  @Nullable
64 
69 
73  @Nullable
74  private G selectedGameObject;
75 
80  private boolean isInMapTransaction;
81 
85  @NotNull
87 
88  @Override
89  public void currentMapChanged(@Nullable final MapControl<G, A, R> mapControl) {
90  if (currentMapControl != null) {
94  }
95  currentMapControl = mapControl;
96  if (currentMapControl != null) {
100  }
101  }
102 
103  @Override
104  public void mapCreated(@NotNull final MapControl<G, A, R> mapControl, final boolean interactive) {
105  // ignore
106  }
107 
108  @Override
109  public void mapClosing(@NotNull final MapControl<G, A, R> mapControl) {
110  // ignore
111  }
112 
113  @Override
114  public void mapClosed(@NotNull final MapControl<G, A, R> mapControl) {
115  // ignore
116  }
117 
118  };
119 
125  @NotNull
127 
128  @Override
129  public void preBeginTransaction() {
131  isInMapTransaction = true;
132  }
133 
134  @Override
135  public void beginTransaction(@NotNull final String name) {
136  // ignore
137  }
138 
139  @Override
140  public void endTransaction(@NotNull final SavedSquares<G, A, R> savedSquares) {
141  // ignore
142  }
143 
144  @Override
145  public void postEndTransaction() {
146  isInMapTransaction = false;
147  }
148 
149  };
150 
154  @NotNull
156 
157  @Override
158  public void mapSizeChanged(@NotNull final Size2D newSize) {
159  // ignore
160  }
161 
162  @Override
163  public void mapSquaresChanged(@NotNull final Set<MapSquare<G, A, R>> mapSquares) {
164  if (selectedGameObject == null) {
165  return;
166  }
167 
168  final G topGameObject = selectedGameObject.getTopContainer();
169  for (final Iterable<G> mapSquare : mapSquares) {
170  for (final G gameObject : mapSquare) {
171  if (gameObject == topGameObject) {
172  refreshDisplay();
173  }
174  }
175  }
176  }
177 
178  @Override
179  public void mapObjectsChanged(@NotNull final Set<G> gameObjects, @NotNull final Set<G> transientGameObjects) {
180  for (final GameObject<G, A, R> gameObject : gameObjects) {
181  if (selectedGameObject == gameObject.getHead()) {
182  refreshDisplay();
183  }
184  }
185  }
186 
187  @Override
188  public void errorsChanged(@NotNull final ErrorCollector<G, A, R> errors) {
189  // ignore
190  }
191 
192  @Override
193  public void mapFileChanged(@Nullable final MapFile oldMapFile) {
194  // ignore
195  }
196 
197  @Override
198  public void modifiedChanged() {
199  // ignore
200  }
201 
202  };
203 
216  public GameObjectTextEditorTab(@NotNull final String ident, @NotNull final GameObjectTextEditor gameObjectTextEditor, @NotNull final Location defaultLocation, final boolean alternativeLocation, final int index, final boolean defaultOpen, @NotNull final SelectedSquareModel<G, A, R> selectedSquareModel, @NotNull final MapManager<G, A, R> mapManager) {
217  super(ident, gameObjectTextEditor, defaultLocation, alternativeLocation, index, defaultOpen);
218  this.gameObjectTextEditor = gameObjectTextEditor;
219  selectedSquareModel.addSelectedSquareListener(new SelectedSquareModelListener<G, A, R>() {
220 
221  @Override
222  public void selectionChanged(@Nullable final MapSquare<G, A, R> mapSquare, @Nullable final G gameObject) {
224  selectedGameObject = gameObject;
225  refreshDisplay();
226  }
227 
228  });
229  currentMapControl = mapManager.getCurrentMap();
230  if (currentMapControl != null) {
234  }
235  mapManager.addMapManagerListener(mapManagerListener);
236  selectedGameObject = selectedSquareModel.getSelectedGameObject();
237  refreshDisplay();
238  gameObjectTextEditor.getTextPane().addFocusListener(new FocusListener() {
239 
240  @Override
241  public void focusGained(final FocusEvent e) {
242  // ignore
243  }
244 
245  @Override
246  public void focusLost(final FocusEvent e) {
248  }
249 
250  });
251  }
252 
256  private void autoApplyArchPanelChanges() {
257  final GameObject<G, A, R> gameObject = selectedGameObject;
258  if (gameObject == null || isInAutoApplyArchPanelChanges || isInMapTransaction) {
259  return;
260  }
261 
262  final MapSquare<G, A, R> mapSquare = gameObject.getMapSquareOptional();
263  if (mapSquare == null) {
264  return;
265  }
266 
267  final MapModel<G, A, R> mapModel = mapSquare.getMapModel();
268 
270  try {
271  mapModel.beginTransaction("Change object attributes");
272  try {
274  } finally {
275  mapModel.endTransaction();
276  }
277  } finally {
279  }
280  }
281 
285  private void refreshDisplay() {
287  }
288 
289 }
net.sf.gridarta.model.mapmanager
Definition: AbstractMapManager.java:20
net.sf.gridarta.gui.mainwindow.GameObjectTextEditorTab.refreshDisplay
void refreshDisplay()
Definition: GameObjectTextEditorTab.java:285
net.sf.gridarta.model.mapmodel.MapModel
Definition: MapModel.java:75
net.sf.gridarta.gui.panel
net.sf.gridarta.gui.utils.tabbedpanel.Tab.alternativeLocation
boolean alternativeLocation
Definition: Tab.java:160
net.sf.gridarta.model.mapmanager.MapManager
Definition: MapManager.java:37
net.sf.gridarta
net.sf.gridarta.gui.mainwindow.GameObjectTextEditorTab.selectedGameObject
G selectedGameObject
Definition: GameObjectTextEditorTab.java:74
net.sf.gridarta.model.mapmodel.MapSquare
Definition: MapSquare.java:45
net.sf.gridarta.model.mapmodel.MapModel.endTransaction
void endTransaction()
net.sf.gridarta.model.mapmodel.MapTransactionListener
Definition: MapTransactionListener.java:33
net.sf
net.sf.gridarta.model.mapmodel.MapModel.beginTransaction
void beginTransaction(@NotNull String name)
net.sf.gridarta.model.mapmanager.MapManagerListener
Definition: MapManagerListener.java:42
net.sf.gridarta.gui.mainwindow.GameObjectTextEditorTab
Definition: GameObjectTextEditorTab.java:51
net.sf.gridarta.model.mapmodel
Definition: AboveFloorInsertionMode.java:20
net.sf.gridarta.gui.utils.tabbedpanel.Tab.index
final int index
Definition: Tab.java:165
net.sf.gridarta.gui.panel.gameobjecttexteditor.GameObjectTextEditor
Definition: GameObjectTextEditor.java:53
net.sf.gridarta.gui.panel.gameobjecttexteditor
Definition: GameObjectTextEditor.java:20
net.sf.gridarta.gui.mainwindow.GameObjectTextEditorTab.GameObjectTextEditorTab
GameObjectTextEditorTab(@NotNull final String ident, @NotNull final GameObjectTextEditor gameObjectTextEditor, @NotNull final Location defaultLocation, final boolean alternativeLocation, final int index, final boolean defaultOpen, @NotNull final SelectedSquareModel< G, A, R > selectedSquareModel, @NotNull final MapManager< G, A, R > mapManager)
Definition: GameObjectTextEditorTab.java:216
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.gameobject.GameObject
Definition: GameObject.java:36
net.sf.gridarta.gui.mainwindow.GameObjectTextEditorTab.mapModelListener
final MapModelListener< G, A, R > mapModelListener
Definition: GameObjectTextEditorTab.java:155
net.sf.gridarta.gui.panel.gameobjecttexteditor.GameObjectTextEditor.applyChanges
void applyChanges(@NotNull final GameObject<?, ?, ?> gameObject)
Definition: GameObjectTextEditor.java:107
net.sf.gridarta.model.mapcontrol
Definition: DefaultMapControl.java:20
net.sf.gridarta.model.mapmodel.MapModel.addMapModelListener
void addMapModelListener(@NotNull MapModelListener< G, A, R > listener)
net.sf.gridarta.gui.utils.tabbedpanel.Tab
Definition: Tab.java:54
net.sf.gridarta.gui.panel.gameobjecttexteditor.GameObjectTextEditor.getTextPane
Component getTextPane()
Definition: GameObjectTextEditor.java:168
net.sf.gridarta.gui
net.sf.gridarta.model.mapmodel.SavedSquares
Definition: SavedSquares.java:41
net.sf.gridarta.gui.mainwindow.GameObjectTextEditorTab.isInMapTransaction
boolean isInMapTransaction
Definition: GameObjectTextEditorTab.java:80
net.sf.gridarta.model.gameobject
Definition: AbstractGameObject.java:20
net
net.sf.gridarta.gui.utils.tabbedpanel.Tab.ident
final String ident
Definition: Tab.java:106
net.sf.gridarta.gui.panel.selectedsquare.SelectedSquareModelListener
Definition: SelectedSquareModelListener.java:34
net.sf.gridarta.model.mapmodel.MapModel.removeMapModelListener
void removeMapModelListener(@NotNull MapModelListener< G, A, R > listener)
net.sf.gridarta.model.maparchobject.MapArchObject
Definition: MapArchObject.java:40
net.sf.gridarta.gui.panel.selectedsquare.SelectedSquareModel
Definition: SelectedSquareModel.java:35
net.sf.gridarta.gui.utils.tabbedpanel
Definition: ButtonList.java:20
net.sf.gridarta.gui.mainwindow.GameObjectTextEditorTab.mapManagerListener
final MapManagerListener< G, A, R > mapManagerListener
Definition: GameObjectTextEditorTab.java:86
net.sf.gridarta.model.mapmodel.MapModel.removeMapTransactionListener
void removeMapTransactionListener(@NotNull MapTransactionListener< G, A, R > listener)
net.sf.gridarta.model.validation.ErrorCollector
Definition: ErrorCollector.java:33
net.sf.gridarta.gui.mainwindow.GameObjectTextEditorTab.gameObjectTextEditor
final GameObjectTextEditor gameObjectTextEditor
Definition: GameObjectTextEditorTab.java:57
net.sf.gridarta.model.validation
Definition: AbstractValidator.java:20
net.sf.gridarta.gui.mainwindow.GameObjectTextEditorTab.autoApplyArchPanelChanges
void autoApplyArchPanelChanges()
Definition: GameObjectTextEditorTab.java:256
net.sf.gridarta.model.mapmodel.MapFile
Definition: MapFile.java:31
net.sf.gridarta.model.mapmodel.MapModel.addMapTransactionListener
void addMapTransactionListener(@NotNull MapTransactionListener< G, A, R > listener)
net.sf.gridarta.model.mapmodel.MapSquare.getMapModel
MapModel< G, A, R > getMapModel()
Definition: MapSquare.java:99
net.sf.gridarta.gui.utils.borderpanel.Location
Definition: Location.java:33
net.sf.gridarta.model.mapmodel.MapModelListener
Definition: MapModelListener.java:36
net.sf.gridarta.gui.panel.gameobjecttexteditor.GameObjectTextEditor.refreshDisplay
Severity refreshDisplay(@Nullable final GameObject<?, ?, ?> gameObject)
Definition: GameObjectTextEditor.java:118
net.sf.gridarta.gui.mainwindow.GameObjectTextEditorTab.currentMapControl
MapControl< G, A, R > currentMapControl
Definition: GameObjectTextEditorTab.java:63
net.sf.gridarta.model.gameobject.GameObject.getMapSquareOptional
MapSquare< G, A, R > getMapSquareOptional()
net.sf.gridarta.gui.utils.borderpanel
Definition: BorderPanel.java:20
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Definition: Archetype.java:41
net.sf.gridarta.gui.mainwindow.GameObjectTextEditorTab.isInAutoApplyArchPanelChanges
boolean isInAutoApplyArchPanelChanges
Definition: GameObjectTextEditorTab.java:68
net.sf.gridarta.gui.mainwindow.GameObjectTextEditorTab.mapTransactionListener
final MapTransactionListener< G, A, R > mapTransactionListener
Definition: GameObjectTextEditorTab.java:126
net.sf.gridarta.gui.utils.tabbedpanel.Tab.setSeverity
void setSeverity(@NotNull final Severity severity)
Definition: Tab.java:437
net.sf.gridarta.model.mapcontrol.MapControl
Definition: MapControl.java:35
net.sf.gridarta.model.mapcontrol.MapControl.getMapModel
MapModel< G, A, R > getMapModel()
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.gui.utils
Definition: AnimationComponent.java:20
net.sf.gridarta.gui.panel.selectedsquare
Definition: CellRenderer.java:20
net.sf.gridarta.utils.Size2D
Definition: Size2D.java:30
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20