From 63d1710cb7581ab4592025350d2ada6463fd49d7 Mon Sep 17 00:00:00 2001 From: BetaSteward Date: Sun, 5 Dec 2010 03:36:59 +0000 Subject: [PATCH] fixed issue 36 --- .../java/mage/client/game/AbilityPicker.java | 2 ++ .../mage/client/util/gui/GuiDisplayUtil.java | 22 +++++++++++++++++++ .../java/mage/server/game/GameController.java | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/Mage.Client/src/main/java/mage/client/game/AbilityPicker.java b/Mage.Client/src/main/java/mage/client/game/AbilityPicker.java index d0c6ded36fa..b9d027a6eec 100644 --- a/Mage.Client/src/main/java/mage/client/game/AbilityPicker.java +++ b/Mage.Client/src/main/java/mage/client/game/AbilityPicker.java @@ -39,6 +39,7 @@ import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; import mage.client.MageFrame; import mage.client.remote.Session; +import mage.client.util.gui.GuiDisplayUtil; import mage.view.AbilityPickerView; /** @@ -66,6 +67,7 @@ public class AbilityPicker extends JPopupMenu implements PopupMenuListener { this.add(new AbilityPickerAction(choice.getKey(), choice.getValue())); } this.show(MageFrame.getDesktop(), p.x, p.y); + GuiDisplayUtil.keepComponentInsideScreen(p.x, p.y, this); } @Override diff --git a/Mage.Client/src/main/java/mage/client/util/gui/GuiDisplayUtil.java b/Mage.Client/src/main/java/mage/client/util/gui/GuiDisplayUtil.java index 621eca69335..fabcffcbc14 100644 --- a/Mage.Client/src/main/java/mage/client/util/gui/GuiDisplayUtil.java +++ b/Mage.Client/src/main/java/mage/client/util/gui/GuiDisplayUtil.java @@ -1,7 +1,10 @@ package mage.client.util.gui; import java.awt.Color; +import java.awt.Component; +import java.awt.Dimension; import java.awt.Font; +import java.awt.Insets; import javax.swing.JButton; import javax.swing.JLabel; @@ -101,4 +104,23 @@ public class GuiDisplayUtil { return out.toString().toLowerCase(); } + + public static void keepComponentInsideScreen(int x, int y, Component c) { + Dimension screenDim = c.getToolkit().getScreenSize(); + Insets insets = c.getToolkit().getScreenInsets(c.getGraphicsConfiguration()); + + if (x + c.getWidth() > screenDim.width - insets.right) { + x = (screenDim.width - insets.right) - c.getWidth(); + } else if (x < insets.left) { + x = insets.left; + } + + if (y + c.getHeight() > screenDim.height - insets.bottom) { + y = (screenDim.height - insets.bottom) - c.getHeight(); + } else if (y < insets.top) { + y = insets.top; + } + + c.setLocation(x, y); + } } diff --git a/Mage.Server/src/main/java/mage/server/game/GameController.java b/Mage.Server/src/main/java/mage/server/game/GameController.java index 2615cfd5abb..7739f94f110 100644 --- a/Mage.Server/src/main/java/mage/server/game/GameController.java +++ b/Mage.Server/src/main/java/mage/server/game/GameController.java @@ -410,7 +410,7 @@ public class GameController implements GameCallback { private void addCardsForTesting(Game game) { try { File f = new File(INIT_FILE_PATH); - Pattern pattern = Pattern.compile("([a-zA-Z]*):([\\w]*):([a-zA-Z ,.!'\\d]*):([\\d]*)"); + Pattern pattern = Pattern.compile("([a-zA-Z]*):([\\w]*):([a-zA-Z ,\\-.!'\\d]*):([\\d]*)"); if (!f.exists()) { logger.warning("Couldn't find init file: " + INIT_FILE_PATH); return;