package magic.ui.screen.decks;
import javax.swing.JPanel;
import magic.model.MagicCardDefinition;
import magic.model.MagicDeck;
import magic.ui.widget.cards.table.DeckViewTablePanel;
import net.miginfocom.swing.MigLayout;
@SuppressWarnings("serial")
class DeckPanel extends JPanel implements IDeckView {
private final DeckViewTablePanel tablePanel;
private MagicDeck deck = new MagicDeck();
private boolean isNewDeck = true;
private MagicCardDefinition selectCard;
DeckPanel() {
this.tablePanel = new DeckViewTablePanel(deck);
setLayout(new MigLayout("insets 0"));
refreshLayout();
setOpaque(false);
}
private void refreshLayout() {
removeAll();
add(tablePanel, "w 100%, h 100%");
revalidate();
}
void setDeck(MagicDeck deck) {
if (this.deck != deck) {
this.deck = deck;
isNewDeck = true;
}
}
void setDeck(MagicDeck deck, MagicCardDefinition selectCard) {
if (this.deck != deck) {
this.deck = deck;
isNewDeck = true;
}
this.selectCard = selectCard;
}
@Override
public void notifyShowing() {
if (isNewDeck) {
tablePanel.setCards(deck, selectCard);
isNewDeck = false;
} else {
tablePanel.setSelectedCard(selectCard);
}
}
void setCardsTableListeners(ICardsTableListener... listeners) {
tablePanel.setListeners(listeners);
}
void setSelectedCard(MagicCardDefinition card) {
tablePanel.setSelectedCard(card);
}
MagicCardDefinition getSelectedCard() {
return tablePanel.getSelectedCard();
}
}