Go to the documentation of this file.
20 package net.sf.gridarta.mainactions;
22 import java.awt.Point;
23 import java.awt.Rectangle;
24 import java.util.ArrayList;
25 import java.util.Collection;
26 import java.util.IdentityHashMap;
27 import java.util.List;
30 import javax.swing.Action;
31 import javax.swing.JFrame;
65 import net.
sf.japi.swing.action.ActionMethod;
66 import org.jetbrains.annotations.NotNull;
67 import org.jetbrains.annotations.Nullable;
346 public void mapGridChanged(@NotNull
final MapGridEvent e) {
351 public void mapGridResized(@NotNull
final MapGridEvent e) {
369 public MainActions(@NotNull
final FindDialogManager<G, A, R> findDialogManager, @NotNull
final ReplaceDialogManager<G, A, R> replaceDialogManager, @NotNull
final JFrame
parent, @NotNull
final MapViewSettings mapViewSettings, @NotNull
final ArchetypeSet<G, A, R> archetypeSet, @NotNull
final CopyBuffer<G, A, R> copyBuffer, @NotNull
final ObjectChooser<G, A, R> objectChooser, @NotNull
final MapManager<G, A, R> mapManager, @NotNull
final InsertionModeSet<G, A, R> insertionModeSet) {
381 archetypeSet.addArchetypeSetListener(this::refreshMenus);
401 public void mapCreated(@NotNull
final MapControl<G, A, R> mapControl,
final boolean interactive) {
428 public void mapSizeChanged(@NotNull
final Size2D newSize) {
438 public void mapObjectsChanged(@NotNull
final Set<G> gameObjects, @NotNull
final Set<G> transientGameObjects) {
448 public void mapFileChanged(@Nullable
final MapFile oldMapFile) {
453 public void modifiedChanged() {
837 private boolean doFind(
final boolean performAction) {
839 if (mapView ==
null) {
875 private boolean doReplace(
final boolean performAction) {
877 if (mapView ==
null) {
893 private boolean doClear(
final boolean performAction) {
895 if (mapView ==
null) {
899 final Rectangle selectedRec = mapView.
getMapGrid().getSelectedRec();
900 if (selectedRec ==
null) {
916 private boolean doCut(
final boolean performAction) {
918 if (mapView ==
null) {
922 final Rectangle selectedRec = mapView.
getMapGrid().getSelectedRec();
923 if (selectedRec ==
null) {
939 private boolean doCopy(
final boolean performAction) {
941 if (mapView ==
null) {
945 final Rectangle selectedRec = mapView.
getMapGrid().getSelectedRec();
946 if (selectedRec ==
null) {
962 private boolean doPaste(
final boolean performAction) {
964 if (mapView ==
null) {
987 if (mapView ==
null) {
996 if (selectedSquares.isEmpty()) {
1002 if (selectedRec ==
null) {
1006 if (performAction) {
1022 if (mapControl ==
null) {
1027 if (mapView ==
null) {
1032 if (!shiftProcessor.
canShift(direction)) {
1036 if (performAction) {
1037 shiftProcessor.
shift(direction);
1050 if (mapView ==
null) {
1054 if (performAction) {
1068 if (mapView ==
null) {
1072 if (performAction) {
1086 if (mapView ==
null) {
1090 if (performAction) {
1104 if (mapView ==
null) {
1108 if (performAction) {
1122 if (mapView ==
null) {
1126 if (performAction) {
1140 if (mapView ==
null) {
1144 if (performAction) {
1158 if (mapView ==
null) {
1163 if (performAction) {
1177 if (mapView ==
null) {
1181 if (performAction) {
1192 final Collection<MatchCriteria<G, A, R>> matchCriteriaArch =
new ArrayList<>(archNames.length);
1193 for (
final String archName : archNames) {
1197 final Collection<MatchCriteria<G, A, R>> matchCriteriaName =
new ArrayList<>(names.length);
1198 for (
final String
name : names) {
1208 boolean doModify =
false;
1210 if (matchCriteriaArch.isEmpty() && matchCriteriaName.isEmpty()) {
1215 if (matchCriteria.matches(gameObject.getHead())) {
1222 if (!matchCriteria.matches(gameObject.getHead())) {
1232 gameObject.applyMassChange(layers, subLayers, changes);
1253 if (performAction) {
1270 if (performAction) {
1284 if (mapView ==
null) {
1288 boolean foundEmptySelectedSquare =
false;
1291 if (selectedSquare.isEmpty()) {
1292 foundEmptySelectedSquare =
true;
1296 if (!foundEmptySelectedSquare) {
1300 if (performAction) {
1301 final Map<MapSquare<G, A, R>, Void> newSelection =
new IdentityHashMap<>();
1302 Map<MapSquare<G, A, R>, Void> todo =
new IdentityHashMap<>();
1304 todo.put(mapSquare,
null);
1305 newSelection.put(mapSquare,
null);
1309 final Point point =
new Point();
1310 while (!todo.isEmpty()) {
1311 final Map<MapSquare<G, A, R>, Void> tmp =
new IdentityHashMap<>();
1313 for (
int dy = -1; dy <= 1; dy++) {
1314 for (
int dx = -1; dx <= 1; dx++) {
1315 if (dx != 0 || dy != 0) {
1316 mapSquare.getMapLocation(point, dx, dy);
1319 if (newMapSquare.
isEmpty() && !newSelection.containsKey(newMapSquare)) {
1320 tmp.put(newMapSquare,
null);
1321 newSelection.put(newMapSquare,
null);
1335 mapSquare.getMapLocation(point);
1353 if (mapView ==
null) {
1357 if (performAction) {
1380 if (mapView ==
null) {
1384 if (performAction) {
1423 private void tileStretching(@NotNull
final MapView<G, A, R> mapView,
final int heightValue,
final boolean isAbsolute, @NotNull
final Integer @Nullable [] subLayers) {
1430 gameObject.updateTileStretch(heightValue, isAbsolute, subLayers);
1439 public void setAction(@NotNull
final Action action, @NotNull
final String
name) {
1465 case "shiftNorthEast":
1473 case "shiftSouthEast":
1481 case "shiftSouthWest":
1489 case "shiftNorthWest":
1521 case "randFillAuto":
1525 case "randFillAbove":
1529 case "randFillBelow":
1545 case "invertSelection":
1549 case "expandEmptySelection":
1553 case "tileStretchingSet":
1557 case "tileStretchingClear":
1561 case "tileStretchingIncrease":
1565 case "tileStretchingDecrease":
1570 throw new IllegalArgumentException(
"unsupported action name: " +
name);
boolean isPointValid(@Nullable Point pos)
InsertionMode getTopmostInsertionMode()
boolean doRandFillAuto(final boolean performAction)
boolean doTileStretchingChangeSet(final boolean performAction)
List<? extends BaseObject< G, A, R, ?> > getSelections()
boolean findNext(@NotNull final MapView< G, A, R > mapView, final boolean performAction)
void tileStretchingClear()
boolean doInvertSelection(final boolean performAction)
MapControl< G, A, R > currentMapControl
boolean showMassChangeDialog(@NotNull final Component parent)
boolean doSelectAll(final boolean performAction)
boolean doFloodFill(final boolean performAction)
boolean doTileStretchingChange(final boolean performAction, final int heightValue, final boolean isAbsolute)
void showDialog(@NotNull final MapView< G, A, R > mapView)
Rectangle getSelectedRec()
Action aTileStretchingSet
MapView< G, A, R > getSelection()
void tileStretchingDecrease()
void activeMapViewChanged(@Nullable final MapView< G, A, R > mapView)
Action aExpandEmptySelection
final MapViewSettings mapViewSettings
final ObjectChooser< G, A, R > objectChooser
void clear(@NotNull final MapView< G, A, R > mapView, @NotNull final Rectangle selectedRec)
final ReplaceDialogManager< G, A, R > replaceDialogManager
boolean doFillAbove(final boolean performAction)
boolean doExpandEmptySelection(final boolean performAction)
Action aTileStretchingIncrease
void shift(@NotNull final Direction dir)
void setAction(@NotNull final Action action, @NotNull final String name)
void showDialog(@NotNull final MapView< G, A, R > mapView)
MainActions(@NotNull final FindDialogManager< G, A, R > findDialogManager, @NotNull final ReplaceDialogManager< G, A, R > replaceDialogManager, @NotNull final JFrame parent, @NotNull final MapViewSettings mapViewSettings, @NotNull final ArchetypeSet< G, A, R > archetypeSet, @NotNull final CopyBuffer< G, A, R > copyBuffer, @NotNull final ObjectChooser< G, A, R > objectChooser, @NotNull final MapManager< G, A, R > mapManager, @NotNull final InsertionModeSet< G, A, R > insertionModeSet)
final CopyBuffer< G, A, R > copyBuffer
void mapViewClosing(@NotNull final MapView< G, A, R > mapView)
MapModelListener< G, A, R > newMapModelListener()
boolean doFillBelow(final boolean performAction)
final InsertionModeSet< G, A, R > insertionModeSet
boolean doFindNext(final boolean performAction)
boolean isTileStretchingAbsolute()
boolean doPaste(final boolean performAction)
void beginTransaction(@NotNull String name)
void fillRandom(@NotNull final MapView< G, A, R > mapView, @NotNull final InsertionMode insertionMode)
MapSquare< G, A, R > getMapSquare(@NotNull Point pos)
boolean doRandFillBelow(final boolean performAction)
InsertionMode getAutoInsertionMode()
boolean doReplace(final boolean performAction)
boolean showTileStretchingDialog(@NotNull final Component parent)
void pasteTiled(@NotNull final MapView< G, A, R > mapView, @NotNull final Iterable< MapSquare< G, A, R >> selectedSquares, @NotNull final Point origin)
boolean showRandomFillDialog(@NotNull final Component parent)
void fill(@NotNull final MapView< G, A, R > mapView, @NotNull final InsertionMode insertionMode)
MapControl< G, A, R > getMapControl()
void expandEmptySelection()
boolean doPasteTiled(final boolean performAction)
final RandomFillDialog randomFillDialog
Action aTileStretchingDecrease
List< MapSquare< G, A, R > > getSelectedSquares()
boolean isRandomFillSkipAdjacentSquares()
boolean doRandFillAbove(final boolean performAction)
final TileStretchingDialog tileStretchingDialog
MapManagerListener< G, A, R > newMapManagerListener()
void select(@NotNull final Point pos, @NotNull final SelectionMode selectionMode)
boolean doFind(final boolean performAction)
final MassChangeDialog massChangeDialog
void copy(@NotNull final MapView< G, A, R > mapView, @NotNull final Rectangle selectedRec)
final MapGridListener mapGridListener
InsertionMode getBottommostInsertionMode()
static< G extends GameObject< G, A, R > A extends R extends Archetype< G, A, R > void floodFill(@NotNull final MapModel< G, A, R > mapModel, @NotNull final Point start, @NotNull final List<? extends BaseObject< G, A, R, ?>> gameObjects, @NotNull final InsertionModeSet< G, A, R > insertionModeSet)
void mapViewCreated(@NotNull final MapView< G, A, R > mapView)
boolean doShift(final boolean performAction, @NotNull final Direction direction)
boolean doMassChange(final boolean performAction)
void addMapModelListener(@NotNull final MapModelListener< G, A, R > listener)
MapView< G, A, R > currentMapView
boolean doFillAuto(final boolean performAction)
MapModel< G, A, R > getMapModel()
boolean doCut(final boolean performAction)
boolean doFindPrev(final boolean performAction)
MapCursor< G, A, R > getMapCursor()
void tileStretching(@NotNull final MapView< G, A, R > mapView, final int heightValue, final boolean isAbsolute, @NotNull final Integer @Nullable[] subLayers)
boolean doClear(final boolean performAction)
void tileStretchingIncrease()
void paste(@NotNull final MapView< G, A, R > mapView, @NotNull final Point startLocation)
void cut(@NotNull final MapView< G, A, R > mapView, @NotNull final Rectangle selectedRec)
boolean canShift(@NotNull final Direction dir)
boolean findPrev(@NotNull final MapView< G, A, R > mapView, final boolean performAction)
static< G extends GameObject< G, A, R > A extends R extends Archetype< G, A, R > void fill(@NotNull final MapModel< G, A, R > mapModel, @NotNull final Collection< MapSquare< G, A, R >> selection, @NotNull final InsertionMode insertionMode, @NotNull final List<? extends BaseObject< G, A, R, ?>> gameObjects, final int density, final boolean noAdjacent)
boolean doCopy(final boolean performAction)
final FindDialogManager< G, A, R > findDialogManager
Action aTileStretchingClear