serialVersionUID=-8461473263764812323L. */
private static final long serialVersionUID = -8461473263764812323L;
- private static Color fromDetailColor(DetailColors detailColor) {
+ private static Color fromDetailColor(final DetailColors detailColor) {
return new Color(detailColor.r, detailColor.g, detailColor.b);
}
@@ -110,13 +109,13 @@ public class CardDetailPanel extends SkinnedPanel {
@Override
public void doLayout() {
- int insets = 3;
- int setInfoWidth = 40;
- int x = insets;
+ final int insets = 3;
+ final int setInfoWidth = 40;
+ final int x = insets;
int y = insets;
- int lineWidth = getWidth() - 2 * insets;
- int lineHeight = nameCostLabel.getPreferredSize().height;
- int dy = lineHeight + 1;
+ final int lineWidth = getWidth() - 2 * insets;
+ final int lineHeight = nameCostLabel.getPreferredSize().height;
+ final int dy = lineHeight + 1;
nameCostLabel.setBounds(x, y, lineWidth, lineHeight);
y += dy;
@@ -142,18 +141,18 @@ public class CardDetailPanel extends SkinnedPanel {
cdArea.setText(CardDetailUtil.getItemDescription(item));
updateBorder(item instanceof IPaperCard ? Card.getCardForUi((IPaperCard)item).getView().getCurrentState() : null, true);
- String set = item.getEdition();
+ final String set = item.getEdition();
setInfoLabel.setText(set);
setInfoLabel.setToolTipText("");
if (StringUtils.isEmpty(set)) {
setInfoLabel.setOpaque(false);
setInfoLabel.setBorder(null);
} else {
- CardEdition edition = FModel.getMagicDb().getEditions().get(set);
+ final CardEdition edition = FModel.getMagicDb().getEditions().get(set);
if (null != edition) {
setInfoLabel.setToolTipText(edition.getName());
}
-
+
setInfoLabel.setOpaque(true);
setInfoLabel.setBackground(Color.BLACK);
setInfoLabel.setForeground(Color.WHITE);
@@ -169,115 +168,86 @@ public class CardDetailPanel extends SkinnedPanel {
}
public final void setCard(final CardView card) {
- setCard(card, false);
+ setCard(card, true, false);
}
- public final void setCard(final CardView card, final boolean isInAltState) {
- nameCostLabel.setText("");
+ public final void setCard(final CardView card, final boolean mayView, final boolean isInAltState) {
typeLabel.setVisible(true);
- typeLabel.setText("");
powerToughnessLabel.setVisible(true);
- powerToughnessLabel.setText("");
- idLabel.setText("");
- setInfoLabel.setText("");
- setInfoLabel.setToolTipText("");
- setInfoLabel.setOpaque(false);
- setInfoLabel.setBorder(null);
- cdArea.setText("");
- if (card == null) {
- updateBorder(null, false);
- return;
- }
-
- final CardStateView state = card.getState(isInAltState);
+ final CardStateView state = card == null ? null : card.getState(isInAltState);
if (state == null) {
+ nameCostLabel.setText("");
+ typeLabel.setText("");
+ powerToughnessLabel.setText("");
+ idLabel.setText("");
+ setInfoLabel.setText("");
+ setInfoLabel.setToolTipText("");
+ setInfoLabel.setOpaque(false);
+ setInfoLabel.setBorder(null);
+ cdArea.setText("");
updateBorder(null, false);
return;
}
- boolean canShow = true;
-
- if (state.getManaCost().isNoCost() || !canShow) {
- nameCostLabel.setText(CardDetailUtil.formatCardName(card, canShow, isInAltState));
- }
- else {
+ final String name = CardDetailUtil.formatCardName(card, mayView, isInAltState), nameCost;
+ if (state.getManaCost().isNoCost() || !mayView) {
+ nameCost = name;
+ } else {
final String manaCost;
if (card.isSplitCard() && card.hasAlternateState() && card.getZone() != ZoneType.Stack) { //only display current state's mana cost when on stack
manaCost = card.getCurrentState().getManaCost() + " // " + card.getAlternateState().getManaCost();
- }
- else {
+ } else {
manaCost = state.getManaCost().toString();
}
- nameCostLabel.setText(FSkin.encodeSymbols(CardDetailUtil.formatCardName(card, canShow, isInAltState) + " - " + manaCost, true));
+ nameCost = String.format("%s - %s", name, manaCost);
}
- typeLabel.setText(CardDetailUtil.formatCardType(state, canShow));
+ nameCostLabel.setText(FSkin.encodeSymbols(nameCost, false));
+ typeLabel.setText(CardDetailUtil.formatCardType(state, mayView));
- String set = state.getSetCode();
- CardRarity rarity = state.getRarity();
- if (!canShow) {
+ final String set;
+ final CardRarity rarity;
+ if (mayView) {
+ set = state.getSetCode();
+ rarity = state.getRarity();
+ } else {
set = CardEdition.UNKNOWN.getCode();
rarity = CardRarity.Unknown;
}
setInfoLabel.setText(set);
+
if (null != set && !set.isEmpty()) {
- if (canShow) {
- CardEdition edition = FModel.getMagicDb().getEditions().get(set);
+ if (mayView) {
+ final CardEdition edition = FModel.getMagicDb().getEditions().get(set);
+ final String setTooltip;
if (null == edition) {
- setInfoLabel.setToolTipText(rarity.name());
- }
- else {
- setInfoLabel.setToolTipText(String.format("%s (%s)", edition.getName(), rarity.name()));
+ setTooltip = rarity.name();
+ } else {
+ setTooltip = String.format("%s (%s)", edition.getName(), rarity.name());
}
+ setInfoLabel.setToolTipText(setTooltip);
}
setInfoLabel.setOpaque(true);
- Color backColor;
- switch (rarity) {
- case Uncommon:
- backColor = fromDetailColor(DetailColors.UNCOMMON);
- break;
-
- case Rare:
- backColor = fromDetailColor(DetailColors.RARE);
- break;
-
- case MythicRare:
- backColor = fromDetailColor(DetailColors.MYTHIC);
- break;
-
- case Special: //"Timeshifted" or other Special Rarity Cards
- backColor = fromDetailColor(DetailColors.SPECIAL);
- break;
-
- default: //case BasicLand: + case Common:
- backColor = fromDetailColor(DetailColors.COMMON);
- break;
- }
-
- Color foreColor = FSkin.getHighContrastColor(backColor);
+ final Color backColor = fromDetailColor(CardDetailUtil.getRarityColor(rarity));
setInfoLabel.setBackground(backColor);
+ final Color foreColor = FSkin.getHighContrastColor(backColor);
setInfoLabel.setForeground(foreColor);
setInfoLabel.setBorder(BorderFactory.createLineBorder(foreColor));
}
- if (state.getState() == CardStateName.FaceDown) {
- updateBorder(state, false); // do not spoil the color of face-down cards
- } else {
- updateBorder(state, canShow);
- }
+ updateBorder(state, mayView);
- powerToughnessLabel.setText(CardDetailUtil.formatPowerToughness(state, canShow));
+ powerToughnessLabel.setText(CardDetailUtil.formatPowerToughness(state, mayView));
- idLabel.setText(canShow ? CardDetailUtil.formatCardId(state) : "");
+ idLabel.setText(mayView ? CardDetailUtil.formatCardId(state) : "");
// fill the card text
- cdArea.setText(FSkin.encodeSymbols(CardDetailUtil.composeCardText(state, gameView, canShow), true));
+ cdArea.setText(FSkin.encodeSymbols(CardDetailUtil.composeCardText(state, gameView, mayView), true));
SwingUtilities.invokeLater(new Runnable() {
- @Override
- public void run() {
+ @Override public void run() {
scrArea.getVerticalScrollBar().setValue(scrArea.getVerticalScrollBar().getMinimum());
}
});
@@ -316,7 +286,7 @@ public class CardDetailPanel extends SkinnedPanel {
return;
}
- Color color = fromDetailColor(CardDetailUtil.getBorderColor(card, canShow));
+ final Color color = fromDetailColor(CardDetailUtil.getBorderColor(card, canShow));
setBorder(BorderFactory.createLineBorder(color, 2));
scrArea.setBorder(BorderFactory.createMatteBorder(2, 0, 0, 0, color));
}
diff --git a/forge-gui-desktop/src/main/java/forge/gui/CardListChooser.java b/forge-gui-desktop/src/main/java/forge/gui/CardListChooser.java
index de6a84e3be1..e514469e8e5 100644
--- a/forge-gui-desktop/src/main/java/forge/gui/CardListChooser.java
+++ b/forge-gui-desktop/src/main/java/forge/gui/CardListChooser.java
@@ -174,7 +174,7 @@ public class CardListChooser extends FDialog {
if ((row >= 0) && (row < CardListChooser.this.list.size())) {
final PaperCard cp = CardListChooser.this.list.get(row);
CardListChooser.this.detail.setCard(CardView.getCardForUi(cp));
- CardListChooser.this.picture.setCard(cp);
+ CardListChooser.this.picture.setItem(cp);
}
}
}
diff --git a/forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java b/forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java
index 52e7eeb0d83..917e28199e9 100644
--- a/forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java
+++ b/forge-gui-desktop/src/main/java/forge/gui/CardListViewer.java
@@ -173,7 +173,7 @@ public class CardListViewer extends FDialog {
if ((row >= 0) && (row < CardListViewer.this.list.size())) {
final PaperCard cp = CardListViewer.this.list.get(row);
CardListViewer.this.detail.setCard(CardView.getCardForUi(cp));
- CardListViewer.this.picture.setCard(cp);
+ CardListViewer.this.picture.setItem(cp);
}
}
}
diff --git a/forge-gui-desktop/src/main/java/forge/gui/CardPicturePanel.java b/forge-gui-desktop/src/main/java/forge/gui/CardPicturePanel.java
index 25d5e872335..24c6f30821f 100644
--- a/forge-gui-desktop/src/main/java/forge/gui/CardPicturePanel.java
+++ b/forge-gui-desktop/src/main/java/forge/gui/CardPicturePanel.java
@@ -6,12 +6,12 @@
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
- *
+ *
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
+ *
* You should have received a copy of the GNU General Public License
* along with this program. If not, see serialVersionUID=-3160874016387273383L. */
private static final long serialVersionUID = -3160874016387273383L;
private Object displayed;
+ private boolean mayView = true;
private final FImagePanel panel;
private BufferedImage currentImage;
@@ -55,18 +56,22 @@ public final class CardPicturePanel extends JPanel {
this.add(this.panel);
}
- public void setCard(final InventoryItem cp) {
- this.displayed = cp;
- this.setImage();
+ public void setItem(final InventoryItem item) {
+ setImage(item ,true);
}
public void setCard(final CardStateView c) {
- this.displayed = c;
- this.setImage();
+ setCard(c, true);
+ }
+ public void setCard(final CardStateView c, final boolean mayView) {
+ setImage(c, mayView);
}
- public void setImage() {
- BufferedImage image = getImage();
+ private void setImage(final Object display, final boolean mayView) {
+ this.displayed = display;
+ this.mayView = mayView;
+
+ final BufferedImage image = getImage();
if (image != null && image != this.currentImage) {
this.currentImage = image;
this.panel.setImage(image, getAutoSizeImageMode());
@@ -74,6 +79,10 @@ public final class CardPicturePanel extends JPanel {
}
private BufferedImage getImage() {
+ if (!mayView) {
+ return ImageCache.getOriginalImage(ImageKeys.getTokenKey(ImageKeys.HIDDEN_CARD), true);
+ }
+
if (displayed instanceof InventoryItem) {
final InventoryItem item = (InventoryItem) displayed;
return ImageCache.getOriginalImage(ImageKeys.getImageKey(item, false), true);
diff --git a/forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java b/forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java
index f1af01ea4f3..49e43be2748 100644
--- a/forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java
+++ b/forge-gui-desktop/src/main/java/forge/itemmanager/views/ImageView.java
@@ -256,7 +256,8 @@ public class ImageView* Supports split, flip and double-sided cards as well as cards that * can be played face-down (eg. morph). * * @version $Id: CardZoomer.java 24769 2014-02-09 13:56:04Z Hellfish $ - * + * */ public enum CardZoomer { SINGLETON_INSTANCE; @@ -59,11 +58,11 @@ public enum CardZoomer { private final JPanel overlay = FOverlay.SINGLETON_INSTANCE.getPanel(); private JPanel pnlMain; private FImagePanel imagePanel; - private SkinnedLabel lblFlipcard = new SkinnedLabel(); + private final SkinnedLabel lblFlipcard = new SkinnedLabel(); // Details about the current card being displayed. - private CardView thisCard; - private boolean isInAltState; + private CardStateView thisCard; + private boolean mayFlip, isInAltState; // The zoomer is in button mode when it is activated by holding down the // middle mouse button or left and right mouse buttons simultaneously. @@ -83,6 +82,12 @@ public enum CardZoomer { setKeyListeners(); } + public void setCard(final CardStateView card, final boolean mayFlip) { + this.thisCard = card; + this.mayFlip = mayFlip; + this.isInAltState = card == null ? false : card == card.getCard().getAlternateState(); + } + /** * Creates listener for keys that are recognised by zoomer. *