mirror of
https://github.com/magefree/mage.git
synced 2025-12-20 02:30:08 -08:00
Merge 535ef2eb6e into acc180d1d4
This commit is contained in:
commit
13befb24a7
6 changed files with 92 additions and 2 deletions
|
|
@ -568,6 +568,8 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
|
|||
|
||||
void duplicateCards(Collection<CardView> cards);
|
||||
|
||||
void markCardsAsFavorite(Collection<CardView> cards);
|
||||
|
||||
void invertCardSelection(Collection<CardView> cards);
|
||||
|
||||
void showAll();
|
||||
|
|
@ -1181,6 +1183,13 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
|
|||
}
|
||||
}
|
||||
|
||||
private void markAsFavorite() {
|
||||
Collection<CardView> toFave = dragCardList();
|
||||
for (DragCardGridListener l : listeners) {
|
||||
l.markCardsAsFavorite(toFave);
|
||||
}
|
||||
}
|
||||
|
||||
private void invertSelection() {
|
||||
Collection<CardView> toInvert = allCards;
|
||||
for (DragCardGridListener l : listeners) {
|
||||
|
|
@ -1980,6 +1989,10 @@ public class DragCardGrid extends JPanel implements DragCardSource, DragCardTarg
|
|||
JMenuItem duplicateSelection = new JMenuItem("Duplicate selected cards");
|
||||
duplicateSelection.addActionListener(e2 -> duplicateSelection());
|
||||
menu.add(duplicateSelection);
|
||||
|
||||
JMenuItem markAsFavorite = new JMenuItem("Mark selected card editions as favorite");
|
||||
markAsFavorite.addActionListener(e2 -> markAsFavorite());
|
||||
menu.add(markAsFavorite);
|
||||
}
|
||||
menu.show(e.getComponent(), e.getX(), e.getY());
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import mage.client.util.ClientEventType;
|
|||
import mage.client.util.Event;
|
||||
import mage.client.util.GUISizeHelper;
|
||||
import mage.client.util.Listener;
|
||||
import mage.client.preference.MagePreferences;
|
||||
import mage.view.CardView;
|
||||
import mage.view.CardsView;
|
||||
|
||||
|
|
@ -113,6 +114,17 @@ public class DeckArea extends javax.swing.JPanel {
|
|||
deckList.addCardView(newCard, card);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void markCardsAsFavorite(Collection<CardView> cards) {
|
||||
deckList.deselectAll();
|
||||
for (CardView card : cards) {
|
||||
String name = card.getName();
|
||||
String setCode = card.getExpansionSetCode();
|
||||
String cardNumber = card.getCardNumber();
|
||||
MagePreferences.setFavoriteCard(name, cardNumber, setCode);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invertCardSelection(Collection<CardView> cards) {
|
||||
|
|
@ -154,6 +166,17 @@ public class DeckArea extends javax.swing.JPanel {
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void markCardsAsFavorite(Collection<CardView> cards) {
|
||||
deckList.deselectAll();
|
||||
for (CardView card : cards) {
|
||||
String name = card.getName();
|
||||
String setCode = card.getExpansionSetCode();
|
||||
String cardNumber = card.getCardNumber();
|
||||
MagePreferences.setFavoriteCard(name, cardNumber, setCode);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void invertCardSelection(Collection<CardView> cards) {
|
||||
// Invert Selection
|
||||
|
|
|
|||
|
|
@ -759,6 +759,7 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
MageFrame.getDesktop().setCursor(new Cursor(Cursor.WAIT_CURSOR));
|
||||
try {
|
||||
DeckImporter importer = DeckImporter.getDeckImporter(file.getPath());
|
||||
importer.setPreferences(MageFrame.getPreferences());
|
||||
|
||||
if (importer != null) {
|
||||
StringBuilder errorMessages = new StringBuilder();
|
||||
|
|
@ -822,7 +823,13 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
StringBuilder errorMessages = new StringBuilder();
|
||||
MageFrame.getDesktop().setCursor(new Cursor(Cursor.WAIT_CURSOR));
|
||||
try {
|
||||
Deck deckToAppend = Deck.load(DeckImporter.importDeckFromFile(tempDeckPath, errorMessages, false), true, true);
|
||||
DeckImporter deckImporter = DeckImporter.getDeckImporter(tempDeckPath);
|
||||
DeckCardLists deckCardLists = new DeckCardLists();
|
||||
if (deckImporter != null) {
|
||||
deckImporter.setPreferences(MageFrame.getPreferences());
|
||||
deckCardLists = deckImporter.importDeck(tempDeckPath, errorMessages, false);
|
||||
}
|
||||
Deck deckToAppend = Deck.load(deckCardLists, true, true);
|
||||
processAndShowImportErrors(errorMessages);
|
||||
this.deck = Deck.append(deckToAppend, this.deck);
|
||||
refreshDeck(false, true);
|
||||
|
|
@ -924,7 +931,14 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
MageFrame.getDesktop().setCursor(new Cursor(Cursor.WAIT_CURSOR));
|
||||
try {
|
||||
StringBuilder errorMessages = new StringBuilder();
|
||||
Deck newDeck = Deck.load(DeckImporter.importDeckFromFile(file, errorMessages, saveAutoFixedFile), true, true);
|
||||
DeckImporter deckImporter = DeckImporter.getDeckImporter(file);
|
||||
DeckCardLists deckCardLists = new DeckCardLists();
|
||||
if (deckImporter != null) {
|
||||
deckImporter.setPreferences(MageFrame.getPreferences());
|
||||
deckCardLists = deckImporter.importDeck(file, errorMessages, saveAutoFixedFile);
|
||||
}
|
||||
|
||||
Deck newDeck = Deck.load(deckCardLists, true, true);
|
||||
processAndShowImportErrors(errorMessages);
|
||||
|
||||
if (newDeck != null) {
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ public final class MagePreferences {
|
|||
private static final String KEY_PASSWORD = "password";
|
||||
private static final String KEY_EMAIL = "email";
|
||||
private static final String KEY_AUTO_CONNECT = "autoConnect";
|
||||
private static final String KEY_FAVORITE_CARD_PREFIX = "favoriteCard";
|
||||
private static final String NODE_KEY_IGNORE_LIST = "ignoreListString";
|
||||
private static final String NODE_KEY_RESTORE_SESSIONS_LIST = "restoreSessionsListString";
|
||||
|
||||
|
|
@ -115,6 +116,26 @@ public final class MagePreferences {
|
|||
prefs().putBoolean(KEY_AUTO_CONNECT, autoConnect);
|
||||
}
|
||||
|
||||
public static String getFavoriteCardNumber(String cardName) {
|
||||
String setAndNumber = prefs().get(prefixedKey(KEY_FAVORITE_CARD_PREFIX, cardName), "");
|
||||
if (setAndNumber != null && !setAndNumber.equals("")) {
|
||||
return setAndNumber.split("##")[1];
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String getFavoriteCardSet(String cardName) {
|
||||
String setAndNumber = prefs().get(prefixedKey(KEY_FAVORITE_CARD_PREFIX, cardName), "");
|
||||
if (setAndNumber != null && !setAndNumber.equals("")) {
|
||||
return setAndNumber.split("##")[0];
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public static void setFavoriteCard(String cardName, String cardNumber, String setCode) {
|
||||
prefs().put(prefixedKey(KEY_FAVORITE_CARD_PREFIX, cardName), setCode + "##" + cardNumber);
|
||||
}
|
||||
|
||||
public static void addIgnoredUser(String serverAddress, String username) {
|
||||
ignoreListNode(serverAddress).putBoolean(username, true);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import org.apache.log4j.Logger;
|
|||
|
||||
import java.io.File;
|
||||
import java.util.Locale;
|
||||
import java.util.prefs.Preferences;
|
||||
import java.util.Scanner;
|
||||
|
||||
/**
|
||||
|
|
@ -47,6 +48,12 @@ public abstract class DeckImporter {
|
|||
|
||||
private static final String[] SIDEBOARD_MARKS = new String[]{"//sideboard", "sb: "};
|
||||
|
||||
protected Preferences prefs = null;
|
||||
|
||||
public void setPreferences(Preferences prefs) {
|
||||
this.prefs = prefs;
|
||||
}
|
||||
|
||||
public static DeckImporter getDeckImporter(String file) {
|
||||
if (file == null) {
|
||||
return null;
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ import java.util.Arrays;
|
|||
import java.util.HashSet;
|
||||
import java.util.Locale;
|
||||
import java.util.Set;
|
||||
import java.util.prefs.Preferences;
|
||||
|
||||
/**
|
||||
* Deck import: text deck, compatible with MTGO and many other apps/services
|
||||
|
|
@ -21,6 +22,7 @@ public class TxtDeckImporter extends PlainTextDeckImporter {
|
|||
private static final String[] SET_VALUES = new String[]{"lands", "creatures", "planeswalkers", "other spells", "sideboard cards",
|
||||
"Instant", "Land", "Enchantment", "Artifact", "Sorcery", "Planeswalker", "Creature"};
|
||||
private static final Set<String> IGNORE_NAMES = new HashSet<>(Arrays.asList(SET_VALUES));
|
||||
private static final String KEY_FAVORITE_CARD_PREFIX = "favoriteCard";
|
||||
|
||||
private boolean sideboard = false;
|
||||
private boolean switchSideboardByEmptyLine = true; // all cards after first empty line will be sideboard (like mtgo format)
|
||||
|
|
@ -129,6 +131,16 @@ public class TxtDeckImporter extends PlainTextDeckImporter {
|
|||
wasCardLines = true;
|
||||
|
||||
CardInfo cardInfo = CardRepository.instance.findPreferredCoreExpansionCard(lineName);
|
||||
|
||||
if (prefs != null) {
|
||||
String favSetAndNumber = prefs.get(KEY_FAVORITE_CARD_PREFIX + '/' + lineName, "");
|
||||
if (favSetAndNumber != null && !favSetAndNumber.equals("")) {
|
||||
String favoriteSet = favSetAndNumber.split("##")[0];
|
||||
String favoriteNumber = favSetAndNumber.split("##")[1];
|
||||
cardInfo = CardRepository.instance.findCard(favoriteSet, favoriteNumber);
|
||||
}
|
||||
}
|
||||
|
||||
if (cardInfo == null) {
|
||||
sbMessage.append("Could not find card: '").append(lineName).append("' at line ").append(lineCount).append('\n');
|
||||
} else {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue