package magic.ui.screen.decks; import magic.data.MagicIcon; import magic.translate.MText; import magic.ui.ScreenController; import magic.ui.dialog.DecksFilterDialog; import magic.ui.screen.HeaderFooterScreen; import magic.ui.screen.MScreen; import magic.ui.screen.interfaces.IDeckConsumer; import magic.ui.screen.widget.MenuButton; import magic.ui.widget.deck.DeckStatusPanel; @SuppressWarnings("serial") public class DecksScreen extends HeaderFooterScreen { // translatable strings private static final String _S1 = "Decks"; private static final String _S2 = "Cancel"; private static final String _S3 = "Select"; private static final String _S4 = "No deck specified."; private static final String _S5 = "This deck is invalid."; private static final String _S6 = "Sample Hand"; private static final String _S7 = "See what kind of Hand you might be dealt from this deck."; private static final String _S8 = "A deck with a minimum of 7 cards is required first."; private static final String _S9 = "This deck is invalid."; private static final String _S10 = "Deck View"; private static final String _S11 = "Shows complete deck using tiled card images."; private static final String _S12 = "Deck is empty! Nothing to show."; private static final String _S13 = "This deck is invalid."; private final DecksScreenPanel screenContent; private final IDeckConsumer deckConsumer; private final DeckStatusPanel deckStatusPanel; public DecksScreen(final IDeckConsumer deckConsumer) { super(MText.get(_S1)); this.deckConsumer = deckConsumer; deckStatusPanel = new DeckStatusPanel(); screenContent = new DecksScreenPanel(deckStatusPanel); setMainContent(screenContent); setHeaderContent(deckStatusPanel); setLeftFooter(MenuButton.getCloseScreenButton(MText.get(_S2))); setRightFooter(MenuButton.build(this::doSelectDeck, MText.get(_S3))); addToFooter(MenuButton.build(this::showSampleHand, MagicIcon.HAND_ICON, MText.get(_S6), MText.get(_S7)), MenuButton.build(this::showDeckImageView, MagicIcon.TILED, MText.get(_S10), MText.get(_S11)) ); } private void doSelectDeck() { if (screenContent.getDeck() == null) { showInvalidActionMessage(MText.get(_S4)); } else if (screenContent.getDeck().isValid() == false) { showInvalidActionMessage(MText.get(_S5)); } else { if (deckConsumer.setDeck(screenContent.getDeck(), screenContent.getDeckPath())) { ScreenController.closeActiveScreen(false); } } } private void showSampleHand() { if (screenContent.getDeck() == null || screenContent.getDeck().size() < 7) { showInvalidActionMessage(MText.get(_S8)); } else if (screenContent.getDeck().isValid() == false) { showInvalidActionMessage(MText.get(_S9)); } else { ScreenController.showSampleHandScreen(screenContent.getDeck()); } } private void showDeckImageView() { if (screenContent.getDeck() == null || screenContent.getDeck().isEmpty()) { showInvalidActionMessage(MText.get(_S12)); } else if (screenContent.getDeck().isValid() == false) { showInvalidActionMessage(MText.get(_S13)); } else { ScreenController.showDeckTiledCardsScreen(screenContent.getDeck()); } } private void showInvalidActionMessage(final String message) { ScreenController.showWarningMessage(message); } @Override public boolean isScreenReadyToClose(MScreen nextScreen) { DecksFilterDialog.resetFilterHistory(); return true; } }