diff --git a/Mage.Client/pom.xml b/Mage.Client/pom.xml index 42d38003753..aa5782dc7bc 100644 --- a/Mage.Client/pom.xml +++ b/Mage.Client/pom.xml @@ -52,6 +52,11 @@ google-collections 1.0 + + org.swinglabs + swingx + 1.6.1 + diff --git a/Mage.Client/src/main/java/mage/client/cards/BigCard.java b/Mage.Client/src/main/java/mage/client/cards/BigCard.java index bd74a319dd7..ccd9800c602 100644 --- a/Mage.Client/src/main/java/mage/client/cards/BigCard.java +++ b/Mage.Client/src/main/java/mage/client/cards/BigCard.java @@ -34,15 +34,24 @@ package mage.client.cards; +import static mage.constants.Constants.CONTENT_MAX_XOFFSET; +import static mage.constants.Constants.FRAME_MAX_HEIGHT; +import static mage.constants.Constants.FRAME_MAX_WIDTH; +import static mage.constants.Constants.TEXT_MAX_HEIGHT; +import static mage.constants.Constants.TEXT_MAX_WIDTH; +import static mage.constants.Constants.TEXT_MAX_YOFFSET; + import java.awt.Dimension; import java.awt.Graphics; import java.awt.Image; import java.awt.Rectangle; import java.util.List; import java.util.UUID; + import javax.swing.text.BadLocationException; import javax.swing.text.StyledDocument; -import static mage.constants.Constants.*; + +import org.jdesktop.swingx.JXPanel; /** * @@ -52,6 +61,7 @@ public class BigCard extends javax.swing.JPanel { protected Image bigImage; protected UUID cardId; + protected JXPanel panel; public BigCard() { initComponents(); @@ -59,6 +69,7 @@ public class BigCard extends javax.swing.JPanel { public void setCard(UUID cardId, Image image, List strings) { if (this.cardId == null || !this.cardId.equals(cardId)) { + if (this.panel != null) remove(this.panel); this.cardId = cardId; bigImage = image; this.repaint(); @@ -101,6 +112,16 @@ public class BigCard extends javax.swing.JPanel { this.scrollPane.setVisible(true); } + public void addJXPanel(UUID cardId, JXPanel jxPanel) { + bigImage = null; + synchronized (this) { + if (this.panel != null) remove(this.panel); + this.panel = jxPanel; + add(jxPanel); + } + this.repaint(); + } + /** This method is called from within the constructor to * initialize the form. diff --git a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageMouseMotionAdapter.java b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageMouseMotionAdapter.java index 5fa66ace333..c3bb5711a50 100644 --- a/Mage.Client/src/main/java/mage/client/plugins/adapters/MageMouseMotionAdapter.java +++ b/Mage.Client/src/main/java/mage/client/plugins/adapters/MageMouseMotionAdapter.java @@ -10,6 +10,9 @@ import mage.cards.MagePermanent; import mage.client.cards.BigCard; import mage.client.plugins.impl.Plugins; import mage.client.util.ImageHelper; +import mage.client.util.gui.GuiDisplayUtil; + +import org.jdesktop.swingx.JXPanel; public class MageMouseMotionAdapter extends MouseMotionAdapter { @@ -35,7 +38,12 @@ public class MageMouseMotionAdapter extends MouseMotionAdapter { bigCard.setCard(card.getOriginal().getId(), image, card.getOriginal().getRules()); bigCard.hideTextComponent(); } else { - //TODO: add description panel + if (card.getOriginal().getId() != bigCard.getCardId()) { + JXPanel panel = GuiDisplayUtil.getDescription(card.getOriginal(), bigCard.getWidth(), bigCard.getHeight()); + panel.setVisible(true); + bigCard.hideTextComponent(); + bigCard.addJXPanel(card.getOriginal().getId(), panel); + } } } } diff --git a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/images/ImageCache.java b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/images/ImageCache.java index da40de5f3c5..e75c4922fe3 100644 --- a/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/images/ImageCache.java +++ b/Mage.Plugins/Mage.Card.Plugin/src/main/java/org/mage/plugins/card/images/ImageCache.java @@ -144,6 +144,10 @@ public class ImageCache { * Returns an image scaled to the size given */ public static BufferedImage getNormalSizeImage(BufferedImage original) { + if (original == null) { + return null; + } + int srcWidth = original.getWidth(); int srcHeight = original.getHeight();