diff --git a/Mage.Client/src/main/java/mage/client/cards/CardArea.java b/Mage.Client/src/main/java/mage/client/cards/CardArea.java index b35eccc96ec..713e36c1dcd 100644 --- a/Mage.Client/src/main/java/mage/client/cards/CardArea.java +++ b/Mage.Client/src/main/java/mage/client/cards/CardArea.java @@ -47,12 +47,13 @@ import mage.view.AbilityView; import mage.view.CardView; import mage.view.CardsView; import mage.view.SimpleCardsView; +import org.mage.card.arcane.CardPanel; public class CardArea extends JPanel { private boolean reloaded = false; - private javax.swing.JLayeredPane cardArea; - private javax.swing.JScrollPane scrollPane; + private final javax.swing.JLayeredPane cardArea; + private final javax.swing.JScrollPane scrollPane; /** * Create the panel. @@ -68,6 +69,15 @@ public class CardArea extends JPanel { } + public void cleanUp() { + for(Component comp: cardArea.getComponents()) { + if (comp instanceof CardPanel) { + ((CardPanel) comp).cleanUp(); + cardArea.remove(comp); + } + } + } + public void loadCards(SimpleCardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId, MouseListener listener) { loadCards(CardsViewUtil.convertSimple(showCards), bigCard, dimension, gameId, listener); } diff --git a/Mage.Client/src/main/java/mage/client/dialog/PickPileDialog.java b/Mage.Client/src/main/java/mage/client/dialog/PickPileDialog.java index ffc576b1860..d2e63313b46 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/PickPileDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/PickPileDialog.java @@ -41,6 +41,7 @@ import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.UUID; +import org.mage.card.arcane.CardPanel; /** * @@ -48,8 +49,8 @@ import java.util.UUID; */ public class PickPileDialog extends MageDialog { - private CardArea pile1; - private CardArea pile2; + private final CardArea pile1; + private final CardArea pile2; private boolean pickedPile1 = false; @@ -68,6 +69,7 @@ public class PickPileDialog extends MageDialog { JButton btnChoosePile1 = new JButton("Pile 1"); btnChoosePile1.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { btnPile1ActionPerformed(e); } @@ -83,6 +85,7 @@ public class PickPileDialog extends MageDialog { JButton btnChoosePile2 = new JButton("Pile 2"); btnChoosePile2.addActionListener(new ActionListener() { + @Override public void actionPerformed(ActionEvent e) { btnPile2ActionPerformed(e); } @@ -90,6 +93,21 @@ public class PickPileDialog extends MageDialog { panel_1.add(btnChoosePile2, BorderLayout.NORTH); } + public void cleanUp() { + for(Component comp: pile1.getComponents()) { + if (comp instanceof CardPanel) { + ((CardPanel) comp).cleanUp(); + pile1.remove(comp); + } + } + for(Component comp: pile2.getComponents()) { + if (comp instanceof CardPanel) { + ((CardPanel) comp).cleanUp(); + pile2.remove(comp); + } + } + } + public void loadCards(String name, CardsView pile1, CardsView pile2, BigCard bigCard, CardDimensions dimension, UUID gameId) { this.title = name; this.pile1.loadCardsNarrow(pile1, bigCard, dimension, gameId, null); diff --git a/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java b/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java index e46537f935a..0117224d4ff 100644 --- a/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java +++ b/Mage.Client/src/main/java/mage/client/dialog/ShowCardsDialog.java @@ -71,12 +71,13 @@ public class ShowCardsDialog extends MageDialog implements MouseListener { } public void cleanUp() { - for(Component comp: cardArea.getComponents()) { - if (comp instanceof CardPanel) { - ((CardPanel) comp).cleanUp(); - cardArea.remove(comp); - } - } + cardArea.cleanUp(); + for (Component comp : cardArea.getComponents()) { + if (comp instanceof CardPanel) { + ((CardPanel) comp).cleanUp(); + cardArea.remove(comp); + } + } } public void loadCards(String name, SimpleCardsView showCards, BigCard bigCard, CardDimensions dimension, UUID gameId, boolean modal) { diff --git a/Mage.Client/src/main/java/mage/client/game/GamePanel.java b/Mage.Client/src/main/java/mage/client/game/GamePanel.java index 5529fb7ba48..17e21805c1c 100644 --- a/Mage.Client/src/main/java/mage/client/game/GamePanel.java +++ b/Mage.Client/src/main/java/mage/client/game/GamePanel.java @@ -764,6 +764,8 @@ public final class GamePanel extends javax.swing.JPanel { PickPileDialog pickPileDialog = new PickPileDialog(); pickPileDialog.loadCards(message, pile1, pile2, bigCard, Config.dimensions, gameId); session.sendPlayerBoolean(gameId, pickPileDialog.isPickedPile1()); + pickPileDialog.cleanUp(); + pickPileDialog.removeDialog(); } public Map getPlayers() {