Go to the documentation of this file.
20 package net.sf.gridarta.gui.panel.pickmapchooser;
22 import java.awt.Component;
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;
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;
60 import net.
sf.japi.swing.action.ActionBuilder;
61 import net.
sf.japi.swing.action.ActionBuilderFactory;
62 import net.
sf.japi.swing.action.ActionMethod;
63 import org.apache.log4j.Category;
64 import org.apache.log4j.Logger;
65 import org.jetbrains.annotations.NotNull;
66 import org.jetbrains.annotations.Nullable;
86 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
195 reloadPickmap(mapControl.getMapModel().getMapFile().getFile());
208 public void mapSizeChanged(@NotNull
final Size2D newSize) {
218 public void mapObjectsChanged(@NotNull
final Set<G> gameObjects, @NotNull
final Set<G> transientGameObjects) {
228 public void mapFileChanged(@Nullable
final MapFile oldMapFile) {
233 public void modifiedChanged() {
256 public void pickmapModifiedChanged(
final int index, @NotNull
final PickmapState<G, A, R> pickmapState) {
269 public void stateChanged(
final ChangeEvent e) {
272 if (mapControl !=
null) {
292 public void mapCreated(@NotNull
final MapControl<G, A, R> mapControl,
final boolean interactive) {
293 if (!mapControl.isPickmap()) {
305 if (!mapControl.isPickmap()) {
320 public void lockedChanged(
final boolean locked) {
338 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) {
348 view = pickmapChooserView;
368 if (pickmapState !=
null) {
371 }
catch (
final IOException ex) {
372 LOG.warn(
"cannot reload pickmap " + pickmapState.
getFile() +
": " + ex.getMessage());
390 if (pickmap ==
null) {
403 final Collection<MapControl<G, A, R>> unsavedPickmaps =
new HashSet<>();
406 final int result =
ACTION_BUILDER.showConfirmDialog(
parent, JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.WARNING_MESSAGE,
"pickmapConfirmSaveChanges", pickmap.getMapModel().getMapArchObject().getMapName());
407 if (result == JOptionPane.YES_OPTION) {
410 }
catch (
final IOException e) {
411 ACTION_BUILDER.showMessageDialog(
parent,
"encodeMapFile", pickmap.getMapModel().getMapFile(), e.getMessage());
414 if (pickmap.getMapModel().isModified()) {
417 }
else if (result == JOptionPane.CANCEL_OPTION || result == JOptionPane.CLOSED_OPTION) {
431 if (selectedIndex == -1) {
436 }
catch (
final IndexOutOfBoundsException ignored) {
449 if (this.active ==
active) {
460 if (gameObject.isEqual(selection)) {
471 if (pickmap ==
null) {
472 return Collections.emptyList();
616 if (pickmapState ==
null) {
621 final File file = pickmapState.
getFile();
624 }
catch (
final IOException ex) {
644 if (pickmapState ==
null) {
653 pickmapState.
remove(
true);
674 if (pickmapState ==
null) {
681 }
catch (
final IOException e) {
701 if (pickmapState ==
null) {
705 final File mapFileFile = pickmapState.
getFile();
711 if (mapControl ==
null) {
717 if (mapControlMapFile ==
null) {
722 if (!mapControlMapFile.
getFile().exists()) {
733 }
catch (
final IOException ex) {
734 ACTION_BUILDER.showMessageDialog(
null,
"pickmapIOError", mapFileFile.getName(), ex.getMessage());
743 public void setAction(@NotNull
final Action action, @NotNull
final String name) {
745 case "addNewPickmap":
749 case "openPickmapMap":
753 case "deletePickmap":
761 case "revertPickmap":
766 throw new IllegalArgumentException(
"unsupported action name: " + name);
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)
List< G > getSelectedGameObjects()
PickmapState< G, A, R > getOpenPickmapMap()
List< G > getSelections()
PickmapState< G, A, R > get(final int index)
void setPopupMenu(@NotNull final JPopupMenu popupMenu)
void setActive(final boolean active)
PickmapState< G, A, R > getPickmap(@NotNull final File file)
final MapViewsManager< G, A, R > mapViewsManager
final PickmapChooserView< G, A, R > view
final PickmapChooserModelListener< G, A, R > pickmapChooserModelListener
boolean doOpenPickmapMap(final boolean performAction)
void fireActivePickmapChanged(@Nullable final PickmapState< G, A, R > pickmapState)
final ChangeListener changeListener
void remove(final boolean deleteFile)
G getSelectedGameObject()
void reportLoadError(@Nullable File file, @NotNull String message)
void setLockAllPickmaps(final boolean lockAllPickmaps)
static final Category LOG
void addMapModelListener(@NotNull MapModelListener< G, A, R > listener)
boolean doAddNewPickmap(final boolean performAction)
final MapControlListener< G, A, R > mapControlListener
MapCursor< G, A, R > getMapCursor()
boolean doSavePickmap(final boolean performAction)
void setLocked(boolean locked)
void showNewPickmapDialog()
boolean doDeletePickmap(final boolean performAction)
final MapFolderTree< G, A, R > mapFolderTree
PickmapState< G, A, R > currentPickmapState
void removeMapModelListener(@NotNull MapModelListener< G, A, R > listener)
PickmapState< G, A, R > getSelectedPickmap()
MapControl< G, A, R > currentPickmapControl
boolean doRevertPickmap(final boolean performAction)
boolean isMatching(@NotNull final G gameObject)
static String getString(@NotNull final ActionBuilder actionBuilder, @NotNull final String key, @NotNull final String defaultValue)
Component getPickmapPanel()
void setPopupMenu(@NotNull final JPopupMenu popupMenu)
final MapModelListener< G, A, R > mapModelListener
void addPickmapChooserListener(@NotNull final PickmapChooserModelListener< G, A, R > pickmapChooserModelListener)
void addMapControlListener(@NotNull MapControlListener< G, A, R > listener)
final PickmapChooserModel< G, A, R > pickmapChooserModel
final NewMapDialogFactory< G, A, R > newMapDialogFactory
void addPickmapSettingsListener(@NotNull PickmapSettingsListener listener)
void getUnsavedPickmaps(@NotNull final Collection< MapControl< G, A, R >> unsavedMaps)
final PickmapSettingsListener pickmapSettingsListener
void addChangeListener(@NotNull final ChangeListener changeListener)
void reloadPickmap(@NotNull final File file)
boolean isLockAllPickmaps()
void removeMapControlListener(@NotNull MapControlListener< G, A, R > listener)
MapModel< G, A, R > getMapModel()
final FileControl< G, A, R > fileControl
void setAction(@NotNull final Action action, @NotNull final String name)
MapView< G, A, R > openMapFileWithView(@NotNull final MapFile mapFile, @Nullable final Point viewPosition)
final MapManagerListener< G, A, R > mapManagerListener
void setCurrentPickmap(@Nullable final PickmapState< G, A, R > currentPickmapState)
static final ActionBuilder ACTION_BUILDER
MapView< G, A, R > getMapViewFrame(@NotNull final MapControl< G, A, R > mapControl)
MapControl< G, A, R > getPickmap()
final PickmapSettings pickmapSettings