20 package net.sf.gridarta.gui.map.mapactions;
22 import java.awt.Component;
23 import java.awt.Dimension;
24 import java.awt.Point;
25 import java.awt.Rectangle;
26 import java.io.IOException;
27 import javax.swing.JOptionPane;
28 import javax.swing.JScrollPane;
43 import net.
sf.japi.swing.action.ActionBuilder;
44 import net.
sf.japi.swing.action.ActionBuilderFactory;
45 import org.jetbrains.annotations.NotNull;
46 import org.jetbrains.annotations.Nullable;
58 private static final ActionBuilder
ACTION_BUILDER = ActionBuilderFactory.getInstance().getActionBuilder(
"net.sf.gridarta");
110 mapFile = mapView.getMapControl().getMapModel().getMapFile(mapPath);
113 if (destinationPoint !=
null) {
121 return enterMap(mapView, mapFile, destinationPoint, direction);
137 }
catch (
final IOException ex) {
142 if (destinationPoint !=
null) {
144 }
else if (mapView !=
null) {
149 if (mapView !=
null &&
ACTION_BUILDER.showOnetimeConfirmDialog(
parent, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
"enterExitClose") == JOptionPane.YES_OPTION) {
163 final Point point2 = point.x == -1 && point.y == -1 ? mapView.getMapControl().getMapModel().getMapArchObject().getEnter() : point;
164 mapView.centerMapView(point2);
165 mapView.setCursorLocation(point2);
179 mapLocation =
new MapLocation(exit, allowRandomMapParameters);
197 final Dimension newViewSize = newMapView.getViewport().getViewSize();
198 final Rectangle oldViewRectangle = oldMapView.getViewport().getViewRect();
200 final Rectangle scrollTo;
203 scrollTo =
new Rectangle(oldViewRectangle.x, 0, oldViewRectangle.width, oldViewRectangle.height);
207 scrollTo =
new Rectangle(oldViewRectangle.x, newViewSize.height - oldViewRectangle.height, oldViewRectangle.width, oldViewRectangle.height);
211 scrollTo =
new Rectangle(0, oldViewRectangle.y, oldViewRectangle.width, oldViewRectangle.height);
215 scrollTo =
new Rectangle(newViewSize.width - oldViewRectangle.width, oldViewRectangle.y, oldViewRectangle.width, oldViewRectangle.height);
219 scrollTo =
new Rectangle(0, newViewSize.height - oldViewRectangle.height, oldViewRectangle.width, oldViewRectangle.height);
223 scrollTo =
new Rectangle(0, 0, oldViewRectangle.width, oldViewRectangle.height);
227 scrollTo =
new Rectangle(newViewSize.width - oldViewRectangle.width, 0, oldViewRectangle.width, oldViewRectangle.height);
231 scrollTo =
new Rectangle(newViewSize.width - oldViewRectangle.width, newViewSize.height - oldViewRectangle.height, oldViewRectangle.width, oldViewRectangle.height);
236 scrollTo =
new Rectangle(oldViewRectangle.x, oldViewRectangle.y, oldViewRectangle.width, oldViewRectangle.height);
240 throw new AssertionError();
243 if (scrollTo.x + scrollTo.width > newViewSize.width) {
244 scrollTo.x = newViewSize.width - scrollTo.width;
246 if (scrollTo.x < 0) {
249 if (scrollTo.y + scrollTo.height > newViewSize.height) {
250 scrollTo.y = newViewSize.height - scrollTo.height;
252 if (scrollTo.y < 0) {
255 return scrollTo.getLocation();
267 return new Point((oldCursorLocation.x + direction.getDx() + mapSize.getWidth()) % mapSize.getWidth(), (oldCursorLocation.y + direction.getDy() + mapSize.getHeight()) % mapSize.getHeight());