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) {
379 currentMapControl = mapManager.getCurrentMap();
381 archetypeSet.addArchetypeSetListener(this::refreshMenus);
396 currentMapControl = mapControl;
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() {
464 if (aClear != null) {
466 aClear.setEnabled(
doClear(
false));
470 aCut.setEnabled(
doCut(
false));
474 aCopy.setEnabled(
doCopy(
false));
476 if (aPaste != null) {
478 aPaste.setEnabled(
doPaste(
false));
480 if (aPasteTiled != null) {
484 if (aShiftNorth != null) {
488 if (aShiftNorthEast != null) {
492 if (aShiftEast != null) {
496 if (aShiftSouthEast != null) {
500 if (aShiftSouth != null) {
504 if (aShiftSouthWest != null) {
508 if (aShiftWest != null) {
512 if (aShiftNorthWest != null) {
518 aFind.setEnabled(
doFind(
false));
520 if (aFindNext != null) {
524 if (aFindPrev != null) {
528 if (aReplace != null) {
532 if (aFillAuto != null) {
536 if (aFillAbove != null) {
540 if (aFillBelow != null) {
544 if (aRandFillAuto != null) {
548 if (aRandFillAbove != null) {
552 if (aRandFillBelow != null) {
556 if (aFloodFill != null) {
560 if (aMassChange != null) {
564 if (aSelectAll != null) {
568 if (aInvertSelection != null) {
572 if (aExpandEmptySelection != null) {
576 if (aTileStretchingSet != null) {
580 if (aTileStretchingClear != null) {
584 if (aTileStretchingIncrease != null) {
588 if (aTileStretchingDecrease != null) {
869 private boolean doFind(
final boolean performAction) {
871 if (mapView == null) {
889 return mapView != null && findDialogManager.
findNext(mapView, performAction);
899 return mapView != null && findDialogManager.
findPrev(mapView, performAction);
907 private boolean doReplace(
final boolean performAction) {
909 if (mapView == null) {
925 private boolean doClear(
final boolean performAction) {
927 if (mapView == null) {
931 final Rectangle selectedRec = mapView.
getMapGrid().getSelectedRec();
932 if (selectedRec == null) {
937 copyBuffer.
clear(mapView, selectedRec);
948 private boolean doCut(
final boolean performAction) {
950 if (mapView == null) {
954 final Rectangle selectedRec = mapView.
getMapGrid().getSelectedRec();
955 if (selectedRec == null) {
960 copyBuffer.
cut(mapView, selectedRec);
971 private boolean doCopy(
final boolean performAction) {
973 if (mapView == null) {
977 final Rectangle selectedRec = mapView.
getMapGrid().getSelectedRec();
978 if (selectedRec == null) {
983 copyBuffer.
copy(mapView, selectedRec);
994 private boolean doPaste(
final boolean performAction) {
996 if (mapView == null) {
1005 if (performAction) {
1006 copyBuffer.
paste(mapView, startLocation);
1019 if (mapView == null) {
1028 if (selectedSquares.isEmpty()) {
1034 if (selectedRec == null) {
1038 if (performAction) {
1040 copyBuffer.
pasteTiled(mapView, selectedSquares, cursorLocation);
1054 if (mapControl == null) {
1059 if (mapView == null) {
1064 if (!shiftProcessor.
canShift(direction)) {
1068 if (performAction) {
1069 shiftProcessor.
shift(direction);
1082 if (mapView == null) {
1086 if (performAction) {
1100 if (mapView == null) {
1104 if (performAction) {
1118 if (mapView == null) {
1122 if (performAction) {
1136 if (mapView == null) {
1140 if (performAction) {
1154 if (mapView == null) {
1158 if (performAction) {
1172 if (mapView == null) {
1176 if (performAction) {
1190 if (mapView == null) {
1195 if (performAction) {
1209 if (mapView == null) {
1213 if (performAction) {
1218 final String[] archNames = massChangeDialog.
getArchNames();
1219 final String[] names = massChangeDialog.
getNames();
1220 final Integer[] layers = massChangeDialog.
getLayers();
1221 final Integer[] subLayers = massChangeDialog.
getSubLayers();
1222 final String changes = massChangeDialog.
getChanges();
1224 final Collection<MatchCriteria<G, A, R>> matchCriteriaArch =
new ArrayList<>(archNames.length);
1225 for (
final String archName : archNames) {
1229 final Collection<MatchCriteria<G, A, R>> matchCriteriaName =
new ArrayList<>(names.length);
1230 for (
final String name : names) {
1240 boolean doModify =
false;
1242 if (matchCriteriaArch.isEmpty() && matchCriteriaName.isEmpty()) {
1247 if (matchCriteria.matches(gameObject.getHead())) {
1254 if (!matchCriteria.matches(gameObject.getHead())) {
1264 gameObject.applyMassChange(layers, subLayers, changes);
1281 if (currentMapView == null) {
1285 if (performAction) {
1298 if (currentMapView == null) {
1302 if (performAction) {
1303 currentMapView.
getMapGrid().invertSelection();
1316 if (mapView == null) {
1320 boolean foundEmptySelectedSquare =
false;
1323 if (selectedSquare.isEmpty()) {
1324 foundEmptySelectedSquare =
true;
1328 if (!foundEmptySelectedSquare) {
1332 if (performAction) {
1333 final Map<MapSquare<G, A, R>, Void> newSelection =
new IdentityHashMap<>();
1334 Map<MapSquare<G, A, R>, Void> todo =
new IdentityHashMap<>();
1336 todo.put(mapSquare, null);
1337 newSelection.put(mapSquare, null);
1341 final Point point =
new Point();
1342 while (!todo.isEmpty()) {
1343 final Map<MapSquare<G, A, R>, Void> tmp =
new IdentityHashMap<>();
1345 for (
int dy = -1; dy <= 1; dy++) {
1346 for (
int dx = -1; dx <= 1; dx++) {
1347 if (dx != 0 || dy != 0) {
1348 mapSquare.getMapLocation(point, dx, dy);
1351 if (newMapSquare.
isEmpty() && !newSelection.containsKey(newMapSquare)) {
1352 tmp.put(newMapSquare, null);
1353 newSelection.put(newMapSquare, null);
1367 mapSquare.getMapLocation(point);
1385 if (mapView == null) {
1389 if (performAction) {
1395 final Integer[] subLayers = tileStretchingDialog.
getSubLayers();
1412 if (mapView == null) {
1416 if (performAction) {
1429 FillUtils.fill(mapView.getMapControl().getMapModel(), mapView.getSelectedSquares(), insertionMode, objectChooser.
getSelections(), -1,
false);
1444 FillUtils.fill(mapView.getMapControl().getMapModel(), mapView.getSelectedSquares(), insertionMode, objectChooser.
getSelections(), fillDensity, noAdjacent);
1462 gameObject.updateTileStretch(heightValue, isAbsolute, subLayers);
1471 public void setAction(@NotNull
final Action action, @NotNull
final String name) {
1472 if (name.equals(
"clear")) {
1474 }
else if (name.equals(
"cut")) {
1476 }
else if (name.equals(
"copy")) {
1478 }
else if (name.equals(
"paste")) {
1480 }
else if (name.equals(
"pasteTiled")) {
1481 aPasteTiled = action;
1482 }
else if (name.equals(
"shiftNorth")) {
1483 aShiftNorth = action;
1484 }
else if (name.equals(
"shiftNorthEast")) {
1485 aShiftNorthEast = action;
1486 }
else if (name.equals(
"shiftEast")) {
1487 aShiftEast = action;
1488 }
else if (name.equals(
"shiftSouthEast")) {
1489 aShiftSouthEast = action;
1490 }
else if (name.equals(
"shiftSouth")) {
1491 aShiftSouth = action;
1492 }
else if (name.equals(
"shiftSouthWest")) {
1493 aShiftSouthWest = action;
1494 }
else if (name.equals(
"shiftWest")) {
1495 aShiftWest = action;
1496 }
else if (name.equals(
"shiftNorthWest")) {
1497 aShiftNorthWest = action;
1498 }
else if (name.equals(
"find")) {
1500 }
else if (name.equals(
"findNext")) {
1502 }
else if (name.equals(
"findPrev")) {
1504 }
else if (name.equals(
"replace")) {
1506 }
else if (name.equals(
"fillAuto")) {
1508 }
else if (name.equals(
"fillAbove")) {
1509 aFillAbove = action;
1510 }
else if (name.equals(
"fillBelow")) {
1511 aFillBelow = action;
1512 }
else if (name.equals(
"randFillAuto")) {
1513 aRandFillAuto = action;
1514 }
else if (name.equals(
"randFillAbove")) {
1515 aRandFillAbove = action;
1516 }
else if (name.equals(
"randFillBelow")) {
1517 aRandFillBelow = action;
1518 }
else if (name.equals(
"floodFill")) {
1519 aFloodFill = action;
1520 }
else if (name.equals(
"massChange")) {
1521 aMassChange = action;
1522 }
else if (name.equals(
"selectAll")) {
1523 aSelectAll = action;
1524 }
else if (name.equals(
"invertSelection")) {
1525 aInvertSelection = action;
1526 }
else if (name.equals(
"expandEmptySelection")) {
1527 aExpandEmptySelection = action;
1528 }
else if (name.equals(
"tileStretchingSet")) {
1529 aTileStretchingSet = action;
1530 }
else if (name.equals(
"tileStretchingClear")) {
1531 aTileStretchingClear = action;
1532 }
else if (name.equals(
"tileStretchingIncrease")) {
1533 aTileStretchingIncrease = action;
1534 }
else if (name.equals(
"tileStretchingDecrease")) {
1535 aTileStretchingDecrease = action;
1537 throw new IllegalArgumentException();
1544 currentMapView = mapView;
1550 mapView.getMapGrid().addMapGridListener(mapGridListener);
1555 mapView.getMapGrid().removeMapGridListener(mapGridListener);
void replace()
"Replace" was selected from the Edit menu.
void shiftNorthWest()
"Shift North West" was selected from the Edit menu.
void massChange()
"Mass change" was selected from the Edit menu.
Action aCopy
Action called for "copy".
boolean doReplace(final boolean performAction)
Executes the "replace" action.
boolean doPaste(final boolean performAction)
Executes the "paste" action.
void shiftSouthWest()
"Shift South West" was selected from the Edit menu.
Rectangle getSelectedRec()
Returns the smallest rectangle containing selection.
void tileStretchingIncrease()
Invoked when the user wants to increase tile stretching on the selected map squares.
MapModelListener< G, A, R > newMapModelListener()
Creates a new MapModelListener that refreshes the actions when the map contents change.
InsertionMode< G, A, R > getAutoInsertionMode()
Returns the "auto" insertion mode.
List< MapSquare< G, A, R > > getSelectedSquares()
Returns the selected squares.
boolean isPointValid(@Nullable Point pos)
Checks whether the given coordinate is within map bounds.
Displays a dialog asking for parameters for the "mass change" function.
String [] getArchNames()
Returns the arch names to affect.
A MapModel reflects the data of a map.
A MapManager manages all opened maps.
MapView< G, A, R > currentMapView
The last known active map view, or.
boolean doSelectAll(final boolean performAction)
Executes the "select all" action.
Graphical User Interface of Gridarta.
boolean isTileStretchingAbsolute()
Action method for "absolute" action.
boolean doPasteTiled(final boolean performAction)
Executes the "paste tiled" action.
Action aClear
Action called for "clear".
Integer [] getSubLayers()
Returns the sub-layers to affect.
Action aFillBelow
Action called for "fill below".
Creates and displays the find dialog.
Action aExpandEmptySelection
Action called for "grow empty selection".
boolean isEmpty()
Check whether this square is empty.
void mapViewClosing(@NotNull final MapView< G, A, R > mapView)
This event handler is called when a map view is to be closed.
This package contains the framework for validating maps.
Action aShiftSouthWest
Action called for "shift south west".
boolean showMassChangeDialog(@NotNull final Component parent)
Displays the mass change dialog.
void endTransaction()
End a transaction.
boolean doRandFillAbove(final boolean performAction)
Executes the "rand fill above" action.
boolean doFindPrev(final boolean performAction)
Executes the "find prev" action.
MapGrid getMapGrid()
Returns the MapGrid of this view.
Action aRandFillAuto
Action called for "random fill".
boolean doCut(final boolean performAction)
Executes the "cut" action.
void clear(@NotNull final MapView< G, A, R > mapView, @NotNull final Rectangle selectedRec)
Executing the Clear command.
Action aShiftSouth
Action called for "shift south".
final InsertionModeSet< G, A, R > insertionModeSet
The InsertionModeSet to use.
boolean findNext(@NotNull final MapView< G, A, R > mapView, final boolean performAction)
Executes the "find next" action.
MapManagerListener< G, A, R > newMapManagerListener()
Creates a new MapManagerListener that refreshes the actions when the current map changes.
Interface for listeners listening on MapModel events.
Action aInvertSelection
Action called for "invert selection".
MapView< G, A, R > getSelection()
Determine if the current map has a selection.
Action aShiftSouthEast
Action called for "shift south east".
int getHeightValue()
Returns the height value.
boolean doClear(final boolean performAction)
Executes the "clear" action.
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)
Create a new instance.
final MapViewSettings mapViewSettings
The map view settings instance.
void paste()
"Paste" was selected from the Edit menu.
boolean showRandomFillDialog(@NotNull final Component parent)
Displays the random fill dialog.
final ObjectChooser< G, A, R > objectChooser
The ObjectChooser instance to use.
void shiftEast()
"Shift East" was selected from the Edit menu.
Integer [] getLayers()
Returns the layers to affect.
void clear()
"Clear" was selected from the Edit menu.
void cut(@NotNull final MapView< G, A, R > mapView, @NotNull final Rectangle selectedRec)
Executing the Cut command.
boolean doTileStretchingChange(final boolean performAction, final int heightValue, final boolean isAbsolute)
Executes one of the "tile stretching clear/increase/decrease" actions.
MapControl< G, A, R > getMapControl()
Return the controller of this view.
void selectAll()
Invoked when the user wants to select all squares from a map.
Action aRandFillAbove
Action called for "random fill above".
void shiftSouth()
"Shift South" was selected from the Edit menu.
boolean doExpandEmptySelection(final boolean performAction)
Executes the "expand empty selection" action.
void unSelect()
Clears all selection and pre-selection flags from the grid.
boolean doFindNext(final boolean performAction)
Executes the "find next" action.
boolean doShift(final boolean performAction, @NotNull final Direction direction)
Executes the "shift" action.
boolean isEmpty()
Returns whether this copy buffer contains any game objects.
Point getLocation()
Get position of cursor.
MapModel< G, A, R > getMapModel()
Returns the map model.
void shiftNorthEast()
"Shift North East" was selected from the Edit menu.
boolean canShift(@NotNull final Direction dir)
Check whether shifting is possible.
Base package of all Gridarta classes.
void pasteTiled(@NotNull final MapView< G, A, R > mapView, @NotNull final Iterable< MapSquare< G, A, R >> selectedSquares, @NotNull final Point origin)
Executing the Paste Tiled command.
Action aCut
Action called for "cut".
void fillRandom(@NotNull final MapView< G, A, R > mapView, @NotNull final InsertionMode< G, A, R > insertionMode)
"RandomFill" was selected from the Edit menu.
Reflects a game object (object on a map).
Action aPaste
Action called for "paste".
boolean doFillAuto(final boolean performAction)
Executes the "fill auto" action.
Creates and displays the replace dialog.
Interface for listeners listening to MapGridEvents.
void fillAbove()
"Fill above" was selected from the Edit menu.
Action aSelectAll
Action called for "select all".
Interface for listeners listening to MapManager changes.
final MapGridListener mapGridListener
The map grid listener used to detect map grid changes.
void tileStretchingDecrease()
Invoked when the user wants to decrease tile stretching on the selected map squares.
InsertionMode< G, A, R > getBottommostInsertionMode()
Returns the "bottommost" insertion mode.
boolean doCopy(final boolean performAction)
Executes the "copy" action.
Displays a dialog asking for parameters for the "tile stretching set" function.
final FindDialogManager< G, A, R > findDialogManager
The find dialog manager to use.
void activeMapViewChanged(@Nullable final MapView< G, A, R > mapView)
This event handler is called when the current map view has changed.
boolean isRandomFillSkipAdjacentSquares()
Action method for "skip adjacent squares" action.
Container for settings that affect the rendering of maps.
MapSquare< G, A, R > getMapSquare(@NotNull Point pos)
Get the square at a specified location.
boolean doMassChange(final boolean performAction)
Executes the "mass change" actions.
InsertionMode< G, A, R > getTopmostInsertionMode()
Returns the "topmost" insertion mode.
void findPrev()
"Find previous" was selected from the Edit menu.
GameObjects are the objects based on Archetypes found on maps.
final ReplaceDialogManager< G, A, R > replaceDialogManager
The replace dialog manager to use.
void randFillAuto()
"Random fill" was selected from the Edit menu.
Action aFillAbove
Action called for "fill above".
Interface for listeners interested in events related to MapViewManager instances. ...
String [] getNames()
Returns the object names to affect.
boolean doFloodFill(final boolean performAction)
Executes the "flood fill" action.
boolean showTileStretchingDialog(@NotNull final Component parent)
Displays the tile stretching dialog.
Action aTileStretchingClear
Action called for "tile stretching -> clear Z".
2D-Grid containing flags for selection, pre-selection, cursor, warnings and errors.
void shiftNorth()
"Shift North" was selected from the Edit menu.
void expandEmptySelection()
Invoked when the user wants to expand the selection of empty map squares to surrounding empty map squ...
Action aFindNext
Action called for "find next".
void showDialog(@NotNull final MapView< G, A, R > mapView)
Displays the replace dialog.
final CopyBuffer< G, A, R > copyBuffer
The copy buffer instance.
void floodFill()
"Flood fill" was selected from the Edit menu.
void cut()
"Cut" was selected from the Edit menu.
List<? extends BaseObject< G, A, R, ?> > getSelections()
Returns the selected arches in the left-side panel.
void tileStretching(@NotNull final MapView< G, A, R > mapView, final int heightValue, final boolean isAbsolute, @Nullable final Integer[] subLayers)
Performs one of the "tile stretching" actions.
Base classes for rendering maps.
Displays a dialog asking for parameters for the "random fill" function.
void fill(@NotNull final MapView< G, A, R > mapView, @NotNull final InsertionMode< G, A, R > insertionMode)
"Fill" was selected from the Edit menu.
Action aTileStretchingDecrease
Action called for "tile stretching -> decrease Z".
void beginTransaction()
Starts a new transaction.
Action aShiftWest
Action called for "shift west".
void showDialog(@NotNull final MapView< G, A, R > mapView)
Displays the replace dialog.
Action aMassChange
Action called for "mass change".
boolean doTileStretchingChangeSet(final boolean performAction)
Executes one of the "tile stretching" actions.
final RandomFillDialog randomFillDialog
The RandomFillDialog instance.
void randFillBelow()
"Random fill below" was selected from the Edit menu.
void mapViewCreated(@NotNull final MapView< G, A, R > mapView)
This event handler is called when a map view was created.
void randFillAbove()
"Random fill above" was selected from the Edit menu.
Action aFloodFill
Action called for "flood fill".
Encapsulates actions and related functions.
A MatchCriteria that matches by object name.
A getMapArchObject()
Returns the Map Arch Object with the meta information about the map.
boolean doFind(final boolean performAction)
Executes the "find" action.
void refreshMenus()
Enable/disable menu entries based on the current state.
boolean doFillBelow(final boolean performAction)
Executes the "fill below" action.
void shiftSouthEast()
"Shift South East" was selected from the Edit menu.
void select(@NotNull final Point pos, @NotNull final SelectionMode selectionMode)
Selects or deselects a single square.
Action aShiftEast
Action called for "shift east".
MapCursor< G, A, R > getMapCursor()
Returns the MapCursor of this view.
void endTransaction()
Ends a transaction.
void shiftWest()
"Shift West" was selected from the Edit menu.
String getChanges()
Returns the actual changes to apply.
Currently nothing more than a marker interface for unification.
Action aTileStretchingSet
Action called for "tile stretching -> set Z".
void fillBelow()
"Fill below" was selected from the Edit menu.
Action aPasteTiled
Action called for "paste tiled".
A map view consists of a map grid and a map cursor, and is attached to a map control.
void shift(@NotNull final Direction dir)
Shift the map contents by one square.
void setAction(@NotNull final Action action, @NotNull final String name)
Sets the Action instance for this editor action.
Action aFindPrev
Action called for "find prev".
void tileStretchingClear()
Invoked when the user wants to clear tile stretching on the selected map squares. ...
Action aShiftNorthWest
Action called for "shift north west".
final TileStretchingDialog tileStretchingDialog
The TileStretchingDialog instance.
Action aTileStretchingIncrease
Action called for "tile stretching -> increase Z".
An interface for classes that collect errors.
ADD
All squares that are preselected get selected.
Action aFillAuto
Action called for "fill".
Action aRandFillBelow
Action called for "random fill below".
void pasteTiled()
"Paste Tiled" was selected from the Edit menu.
Utility class implementing fill operations on map instances.
boolean doInvertSelection(final boolean performAction)
Executes the "invert selection" action.
Interface that captures similarities between different ArchetypeSet implementations.
Modes that describe how squares get selected.
Action aFind
Action called for "find".
void findNext()
"Find next" was selected from the Edit menu.
Common base interface for ObjectChoosers.
void beginTransaction(@NotNull String name)
Starts a new transaction.
final JFrame parent
The parent component for dialog windows.
void invertSelection()
Invoked when the user wants to invert all selected squares from a map.
A MatchCriteria that matches by archetype name.
void find()
"Find" was selected from the Edit menu.
Action aReplace
Action called for "replace".
void copy()
"Copy" was selected from the Edit menu.
Action aShiftNorth
Action called for "shift north".
Criteria for game object matchers.
Common base implementation of CopyBuffer.
void fillAuto()
"Fill" was selected from the Edit menu.
void paste(@NotNull final MapView< G, A, R > mapView, @NotNull final Point startLocation)
Executing the Paste command.
MapControl< G, A, R > currentMapControl
The last known active map, or.
boolean doFillAbove(final boolean performAction)
Executes the "fill above" action.
The location of a map file with a map directory.
boolean doRandFillAuto(final boolean performAction)
Executes the "rand fill auto" action.
Interface for MapArchObjects.
Integer [] getSubLayers()
Returns the sub-layers to affect.
Performs a "shift" operation in a map: shift all selected squares into the given direction.
Action aShiftNorthEast
Action called for "shift north east".
void tileStretchingSet()
Invoked when the user wants to set tile stretching on the selected map squares.
int getFillDensity()
Returns the fill density.
boolean doRandFillBelow(final boolean performAction)
Executes the "rand fill below" action.
The class Size2D represents a 2d rectangular area.
This event is created by MapGrid.
boolean findPrev(@NotNull final MapView< G, A, R > mapView, final boolean performAction)
Executes the "find next" action.
final MassChangeDialog massChangeDialog
The MassChangeDialog instance.
void copy(@NotNull final MapView< G, A, R > mapView, @NotNull final Rectangle selectedRec)
Executing the Copy command.