forked from External/mage
[deck.editor] Switching between card selectors. Displaying cards from the list. --All sets-- option to show all cards at once (appears only in CardTableSelector).
This commit is contained in:
parent
6e3a7ede39
commit
f66fd8fc97
11 changed files with 221 additions and 150 deletions
|
|
@ -30,6 +30,7 @@ package mage.client.deckeditor.table;
|
|||
|
||||
import mage.Constants.CardType;
|
||||
import mage.cards.MageCard;
|
||||
import mage.view.CardView;
|
||||
|
||||
/**
|
||||
* Helper methods for {@link MageCard}.
|
||||
|
|
@ -40,30 +41,30 @@ public class CardHelper {
|
|||
private CardHelper() {
|
||||
}
|
||||
|
||||
public static String getColor(MageCard c) {
|
||||
if (c.getOriginal().getColor().getColorCount() == 0) return "Colorless";
|
||||
else if (c.getOriginal().getColor().getColorCount() > 1) return "Gold";
|
||||
else if (c.getOriginal().getColor().isBlack()) return "Black";
|
||||
else if (c.getOriginal().getColor().isBlue()) return "Blue";
|
||||
else if (c.getOriginal().getColor().isWhite()) return "White";
|
||||
else if (c.getOriginal().getColor().isGreen()) return "Green";
|
||||
else if (c.getOriginal().getColor().isRed()) return "Red";
|
||||
public static String getColor(CardView c) {
|
||||
if (c.getColor().getColorCount() == 0) return "Colorless";
|
||||
else if (c.getColor().getColorCount() > 1) return "Gold";
|
||||
else if (c.getColor().isBlack()) return "Black";
|
||||
else if (c.getColor().isBlue()) return "Blue";
|
||||
else if (c.getColor().isWhite()) return "White";
|
||||
else if (c.getColor().isGreen()) return "Green";
|
||||
else if (c.getColor().isRed()) return "Red";
|
||||
return "";
|
||||
}
|
||||
|
||||
public static String getType(MageCard c) {
|
||||
public static String getType(CardView c) {
|
||||
StringBuilder type = new StringBuilder();
|
||||
for (String superType : c.getOriginal().getSuperTypes()) {
|
||||
for (String superType : c.getSuperTypes()) {
|
||||
type.append(superType);
|
||||
type.append(" ");
|
||||
}
|
||||
for (CardType cardType : c.getOriginal().getCardTypes()) {
|
||||
for (CardType cardType : c.getCardTypes()) {
|
||||
type.append(cardType.toString());
|
||||
type.append(" ");
|
||||
}
|
||||
if (c.getOriginal().getSubTypes().size() > 0) {
|
||||
if (c.getSubTypes().size() > 0) {
|
||||
type.append("- ");
|
||||
for (String subType : c.getOriginal().getSubTypes()) {
|
||||
for (String subType : c.getSubTypes()) {
|
||||
type.append(subType);
|
||||
type.append(" ");
|
||||
}
|
||||
|
|
@ -71,7 +72,7 @@ public class CardHelper {
|
|||
return type.toString();
|
||||
}
|
||||
|
||||
public static boolean isCreature(MageCard c) {
|
||||
return c.getOriginal().getCardTypes().contains(CardType.CREATURE);
|
||||
public static boolean isCreature(CardView c) {
|
||||
return c.getCardTypes().contains(CardType.CREATURE);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,10 +100,12 @@ public class CardTableSelector extends javax.swing.JPanel implements ComponentLi
|
|||
}
|
||||
});
|
||||
cbExpansionSet.setModel(new DefaultComboBoxModel(l));
|
||||
// cbExpansionSet.insertItemAt("All sets", 0);
|
||||
cbExpansionSet.insertItemAt("-- All sets -- ", 0);
|
||||
cbExpansionSet.setSelectedIndex(0);
|
||||
initFilter();
|
||||
filter.getExpansionSetCode().add(((ExpansionSet)this.cbExpansionSet.getSelectedItem()).getCode());
|
||||
if (this.cbExpansionSet.getSelectedItem() instanceof ExpansionSet) {
|
||||
filter.getExpansionSetCode().add(((ExpansionSet)this.cbExpansionSet.getSelectedItem()).getCode());
|
||||
}
|
||||
filterCards();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -31,13 +31,14 @@ import java.util.Comparator;
|
|||
import java.util.List;
|
||||
|
||||
import mage.cards.MageCard;
|
||||
import mage.view.CardView;
|
||||
|
||||
/**
|
||||
* {@link MageCard} comparator. Used to sort cards in Deck Editor Table View pane.
|
||||
*
|
||||
* @author nantuko
|
||||
*/
|
||||
public class MageCardComparator implements Comparator<MageCard> {
|
||||
public class MageCardComparator implements Comparator<CardView> {
|
||||
private final int column;
|
||||
private boolean ascending;
|
||||
|
||||
|
|
@ -46,7 +47,7 @@ public class MageCardComparator implements Comparator<MageCard> {
|
|||
this.ascending = ascending;
|
||||
}
|
||||
|
||||
public int compare(MageCard a, MageCard b) {
|
||||
public int compare(CardView a, CardView b) {
|
||||
Comparable aCom = null;
|
||||
Comparable bCom = null;
|
||||
|
||||
|
|
@ -56,16 +57,16 @@ public class MageCardComparator implements Comparator<MageCard> {
|
|||
bCom = Integer.valueOf(1);
|
||||
} else if (column == 1)// Name
|
||||
{
|
||||
aCom = a.getOriginal().getName();
|
||||
bCom = b.getOriginal().getName();
|
||||
if (aCom.equals(bCom) && a.getOriginal().getExpansionSetCode().equals(b.getOriginal().getExpansionSetCode())) {
|
||||
aCom = a.getOriginal().getCardNumber();
|
||||
bCom = b.getOriginal().getCardNumber();
|
||||
aCom = a.getName();
|
||||
bCom = b.getName();
|
||||
if (aCom.equals(bCom) && a.getExpansionSetCode().equals(b.getExpansionSetCode())) {
|
||||
aCom = a.getCardNumber();
|
||||
bCom = b.getCardNumber();
|
||||
}
|
||||
} else if (column == 2)// Cost
|
||||
{
|
||||
aCom = a.getOriginal().getConvertedManaCost();
|
||||
bCom = b.getOriginal().getConvertedManaCost();
|
||||
aCom = a.getConvertedManaCost();
|
||||
bCom = b.getConvertedManaCost();
|
||||
} else if (column == 3)// Color
|
||||
{
|
||||
aCom = CardHelper.getColor(a);
|
||||
|
|
@ -80,17 +81,17 @@ public class MageCardComparator implements Comparator<MageCard> {
|
|||
bCom = new Float(-1);
|
||||
|
||||
if (CardHelper.isCreature(a))
|
||||
aCom = new Float(a.getOriginal().getPower() + "." + a.getOriginal().getToughness());
|
||||
aCom = new Float(a.getPower() + "." + a.getToughness());
|
||||
if (CardHelper.isCreature(b))
|
||||
bCom = new Float(b.getOriginal().getPower() + "." + b.getOriginal().getToughness());
|
||||
bCom = new Float(b.getPower() + "." + b.getToughness());
|
||||
} else if (column == 6)// Rarity
|
||||
{
|
||||
aCom = a.getOriginal().getRarity().toString();
|
||||
bCom = b.getOriginal().getRarity().toString();
|
||||
aCom = a.getRarity().toString();
|
||||
bCom = b.getRarity().toString();
|
||||
} else if (column == 7)// Set name
|
||||
{
|
||||
aCom = a.getOriginal().getExpansionSetCode();
|
||||
bCom = b.getOriginal().getExpansionSetCode();
|
||||
aCom = a.getExpansionSetCode();
|
||||
bCom = b.getExpansionSetCode();
|
||||
}
|
||||
|
||||
if (ascending)
|
||||
|
|
|
|||
|
|
@ -28,25 +28,6 @@
|
|||
|
||||
package mage.client.deckeditor.table;
|
||||
|
||||
import java.awt.Dimension;
|
||||
import java.awt.Image;
|
||||
import java.awt.event.MouseAdapter;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.awt.event.MouseListener;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.swing.JTable;
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
import javax.swing.table.TableColumnModel;
|
||||
|
||||
import mage.cards.MageCard;
|
||||
import mage.client.cards.BigCard;
|
||||
import mage.client.cards.CardEventSource;
|
||||
|
|
@ -59,6 +40,17 @@ import mage.client.util.ImageHelper;
|
|||
import mage.client.util.Listener;
|
||||
import mage.view.CardView;
|
||||
import mage.view.CardsView;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.table.AbstractTableModel;
|
||||
import javax.swing.table.TableColumnModel;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
/**
|
||||
* Table Model for card list.
|
||||
|
|
@ -69,11 +61,13 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
|
|||
|
||||
private static final long serialVersionUID = -528008802935423088L;
|
||||
|
||||
private static final Logger log = Logger.getLogger(TableModel.class);
|
||||
|
||||
protected CardEventSource cardEventSource = new CardEventSource();
|
||||
protected BigCard bigCard;
|
||||
protected UUID gameId;
|
||||
private Map<UUID, MageCard> cards = new LinkedHashMap<UUID, MageCard>();
|
||||
private List<MageCard> view = new ArrayList<MageCard>();
|
||||
private Map<UUID, CardView> cards = new LinkedHashMap<UUID, CardView>();
|
||||
private List<CardView> view = new ArrayList<CardView>();
|
||||
private Dimension cardDimension;
|
||||
|
||||
private String column[] = { "", "Name", "Cost", "Color", "Type", "Stats",
|
||||
|
|
@ -91,19 +85,20 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
|
|||
addCard(card, bigCard, gameId);
|
||||
}
|
||||
}
|
||||
for (Iterator<Entry<UUID, MageCard>> i = cards.entrySet().iterator(); i
|
||||
for (Iterator<Entry<UUID, CardView>> i = cards.entrySet().iterator(); i
|
||||
.hasNext();) {
|
||||
Entry<UUID, MageCard> entry = i.next();
|
||||
Entry<UUID, CardView> entry = i.next();
|
||||
if (!showCards.containsKey(entry.getKey())) {
|
||||
i.remove();
|
||||
for (MageCard v : view) {
|
||||
if (v.getOriginal().getId().equals(entry.getKey())) {
|
||||
view.remove(v);
|
||||
for (CardView cv : view) {
|
||||
if (cv.getId().equals(entry.getKey())) {
|
||||
view.remove(cv);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
sort(1, true);
|
||||
drawCards(sortBy, piles);
|
||||
}
|
||||
|
||||
|
|
@ -129,15 +124,15 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
|
|||
}
|
||||
|
||||
private Object getColumn(Object obj, int column) {
|
||||
MageCard c = (MageCard) obj;
|
||||
CardView c = (CardView) obj;
|
||||
switch (column) {
|
||||
case 0:
|
||||
return "";
|
||||
case 1:
|
||||
return c.getOriginal().getName();
|
||||
return c.getName();
|
||||
case 2:
|
||||
StringBuilder s = new StringBuilder();
|
||||
for (String cost : c.getOriginal().getManaCost()) {
|
||||
for (String cost : c.getManaCost()) {
|
||||
s.append(cost);
|
||||
}
|
||||
String cost = s.toString();
|
||||
|
|
@ -150,12 +145,12 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
|
|||
case 4:
|
||||
return CardHelper.getType(c);
|
||||
case 5:
|
||||
return CardHelper.isCreature(c) ? c.getOriginal().getPower() + "/"
|
||||
+ c.getOriginal().getToughness() : "-";
|
||||
return CardHelper.isCreature(c) ? c.getPower() + "/"
|
||||
+ c.getToughness() : "-";
|
||||
case 6:
|
||||
return c.getOriginal().getRarity().toString();
|
||||
return c.getRarity().toString();
|
||||
case 7:
|
||||
return c.getOriginal().getExpansionSetCode();
|
||||
return c.getExpansionSetCode();
|
||||
default:
|
||||
return "error";
|
||||
}
|
||||
|
|
@ -166,11 +161,8 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
|
|||
cardDimension = new Dimension(Config.dimensions.frameWidth,
|
||||
Config.dimensions.frameHeight);
|
||||
}
|
||||
MageCard cardImg = Plugins.getInstance().getMageCard(card, bigCard,
|
||||
cardDimension, gameId, true);
|
||||
cards.put(card.getId(), cardImg);
|
||||
cardImg.update(card);
|
||||
view.add(cardImg);
|
||||
cards.put(card.getId(), card);
|
||||
view.add(card);
|
||||
}
|
||||
|
||||
public void drawCards(SortBy sortBy, boolean piles) {
|
||||
|
|
@ -179,9 +171,9 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
|
|||
|
||||
public void removeCard(UUID cardId) {
|
||||
cards.remove(cardId);
|
||||
for (MageCard v : view) {
|
||||
if (v.getOriginal().getId().equals(cardId)) {
|
||||
view.remove(v);
|
||||
for (CardView cv : view) {
|
||||
if (cv.getId().equals(cardId)) {
|
||||
view.remove(cv);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
@ -197,34 +189,25 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
|
|||
|
||||
public void addListeners(final JTable table) {
|
||||
// updates card detail, listens to any key strokes
|
||||
/*
|
||||
* table.addKeyListener(new KeyListener() { public void
|
||||
* keyPressed(KeyEvent ev) { }
|
||||
*
|
||||
* public void keyTyped(KeyEvent ev) { }
|
||||
*
|
||||
* public void keyReleased(KeyEvent ev) { int row =
|
||||
* table.getSelectedRow(); if (row != -1) { MageCard card =
|
||||
* (MageCard)cards.values().toArray()[row];
|
||||
* bigCard.setCard(card.getOriginal().getId(), card.getImage(), new
|
||||
* ArrayList<String>(), false); } } });
|
||||
*/
|
||||
|
||||
table.addKeyListener(new KeyListener() {
|
||||
public void keyPressed(KeyEvent ev) {}
|
||||
public void keyTyped(KeyEvent ev) {}
|
||||
|
||||
public void keyReleased(KeyEvent ev) {
|
||||
int row = table.getSelectedRow();
|
||||
if (row != -1) {
|
||||
showImage(row);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// updates card detail, listens to any mouse clicks
|
||||
table.addMouseListener(new MouseAdapter() {
|
||||
public void mousePressed(MouseEvent e) {
|
||||
int row = table.getSelectedRow();
|
||||
if (row != -1) {
|
||||
MageCard card = view.get(row);
|
||||
if (card.getOriginal().getId().equals(bigCard.getCardId())) {
|
||||
Image image = card.getImage();
|
||||
if (image != null && image instanceof BufferedImage) {
|
||||
image = ImageHelper.getResizedImage(
|
||||
(BufferedImage) image, bigCard.getWidth(),
|
||||
bigCard.getHeight());
|
||||
}
|
||||
bigCard.setCard(card.getOriginal().getId(), image,
|
||||
new ArrayList<String>(), false);
|
||||
}
|
||||
showImage(row);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
|
@ -242,8 +225,7 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
|
|||
if (recentSortedColumn == column) {
|
||||
asc = !recentAscending;
|
||||
}
|
||||
boolean change = sort(column, asc);
|
||||
|
||||
sort(column, asc);
|
||||
fireTableDataChanged();
|
||||
}
|
||||
}
|
||||
|
|
@ -251,6 +233,18 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
|
|||
table.getTableHeader().addMouseListener(mouse);
|
||||
}
|
||||
|
||||
private void showImage(int row) {
|
||||
CardView card = view.get(row);
|
||||
if (!card.getId().equals(bigCard.getCardId())) {
|
||||
Image image = Plugins.getInstance().getOriginalImage(card);
|
||||
if (image != null && image instanceof BufferedImage) {
|
||||
image = ImageHelper.getResizedImage((BufferedImage) image, bigCard.getWidth(),
|
||||
bigCard.getHeight());
|
||||
bigCard.setCard(card.getId(), image, new ArrayList<String>(), false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean sort(int column, boolean ascending) {
|
||||
// used by addCard() to resort the cards
|
||||
recentSortedColumn = column;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue