Gridarta Editor
PickmapChooserControl.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.gui.panel.pickmapchooser;
21 
22 import java.awt.Component;
23 import java.io.File;
24 import java.io.IOException;
25 import java.util.Collection;
26 import java.util.Collections;
27 import java.util.HashSet;
28 import java.util.List;
29 import java.util.Set;
30 import javax.swing.Action;
31 import javax.swing.JOptionPane;
32 import javax.swing.JPopupMenu;
33 import javax.swing.event.ChangeEvent;
34 import javax.swing.event.ChangeListener;
58 import net.sf.gridarta.utils.Size2D;
59 import net.sf.japi.swing.action.ActionBuilder;
60 import net.sf.japi.swing.action.ActionBuilderFactory;
61 import net.sf.japi.swing.action.ActionMethod;
62 import org.apache.log4j.Category;
63 import org.apache.log4j.Logger;
64 import org.jetbrains.annotations.NotNull;
65 import org.jetbrains.annotations.Nullable;
66 
73 public class PickmapChooserControl<G extends GameObject<G, A, R>, A extends MapArchObject<A>, R extends Archetype<G, A, R>> implements EditorAction, ObjectChooserTab<G, A, R> {
74 
78  @NotNull
79  private static final Category LOG = Logger.getLogger(PickmapChooserControl.class);
80 
84  @NotNull
85  private static final ActionBuilder ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder("net.sf.gridarta");
86 
90  @NotNull
92 
96  @NotNull
98 
102  @NotNull
104 
108  @NotNull
110 
114  @NotNull
116 
120  @NotNull
122 
126  @NotNull
128 
132  @Nullable
133  private Action aAddNewPickmap;
134 
138  @Nullable
139  private Action aOpenPickmapMap;
140 
144  @Nullable
145  private Action aDeletePickmap;
146 
150  @Nullable
151  private Action aSavePickmap;
152 
156  @Nullable
157  private Action aRevertPickmap;
158 
162  @NotNull
163  private final Component parent;
164 
168  @Nullable
170 
174  @Nullable
176 
180  private boolean active;
181 
185  @NotNull
186  private final MapControlListener<G, A, R> mapControlListener = mapControl -> {
187  /*
188  * If we open a pickmap in the editor, is handled as normal map.
189  * to find out its original a pickmap we check the file name.
190  */
191  reloadPickmap(mapControl.getMapModel().getMapFile().getFile());
192  };
193 
198  @NotNull
200 
201  @Override
202  public void mapSizeChanged(@NotNull final Size2D newSize) {
203  // ignore
204  }
205 
206  @Override
207  public void mapSquaresChanged(@NotNull final Set<MapSquare<G, A, R>> mapSquares) {
208  // ignore
209  }
210 
211  @Override
212  public void mapObjectsChanged(@NotNull final Set<G> gameObjects, @NotNull final Set<G> transientGameObjects) {
213  // ignore
214  }
215 
216  @Override
217  public void errorsChanged(@NotNull final ErrorCollector<G, A, R> errors) {
218  // ignore
219  }
220 
221  @Override
222  public void mapFileChanged(@Nullable final MapFile oldMapFile) {
223  // ignore
224  }
225 
226  @Override
227  public void modifiedChanged() {
228  refresh();
229  }
230 
231  };
232 
236  @NotNull
238 
239  @Override
240  public void activePickmapChanged(@Nullable final PickmapState<G, A, R> pickmapState) {
241  setCurrentPickmap(pickmapState);
242  }
243 
244  @Override
245  public void pickmapReverted(@NotNull final PickmapState<G, A, R> pickmapState) {
246  setCurrentPickmap(pickmapState);
247  }
248 
249  @Override
250  public void pickmapModifiedChanged(final int index, @NotNull final PickmapState<G, A, R> pickmapState) {
251  // ignore
252  }
253 
254  };
255 
259  @NotNull
260  private final ChangeListener changeListener = new ChangeListener() {
261 
262  @Override
263  public void stateChanged(final ChangeEvent e) {
264  final PickmapState<G, A, R> pickmapState = getSelectedPickmap();
265  final MapControl<G, A, R> mapControl = pickmapState == null ? null : pickmapState.getPickmap();
266  if (mapControl != null) {
268  }
270  }
271 
272  };
273 
277  @NotNull
279 
280  @Override
281  public void currentMapChanged(@Nullable final MapControl<G, A, R> mapControl) {
282  // ignore
283  }
284 
285  @Override
286  public void mapCreated(@NotNull final MapControl<G, A, R> mapControl, final boolean interactive) {
287  if (!mapControl.isPickmap()) {
288  mapControl.addMapControlListener(mapControlListener);
289  }
290  }
291 
292  @Override
293  public void mapClosing(@NotNull final MapControl<G, A, R> mapControl) {
294  // ignore
295  }
296 
297  @Override
298  public void mapClosed(@NotNull final MapControl<G, A, R> mapControl) {
299  if (!mapControl.isPickmap()) {
300  mapControl.removeMapControlListener(mapControlListener);
301  }
302  }
303 
304  };
305 
310  @NotNull
312 
325  public PickmapChooserControl(@NotNull final PickmapChooserModel<G, A, R> pickmapChooserModel, @NotNull final PickmapSettings pickmapSettings, @NotNull final NewMapDialogFactory<G, A, R> newMapDialogFactory, @NotNull final MapFolderTree<G, A, R> mapFolderTree, @NotNull final MapManager<G, A, R> mapManager, @NotNull final Component parent, @NotNull final MapViewsManager<G, A, R> mapViewsManager, @NotNull final FileControl<G, A, R> fileControl, @NotNull final PickmapChooserView<G, A, R> pickmapChooserView) {
326  this.pickmapChooserModel = pickmapChooserModel;
327  this.pickmapSettings = pickmapSettings;
328  this.mapFolderTree = mapFolderTree;
329  this.parent = parent;
330  this.newMapDialogFactory = newMapDialogFactory;
331  this.mapViewsManager = mapViewsManager;
332  this.fileControl = fileControl;
333  ACTION_BUILDER.createToggles(true, this, "lockAllPickmaps");
335  view = pickmapChooserView;
337  mapManager.addMapManagerListener(mapManagerListener);
339  }
340 
345  public void setPopupMenu(@NotNull final JPopupMenu popupMenu) {
346  view.setPopupMenu(popupMenu);
347  }
348 
353  private void reloadPickmap(@NotNull final File file) {
354  final PickmapState<G, A, R> pickmapState = pickmapChooserModel.getPickmap(file);
355  if (pickmapState != null) {
356  try {
357  pickmapState.revert();
358  } catch (final IOException ex) {
359  LOG.warn("cannot reload pickmap " + pickmapState.getFile() + ": " + ex.getMessage());
360  }
361  }
362  }
363 
368  @ActionMethod
369  public boolean isLockAllPickmaps() {
370  return pickmapSettings.isLocked();
371  }
372 
373  @Nullable
374  @Override
375  public G getSelection() {
377  if (pickmap == null) {
378  return null;
379  }
380 
381  final MapView<G, A, R> mapView = mapViewsManager.getMapViewFrame(pickmap);
382  return mapView == null ? null : mapView.getSelectedGameObject();
383  }
384 
389  public boolean canExit() {
390  final Collection<MapControl<G, A, R>> unsavedPickmaps = new HashSet<>();
391  mapFolderTree.getUnsavedPickmaps(unsavedPickmaps);
392  for (final MapControl<G, A, R> pickmap : unsavedPickmaps) {
393  final int result = ACTION_BUILDER.showConfirmDialog(parent, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE, "pickmapConfirmSaveChanges", pickmap.getMapModel().getMapArchObject().getMapName());
394  if (result == JOptionPane.YES_OPTION) {
395  try {
396  pickmap.save();
397  } catch (final IOException e) {
398  ACTION_BUILDER.showMessageDialog(parent, "encodeMapFile", pickmap.getMapModel().getMapFile(), e.getMessage());
399  return false;
400  }
401  if (pickmap.getMapModel().isModified()) {
402  return false;
403  }
404  } else if (result == JOptionPane.CANCEL_OPTION || result == JOptionPane.CLOSED_OPTION) {
405  return false;
406  }
407  }
408  return true;
409  }
410 
415  @Nullable
417  final int selectedIndex = view.getSelectedIndex();
418  if (selectedIndex == -1) {
419  return null;
420  }
421  try {
422  return pickmapChooserModel.get(selectedIndex);
423  } catch (final IndexOutOfBoundsException ignored) {
424  return null;
425  }
426  }
427 
428  @NotNull
429  @Override
430  public Component getComponent() {
431  return view.getPickmapPanel();
432  }
433 
434  @Override
435  public void setActive(final boolean active) {
436  if (this.active == active) {
437  return;
438  }
439 
440  this.active = active;
441  refresh();
442  }
443 
444  @Override
445  public boolean isMatching(@NotNull final G gameObject) {
446  for (final G selection : getSelections()) {
447  if (gameObject.isEqual(selection)) {
448  return true;
449  }
450  }
451  return false;
452  }
453 
454  @NotNull
455  @Override
456  public List<G> getSelections() {
458  if (pickmap == null) {
459  return Collections.emptyList();
460  }
461 
462  final MapView<G, A, R> mapView = mapViewsManager.getMapViewFrame(pickmap);
463  return mapView == null ? Collections.emptyList() : mapView.getSelectedGameObjects();
464  }
465 
466  @NotNull
467  @Override
468  public String getTitle() {
469  return ActionBuilderUtils.getString(ACTION_BUILDER, "objectChooser.pickmapsTabTitle");
470  }
471 
475  @ActionMethod
476  public void addNewPickmap() {
477  doAddNewPickmap(true);
478  }
479 
483  @ActionMethod
484  public void openPickmapMap() {
485  doOpenPickmapMap(true);
486  }
487 
491  @ActionMethod
492  public void deletePickmap() {
493  doDeletePickmap(true);
494  }
495 
499  @ActionMethod
500  public void savePickmap() {
501  doSavePickmap(true);
502  }
503 
508  @ActionMethod
509  public void revertPickmap() {
510  doRevertPickmap(true);
511  }
512 
518  @Nullable
520  return active && !pickmapSettings.isLocked() ? currentPickmapState : null;
521  }
522 
528  final MapControl<G, A, R> pickmapControl = currentPickmapState == null ? null : currentPickmapState.getPickmap();
529  if (this.currentPickmapState == currentPickmapState && currentPickmapControl == pickmapControl) {
530  return;
531  }
532 
533  if (currentPickmapControl != null) {
536  }
537 
538  this.currentPickmapState = currentPickmapState;
539  currentPickmapControl = pickmapControl;
540 
541  if (currentPickmapControl != null) {
544  }
545 
546  refresh();
547  }
548 
553  @ActionMethod
554  public void setLockAllPickmaps(final boolean lockAllPickmaps) {
555  pickmapSettings.setLocked(lockAllPickmaps);
556  }
557 
561  private void refresh() {
562  if (aAddNewPickmap != null) {
563  aAddNewPickmap.setEnabled(doAddNewPickmap(false));
564  }
565  if (aOpenPickmapMap != null) {
566  aOpenPickmapMap.setEnabled(doOpenPickmapMap(false));
567  }
568  if (aDeletePickmap != null) {
569  aDeletePickmap.setEnabled(doDeletePickmap(false));
570  }
571  if (aSavePickmap != null) {
572  aSavePickmap.setEnabled(doSavePickmap(false));
573  }
574  if (aRevertPickmap != null) {
575  aRevertPickmap.setEnabled(doRevertPickmap(false));
576  }
577  }
578 
584  private boolean doAddNewPickmap(final boolean performAction) {
585  if (pickmapSettings.isLocked()) {
586  return false;
587  }
588 
589  if (performAction) {
591  }
592 
593  return true;
594  }
595 
601  private boolean doOpenPickmapMap(final boolean performAction) {
602  final PickmapState<G, A, R> pickmapState = getOpenPickmapMap();
603  if (pickmapState == null) {
604  return false;
605  }
606 
607  if (performAction) {
608  final File file = pickmapState.getFile();
609  try {
610  mapViewsManager.openMapFileWithView(file, null, null);
611  } catch (final IOException ex) {
612  fileControl.reportLoadError(file, ex.getMessage());
613  return false;
614  }
615  }
616 
617  return true;
618  }
619 
625  private boolean doDeletePickmap(final boolean performAction) {
626  if (pickmapSettings.isLocked() || !active) {
627  return false;
628  }
629 
630  final PickmapState<G, A, R> pickmapState = currentPickmapState;
631  if (pickmapState == null) {
632  return false;
633  }
634 
635  if (performAction) {
636  if (!ACTION_BUILDER.showQuestionDialog(parent, "confirmDeletePickmap", pickmapState.getFile().getName())) {
637  return false;
638  }
639 
640  pickmapState.remove(true);
641  }
642 
643  return true;
644  }
645 
651  private boolean doSavePickmap(final boolean performAction) {
652  if (pickmapSettings.isLocked() || !active) {
653  return false;
654  }
655 
657  return false;
658  }
659 
660  final PickmapState<G, A, R> pickmapState = currentPickmapState;
661  if (pickmapState == null) {
662  return false;
663  }
664 
665  if (performAction) {
666  try {
667  pickmapState.save();
668  } catch (final IOException e) {
669  ACTION_BUILDER.showMessageDialog(parent, "encodeMapFile", pickmapState, e.getMessage());
670  return false;
671  }
672  }
673 
674  return true;
675  }
676 
682  private boolean doRevertPickmap(final boolean performAction) {
683  if (pickmapSettings.isLocked() || !active) {
684  return false;
685  }
686 
687  final PickmapState<G, A, R> pickmapState = currentPickmapState;
688  if (pickmapState == null) {
689  return false;
690  }
691 
692  final File mapFileFile = pickmapState.getFile();
693  if (currentPickmapControl == null || !currentPickmapControl.getMapModel().isModified() || !mapFileFile.exists()) {
694  return false;
695  }
696 
697  final MapControl<G, A, R> mapControl = pickmapState.getPickmap();
698  if (mapControl == null) {
699  return false;
700  }
701 
702  final MapModel<G, A, R> mapModel = mapControl.getMapModel();
703  final MapFile mapControlMapFile = mapModel.getMapFile();
704  if (mapControlMapFile == null) {
705  return false;
706  }
707 
708  if (performAction) {
709  if (!mapControlMapFile.getFile().exists()) {
710  ACTION_BUILDER.showMessageDialog(parent, "revertPickmapGone", mapControlMapFile);
711  return false;
712  }
713 
714  if (mapModel.isModified() && !ACTION_BUILDER.showQuestionDialog(parent, "confirmRevertPickmap", mapFileFile.getName())) {
715  return false;
716  }
717 
718  try {
719  pickmapState.revert();
720  } catch (final IOException ex) {
721  ACTION_BUILDER.showMessageDialog(null/*XXX:parent*/, "pickmapIOError", mapFileFile.getName(), ex.getMessage());
722  return false;
723  }
724  }
725 
726  return true;
727  }
728 
729  @Override
730  public void setAction(@NotNull final Action action, @NotNull final String name) {
731  switch (name) {
732  case "addNewPickmap":
733  aAddNewPickmap = action;
734  break;
735 
736  case "openPickmapMap":
737  aOpenPickmapMap = action;
738  break;
739 
740  case "deletePickmap":
741  aDeletePickmap = action;
742  break;
743 
744  case "savePickmap":
745  aSavePickmap = action;
746  break;
747 
748  case "revertPickmap":
749  aRevertPickmap = action;
750  break;
751 
752  default:
753  throw new IllegalArgumentException("unsupported action name: " + name);
754  }
755  refresh();
756  }
757 
758 }
name
name
Definition: ArchetypeTypeSetParserTest-ignoreDefaultAttribute1-result.txt:2
net.sf.gridarta.model.mapmanager
Definition: AbstractMapManager.java:20
net.sf.gridarta.model.mapmodel.MapModel
A MapModel reflects the data of a map.
Definition: MapModel.java:75
net.sf.gridarta.gui.panel
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.PickmapChooserControl
PickmapChooserControl(@NotNull final PickmapChooserModel< G, A, R > pickmapChooserModel, @NotNull final PickmapSettings pickmapSettings, @NotNull final NewMapDialogFactory< G, A, R > newMapDialogFactory, @NotNull final MapFolderTree< G, A, R > mapFolderTree, @NotNull final MapManager< G, A, R > mapManager, @NotNull final Component parent, @NotNull final MapViewsManager< G, A, R > mapViewsManager, @NotNull final FileControl< G, A, R > fileControl, @NotNull final PickmapChooserView< G, A, R > pickmapChooserView)
Creates a new instance.
Definition: PickmapChooserControl.java:325
net.sf.gridarta.gui.map.mapview.MapView.getSelectedGameObjects
List< G > getSelectedGameObjects()
Return all selected game objects.
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserView< G, A, R >
net.sf.gridarta.gui.mapfiles.PickmapState.getFile
File getFile()
Returns the underlying map file.
Definition: PickmapState.java:139
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.getOpenPickmapMap
PickmapState< G, A, R > getOpenPickmapMap()
Determines if "open pickmap as map" is enabled.
Definition: PickmapChooserControl.java:519
net.sf.gridarta.model.mapmanager.MapManager
A MapManager manages all opened maps.
Definition: MapManager.java:37
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.getSelections
List< G > getSelections()
Returns the selected game objects.
Definition: PickmapChooserControl.java:456
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.aRevertPickmap
Action aRevertPickmap
Action called for "revert active pickmap".
Definition: PickmapChooserControl.java:157
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserModel.get
PickmapState< G, A, R > get(final int index)
Returns a map file by index.
Definition: PickmapChooserModel.java:160
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserView.setPopupMenu
void setPopupMenu(@NotNull final JPopupMenu popupMenu)
Sets the popup menu to show.
Definition: PickmapChooserView.java:219
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.setActive
void setActive(final boolean active)
Called whenever this tab becomes active or inactive.
Definition: PickmapChooserControl.java:435
net.sf.gridarta
Base package of all Gridarta classes.
net.sf.gridarta.model.mapcursor.MapCursor.deactivate
final void deactivate()
Cursor gets deactivated.
Definition: MapCursor.java:355
net.sf.gridarta.gui.panel.objectchooser.ObjectChooserTab
Interface for classes being part of the object chooser.
Definition: ObjectChooserTab.java:35
net.sf.gridarta.model.mapmodel.MapSquare
A single Map Square.
Definition: MapSquare.java:45
net.sf.gridarta.gui.mapfiles.PickmapState.revert
void revert()
Reverts this pickmap to its underlying map file.
Definition: PickmapState.java:238
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserModel.getPickmap
PickmapState< G, A, R > getPickmap(@NotNull final File file)
Returns the pickmap by file name.
Definition: PickmapChooserModel.java:122
net.sf.gridarta.gui.mapfiles.MapFolderTree
Stores all known MapFiles.
Definition: MapFolderTree.java:42
net.sf.gridarta.model.pickmapsettings.PickmapSettingsListener
Interface for event listeners that are interested in changes on {}.
Definition: PickmapSettingsListener.java:29
net.sf
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.parent
final Component parent
The parent component for error messages.
Definition: PickmapChooserControl.java:163
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.mapViewsManager
final MapViewsManager< G, A, R > mapViewsManager
The MapViewsManager.
Definition: PickmapChooserControl.java:121
net.sf.gridarta.model.mapmanager.FileControl
Definition: FileControl.java:30
net.sf.gridarta.model.mapmanager.MapManagerListener
Interface for listeners listening to MapManager changes.
Definition: MapManagerListener.java:42
net.sf.gridarta.model.mapmodel
Definition: AboveFloorInsertionMode.java:20
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.view
final PickmapChooserView< G, A, R > view
The view for this control.
Definition: PickmapChooserControl.java:103
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserModelListener< G, A, R >
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.pickmapChooserModelListener
final PickmapChooserModelListener< G, A, R > pickmapChooserModelListener
The pickmap chooser listener used to track the currently active pickmap.
Definition: PickmapChooserControl.java:237
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.doOpenPickmapMap
boolean doOpenPickmapMap(final boolean performAction)
Performs or checks availability of the "open pickmap map" action.
Definition: PickmapChooserControl.java:601
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserModel.fireActivePickmapChanged
void fireActivePickmapChanged(@Nullable final PickmapState< G, A, R > pickmapState)
Notifies all listeners that the active pickmap has changes.
Definition: PickmapChooserModel.java:197
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.changeListener
final ChangeListener changeListener
The ChangeListener attached to {link view}.
Definition: PickmapChooserControl.java:260
net.sf.gridarta.gui.mapfiles.PickmapState.remove
void remove(final boolean deleteFile)
Removes this pickmap from its folder.
Definition: PickmapState.java:217
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.addNewPickmap
void addNewPickmap()
Invoked when user wants to open a new pickmap.
Definition: PickmapChooserControl.java:476
net.sf.gridarta.gui.map.mapview.MapView.getSelectedGameObject
G getSelectedGameObject()
Return one selected game object.
net.sf.gridarta.model.archetype
Definition: AbstractArchetype.java:20
net.sf.gridarta.model.mapmanager.FileControl.reportLoadError
void reportLoadError(@Nullable File file, @NotNull String message)
net.sf.gridarta.model.gameobject.GameObject
Reflects a game object (object on a map).
Definition: GameObject.java:36
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.setLockAllPickmaps
void setLockAllPickmaps(final boolean lockAllPickmaps)
Sets whether all pickmaps are locked.
Definition: PickmapChooserControl.java:554
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.LOG
static final Category LOG
The Logger for printing log messages.
Definition: PickmapChooserControl.java:79
net.sf.gridarta.model.mapcontrol
Definition: DefaultMapControl.java:20
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.savePickmap
void savePickmap()
Saves the current active pickmap.
Definition: PickmapChooserControl.java:500
net.sf.gridarta.model.mapmodel.MapModel.addMapModelListener
void addMapModelListener(@NotNull MapModelListener< G, A, R > listener)
Register a map listener.
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.doAddNewPickmap
boolean doAddNewPickmap(final boolean performAction)
Performs or checks availability of the "add new pickmap" action.
Definition: PickmapChooserControl.java:584
net.sf.gridarta.model.mapmodel.MapModel.isModified
boolean isModified()
Return whether the map has been modified from the on-disk state.
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.mapControlListener
final MapControlListener< G, A, R > mapControlListener
The map control listener which is registered to the selected pickmap.
Definition: PickmapChooserControl.java:186
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.gui.panel.pickmapchooser.PickmapChooserControl.doSavePickmap
boolean doSavePickmap(final boolean performAction)
Performs or checks availability of the "save pickmap" action.
Definition: PickmapChooserControl.java:651
net.sf.gridarta.gui.mapfiles.PickmapState.save
void save()
Saves this pickmap.
Definition: PickmapState.java:226
net.sf.gridarta.gui.panel.objectchooser
Definition: DefaultObjectChooser.java:20
net.sf.gridarta.model.pickmapsettings.PickmapSettings.setLocked
void setLocked(boolean locked)
Sets whether pickmaps are immutable.
net.sf.gridarta.model.gameobject
GameObjects are the objects based on Archetypes found on maps.
Definition: AbstractGameObject.java:20
net.sf.gridarta.gui.dialog.newmap.NewMapDialogFactory.showNewPickmapDialog
void showNewPickmapDialog()
Shows a dialog for creating a new pickmap.
Definition: NewMapDialogFactory.java:150
net
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.doDeletePickmap
boolean doDeletePickmap(final boolean performAction)
Performs or checks availability of the "delete pickmap" action.
Definition: PickmapChooserControl.java:625
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.getTitle
String getTitle()
Returns the title to display in the object chooser.
Definition: PickmapChooserControl.java:468
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.aAddNewPickmap
Action aAddNewPickmap
Action called for "add new pickmap".
Definition: PickmapChooserControl.java:133
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.mapFolderTree
final MapFolderTree< G, A, R > mapFolderTree
The model.
Definition: PickmapChooserControl.java:109
errors
errors
Definition: ArchetypeTypeSetParserTest-ignoreDefaultAttribute1-result.txt:1
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.currentPickmapState
PickmapState< G, A, R > currentPickmapState
The current active pickmap on top.
Definition: PickmapChooserControl.java:169
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.canExit
boolean canExit()
Invoked when the user wants to exit the application.
Definition: PickmapChooserControl.java:389
net.sf.gridarta.model.mapmodel.MapModel.removeMapModelListener
void removeMapModelListener(@NotNull MapModelListener< G, A, R > listener)
Unregister a map listener.
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.model.mapmodel.MapFile.getFile
File getFile()
Returns a File for this map file.
Definition: MapFile.java:102
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.getSelectedPickmap
PickmapState< G, A, R > getSelectedPickmap()
Returns the selected pickmap.
Definition: PickmapChooserControl.java:416
net.sf.gridarta.gui.dialog.newmap
Definition: AbstractMapsizeNewMapDialog.java:20
net.sf.gridarta.model.validation.ErrorCollector
An interface for classes that collect errors.
Definition: ErrorCollector.java:33
net.sf.gridarta.gui.dialog.newmap.NewMapDialogFactory
Utility class to create NewMapDialog instances.
Definition: NewMapDialogFactory.java:39
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.pickmapsettings.PickmapSettings.isLocked
boolean isLocked()
Returns whether pickmaps are immutable.
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.currentPickmapControl
MapControl< G, A, R > currentPickmapControl
The current active pickmap on top.
Definition: PickmapChooserControl.java:175
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.revertPickmap
void revertPickmap()
Invoked when user wants to revert the current pickmap to previously saved state.
Definition: PickmapChooserControl.java:509
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserView.getSelectedIndex
int getSelectedIndex()
Returns the selected index.
Definition: PickmapChooserView.java:313
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserModel< G, A, R >
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.refresh
void refresh()
Updates the actions' states.
Definition: PickmapChooserControl.java:561
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.doRevertPickmap
boolean doRevertPickmap(final boolean performAction)
Performs or checks availability of the "revert pickmap" action.
Definition: PickmapChooserControl.java:682
net.sf.gridarta.model.validation
This package contains the framework for validating maps.
Definition: AbstractValidator.java:20
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.isMatching
boolean isMatching(@NotNull final G gameObject)
Returns whether the current selection matches the given game object.
Definition: PickmapChooserControl.java:445
net.sf.gridarta.utils.ActionBuilderUtils.getString
static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final String defaultValue)
Returns the value of a key.
Definition: ActionBuilderUtils.java:71
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.aOpenPickmapMap
Action aOpenPickmapMap
Action called for "open active pickmap as map".
Definition: PickmapChooserControl.java:139
net.sf.gridarta.gui.dialog
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.aSavePickmap
Action aSavePickmap
Action called for "save active pickmap".
Definition: PickmapChooserControl.java:151
net.sf.gridarta.model.mapmodel.MapFile
The location of a map file with a map directory.
Definition: MapFile.java:31
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserView.getPickmapPanel
Component getPickmapPanel()
Returns the JTabbedPane with all pickmaps.
Definition: PickmapChooserView.java:305
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.setPopupMenu
void setPopupMenu(@NotNull final JPopupMenu popupMenu)
Sets the popup menu to show.
Definition: PickmapChooserControl.java:345
net.sf.gridarta.gui.mapfiles.PickmapState
Maintains the state of a pickmap file.
Definition: PickmapState.java:45
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.mapModelListener
final MapModelListener< G, A, R > mapModelListener
The MapModelListener which is registered to the selected pickmap.
Definition: PickmapChooserControl.java:199
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.aDeletePickmap
Action aDeletePickmap
Action called for "delete active pickmap".
Definition: PickmapChooserControl.java:145
net.sf.gridarta.model.mapmodel.MapModelListener
Interface for listeners listening on MapModel events.
Definition: MapModelListener.java:36
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserModel.addPickmapChooserListener
void addPickmapChooserListener(@NotNull final PickmapChooserModelListener< G, A, R > pickmapChooserModelListener)
Adds a PickmapChooserModelListener to be notified.
Definition: PickmapChooserModel.java:179
net.sf.gridarta.model.mapcontrol.MapControl.addMapControlListener
void addMapControlListener(@NotNull MapControlListener< G, A, R > listener)
Registers a MapControlListener.
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.pickmapChooserModel
final PickmapChooserModel< G, A, R > pickmapChooserModel
The PickmapChooserModel to control.
Definition: PickmapChooserControl.java:91
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.newMapDialogFactory
final NewMapDialogFactory< G, A, R > newMapDialogFactory
The factory for creating new pickmaps.
Definition: PickmapChooserControl.java:115
net.sf.gridarta.model.pickmapsettings.PickmapSettings.addPickmapSettingsListener
void addPickmapSettingsListener(@NotNull PickmapSettingsListener listener)
Adds a PickmapSettingsListener to be notified about changes.
net.sf.gridarta.model
net.sf.gridarta.model.archetype.Archetype
Reflects an Archetype.
Definition: Archetype.java:41
net.sf.gridarta.gui.mapfiles.MapFolderTree.getUnsavedPickmaps
void getUnsavedPickmaps(@NotNull final Collection< MapControl< G, A, R >> unsavedMaps)
Returns all unsaved map controls of this model.
Definition: MapFolderTree.java:204
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.getComponent
Component getComponent()
Returns the component to show in the object chooser.
Definition: PickmapChooserControl.java:430
net.sf.gridarta.gui.map
Base classes for rendering maps.
Definition: AbstractPerMapDialogManager.java:20
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.pickmapSettingsListener
final PickmapSettingsListener pickmapSettingsListener
The PickmapSettingsListener attached to {}.
Definition: PickmapChooserControl.java:311
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserView.addChangeListener
void addChangeListener(@NotNull final ChangeListener changeListener)
Adds a ChangeListener to be notified when the selected pickmap tab changes.
Definition: PickmapChooserView.java:228
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.reloadPickmap
void reloadPickmap(@NotNull final File file)
Reloads a pickmap.
Definition: PickmapChooserControl.java:353
net.sf.gridarta.model.pickmapsettings
Definition: AbstractPickmapSettings.java:20
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.active
boolean active
Set if the pickmap panel is active.
Definition: PickmapChooserControl.java:180
net.sf.gridarta.model.mapcontrol.MapControl
Currently nothing more than a marker interface for unification.
Definition: MapControl.java:35
net.sf.gridarta.model.mapcontrol.MapControlListener
Interface for listeners listening on changes in MapControl instances.
Definition: MapControlListener.java:33
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.isLockAllPickmaps
boolean isLockAllPickmaps()
Returns whether all pickmaps are locked.
Definition: PickmapChooserControl.java:369
net.sf.gridarta.model.mapcontrol.MapControl.removeMapControlListener
void removeMapControlListener(@NotNull MapControlListener< G, A, R > listener)
Unregisters a MapControlListener.
net.sf.gridarta.utils.ActionBuilderUtils
Utility class for ActionBuilder related functions.
Definition: ActionBuilderUtils.java:31
net.sf.gridarta.model.mapcontrol.MapControl.getMapModel
MapModel< G, A, R > getMapModel()
Returns the map model.
net.sf.gridarta.model.maparchobject
Definition: AbstractMapArchObject.java:20
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.openPickmapMap
void openPickmapMap()
Opens the active pickmap as a normal map for extensive editing.
Definition: PickmapChooserControl.java:484
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.deletePickmap
void deletePickmap()
Invoked when the user wants to delete the active pickmap.
Definition: PickmapChooserControl.java:492
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.getSelection
G getSelection()
Returns the selected game object.
Definition: PickmapChooserControl.java:375
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.fileControl
final FileControl< G, A, R > fileControl
The FileControl to use.
Definition: PickmapChooserControl.java:127
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.setAction
void setAction(@NotNull final Action action, @NotNull final String name)
Sets the Action instance for this editor action.
Definition: PickmapChooserControl.java:730
net.sf.gridarta.gui.map.mapview.MapViewsManager.openMapFileWithView
MapView< G, A, R > openMapFileWithView(@NotNull final MapFile mapFile, @Nullable final Point viewPosition)
Loads a map file and creates a map view.
Definition: MapViewsManager.java:333
net.sf.gridarta.model.mapmodel.MapModel.getMapFile
MapFile getMapFile()
Returns the map file.
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl
Manages the pickmap panel and most pickmap-related code in general.
Definition: PickmapChooserControl.java:73
net.sf.gridarta.utils.EditorAction
A global editor action.
Definition: EditorAction.java:29
net.sf.gridarta.gui.map.mapview.MapViewsManager
Stores all existing MapViews.
Definition: MapViewsManager.java:47
net.sf.gridarta.utils.Size2D
The class Size2D represents a 2d rectangular area.
Definition: Size2D.java:30
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.mapManagerListener
final MapManagerListener< G, A, R > mapManagerListener
The MapManagerListener to track existing pickmaps.
Definition: PickmapChooserControl.java:278
net.sf.gridarta.utils
Definition: ActionBuilderUtils.java:20
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.setCurrentPickmap
void setCurrentPickmap(@Nullable final PickmapState< G, A, R > currentPickmapState)
Sets the currently active pickmap.
Definition: PickmapChooserControl.java:527
net.sf.gridarta.model.pickmapsettings.PickmapSettings
Container for settings that affect pickmaps.
Definition: PickmapSettings.java:28
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.ACTION_BUILDER
static final ActionBuilder ACTION_BUILDER
Action Builder.
Definition: PickmapChooserControl.java:85
net.sf.gridarta.gui.map.mapview.MapViewsManager.getMapViewFrame
MapView< G, A, R > getMapViewFrame(@NotNull final MapControl< G, A, R > mapControl)
Returns the last used view of a MapControl.
Definition: MapViewsManager.java:208
net.sf.gridarta.gui.mapfiles.PickmapState.getPickmap
MapControl< G, A, R > getPickmap()
Returns the MapControl representing this pickmap.
Definition: PickmapState.java:150
net.sf.gridarta.gui.panel.pickmapchooser.PickmapChooserControl.pickmapSettings
final PickmapSettings pickmapSettings
The PickmapSettings to use.
Definition: PickmapChooserControl.java:97
net.sf.gridarta.gui.mapfiles
Definition: DuplicateMapFolderException.java:20