From 809910e8c7d35687518e864a2742a90e9e9b5e45 Mon Sep 17 00:00:00 2001 From: North Date: Sun, 21 Oct 2012 18:13:07 +0300 Subject: [PATCH] Used CardRepository in Deck Editor --- .../mage/client/cards/CardEventSource.java | 10 +- .../main/java/mage/client/cards/CardGrid.java | 4 +- .../java/mage/client/cards/CardsList.java | 8 +- .../java/mage/client/cards/DraftGrid.java | 2 +- .../mage/client/deckeditor/CardSelector.java | 85 ++++++++++++----- .../client/deckeditor/DeckEditorPanel.java | 30 ++++-- .../deckeditor/table/CardTableSelector.java | 91 +++++++++++++------ .../client/deckeditor/table/TableModel.java | 4 +- 8 files changed, 160 insertions(+), 74 deletions(-) diff --git a/Mage.Client/src/main/java/mage/client/cards/CardEventSource.java b/Mage.Client/src/main/java/mage/client/cards/CardEventSource.java index c512a42794c..966c38fdeff 100644 --- a/Mage.Client/src/main/java/mage/client/cards/CardEventSource.java +++ b/Mage.Client/src/main/java/mage/client/cards/CardEventSource.java @@ -32,9 +32,9 @@ import mage.client.util.Event; import mage.client.util.EventDispatcher; import mage.client.util.EventSource; import mage.client.util.Listener; +import mage.view.SimpleCardView; import java.io.Serializable; -import java.util.UUID; /** * @@ -49,12 +49,12 @@ public class CardEventSource implements EventSource, Serializable { dispatcher.addListener(listener); } - public void doubleClick(UUID cardId, String message) { - dispatcher.fireEvent(new Event(cardId, message)); + public void doubleClick(SimpleCardView card, String message) { + dispatcher.fireEvent(new Event(card, message)); } - public void shiftDoubleClick(UUID cardId, String message) { - dispatcher.fireEvent(new Event(cardId, message)); + public void shiftDoubleClick(SimpleCardView card, String message) { + dispatcher.fireEvent(new Event(card, message)); } public void removeFromMainEvent(String message) { diff --git a/Mage.Client/src/main/java/mage/client/cards/CardGrid.java b/Mage.Client/src/main/java/mage/client/cards/CardGrid.java index 45c014aded5..ebd412156d5 100644 --- a/Mage.Client/src/main/java/mage/client/cards/CardGrid.java +++ b/Mage.Client/src/main/java/mage/client/cards/CardGrid.java @@ -253,9 +253,9 @@ public class CardGrid extends javax.swing.JLayeredPane implements MouseListener, e.consume(); Object obj = e.getSource(); if (obj instanceof Card) { - cardEventSource.doubleClick(((Card)obj).getCardId(), "double-click"); + cardEventSource.doubleClick(((Card) obj).getOriginal(), "double-click"); } else if (obj instanceof MageCard) { - cardEventSource.doubleClick(((MageCard)obj).getOriginal().getId(), "double-click"); + cardEventSource.doubleClick(((MageCard) obj).getOriginal(), "double-click"); } } } diff --git a/Mage.Client/src/main/java/mage/client/cards/CardsList.java b/Mage.Client/src/main/java/mage/client/cards/CardsList.java index 3018553fc9b..cfdce3fd715 100644 --- a/Mage.Client/src/main/java/mage/client/cards/CardsList.java +++ b/Mage.Client/src/main/java/mage/client/cards/CardsList.java @@ -462,14 +462,14 @@ public class CardsList extends javax.swing.JPanel implements MouseListener, ICar Object obj = e.getSource(); if (obj instanceof Card) { if (e.isShiftDown()) - cardEventSource.shiftDoubleClick(((Card)obj).getCardId(), "shift-double-click"); + cardEventSource.shiftDoubleClick(((Card)obj).getOriginal(), "shift-double-click"); else - cardEventSource.doubleClick(((Card)obj).getCardId(), "double-click"); + cardEventSource.doubleClick(((Card)obj).getOriginal(), "double-click"); } else if (obj instanceof MageCard) { if (e.isShiftDown()) - cardEventSource.shiftDoubleClick(((MageCard)obj).getOriginal().getId(), "shift-double-click"); + cardEventSource.shiftDoubleClick(((MageCard)obj).getOriginal(), "shift-double-click"); else - cardEventSource.doubleClick(((MageCard)obj).getOriginal().getId(), "double-click"); + cardEventSource.doubleClick(((MageCard)obj).getOriginal(), "double-click"); } } } diff --git a/Mage.Client/src/main/java/mage/client/cards/DraftGrid.java b/Mage.Client/src/main/java/mage/client/cards/DraftGrid.java index ed944cff9d2..aae69bdfa34 100644 --- a/Mage.Client/src/main/java/mage/client/cards/DraftGrid.java +++ b/Mage.Client/src/main/java/mage/client/cards/DraftGrid.java @@ -132,7 +132,7 @@ public class DraftGrid extends javax.swing.JPanel implements MouseListener { public void mousePressed(MouseEvent e) { Object obj = e.getSource(); if (obj instanceof MageCard) { - this.cardEventSource.doubleClick(((MageCard)obj).getOriginal().getId(), "pick-a-card"); + this.cardEventSource.doubleClick(((MageCard)obj).getOriginal(), "pick-a-card"); } } diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java index d1fd82612a8..7394318d6b4 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java @@ -39,9 +39,11 @@ import mage.MageObject; import mage.ObjectColor; import mage.cards.Card; import mage.cards.ExpansionSet; +import mage.cards.repository.CardCriteria; +import mage.cards.repository.CardInfo; +import mage.cards.repository.CardRepository; import mage.client.cards.BigCard; import mage.client.cards.CardGrid; -import mage.client.cards.CardsStorage; import mage.client.cards.ICardGrid; import mage.client.constants.Constants.SortBy; import mage.client.deckeditor.table.TableModel; @@ -54,15 +56,14 @@ import mage.filter.predicate.mageobject.ColorPredicate; import mage.filter.predicate.mageobject.ColorlessPredicate; import mage.filter.predicate.other.CardTextPredicate; import mage.filter.predicate.other.ExpansionSetPredicate; -import mage.sets.Sets; import mage.view.CardsView; import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; -import java.awt.*; +import java.awt.Color; +import java.awt.Cursor; import java.awt.event.*; import java.util.*; -import java.util.List; /** * @@ -71,7 +72,6 @@ import java.util.List; public class CardSelector extends javax.swing.JPanel implements ComponentListener { private final List cards = new ArrayList(); - private FilterCard filter = new FilterCard(); private BigCard bigCard; private boolean limited = false; @@ -163,8 +163,8 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene filterCards(); } - private void buildFilter() { - filter = new FilterCard(); + private FilterCard buildFilter() { + FilterCard filter = new FilterCard(); ArrayList> predicates = new ArrayList>(); if (this.rdoGreen.isSelected()) { @@ -224,10 +224,59 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene filter.add(Predicates.or(expansionPredicates)); } } + + return filter; + } + + private CardCriteria buildCriteria() { + CardCriteria criteria = new CardCriteria(); + criteria.black(this.rdoBlack.isSelected()); + criteria.blue(this.rdoBlue.isSelected()); + criteria.green(this.rdoGreen.isSelected()); + criteria.red(this.rdoRed.isSelected()); + criteria.white(this.rdoWhite.isSelected()); + criteria.colorless(this.rdoColorless.isSelected()); + + if (this.rdoLand.isSelected()) { + criteria.types(CardType.LAND); + } + if (this.rdoArtifacts.isSelected()) { + criteria.types(CardType.ARTIFACT); + } + if (this.rdoCreatures.isSelected()) { + criteria.types(CardType.CREATURE); + } + if (this.rdoEnchantments.isSelected()) { + criteria.types(CardType.ENCHANTMENT); + } + if (this.rdoInstants.isSelected()) { + criteria.types(CardType.INSTANT); + } + if (this.rdoSorceries.isSelected()) { + criteria.types(CardType.SORCERY); + } + if (this.rdoPlaneswalkers.isSelected()) { + criteria.types(CardType.PLANESWALKER); + } + + String text = jTextFieldSearch.getText().trim(); + if (!text.isEmpty()) { + // criteria.rules(text); + } + + if (this.cbExpansionSet.isVisible()) { + String expansionSelection = this.cbExpansionSet.getSelectedItem().toString(); + if (!expansionSelection.equals("- All Sets")) { + List setCodes = ConstructedFormats.getSetsByFormat(expansionSelection); + criteria.setCodes(setCodes.toArray(new String[0])); + } + } + + return criteria; } private void filterCards() { - buildFilter(); + FilterCard filter = buildFilter(); try { List filteredCards = new ArrayList(); setCursor(new Cursor(Cursor.WAIT_CURSOR)); @@ -239,7 +288,9 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene } } else { - for (Card card: CardsStorage.getAllCards()) { + List foundCards = CardRepository.instance.findCards(buildCriteria()); + for (CardInfo cardInfo : foundCards) { + Card card = cardInfo.getCard(); if (filter.match(card, null)) { filteredCards.add(card); } @@ -275,22 +326,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene } } - public Card getCard(UUID cardId) { - if (!cards.isEmpty()) { - for (Card card: cards) { - if (card.getId().equals(cardId)) - return card; - } - } - else { - for (Card card: CardsStorage.getAllCards()) { - if (card.getId().equals(cardId)) - return card; - } - } - return null; - } - /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java index 83048cb6eca..e62fe9182e3 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java @@ -31,6 +31,8 @@ import mage.cards.Card; import mage.cards.decks.Deck; import mage.cards.decks.importer.DeckImporter; import mage.cards.decks.importer.DeckImporterUtil; +import mage.cards.repository.CardInfo; +import mage.cards.repository.CardRepository; import mage.client.MageFrame; import mage.client.cards.BigCard; import mage.client.cards.ICardGrid; @@ -44,11 +46,14 @@ import mage.game.GameException; import mage.remote.Session; import mage.sets.Sets; import mage.view.CardView; +import mage.view.SimpleCardView; import org.apache.log4j.Logger; import javax.swing.*; import javax.swing.filechooser.FileFilter; -import java.awt.*; +import java.awt.Component; +import java.awt.Cursor; +import java.awt.Dimension; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File; @@ -163,9 +168,11 @@ public class DeckEditorPanel extends javax.swing.JPanel { @Override public void event(Event event) { if (event.getEventName().equals("double-click")) { - Card card = cardSelector.getCard((UUID) event.getSource()); + SimpleCardView cardView = (SimpleCardView) event.getSource(); + CardInfo cardInfo = CardRepository.instance.getCard(cardView.getExpansionSetCode(), cardView.getCardNumber()); + Card card = cardInfo != null ? cardInfo.getCard() : null; if (card != null) { - deck.getCards().add(Sets.createCard(card.getClass())); + deck.getCards().add(card); if (mode == DeckEditorMode.Sideboard || mode == DeckEditorMode.Limited) { deck.getSideboard().remove(card); cardSelector.removeCard(card.getId()); @@ -179,8 +186,12 @@ public class DeckEditorPanel extends javax.swing.JPanel { } } else if (event.getEventName().equals("shift-double-click") && mode == DeckEditorMode.Constructed) { - Card card = cardSelector.getCard((UUID) event.getSource()); - deck.getSideboard().add(Sets.createCard(card.getClass())); + SimpleCardView cardView = (SimpleCardView) event.getSource(); + CardInfo cardInfo = CardRepository.instance.getCard(cardView.getExpansionSetCode(), cardView.getCardNumber()); + Card card = cardInfo != null ? cardInfo.getCard() : null; + if (card != null) { + deck.getSideboard().add(Sets.createCard(card.getClass())); + } if (cardInfoPane instanceof CardInfoPane) { ((CardInfoPane)cardInfoPane).setCard(new CardView(card)); } @@ -201,8 +212,9 @@ public class DeckEditorPanel extends javax.swing.JPanel { @Override public void event(Event event) { if (event.getEventName().equals("double-click")) { + SimpleCardView cardView = (SimpleCardView) event.getSource(); for (Card card: deck.getCards()) { - if (card.getId().equals(event.getSource())) { + if (card.getId().equals(cardView.getId())) { deck.getCards().remove(card); if (mode == DeckEditorMode.Limited || mode == DeckEditorMode.Sideboard) { deck.getSideboard().add(card); @@ -215,8 +227,9 @@ public class DeckEditorPanel extends javax.swing.JPanel { refreshDeck(); } else if (event.getEventName().equals("shift-double-click") && mode == DeckEditorMode.Constructed) { + SimpleCardView cardView = (SimpleCardView) event.getSource(); for (Card card: deck.getCards()) { - if (card.getId().equals(event.getSource())) { + if (card.getId().equals(cardView.getId())) { deck.getCards().remove(card); deck.getSideboard().add(card); break; @@ -233,8 +246,9 @@ public class DeckEditorPanel extends javax.swing.JPanel { @Override public void event(Event event) { if (event.getEventName().equals("double-click")) { + SimpleCardView cardView = (SimpleCardView) event.getSource(); for (Card card: deck.getSideboard()) { - if (card.getId().equals(event.getSource())) { + if (card.getId().equals(cardView.getId())) { deck.getSideboard().remove(card); deck.getCards().add(card); break; diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/table/CardTableSelector.java b/Mage.Client/src/main/java/mage/client/deckeditor/table/CardTableSelector.java index 6e38a9ef394..68b81cbda96 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/table/CardTableSelector.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/table/CardTableSelector.java @@ -33,9 +33,11 @@ import mage.MageObject; import mage.ObjectColor; import mage.cards.Card; import mage.cards.ExpansionSet; +import mage.cards.repository.CardCriteria; +import mage.cards.repository.CardInfo; +import mage.cards.repository.CardRepository; import mage.client.cards.BigCard; import mage.client.cards.CardEventSource; -import mage.client.cards.CardsStorage; import mage.client.cards.ICardGrid; import mage.client.constants.Constants.DeckEditorMode; import mage.client.constants.Constants.SortBy; @@ -53,13 +55,13 @@ import mage.view.CardsView; import javax.swing.*; import javax.swing.table.DefaultTableCellRenderer; -import java.awt.*; +import java.awt.Color; +import java.awt.Cursor; import java.awt.event.ComponentEvent; import java.awt.event.ComponentListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.*; -import java.util.List; /** * @@ -68,7 +70,6 @@ import java.util.List; public class CardTableSelector extends javax.swing.JPanel implements ComponentListener { private final List cards = new ArrayList(); - private FilterCard filter = new FilterCard(); private BigCard bigCard; protected CardEventSource cardEventSource = new CardEventSource(); private DeckEditorMode mode = DeckEditorMode.Constructed; @@ -95,8 +96,8 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi } - private void buildFilter() { - filter = new FilterCard(); + private FilterCard buildFilter() { + FilterCard filter = new FilterCard(); ArrayList> predicates = new ArrayList>(); if (this.rdoGreen.isSelected()) { @@ -150,11 +151,13 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi filter.add(new ExpansionSetPredicate(((ExpansionSet) this.cbExpansionSet.getSelectedItem()).getCode())); } else if (this.cbExpansionSet.getSelectedItem().equals("-- Standard")) { ArrayList> expansionPredicates = new ArrayList>(); - for(String setCode : ConstructedFormats.getSetsByFormat("Standard")) { + for (String setCode : ConstructedFormats.getSetsByFormat("Standard")) { expansionPredicates.add(new ExpansionSetPredicate(setCode)); } filter.add(Predicates.or(expansionPredicates)); } + + return filter; } public void loadCards(List sideboard, BigCard bigCard, boolean construct) { @@ -189,21 +192,71 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi filterCards(); } + private CardCriteria buildCriteria() { + CardCriteria criteria = new CardCriteria(); + criteria.black(this.rdoBlack.isSelected()); + criteria.blue(this.rdoBlue.isSelected()); + criteria.green(this.rdoGreen.isSelected()); + criteria.red(this.rdoRed.isSelected()); + criteria.white(this.rdoWhite.isSelected()); + criteria.colorless(this.rdoColorless.isSelected()); + + if (this.rdoLand.isSelected()) { + criteria.types(CardType.LAND); + } + if (this.rdoArtifacts.isSelected()) { + criteria.types(CardType.ARTIFACT); + } + if (this.rdoCreatures.isSelected()) { + criteria.types(CardType.CREATURE); + } + if (this.rdoEnchantments.isSelected()) { + criteria.types(CardType.ENCHANTMENT); + } + if (this.rdoInstants.isSelected()) { + criteria.types(CardType.INSTANT); + } + if (this.rdoSorceries.isSelected()) { + criteria.types(CardType.SORCERY); + } + if (this.rdoPlaneswalkers.isSelected()) { + criteria.types(CardType.PLANESWALKER); + } + + String text = jTextFieldSearch.getText().trim(); + if (!text.isEmpty()) { + // criteria.rules(text); + } + + if (this.cbExpansionSet.getSelectedItem() instanceof ExpansionSet) { + criteria.setCodes(((ExpansionSet) this.cbExpansionSet.getSelectedItem()).getCode()); + } else if (this.cbExpansionSet.getSelectedItem().equals("-- Standard")) { + List setCodes = ConstructedFormats.getSetsByFormat("Standard"); + criteria.setCodes(setCodes.toArray(new String[0])); + } + + return criteria; + } + private void filterCards() { - buildFilter(); + FilterCard filter = buildFilter(); try { List filteredCards = new ArrayList(); setCursor(new Cursor(Cursor.WAIT_CURSOR)); if (!cards.isEmpty()) { for (Card card: cards) { - if (filter.match(card, null)) + if (filter.match(card, null)) { filteredCards.add(card); + } } } else { - for (Card card: CardsStorage.getAllCards()) { - if (filter.match(card, null)) + List foundCards = CardRepository.instance.findCards(buildCriteria()); + for (CardInfo cardInfo : foundCards) { + Card card = cardInfo.getCard(); + if (filter.match(card, null)) { filteredCards.add(card); + } } } this.mainModel.loadCards(new CardsView(filteredCards), (SortBy) cbSortBy.getSelectedItem(), chkPiles.isSelected(), bigCard, null); @@ -227,22 +280,6 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi } } - public Card getCard(UUID cardId) { - if (!cards.isEmpty()) { - for (Card card: cards) { - if (card.getId().equals(cardId)) - return card; - } - } - else { - for (Card card: CardsStorage.getAllCards()) { - if (card.getId().equals(cardId)) - return card; - } - } - return null; - } - private void initComponents() { tbColor = new javax.swing.JToolBar(); diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java b/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java index 2e4c07a5ac9..a7093bf3ecd 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java @@ -269,12 +269,12 @@ public class TableModel extends AbstractTableModel implements ICardGrid { public void doubleClick(int index) { CardView card = view.get(index); - cardEventSource.doubleClick(card.getId(), "double-click"); + cardEventSource.doubleClick(card, "double-click"); } public void shiftDoubleClick(int index) { CardView card = view.get(index); - cardEventSource.shiftDoubleClick(card.getId(), "shift-double-click"); + cardEventSource.shiftDoubleClick(card, "shift-double-click"); } public void removeFromMainEvent(int index) {