mirror of
https://github.com/Card-Forge/forge.git
synced 2025-11-18 03:38:01 +00:00
Allow zone popup to remember size and position if closed and later reopened
This commit is contained in:
@@ -32,9 +32,8 @@ import forge.util.Lang;
|
|||||||
import forge.view.FDialog;
|
import forge.view.FDialog;
|
||||||
import forge.view.FFrame;
|
import forge.view.FFrame;
|
||||||
|
|
||||||
|
import java.awt.Component;
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import java.awt.event.WindowAdapter;
|
|
||||||
import java.awt.event.WindowEvent;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -54,17 +53,23 @@ public class FloatingCardArea extends CardArea {
|
|||||||
if (cardArea == null) {
|
if (cardArea == null) {
|
||||||
cardArea = new FloatingCardArea(player, zone);
|
cardArea = new FloatingCardArea(player, zone);
|
||||||
floatingAreas.put(key, cardArea);
|
floatingAreas.put(key, cardArea);
|
||||||
cardArea.showWindow();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
cardArea.window.requestFocusInWindow();
|
|
||||||
}
|
}
|
||||||
|
cardArea.showWindow();
|
||||||
}
|
}
|
||||||
|
|
||||||
private PlayerView player;
|
private final PlayerView player;
|
||||||
private final ZoneType zone;
|
private final ZoneType zone;
|
||||||
private final String title;
|
private final String title;
|
||||||
private final FDialog window = new FDialog(false, true, "0");
|
|
||||||
|
@SuppressWarnings("serial")
|
||||||
|
private final FDialog window = new FDialog(false, true, "0") {
|
||||||
|
@Override
|
||||||
|
public void setLocationRelativeTo(Component c) {
|
||||||
|
if (hasBeenShown) { return; } //don't change location this way if dialog has already been shown
|
||||||
|
super.setLocationRelativeTo(c);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
private boolean hasBeenShown;
|
||||||
|
|
||||||
private FloatingCardArea(PlayerView player0, ZoneType zone0) {
|
private FloatingCardArea(PlayerView player0, ZoneType zone0) {
|
||||||
super(new FScrollPane(false));
|
super(new FScrollPane(false));
|
||||||
@@ -88,22 +93,19 @@ public class FloatingCardArea extends CardArea {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
title = Lang.getPossessedObject(player0.getName(), zone0.name()) + " (%d)";
|
title = Lang.getPossessedObject(player0.getName(), zone0.name()) + " (%d)";
|
||||||
window.addWindowListener(new WindowAdapter() {
|
|
||||||
@Override
|
|
||||||
public void windowClosing(final WindowEvent e) {
|
|
||||||
floatingAreas.remove(getKey(player, zone));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
player = player0;
|
player = player0;
|
||||||
zone = zone0;
|
zone = zone0;
|
||||||
setVertical(true);
|
setVertical(true);
|
||||||
refresh();
|
refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void showWindow() {
|
private void showWindow() {
|
||||||
FFrame mainFrame = Singletons.getView().getFrame();
|
if (!hasBeenShown) { //only set size if first time showing window
|
||||||
window.setSize(mainFrame.getWidth() / 4, mainFrame.getHeight() * 2 / 3);
|
FFrame mainFrame = Singletons.getView().getFrame();
|
||||||
|
window.setSize(mainFrame.getWidth() / 4, mainFrame.getHeight() * 2 / 3);
|
||||||
|
}
|
||||||
window.setVisible(true);
|
window.setVisible(true);
|
||||||
|
hasBeenShown = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refresh() {
|
public void refresh() {
|
||||||
|
|||||||
Reference in New Issue
Block a user