/**
* CardPicturePanel.java
*
* Created on 17.02.2010
*/
package forge.gui.game;
import arcane.ui.ScaledImagePanel;
import arcane.ui.ScaledImagePanel.MultipassType;
import arcane.ui.ScaledImagePanel.ScalingType;
import forge.Card;
import forge.CardContainer;
import forge.ImageCache;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
/**
* The class CardPicturePanel. Shows the full-sized image in a label. if there's no picture, the cardname is
* displayed instead.
*
* @author Clemens Koza
* @version V0.0 17.02.2010
*/
public class CardPicturePanel extends JPanel implements CardContainer {
/** Constant <code>serialVersionUID=-3160874016387273383L</code> */
private static final long serialVersionUID = -3160874016387273383L;
private Card card;
// private JLabel label;
// private ImageIcon icon;
private ScaledImagePanel panel;
private Image currentImange;
/**
* <p>Constructor for CardPicturePanel.</p>
*
* @param card a {@link forge.Card} object.
*/
public CardPicturePanel(Card card) {
super(new BorderLayout());
// add(label = new JLabel(icon = new ImageIcon()));
add(panel = new ScaledImagePanel());
panel.setScalingBlur(false);
panel.setScalingType(ScalingType.bicubic);
panel.setScalingMultiPassType(MultipassType.none);
addComponentListener(new ComponentAdapter() {
@Override
public void componentShown(ComponentEvent e) {
update();
}
@Override
public void componentResized(ComponentEvent e) {
update();
}
});
setCard(card);
}
/**
* <p>update.</p>
*/
public void update() {
setCard(getCard());
}
/** {@inheritDoc} */
public void setCard(Card card) {
this.card = card;
if (!isShowing()) return;
Insets i = getInsets();
Image image = card == null ? null : ImageCache.getImage(card, getWidth() - i.left - i.right, getHeight()
- i.top - i.bottom);
if (image != currentImange) {
currentImange = image;
panel.setImage(image, null);
panel.repaint();
}
// if(image == null) {
// label.setIcon(null);
// //avoid a hard reference to the image while not needed
// icon.setImage(null);
// label.setText(card.isFaceDown()? "Morph":card.getName());
// } else if(image != icon.getImage()) {
// icon.setImage(image);
// label.setIcon(icon);
// }
}
/**
* <p>Getter for the field <code>card</code>.</p>
*
* @return a {@link forge.Card} object.
*/
public Card getCard() {
return card;
}
}