package magic.ui.widget.duel.viewer;
import magic.ui.screen.duel.game.PermanentFilter;
import magic.ui.IUpdatable;
import magic.ui.IChoiceViewer;
import magic.ui.screen.duel.game.SwingGameController;
import magic.ui.theme.Theme;
import magic.ui.FontsAndBorders;
import javax.swing.JLabel;
import javax.swing.JPanel;
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.util.Set;
import magic.ui.duel.viewerinfo.CardViewerInfo;
import magic.ui.utility.MagicStyle;
@SuppressWarnings("serial")
public class ImageBattlefieldViewer extends JPanel implements IChoiceViewer, IUpdatable {
private final SwingGameController controller;
private final boolean opponent;
private final ImagePermanentsViewer permanentsViewer;
private final PermanentFilter permanentFilter;
public ImageBattlefieldViewer(final SwingGameController controller,final boolean opponent) {
this.controller = controller;
this.opponent=opponent;
controller.registerChoiceViewer(this);
setOpaque(false);
setLayout(new BorderLayout(6,0));
final JPanel leftPanel=new JPanel(new BorderLayout());
leftPanel.setOpaque(false);
add(leftPanel,BorderLayout.WEST);
if (MagicStyle.getTheme().hasValue(Theme.ICON_SMALL_BATTLEFIELD)) {
final JLabel iconLabel = new JLabel(MagicStyle.getTheme().getIcon(Theme.ICON_SMALL_BATTLEFIELD));
iconLabel.setOpaque(true);
iconLabel.setBackground(MagicStyle.getTheme().getColor(Theme.COLOR_ICON_BACKGROUND));
iconLabel.setPreferredSize(new Dimension(24, 24));
iconLabel.setBorder(FontsAndBorders.BLACK_BORDER);
leftPanel.add(iconLabel, BorderLayout.NORTH);
}
permanentsViewer=new ImagePermanentsViewer(controller, opponent);
add(permanentsViewer,BorderLayout.CENTER);
permanentFilter=new PermanentFilter();
}
@Override
public void update() {
permanentsViewer.viewPermanents(permanentFilter.getPermanents(controller.getViewerInfo(), opponent));
}
@Override
public void showValidChoices(final Set<?> validChoices) {
permanentsViewer.showValidChoices(validChoices);
}
public boolean highlightCard(CardViewerInfo cardInfo, boolean b) {
final ImagePermanentViewer viewer = permanentsViewer.getViewer(cardInfo);
permanentsViewer.highlightCard(viewer, b ? cardInfo.getId() : 0);
return viewer != null;
}
}