diff --git a/res/skins/default/sprite_icons.png b/res/skins/default/sprite_icons.png
index 18426fef446..c4323c9e3d4 100644
Binary files a/res/skins/default/sprite_icons.png and b/res/skins/default/sprite_icons.png differ
diff --git a/src/main/java/forge/gui/CardPicturePanel.java b/src/main/java/forge/gui/CardPicturePanel.java
index 9210e7af230..c63dea77ad4 100644
--- a/src/main/java/forge/gui/CardPicturePanel.java
+++ b/src/main/java/forge/gui/CardPicturePanel.java
@@ -51,7 +51,7 @@ public final class CardPicturePanel extends JPanel implements CardContainer {
// private JLabel label;
// private ImageIcon icon;
private final ScaledImagePanel panel;
- private Image currentImange;
+ private Image currentImage;
/**
*
@@ -82,6 +82,8 @@ public final class CardPicturePanel extends JPanel implements CardContainer {
}
});
+
+
this.setCard(c);
}
@@ -118,7 +120,8 @@ public final class CardPicturePanel extends JPanel implements CardContainer {
this.setImage();
}
- private void setImage() {
+ /** */
+ public void setImage() {
final Insets i = this.getInsets();
Image image = null;
if (this.inventoryItem != null) {
@@ -130,8 +133,8 @@ public final class CardPicturePanel extends JPanel implements CardContainer {
- i.bottom - 2);
}
- if (image != this.currentImange) {
- this.currentImange = image;
+ if (image != this.currentImage) {
+ this.currentImage = image;
this.panel.setImage(image, null);
this.panel.repaint();
}
diff --git a/src/main/java/forge/gui/match/controllers/CDetail.java b/src/main/java/forge/gui/match/controllers/CDetail.java
index f136ff32976..b2e4fb25c58 100644
--- a/src/main/java/forge/gui/match/controllers/CDetail.java
+++ b/src/main/java/forge/gui/match/controllers/CDetail.java
@@ -17,6 +17,9 @@
*/
package forge.gui.match.controllers;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
import forge.Card;
import forge.Command;
import forge.gui.framework.ICDoc;
@@ -41,7 +44,9 @@ public enum CDetail implements ICDoc {
*/
public void showCard(final Card c) {
this.currentCard = c;
+ VDetail.SINGLETON_INSTANCE.getLblFlipcard().setVisible(c.isDoubleFaced() ? true : false);
VDetail.SINGLETON_INSTANCE.getPnlDetail().setCard(c);
+ VDetail.SINGLETON_INSTANCE.getParentCell().repaintSelf();
}
/**
@@ -66,6 +71,14 @@ public enum CDetail implements ICDoc {
*/
@Override
public void initialize() {
+ VDetail.SINGLETON_INSTANCE.getPnlDetail().addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(final MouseEvent e) {
+ if (VDetail.SINGLETON_INSTANCE.getPnlDetail().getCard().isDoubleFaced()) {
+ CPicture.SINGLETON_INSTANCE.flipCard();
+ }
+ }
+ });
}
/* (non-Javadoc)
diff --git a/src/main/java/forge/gui/match/controllers/CPicture.java b/src/main/java/forge/gui/match/controllers/CPicture.java
index b1b2d82c4d1..d573433e95f 100644
--- a/src/main/java/forge/gui/match/controllers/CPicture.java
+++ b/src/main/java/forge/gui/match/controllers/CPicture.java
@@ -16,7 +16,11 @@
* along with this program. If not, see .
*/
package forge.gui.match.controllers;
+import java.awt.event.MouseAdapter;
+import java.awt.event.MouseEvent;
+
import forge.Card;
+import forge.CardCharactersticName;
import forge.Command;
import forge.gui.framework.ICDoc;
import forge.gui.match.views.VPicture;
@@ -31,6 +35,7 @@ public enum CPicture implements ICDoc {
SINGLETON_INSTANCE;
private Card currentCard = null;
+ private boolean flipped = false;
/**
* Shows card details and/or picture in sidebar cardview tabber.
@@ -40,6 +45,7 @@ public enum CPicture implements ICDoc {
*/
public void showCard(final Card c) {
this.currentCard = c;
+ VPicture.SINGLETON_INSTANCE.getLblFlipcard().setVisible(c.isDoubleFaced() ? true : false);
VPicture.SINGLETON_INSTANCE.getPnlPicture().setCard(c);
}
@@ -65,6 +71,14 @@ public enum CPicture implements ICDoc {
*/
@Override
public void initialize() {
+ VPicture.SINGLETON_INSTANCE.getPnlPicture().addMouseListener(new MouseAdapter() {
+ @Override
+ public void mouseClicked(final MouseEvent e) {
+ if (VPicture.SINGLETON_INSTANCE.getPnlPicture().getCard().isDoubleFaced()) {
+ flipCard();
+ }
+ }
+ });
}
/* (non-Javadoc)
@@ -73,4 +87,19 @@ public enum CPicture implements ICDoc {
@Override
public void update() {
}
+
+ /** */
+ public void flipCard() {
+ if (flipped) {
+ flipped = false;
+ VPicture.SINGLETON_INSTANCE.getPnlPicture().getCard().setState(CardCharactersticName.Original);
+ CDetail.SINGLETON_INSTANCE.showCard(this.currentCard);
+ }
+ else {
+ flipped = true;
+ VPicture.SINGLETON_INSTANCE.getPnlPicture().getCard().setState(CardCharactersticName.Transformed);
+ CDetail.SINGLETON_INSTANCE.showCard(this.currentCard);
+ }
+ VPicture.SINGLETON_INSTANCE.getPnlPicture().setImage();
+ }
}
diff --git a/src/main/java/forge/gui/match/views/VDetail.java b/src/main/java/forge/gui/match/views/VDetail.java
index bfcd9bfb3bf..ea68e9a5d81 100644
--- a/src/main/java/forge/gui/match/views/VDetail.java
+++ b/src/main/java/forge/gui/match/views/VDetail.java
@@ -17,6 +17,8 @@
*/
package forge.gui.match.views;
+import javax.swing.JLabel;
+
import net.miginfocom.swing.MigLayout;
import forge.gui.CardDetailPanel;
import forge.gui.framework.DragCell;
@@ -25,6 +27,7 @@ import forge.gui.framework.EDocID;
import forge.gui.framework.ICDoc;
import forge.gui.framework.IVDoc;
import forge.gui.match.controllers.CDetail;
+import forge.gui.toolbox.FSkin;
/**
* Assembles Swing components of card detail area.
@@ -41,6 +44,8 @@ public enum VDetail implements IVDoc {
// Top-level containers
private final CardDetailPanel pnlDetail = new CardDetailPanel(null);
+ private final JLabel lblFlipcard = new JLabel(
+ FSkin.getIcon(FSkin.InterfaceIcons.ICO_FLIPCARD));
//========= Overridden methods
/* (non-Javadoc)
@@ -48,7 +53,8 @@ public enum VDetail implements IVDoc {
*/
@Override
public void populate() {
- parentCell.getBody().setLayout(new MigLayout("insets 0, gap 0"));
+ parentCell.getBody().setLayout(new MigLayout("insets 0, gap 0, center"));
+ parentCell.getBody().add(lblFlipcard, "pos (50% - 40px) (50% - 60px)");
parentCell.getBody().add(pnlDetail, "w 100%!, h 100%!");
}
@@ -98,4 +104,9 @@ public enum VDetail implements IVDoc {
public CardDetailPanel getPnlDetail() {
return pnlDetail;
}
+
+ /** @return {@link javax.swing.JLabel} */
+ public JLabel getLblFlipcard() {
+ return lblFlipcard;
+ }
}
diff --git a/src/main/java/forge/gui/match/views/VPicture.java b/src/main/java/forge/gui/match/views/VPicture.java
index eb6ce1cc48b..71321fd8da4 100644
--- a/src/main/java/forge/gui/match/views/VPicture.java
+++ b/src/main/java/forge/gui/match/views/VPicture.java
@@ -17,6 +17,8 @@
*/
package forge.gui.match.views;
+import javax.swing.JLabel;
+
import net.miginfocom.swing.MigLayout;
import forge.gui.CardPicturePanel;
import forge.gui.framework.DragCell;
@@ -25,6 +27,7 @@ import forge.gui.framework.EDocID;
import forge.gui.framework.ICDoc;
import forge.gui.framework.IVDoc;
import forge.gui.match.controllers.CPicture;
+import forge.gui.toolbox.FSkin;
/**
* Assembles Swing components of card picture area.
@@ -41,10 +44,13 @@ public enum VPicture implements IVDoc {
// Top-level containers
private final CardPicturePanel pnlPicture = new CardPicturePanel(null);
+ private final JLabel lblFlipcard = new JLabel(
+ FSkin.getIcon(FSkin.InterfaceIcons.ICO_FLIPCARD));
//========= Constructor
private VPicture() {
pnlPicture.setOpaque(false);
+ lblFlipcard.setVisible(false);
}
//========== Overridden methods
@@ -55,6 +61,7 @@ public enum VPicture implements IVDoc {
@Override
public void populate() {
parentCell.getBody().setLayout(new MigLayout("insets 0, gap 0, center"));
+ parentCell.getBody().add(lblFlipcard, "pos (50% - 40px) (50% - 60px)");
parentCell.getBody().add(pnlPicture, "w 100%!, h 100%!");
}
@@ -104,4 +111,9 @@ public enum VPicture implements IVDoc {
public CardPicturePanel getPnlPicture() {
return pnlPicture;
}
+
+ /** @return {@link javax.swing.JLabel} */
+ public JLabel getLblFlipcard() {
+ return lblFlipcard;
+ }
}
diff --git a/src/main/java/forge/gui/toolbox/FSkin.java b/src/main/java/forge/gui/toolbox/FSkin.java
index d1d6c971661..f0bd8354745 100644
--- a/src/main/java/forge/gui/toolbox/FSkin.java
+++ b/src/main/java/forge/gui/toolbox/FSkin.java
@@ -273,6 +273,7 @@ public enum FSkin {
ICO_SAVEAS (new int[] {660, 580, 20, 20}), /** */
ICO_UNKNOWN (new int[] {0, 720, 80, 80}), /** */
ICO_LOGO (new int[] {480, 0, 200, 200}), /** */
+ ICO_FLIPCARD (new int[] {400, 0, 80, 120}), /** */
ICO_FAVICON (new int[] {0, 640, 80, 80});
private int[] coords;