Sorting by formats in Collection Viewer.

This commit is contained in:
magenoxx 2011-10-15 14:16:13 +04:00
parent ec3305478d
commit 5fbb8b1053
5 changed files with 363 additions and 304 deletions

View file

@ -37,8 +37,6 @@ package mage.client.deckeditor;
import mage.cards.decks.Deck; import mage.cards.decks.Deck;
import mage.client.cards.BigCard; import mage.client.cards.BigCard;
import mage.client.cards.CardsList;
import mage.client.constants.Constants.SortBy;
import mage.client.util.Event; import mage.client.util.Event;
import mage.client.util.Listener; import mage.client.util.Listener;
import mage.view.CardsView; import mage.view.CardsView;

View file

@ -121,7 +121,6 @@ public class DeckEditorPanel extends javax.swing.JPanel {
this.tableId = tableId; this.tableId = tableId;
this.mode = mode; this.mode = mode;
this.btnAddLand.setVisible(false); this.btnAddLand.setVisible(false);
//this.cardTableSelector.setMode(mode);
switch (mode) { switch (mode) {
case Limited: case Limited:
this.btnAddLand.setVisible(true); this.btnAddLand.setVisible(true);
@ -129,7 +128,6 @@ public class DeckEditorPanel extends javax.swing.JPanel {
case Sideboard: case Sideboard:
this.btnSubmit.setVisible(true); this.btnSubmit.setVisible(true);
this.cardSelector.loadCards(new ArrayList<Card>(deck.getSideboard()), this.bigCard, mode == DeckEditorMode.Limited); this.cardSelector.loadCards(new ArrayList<Card>(deck.getSideboard()), this.bigCard, mode == DeckEditorMode.Limited);
//this.cardTableSelector.loadCards(new ArrayList<Card>(deck.getSideboard()), this.bigCard, mode == DeckEditorMode.Limited);
this.btnExit.setVisible(false); this.btnExit.setVisible(false);
this.btnImport.setVisible(false); this.btnImport.setVisible(false);
if (!MageFrame.getSession().isTestMode()) if (!MageFrame.getSession().isTestMode())
@ -163,9 +161,6 @@ public class DeckEditorPanel extends javax.swing.JPanel {
private void init() { private void init() {
this.cardSelector.setVisible(true); this.cardSelector.setVisible(true);
//this.cardTableSelector.setVisible(false);
//this.jRadioButtonFullCards.setSelected(true);
//this.jRadioButtonListTable.setSelected(false);
this.jPanel1.setVisible(true); this.jPanel1.setVisible(true);
for (ICardGrid component : this.cardSelector.getCardGridComponents()) { for (ICardGrid component : this.cardSelector.getCardGridComponents()) {
component.clearCardEventListeners(); component.clearCardEventListeners();
@ -240,13 +235,10 @@ public class DeckEditorPanel extends javax.swing.JPanel {
@Override @Override
public void event(Event event) { public void event(Event event) {
if (event.getEventName().equals("double-click")) { if (event.getEventName().equals("double-click")) {
//boolean isListView = cardSelector.getCardsList() instanceof TableModel;
for (Card card: deck.getSideboard()) { for (Card card: deck.getSideboard()) {
if (card.getId().equals(event.getSource())) { if (card.getId().equals(event.getSource())) {
deck.getSideboard().remove(card); deck.getSideboard().remove(card);
//if (!isListView) {
deck.getCards().add(card); deck.getCards().add(card);
//}
break; break;
} }
} }
@ -299,7 +291,6 @@ public class DeckEditorPanel extends javax.swing.JPanel {
jSplitPane1 = new javax.swing.JSplitPane(); jSplitPane1 = new javax.swing.JSplitPane();
cardSelector = new mage.client.deckeditor.CardSelector(); cardSelector = new mage.client.deckeditor.CardSelector();
//cardTableSelector = new mage.client.deckeditor.table.CardTableSelector();
deckArea = new mage.client.deckeditor.DeckArea(); deckArea = new mage.client.deckeditor.DeckArea();
jPanel1 = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel();
bigCard = new mage.client.cards.BigCard(); bigCard = new mage.client.cards.BigCard();
@ -314,52 +305,7 @@ public class DeckEditorPanel extends javax.swing.JPanel {
btnAddLand = new javax.swing.JButton(); btnAddLand = new javax.swing.JButton();
txtTimeRemaining = new javax.swing.JTextField(); txtTimeRemaining = new javax.swing.JTextField();
/* jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jLayeredPane1 = new javax.swing.JLayeredPane();
jRadioButtonFullCards = new javax.swing.JRadioButton();
jRadioButtonListTable = new javax.swing.JRadioButton();
jLayeredPane1.setBorder(javax.swing.BorderFactory.createTitledBorder(null, "View", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Tahoma", Font.BOLD, 13), new java.awt.Color(0, 0, 0))); // NOI18N
jRadioButtonFullCards.setLabel("Full cards");
jRadioButtonFullCards.setBounds(50, 27, 80, 23);
jLayeredPane1.add(jRadioButtonFullCards, javax.swing.JLayeredPane.DEFAULT_LAYER);
jRadioButtonFullCards.getAccessibleContext().setAccessibleName("Full cards");
jRadioButtonFullCards.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (jRadioButtonListTable.isSelected()) {
jRadioButtonListTable.setSelected(false);
//cardTableSelector.setVisible(false);
cardSelector.setVisible(true);
jSplitPane1.setTopComponent(cardSelector);
jSplitPane1.setDividerLocation(0.6);
jSplitPane1.revalidate();
jSplitPane1.repaint();
}
}
});
jRadioButtonListTable.setActionCommand("List");
jRadioButtonListTable.setText("List");
jRadioButtonListTable.setBounds(140, 27, 70, 23);
jLayeredPane1.add(jRadioButtonListTable, javax.swing.JLayeredPane.DEFAULT_LAYER);
jRadioButtonListTable.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (jRadioButtonFullCards.isSelected()) {
jRadioButtonFullCards.setSelected(false);
cardTableSelector.setVisible(true);
cardSelector.setVisible(false);
jSplitPane1.setTopComponent(cardTableSelector);
jSplitPane1.setDividerLocation(0.6);
jSplitPane1.revalidate();
jSplitPane1.repaint();
}
}
});*/
jSplitPane1.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
jSplitPane1.setResizeWeight(0.5); jSplitPane1.setResizeWeight(0.5);
jSplitPane1.setTopComponent(cardSelector); jSplitPane1.setTopComponent(cardSelector);
jSplitPane1.setBottomComponent(deckArea); jSplitPane1.setBottomComponent(deckArea);
@ -584,8 +530,7 @@ public class DeckEditorPanel extends javax.swing.JPanel {
} }
deck.getCards().clear(); deck.getCards().clear();
cardSelector.loadCards(new ArrayList<Card>(deck.getSideboard()), this.bigCard, mode == DeckEditorMode.Limited); cardSelector.loadCards(new ArrayList<Card>(deck.getSideboard()), this.bigCard, mode == DeckEditorMode.Limited);
//cardTableSelector.loadCards(new ArrayList<Card>(deck.getSideboard()), this.bigCard, mode == DeckEditorMode.Limited); }
}
else { else {
deck = new Deck(); deck = new Deck();
} }
@ -659,16 +604,12 @@ public class DeckEditorPanel extends javax.swing.JPanel {
private javax.swing.JButton btnLoad; private javax.swing.JButton btnLoad;
private javax.swing.JButton btnNew; private javax.swing.JButton btnNew;
private javax.swing.JButton btnSave; private javax.swing.JButton btnSave;
//private mage.client.deckeditor.table.CardTableSelector cardTableSelector;
private mage.client.deckeditor.CardSelector cardSelector; private mage.client.deckeditor.CardSelector cardSelector;
private mage.client.deckeditor.DeckArea deckArea; private mage.client.deckeditor.DeckArea deckArea;
private javax.swing.JPanel jPanel1; private javax.swing.JPanel jPanel1;
private javax.swing.JSplitPane jSplitPane1; private javax.swing.JSplitPane jSplitPane1;
private javax.swing.JLabel lblDeckName; private javax.swing.JLabel lblDeckName;
private javax.swing.JTextField txtDeckName; private javax.swing.JTextField txtDeckName;
//private javax.swing.JRadioButton jRadioButtonFullCards;
//private javax.swing.JRadioButton jRadioButtonListTable;
//private javax.swing.JLayeredPane jLayeredPane1;
// End of variables declaration//GEN-END:variables // End of variables declaration//GEN-END:variables
private JComponent cardInfoPane; private JComponent cardInfoPane;

View file

@ -27,14 +27,15 @@
*/ */
package mage.client.deckeditor.collection.viewer; package mage.client.deckeditor.collection.viewer;
import java.awt.Color; import mage.cards.decks.Constructed;
import java.awt.Component;
import java.awt.GridBagLayout;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import mage.client.cards.BigCard; import mage.client.cards.BigCard;
import mage.client.util.sets.ConstructedFormats;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.Console;
/** /**
* Pane with big card and mage book. * Pane with big card and mage book.
@ -42,6 +43,8 @@ import mage.client.cards.BigCard;
* @author nantuko * @author nantuko
*/ */
public final class CollectionViewerPanel extends JPanel { public final class CollectionViewerPanel extends JPanel {
public CollectionViewerPanel() { public CollectionViewerPanel() {
initComponents(); initComponents();
} }
@ -50,13 +53,38 @@ public final class CollectionViewerPanel extends JPanel {
jPanel1 = new javax.swing.JPanel(); jPanel1 = new javax.swing.JPanel();
jPanel1.setOpaque(false); jPanel1.setOpaque(false);
bigCard = new BigCard(); bigCard = new BigCard();
BoxLayout boxlayout = new BoxLayout(jPanel1, BoxLayout.Y_AXIS); BoxLayout boxlayout = new BoxLayout(jPanel1, BoxLayout.PAGE_AXIS);
jPanel1.setLayout(boxlayout); jPanel1.setLayout(boxlayout);
btnExit = new javax.swing.JButton(); btnExit = new javax.swing.JButton();
btnExit.setAlignmentX(Component.LEFT_ALIGNMENT);
jPanel1.add(btnExit); jPanel1.add(btnExit);
JLabel label1 = new JLabel("Choose sets to display:");
label1.setAlignmentX(Component.LEFT_ALIGNMENT);
jPanel1.add(label1);
formats = new JComboBox(ConstructedFormats.getTypes());
formats.setSelectedItem(ConstructedFormats.getDefault());
formats.setPreferredSize(new Dimension(100, 25));
formats.setMaximumSize(new Dimension(100, 25));
formats.setAlignmentX(Component.LEFT_ALIGNMENT);
jPanel1.add(formats);
formats.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
if (mageBook != null) {
String format = (String)formats.getSelectedItem();
mageBook.updateDispayedSets(format);
}
}
});
jPanel1.add(Box.createVerticalGlue()); jPanel1.add(Box.createVerticalGlue());
bigCard.setAlignmentY(Component.BOTTOM_ALIGNMENT);
bigCard.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0))); bigCard.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));
bigCard.setAlignmentX(Component.LEFT_ALIGNMENT);
bigCard.setAlignmentY(Component.BOTTOM_ALIGNMENT);
jPanel1.add(bigCard); jPanel1.add(bigCard);
jPanel2 = new MageBookContainer(); jPanel2 = new MageBookContainer();
@ -108,8 +136,9 @@ public final class CollectionViewerPanel extends JPanel {
jScrollPane1.getViewport().setBackground(new Color(0,0,0,0)); jScrollPane1.getViewport().setBackground(new Color(0,0,0,0));
jPanel.setLayout(new GridBagLayout()); // centers mage book jPanel.setLayout(new GridBagLayout()); // centers mage book
jPanel.setBackground(new Color(0,0,0,0)); jPanel.setBackground(new Color(0, 0, 0, 0));
jPanel.add(new MageBook(bigCard)); mageBook = new MageBook(bigCard);
jPanel.add(mageBook);
setLayout(new java.awt.BorderLayout()); setLayout(new java.awt.BorderLayout());
add(jScrollPane1, java.awt.BorderLayout.CENTER); add(jScrollPane1, java.awt.BorderLayout.CENTER);
@ -123,5 +152,7 @@ public final class CollectionViewerPanel extends JPanel {
private javax.swing.JPanel jPanel2; private javax.swing.JPanel jPanel2;
private mage.client.cards.BigCard bigCard; private mage.client.cards.BigCard bigCard;
private javax.swing.JButton btnExit; private javax.swing.JButton btnExit;
private JComboBox formats;
private MageBook mageBook;
} }

View file

@ -31,6 +31,7 @@ package mage.client.deckeditor.collection.viewer;
import mage.cards.Card; import mage.cards.Card;
import mage.cards.CardDimensions; import mage.cards.CardDimensions;
import mage.cards.MageCard; import mage.cards.MageCard;
import mage.cards.decks.Constructed;
import mage.client.cards.BigCard; import mage.client.cards.BigCard;
import mage.client.cards.CardsStorage; import mage.client.cards.CardsStorage;
import mage.client.components.HoverButton; import mage.client.components.HoverButton;
@ -39,10 +40,12 @@ import mage.client.util.AudioManager;
import mage.client.util.Command; import mage.client.util.Command;
import mage.client.util.Config; import mage.client.util.Config;
import mage.client.util.ImageHelper; import mage.client.util.ImageHelper;
import mage.client.util.sets.ConstructedFormats;
import mage.components.ImagePanel; import mage.components.ImagePanel;
import mage.view.CardView; import mage.view.CardView;
import org.mage.card.arcane.GlowText;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import org.mage.card.arcane.GlowText;
import org.mage.card.arcane.ManaSymbols;
import javax.imageio.ImageIO; import javax.imageio.ImageIO;
import javax.swing.*; import javax.swing.*;
@ -50,8 +53,8 @@ import java.awt.*;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.InputStream; import java.io.InputStream;
import java.util.ArrayList;
import java.util.UUID; import java.util.UUID;
import org.mage.card.arcane.ManaSymbols;
/** /**
* Mage book with cards and page flipping. * Mage book with cards and page flipping.
@ -60,269 +63,280 @@ import org.mage.card.arcane.ManaSymbols;
*/ */
public class MageBook extends JComponent { public class MageBook extends JComponent {
public MageBook(BigCard bigCard) { public MageBook(BigCard bigCard) {
super(); super();
this.bigCard = bigCard; this.bigCard = bigCard;
initComponents(); this.setsToDisplay = ConstructedFormats.getSetsByFormat(ConstructedFormats.getDefault());
} initComponents();
}
private void initComponents() { private void initComponents() {
setOpaque(false); setOpaque(false);
setSize(WIDTH, HEIGHT); setSize(WIDTH, HEIGHT);
setPreferredSize(new Dimension(WIDTH, HEIGHT)); setPreferredSize(new Dimension(WIDTH, HEIGHT));
setMinimumSize(new Dimension(WIDTH, HEIGHT)); setMinimumSize(new Dimension(WIDTH, HEIGHT));
//setBorder(BorderFactory.createLineBorder(Color.green)); //setBorder(BorderFactory.createLineBorder(Color.green));
jPanelLeft = getImagePanel(LEFT_PANEL_IMAGE_PATH, ImagePanel.TILED); jPanelLeft = getImagePanel(LEFT_PANEL_IMAGE_PATH, ImagePanel.TILED);
jPanelLeft.setPreferredSize(new Dimension(LEFT_RIGHT_PAGES_WIDTH, 0)); jPanelLeft.setPreferredSize(new Dimension(LEFT_RIGHT_PAGES_WIDTH, 0));
jPanelLeft.setLayout(null); jPanelLeft.setLayout(null);
jPanelCenter = getImagePanel(CENTER_PANEL_IMAGE_PATH, ImagePanel.SCALED); jPanelCenter = getImagePanel(CENTER_PANEL_IMAGE_PATH, ImagePanel.SCALED);
jPanelCenter.setLayout(new BorderLayout()); jPanelCenter.setLayout(new BorderLayout());
jPanelRight = getImagePanel(RIGHT_PANEL_IMAGE_PATH, ImagePanel.TILED); jPanelRight = getImagePanel(RIGHT_PANEL_IMAGE_PATH, ImagePanel.TILED);
jPanelRight.setPreferredSize(new Dimension(LEFT_RIGHT_PAGES_WIDTH, 0)); jPanelRight.setPreferredSize(new Dimension(LEFT_RIGHT_PAGES_WIDTH, 0));
jPanelRight.setLayout(null); jPanelRight.setLayout(null);
jLayeredPane = new JLayeredPane(); jLayeredPane = new JLayeredPane();
jPanelCenter.add(jLayeredPane, BorderLayout.CENTER); jPanelCenter.add(jLayeredPane, BorderLayout.CENTER);
Image image = ImageHelper.loadImage(LEFT_PAGE_BUTTON_IMAGE_PATH); Image image = ImageHelper.loadImage(LEFT_PAGE_BUTTON_IMAGE_PATH);
pageLeft = new HoverButton(null, image, image, image, new Rectangle(64, 64)); pageLeft = new HoverButton(null, image, image, image, new Rectangle(64, 64));
pageLeft.setBounds(0, 0, 64, 64); pageLeft.setBounds(0, 0, 64, 64);
pageLeft.setVisible(false); pageLeft.setVisible(false);
pageLeft.setObserver(new Command() { pageLeft.setObserver(new Command() {
@Override @Override
public void execute() { public void execute() {
currentPage--; currentPage--;
if (currentPage == 0) { if (currentPage == 0) {
pageLeft.setVisible(false); pageLeft.setVisible(false);
} }
pageRight.setVisible(true); pageRight.setVisible(true);
AudioManager.playPrevPage(); AudioManager.playPrevPage();
showCards(); showCards();
} }
}); });
image = ImageHelper.loadImage(RIGHT_PAGE_BUTTON_IMAGE_PATH); image = ImageHelper.loadImage(RIGHT_PAGE_BUTTON_IMAGE_PATH);
pageRight = new HoverButton(null, image, image, image, new Rectangle(64, 64)); pageRight = new HoverButton(null, image, image, image, new Rectangle(64, 64));
pageRight.setBounds(WIDTH - 2 * LEFT_RIGHT_PAGES_WIDTH - 64, 0, 64, 64); pageRight.setBounds(WIDTH - 2 * LEFT_RIGHT_PAGES_WIDTH - 64, 0, 64, 64);
pageRight.setVisible(false); pageRight.setVisible(false);
pageRight.setObserver(new Command() { pageRight.setObserver(new Command() {
@Override @Override
public void execute() { public void execute() {
currentPage++; currentPage++;
pageLeft.setVisible(true); pageLeft.setVisible(true);
pageRight.setVisible(false); pageRight.setVisible(false);
AudioManager.playNextPage(); AudioManager.playNextPage();
showCards(); showCards();
} }
}); });
addSetTabs(); addSetTabs();
setLayout(new BorderLayout()); setLayout(new BorderLayout());
add(jPanelLeft, BorderLayout.LINE_START); add(jPanelLeft, BorderLayout.LINE_START);
add(jPanelCenter, BorderLayout.CENTER); add(jPanelCenter, BorderLayout.CENTER);
add(jPanelRight, BorderLayout.LINE_END); add(jPanelRight, BorderLayout.LINE_END);
cardDimensions = new CardDimensions(0.45d); cardDimensions = new CardDimensions(0.45d);
SwingUtilities.invokeLater(new Runnable() { SwingUtilities.invokeLater(new Runnable() {
@Override @Override
public void run() { public void run() {
showCards(); showCards();
} }
}); });
} }
private void addLeftRightPageButtons() { private void addLeftRightPageButtons() {
jLayeredPane.add(pageLeft, JLayeredPane.DEFAULT_LAYER, 0); jLayeredPane.add(pageLeft, JLayeredPane.DEFAULT_LAYER, 0);
jLayeredPane.add(pageRight, JLayeredPane.DEFAULT_LAYER, 1); jLayeredPane.add(pageRight, JLayeredPane.DEFAULT_LAYER, 1);
} }
private void addSetTabs() { private void addSetTabs() {
jPanelLeft.removeAll(); jPanelLeft.removeAll();
jPanelRight.removeAll(); jPanelRight.removeAll();
Image image = ImageHelper.loadImage(LEFT_TAB_IMAGE_PATH); Image image = ImageHelper.loadImage(LEFT_TAB_IMAGE_PATH);
Image imageRight = ImageHelper.loadImage(RIGHT_TAB_IMAGE_PATH); Image imageRight = ImageHelper.loadImage(RIGHT_TAB_IMAGE_PATH);
int y = 0; int y = 0;
int dy = 0; int dy = 0;
if (CardsStorage.getSetCodes().size() > 1) { if (this.setsToDisplay.size() > 1) {
dy = (HEIGHT - 120) / (CardsStorage.getSetCodes().size() - 1) + 1; dy = (HEIGHT - 120) / (this.setsToDisplay.size() - 1) + 1;
} }
int count = 0; int count = 0;
JPanel currentPanel = jPanelLeft; JPanel currentPanel = jPanelLeft;
HoverButton currentTab = null; HoverButton currentTab = null;
for (String set : CardsStorage.getSetCodes()) { for (String set : this.setsToDisplay) {
HoverButton tab = new HoverButton(null, image, image, image, new Rectangle(39, 120)); HoverButton tab = new HoverButton(null, image, image, image, new Rectangle(39, 120));
Image setImage = ManaSymbols.getSetSymbolImage(set); Image setImage = ManaSymbols.getSetSymbolImage(set);
if (setImage != null) { if (setImage != null) {
tab.setOverlayImage(setImage); tab.setOverlayImage(setImage);
} else { } else {
System.out.println("Couldn't find: " + "/plugins/images/sets/" + set + "-C.jpg"); System.out.println("Couldn't find: " + "/plugins/images/sets/" + set + "-C.jpg");
} }
tab.setSet(set); tab.setSet(set);
tab.setBounds(0, y, 39, 120); tab.setBounds(0, y, 39, 120);
final String _set = set; final String _set = set;
tab.setObserver(new Command() { tab.setObserver(new Command() {
@Override @Override
public void execute() { public void execute() {
if (!currentSet.equals(_set) || currentPage != 0) { if (!currentSet.equals(_set) || currentPage != 0) {
AudioManager.playAnotherTab(); AudioManager.playAnotherTab();
currentPage = 0; currentPage = 0;
currentSet = _set; currentSet = _set;
pageLeft.setVisible(false); pageLeft.setVisible(false);
pageRight.setVisible(false); pageRight.setVisible(false);
addSetTabs(); addSetTabs();
showCards(); showCards();
} }
} }
}); });
currentPanel.add(tab, JLayeredPane.DEFAULT_LAYER + count++, 0); currentPanel.add(tab, JLayeredPane.DEFAULT_LAYER + count++, 0);
y += dy; y += dy;
if (set.equals(currentSet)) { if (set.equals(currentSet)) {
currentPanel = jPanelRight; currentPanel = jPanelRight;
image = imageRight; image = imageRight;
currentTab = tab; currentTab = tab;
} }
} }
jPanelLeft.revalidate(); jPanelLeft.revalidate();
jPanelLeft.repaint(); jPanelLeft.repaint();
jPanelRight.revalidate(); jPanelRight.revalidate();
jPanelRight.repaint(); jPanelRight.repaint();
if (currentTab != null) { if (currentTab != null) {
currentTab.drawSet(); currentTab.drawSet();
currentTab.repaint(); currentTab.repaint();
} }
} }
private void showCards() { private void showCards() {
jLayeredPane.removeAll(); jLayeredPane.removeAll();
addLeftRightPageButtons(); addLeftRightPageButtons();
java.util.List<Card> cards = getCards(currentPage, currentSet); java.util.List<Card> cards = getCards(currentPage, currentSet);
int size = cards.size(); int size = cards.size();
Rectangle rectangle = new Rectangle(); Rectangle rectangle = new Rectangle();
rectangle.translate(OFFSET_X, OFFSET_Y); rectangle.translate(OFFSET_X, OFFSET_Y);
for (int i = 0; i < Math.min(CARDS_PER_PAGE / 2, size); i++) { for (int i = 0; i < Math.min(CARDS_PER_PAGE / 2, size); i++) {
addCard(new CardView(cards.get(i)), bigCard, null, rectangle); addCard(new CardView(cards.get(i)), bigCard, null, rectangle);
rectangle = CardPosition.translatePosition(i, rectangle); rectangle = CardPosition.translatePosition(i, rectangle);
} }
// calculate the x offset of the second (right) page // calculate the x offset of the second (right) page
int second_page_x = (WIDTH - 2 * LEFT_RIGHT_PAGES_WIDTH) - int second_page_x = (WIDTH - 2 * LEFT_RIGHT_PAGES_WIDTH) -
(cardDimensions.frameWidth + CardPosition.GAP_X) * 3 + CardPosition.GAP_X - OFFSET_X; (cardDimensions.frameWidth + CardPosition.GAP_X) * 3 + CardPosition.GAP_X - OFFSET_X;
rectangle.setLocation(second_page_x, OFFSET_Y); rectangle.setLocation(second_page_x, OFFSET_Y);
for (int i = CARDS_PER_PAGE / 2; i < Math.min(CARDS_PER_PAGE, size); i++) { for (int i = CARDS_PER_PAGE / 2; i < Math.min(CARDS_PER_PAGE, size); i++) {
addCard(new CardView(cards.get(i)), bigCard, null, rectangle); addCard(new CardView(cards.get(i)), bigCard, null, rectangle);
rectangle = CardPosition.translatePosition(i - CARDS_PER_PAGE / 2, rectangle); rectangle = CardPosition.translatePosition(i - CARDS_PER_PAGE / 2, rectangle);
} }
jLayeredPane.repaint(); jLayeredPane.repaint();
} }
private void addCard(CardView card, BigCard bigCard, UUID gameId, Rectangle rectangle) { private void addCard(CardView card, BigCard bigCard, UUID gameId, Rectangle rectangle) {
if (cardDimension == null) { if (cardDimension == null) {
cardDimension = new Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight); cardDimension = new Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight);
} }
final MageCard cardImg = Plugins.getInstance().getMageCard(card, bigCard, cardDimension, gameId, true); final MageCard cardImg = Plugins.getInstance().getMageCard(card, bigCard, cardDimension, gameId, true);
cardImg.setBounds(rectangle); cardImg.setBounds(rectangle);
jLayeredPane.add(cardImg, JLayeredPane.DEFAULT_LAYER, 10); jLayeredPane.add(cardImg, JLayeredPane.DEFAULT_LAYER, 10);
cardImg.update(card); cardImg.update(card);
cardImg.setCardBounds(rectangle.x, rectangle.y, cardDimensions.frameWidth, cardDimensions.frameHeight); cardImg.setCardBounds(rectangle.x, rectangle.y, cardDimensions.frameWidth, cardDimensions.frameHeight);
boolean implemented = !card.getRarity().equals(mage.Constants.Rarity.NA); boolean implemented = !card.getRarity().equals(mage.Constants.Rarity.NA);
GlowText label = new GlowText(); GlowText label = new GlowText();
label.setGlow(implemented ? Color.green : NOT_IMPLEMENTED, 12, 0.0f); label.setGlow(implemented ? Color.green : NOT_IMPLEMENTED, 12, 0.0f);
label.setText(implemented ? "Implemented" : "Not implemented"); label.setText(implemented ? "Implemented" : "Not implemented");
int dx = implemented ? 15 : 5; int dx = implemented ? 15 : 5;
label.setBounds(rectangle.x + dx, rectangle.y + cardDimensions.frameHeight + 7, 110, 30); label.setBounds(rectangle.x + dx, rectangle.y + cardDimensions.frameHeight + 7, 110, 30);
jLayeredPane.add(label); jLayeredPane.add(label);
} }
private java.util.List<Card> getCards(int page, String set) { private java.util.List<Card> getCards(int page, String set) {
int start = page * CARDS_PER_PAGE; int start = page * CARDS_PER_PAGE;
int end = (page + 1) * CARDS_PER_PAGE; int end = (page + 1) * CARDS_PER_PAGE;
java.util.List<Card> cards = CardsStorage.getAllCards(start, end, currentSet, false); java.util.List<Card> cards = CardsStorage.getAllCards(start, end, currentSet, false);
if (cards.size() > CARDS_PER_PAGE) { if (cards.size() > CARDS_PER_PAGE) {
pageRight.setVisible(true); pageRight.setVisible(true);
} }
return cards; return cards;
} }
private ImagePanel getImagePanel(String filename, int type) { private ImagePanel getImagePanel(String filename, int type) {
try { try {
InputStream is = this.getClass().getResourceAsStream(filename); InputStream is = this.getClass().getResourceAsStream(filename);
if (is == null) { if (is == null) {
throw new FileNotFoundException("Couldn't find " + filename + " in resources."); throw new FileNotFoundException("Couldn't find " + filename + " in resources.");
} }
BufferedImage background = ImageIO.read(is); BufferedImage background = ImageIO.read(is);
if (background == null) { if (background == null) {
throw new FileNotFoundException("Couldn't find " + filename + " in resources."); throw new FileNotFoundException("Couldn't find " + filename + " in resources.");
} }
return new ImagePanel(background, type); return new ImagePanel(background, type);
} catch (Exception e) { } catch (Exception e) {
log.error(e.getMessage(), e); log.error(e.getMessage(), e);
return null; return null;
} }
} }
/** public void updateDispayedSets(String format) {
* Defines the position of the next card on the mage book this.setsToDisplay = ConstructedFormats.getSetsByFormat(format);
*/ if (this.setsToDisplay.isEmpty()) {
private static class CardPosition { // display all
private CardPosition() { this.setsToDisplay = CardsStorage.getSetCodes();
} }
addSetTabs();
}
public static Rectangle translatePosition(int index, Rectangle r) { /**
Rectangle rect = new Rectangle(r); * Defines the position of the next card on the mage book
rect.translate((cardDimensions.frameWidth + GAP_X) * dx[index], */
(cardDimensions.frameHeight + GAP_Y) * dy[index]); private static class CardPosition {
return rect; private CardPosition() {
} }
private static final int[] dx = {1, 1, -2, 1, 1, -2, 1, 1, 2, 1, -2, 1, 1, -2, 1, 1}; public static Rectangle translatePosition(int index, Rectangle r) {
private static final int[] dy = {0, 0, 1, 0, 0, 1, 0, 0, -2, 0, 1, 0, 0, 1, 0, 0}; Rectangle rect = new Rectangle(r);
public static final int GAP_X = 17; rect.translate((cardDimensions.frameWidth + GAP_X) * dx[index],
public static final int GAP_Y = 45; (cardDimensions.frameHeight + GAP_Y) * dy[index]);
private static int cardWidth; return rect;
private static int cardHeight; }
}
private JPanel jPanelLeft; private static final int[] dx = {1, 1, -2, 1, 1, -2, 1, 1, 2, 1, -2, 1, 1, -2, 1, 1};
private ImagePanel jPanelCenter; private static final int[] dy = {0, 0, 1, 0, 0, 1, 0, 0, -2, 0, 1, 0, 0, 1, 0, 0};
private JPanel jPanelRight; public static final int GAP_X = 17;
private JLayeredPane jLayeredPane; public static final int GAP_Y = 45;
private BigCard bigCard; private static int cardWidth;
private HoverButton pageLeft; private static int cardHeight;
private HoverButton pageRight; }
private int currentPage = 0; private JPanel jPanelLeft;
private String currentSet = "ISD"; private ImagePanel jPanelCenter;
private JPanel jPanelRight;
private JLayeredPane jLayeredPane;
private BigCard bigCard;
private HoverButton pageLeft;
private HoverButton pageRight;
private static CardDimensions cardDimensions = new CardDimensions(1.2d); private int currentPage = 0;
private static final Logger log = Logger.getLogger(MageBook.class); private String currentSet = "ISD";
private Dimension cardDimension;
static private final String CENTER_PANEL_IMAGE_PATH = "/book_bg.jpg"; private static CardDimensions cardDimensions = new CardDimensions(1.2d);
static private final String RIGHT_PANEL_IMAGE_PATH = "/book_right.jpg"; private static final Logger log = Logger.getLogger(MageBook.class);
static private final String LEFT_PANEL_IMAGE_PATH = "/book_left.jpg"; private Dimension cardDimension;
static private final String LEFT_PAGE_BUTTON_IMAGE_PATH = "/book_pager_left.png"; private java.util.List<String> setsToDisplay = new ArrayList<String>();
static private final String RIGHT_PAGE_BUTTON_IMAGE_PATH = "/book_pager_right.png";
static private final String LEFT_TAB_IMAGE_PATH = "/tab_left.png"; static private final String CENTER_PANEL_IMAGE_PATH = "/book_bg.jpg";
static private final String RIGHT_TAB_IMAGE_PATH = "/tab_right.png"; static private final String RIGHT_PANEL_IMAGE_PATH = "/book_right.jpg";
static private final int CARDS_PER_PAGE = 18; static private final String LEFT_PANEL_IMAGE_PATH = "/book_left.jpg";
static private final int WIDTH = 950; static private final String LEFT_PAGE_BUTTON_IMAGE_PATH = "/book_pager_left.png";
static private final int HEIGHT = 650; static private final String RIGHT_PAGE_BUTTON_IMAGE_PATH = "/book_pager_right.png";
static private final int OFFSET_X = 25; static private final String LEFT_TAB_IMAGE_PATH = "/tab_left.png";
static private final int OFFSET_Y = 20; static private final String RIGHT_TAB_IMAGE_PATH = "/tab_right.png";
static private final int LEFT_RIGHT_PAGES_WIDTH = 40; static private final int CARDS_PER_PAGE = 18;
static private final Color NOT_IMPLEMENTED = new Color(220, 220, 220, 150); static private final int WIDTH = 950;
static private final int HEIGHT = 650;
static private final int OFFSET_X = 25;
static private final int OFFSET_Y = 20;
static private final int LEFT_RIGHT_PAGES_WIDTH = 40;
static private final Color NOT_IMPLEMENTED = new Color(220, 220, 220, 150);
} }

View file

@ -0,0 +1,75 @@
package mage.client.util.sets;
import mage.cards.ExpansionSet;
import mage.client.cards.CardsStorage;
import mage.sets.Sets;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;
/**
* Utility class for constructed formats.
*
* @author nantuko
*/
public class ConstructedFormats {
private static final String[] constructedFormats = {"Standard", "Extended", "Modern", "All"};
private ConstructedFormats() {
}
public static String[] getTypes() {
return constructedFormats;
}
public static String getDefault() {
return constructedFormats[1];
}
public static List<String> getSetsByFormat(String format) {
if (format.equals("Standard")) {
return standard;
}
if (format.equals("Extended")) {
return extended;
}
if (format.equals("Modern")) {
return modern;
}
return all;
}
private static void buildLists() {
for (String setCode : CardsStorage.getSetCodes()) {
ExpansionSet set = Sets.findSet(setCode);
if (set.getReleaseDate().after(standardDate)) {
standard.add(set.getCode());
}
if (set.getReleaseDate().after(extendedDate)) {
extended.add(set.getCode());
}
if (set.getReleaseDate().after(modernDate)) {
modern.add(set.getCode());
}
}
}
private static final List<String> standard = new ArrayList<String>();
private static final Date standardDate = new GregorianCalendar(2010, 9, 20).getTime();
private static final List<String> extended = new ArrayList<String>();
private static final Date extendedDate = new GregorianCalendar(2008, 9, 20).getTime();
private static final List<String> modern = new ArrayList<String>();
private static final Date modernDate = new GregorianCalendar(2003, 7, 20).getTime();
// for all sets just return empty list
private static final List<String> all = new ArrayList<String>();
static {
buildLists();
}
}