Search in sources :

Example 1 with ICardGrid

use of mage.client.cards.ICardGrid in project mage by magefree.

the class UpdateDeckTask method init.

private void init() {
    // this.cardSelector.setVisible(true);
    this.panelLeft.setVisible(true);
    // TOP AREA: ENABLE ADDING/REMOVING BY DOUBLE CLICKS
    for (ICardGrid component : this.cardSelector.getCardGridComponents()) {
        // component.clearCardEventListeners();
        component.addCardEventListener((Listener<Event>) event -> {
            switch(event.getEventType()) {
                case CARD_DOUBLE_CLICK:
                    {
                        boolean gameMode = mode != DeckEditorMode.FREE_BUILDING;
                        if (gameMode) {
                            moveSelectorCardToDeck(event);
                        } else {
                            if (event.isMouseAltDown()) {
                                moveSelectorCardToSideboard(event);
                            } else {
                                moveSelectorCardToDeck(event);
                            }
                        }
                        break;
                    }
                case DECK_REMOVE_SELECTION_MAIN:
                    {
                        DeckEditorPanel.this.deckArea.getDeckList().removeSelection();
                        break;
                    }
                case DECK_REMOVE_SELECTION_SIDEBOARD:
                    {
                        DeckEditorPanel.this.deckArea.getSideboardList().removeSelection();
                        break;
                    }
            }
            refreshDeck();
        });
    }
    // BOTTOM AREA: ENABLE ADDING/REMOVING CARDS in MAINBOARD
    // do not clear event listener - DragCardGrid already have own listeners for cards
    // this.deckArea.clearDeckEventListeners();
    this.deckArea.addDeckEventListener((Listener<Event>) event -> {
        if (mode == DeckEditorMode.FREE_BUILDING) {
            switch(event.getEventType()) {
                case CARD_DOUBLE_CLICK:
                    {
                        SimpleCardView cardView = (SimpleCardView) event.getSource();
                        Card card = deck.findCard(cardView.getId());
                        if (card == null) {
                            return;
                        }
                        if (event.isMouseAltDown()) {
                            deck.getCards().remove(card);
                            deck.getSideboard().add(card);
                        } else {
                            deck.getCards().remove(card);
                        }
                        hidePopup();
                        refreshDeck();
                        break;
                    }
                case SET_NUMBER:
                    {
                        setCardNumberToCardsList(event, deck.getCards());
                        break;
                    }
                case DECK_REMOVE_SPECIFIC_CARD:
                    {
                        SimpleCardView cardView = (SimpleCardView) event.getSource();
                        Card card = deck.findCard(cardView.getId());
                        if (card == null) {
                            return;
                        }
                        deck.getCards().remove(card);
                        storeTemporaryCard(card);
                        break;
                    }
                case DECK_ADD_SPECIFIC_CARD:
                    {
                        SimpleCardView cardView = (CardView) event.getSource();
                        deck.getCards().add(retrieveTemporaryCard(cardView));
                        break;
                    }
            }
        } else {
            switch(event.getEventType()) {
                case CARD_DOUBLE_CLICK:
                    {
                        SimpleCardView cardView = (SimpleCardView) event.getSource();
                        Card card = deck.findCard(cardView.getId());
                        if (card == null) {
                            return;
                        }
                        deck.getCards().remove(card);
                        deck.getSideboard().add(card);
                        cardSelector.loadSideboard(new ArrayList<>(deck.getSideboard()), this.bigCard);
                        hidePopup();
                        refreshDeck();
                        break;
                    }
                case DECK_REMOVE_SPECIFIC_CARD:
                    {
                        SimpleCardView cardView = (SimpleCardView) event.getSource();
                        Card card = deck.findCard(cardView.getId());
                        if (card == null) {
                            return;
                        }
                        deck.getCards().remove(card);
                        storeTemporaryCard(card);
                        break;
                    }
                case DECK_ADD_SPECIFIC_CARD:
                    {
                        SimpleCardView cardView = (CardView) event.getSource();
                        deck.getCards().add(retrieveTemporaryCard(cardView));
                        break;
                    }
            }
        }
    });
    // BOTTOM AREA: ENABLE ADDING/REMOVING CARDS in SIDEBOARD
    // do not clear event listener - DragCardGrid already have own listeners for cards
    // this.deckArea.clearSideboardEventListeners();
    this.deckArea.addSideboardEventListener(// card manipulation events
    (Listener<Event>) event -> {
        if (mode == DeckEditorMode.FREE_BUILDING) {
            switch(event.getEventType()) {
                case CARD_DOUBLE_CLICK:
                    {
                        SimpleCardView cardView = (SimpleCardView) event.getSource();
                        Card card = deck.findSideboardCard(cardView.getId());
                        if (card == null) {
                            return;
                        }
                        if (event.isMouseAltDown()) {
                            deck.getSideboard().remove(card);
                            deck.getCards().add(card);
                        } else {
                            deck.getSideboard().remove(card);
                        }
                        hidePopup();
                        refreshDeck();
                        break;
                    }
                case SET_NUMBER:
                    {
                        setCardNumberToCardsList(event, deck.getSideboard());
                        break;
                    }
                case DECK_REMOVE_SPECIFIC_CARD:
                    {
                        SimpleCardView cardView = (SimpleCardView) event.getSource();
                        Card card = deck.findSideboardCard(cardView.getId());
                        if (card == null) {
                            return;
                        }
                        deck.getSideboard().remove(card);
                        storeTemporaryCard(card);
                        break;
                    }
                case DECK_ADD_SPECIFIC_CARD:
                    {
                        SimpleCardView cardView = (CardView) event.getSource();
                        deck.getSideboard().add(retrieveTemporaryCard(cardView));
                        break;
                    }
            }
        } else {
            switch(event.getEventType()) {
                case DECK_REMOVE_SPECIFIC_CARD:
                    {
                        SimpleCardView cardView = (SimpleCardView) event.getSource();
                        Card card = deck.findSideboardCard(cardView.getId());
                        if (card == null) {
                            return;
                        }
                        deck.getSideboard().remove(card);
                        storeTemporaryCard(card);
                        break;
                    }
                case DECK_ADD_SPECIFIC_CARD:
                    {
                        SimpleCardView cardView = (CardView) event.getSource();
                        deck.getSideboard().add(retrieveTemporaryCard(cardView));
                        break;
                    }
                case CARD_DOUBLE_CLICK:
                    {
                        SimpleCardView cardView = (SimpleCardView) event.getSource();
                        Card card = deck.findSideboardCard(cardView.getId());
                        if (card == null) {
                            return;
                        }
                        deck.getSideboard().remove(card);
                        deck.getCards().add(card);
                        hidePopup();
                        refreshDeck();
                        break;
                    }
            }
        }
    });
    refreshDeck(true);
    // auto-import dropped files from OS
    if (mode == DeckEditorMode.FREE_BUILDING) {
        setDropTarget(new DropTarget(this, new DnDDeckTargetListener() {

            @Override
            protected boolean handleFilesDrop(boolean move, List<File> files) {
                loadDeck(files.get(0).getAbsolutePath(), true);
                return true;
            }

            @Override
            protected boolean handlePlainTextDrop(boolean move, String text) {
                String tmpFile = DeckUtil.writeTextToTempFile(text);
                loadDeck(tmpFile, false);
                return true;
            }
        }));
    }
    this.setVisible(true);
    this.repaint();
}
Also used : DropTarget(java.awt.dnd.DropTarget) java.util(java.util) MageFrame(mage.client.MageFrame) DeckEditorMode(mage.client.constants.Constants.DeckEditorMode) DeckGenerator(mage.client.deck.generator.DeckGenerator) AudioManager(mage.client.util.audio.AudioManager) mage.cards.decks(mage.cards.decks) SimpleCardView(mage.view.SimpleCardView) Border(javax.swing.border.Border) Logger(org.apache.log4j.Logger) CardInfoPane(mage.components.CardInfoPane) Card(mage.cards.Card) SessionHandler(mage.client.SessionHandler) ICardGrid(mage.client.cards.ICardGrid) Session(mage.remote.Session) java.util.concurrent(java.util.concurrent) DeckImporter(mage.cards.decks.importer.DeckImporter) AddLandDialog(mage.client.dialog.AddLandDialog) IOException(java.io.IOException) CardRepository(mage.cards.repository.CardRepository) FileFilter(javax.swing.filechooser.FileFilter) File(java.io.File) java.awt(java.awt) PreferencesDialog(mage.client.dialog.PreferencesDialog) Plugins(mage.client.plugins.impl.Plugins) List(java.util.List) BigCard(mage.client.cards.BigCard) DeckGeneratorException(mage.client.deck.generator.DeckGenerator.DeckGeneratorException) Event(mage.client.util.Event) Listener(mage.client.util.Listener) CardInfo(mage.cards.repository.CardInfo) DeckUtil(mage.util.DeckUtil) java.awt.event(java.awt.event) LegalityLabel(mage.client.components.LegalityLabel) CardView(mage.view.CardView) XMAGE_INFO(mage.cards.decks.DeckFormats.XMAGE_INFO) GameException(mage.game.GameException) XMAGE(mage.cards.decks.DeckFormats.XMAGE) javax.swing(javax.swing) ICardGrid(mage.client.cards.ICardGrid) SimpleCardView(mage.view.SimpleCardView) SimpleCardView(mage.view.SimpleCardView) CardView(mage.view.CardView) Event(mage.client.util.Event) List(java.util.List) DropTarget(java.awt.dnd.DropTarget) Card(mage.cards.Card) BigCard(mage.client.cards.BigCard)

Aggregations

java.awt (java.awt)1 DropTarget (java.awt.dnd.DropTarget)1 java.awt.event (java.awt.event)1 File (java.io.File)1 IOException (java.io.IOException)1 java.util (java.util)1 List (java.util.List)1 java.util.concurrent (java.util.concurrent)1 javax.swing (javax.swing)1 Border (javax.swing.border.Border)1 FileFilter (javax.swing.filechooser.FileFilter)1 Card (mage.cards.Card)1 mage.cards.decks (mage.cards.decks)1 XMAGE (mage.cards.decks.DeckFormats.XMAGE)1 XMAGE_INFO (mage.cards.decks.DeckFormats.XMAGE_INFO)1 DeckImporter (mage.cards.decks.importer.DeckImporter)1 CardInfo (mage.cards.repository.CardInfo)1 CardRepository (mage.cards.repository.CardRepository)1 MageFrame (mage.client.MageFrame)1 SessionHandler (mage.client.SessionHandler)1