merge file from master

This commit is contained in:
Salco 2018-04-23 11:04:17 -04:00
commit eb0f196a7e
4372 changed files with 55156 additions and 17296 deletions

View file

@ -4,12 +4,6 @@
<NonVisualComponents>
<Component class="javax.swing.ButtonGroup" name="bgView">
</Component>
<Component class="javax.swing.JCheckBoxMenuItem" name="jCheckBoxMenuItem1">
<Properties>
<Property name="selected" type="boolean" value="true"/>
<Property name="text" type="java.lang.String" value="jCheckBoxMenuItem1"/>
</Properties>
</Component>
</NonVisualComponents>
<AuxValues>
<AuxValue name="FormSettings_autoResourcing" type="java.lang.Integer" value="0"/>
@ -27,9 +21,9 @@
<DimensionLayout dim="0">
<Group type="103" groupAlignment="0" attributes="0">
<Component id="tbColor" alignment="0" max="32767" attributes="0"/>
<Component id="tbTypes" alignment="0" pref="1061" max="32767" attributes="0"/>
<Component id="cardSelectorBottomPanel" alignment="0" pref="1061" max="32767" attributes="0"/>
<Component id="tbTypes" alignment="0" pref="1057" max="32767" attributes="0"/>
<Component id="cardSelectorScrollPane" alignment="0" max="32767" attributes="0"/>
<Component id="cardSelectorBottomPanel" alignment="0" pref="1057" max="32767" attributes="0"/>
</Group>
</DimensionLayout>
<DimensionLayout dim="1">
@ -857,7 +851,7 @@
</Component>
<Component class="javax.swing.JCheckBox" name="chkUnique">
<Properties>
<Property name="selected" type="boolean" value="true"/>
<Property name="selected" type="boolean" value="false"/>
<Property name="text" type="java.lang.String" value="Unique"/>
<Property name="toolTipText" type="java.lang.String" value="Show only the first found card of every card name."/>
<Property name="focusable" type="boolean" value="false"/>

View file

@ -57,8 +57,6 @@ import static mage.client.dialog.PreferencesDialog.KEY_DECK_EDITOR_SEARCH_TYPES;
import static mage.client.dialog.PreferencesDialog.KEY_DECK_EDITOR_SEARCH_UNIQUE;
import mage.client.util.GUISizeHelper;
import mage.client.util.gui.FastSearchUtil;
import mage.client.dialog.CheckBoxList;
import mage.client.util.sets.ConstructedFormats;
import mage.constants.CardType;
import mage.constants.Rarity;
@ -86,16 +84,12 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
private final SortSetting sortSetting;
private static final Map<String, Integer> pdAllowed = new HashMap<>();
private final String TEST_MULTI_SET="Multiple Sets selected";
private final ActionListener searchAction = evt -> jButtonSearchActionPerformed(evt);
/**
* Creates new form CardSelector
*/
public CardSelector() {
sortSetting = SortSettingBase.getInstance();
initComponents();
cardGrid = new CardGrid();
@ -103,25 +97,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
initListViewComponents();
setGUISize();
currentView = mainModel; // by default we use List View
listCodeSelected = new CheckBoxList();
// remove the all option
boolean is_removeFinish=false;
String[] setCodes = ConstructedFormats.getTypes();
java.util.List<String> result = new ArrayList<>();
for(int i=0; (i<setCodes.length)&&(!is_removeFinish);i++)
{
String item = setCodes[i];
if(!item.equals(ConstructedFormats.ALL))
{
result.add(item);
}
}
listCodeSelected.setListData(result.toArray());
}
}
private void makeTransparent() {
this.addComponentListener(this);
@ -176,7 +152,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
chkNames.setSelected("true".equals(MageFrame.getPreferences().get(KEY_DECK_EDITOR_SEARCH_NAMES, "true")));
chkTypes.setSelected("true".equals(MageFrame.getPreferences().get(KEY_DECK_EDITOR_SEARCH_TYPES, "true")));
chkRules.setSelected("true".equals(MageFrame.getPreferences().get(KEY_DECK_EDITOR_SEARCH_RULES, "true")));
chkUnique.setSelected("true".equals(MageFrame.getPreferences().get(KEY_DECK_EDITOR_SEARCH_UNIQUE, "true")));
chkUnique.setSelected("true".equals(MageFrame.getPreferences().get(KEY_DECK_EDITOR_SEARCH_UNIQUE, "false")));
mainTable.addMouseListener(new MouseAdapter() {
@Override
@ -326,10 +302,11 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
}
}
}
return filter;
}
private CardCriteria buildCriteria() {
private CardCriteria buildCriteria() {
CardCriteria criteria = new CardCriteria();
criteria.black(this.tbBlack.isSelected());
criteria.blue(this.tbBlue.isSelected());
@ -381,53 +358,12 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
}
if (this.cbExpansionSet.isVisible()) {
if(listCodeSelected.getCheckedIndices().length <= 1)
{
String expansionSelection = this.cbExpansionSet.getSelectedItem().toString();
if (!expansionSelection.equals("- All Sets")) {
java.util.List<String> setCodes = ConstructedFormats.getSetsByFormat(expansionSelection);
criteria.setCodes(setCodes.toArray(new String[0]));
}
}
else
{
java.util.List<String> setCodes = new ArrayList<>() ;
//java.util.List<String> listReceived=new ArrayList<>() ;
int[] choiseValue=listCodeSelected.getCheckedIndices();
ListModel x= listCodeSelected.getModel();
for(int itemIndex: choiseValue){
java.util.List<String> listReceived=ConstructedFormats.getSetsByFormat(x.getElementAt(itemIndex).toString());
listReceived.stream().filter((item) -> (setCodes.contains(item)==false)).forEachOrdered((item) -> {
setCodes.add(item);
});
}
String expansionSelection = this.cbExpansionSet.getSelectedItem().toString();
if (!expansionSelection.equals("- All Sets")) {
java.util.List<String> setCodes = ConstructedFormats.getSetsByFormat(expansionSelection);
criteria.setCodes(setCodes.toArray(new String[0]));
}
}
/*if(cbSetTag!=null)
{
if(listCodeSelected != null)
{
boolean isAtLeastOneSelected=false;
java.util.List<String> setCodes = new ArrayList<>() ;
int[] choiseValue=listCodeSelected.getCheckedIndices();
ListModel x= listCodeSelected.getModel();
for(int itemIndex: choiseValue){
isAtLeastOneSelected=true;
setCodes.add(x.getElementAt(itemIndex).toString());
//LogLog.warn(x.getElementAt(itemIndex).toString());
}
if(isAtLeastOneSelected)
{
criteria.setCodes(setCodes.toArray(new String[0]));
}
}
}*/
return criteria;
}
@ -483,7 +419,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
}
private void filterCards() {
boolean fist_time =false;
FilterCard filter = buildFilter();
try {
java.util.List<Card> filteredCards = new ArrayList<>();
@ -510,7 +445,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
continue;
}
}
filteredCards.add(card);
filteredCards.add(card);
}
}
}
@ -572,7 +507,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
private void initComponents() {
bgView = new javax.swing.ButtonGroup();
jCheckBoxMenuItem1 = new javax.swing.JCheckBoxMenuItem();
tbColor = new javax.swing.JToolBar();
tbRed = new javax.swing.JToggleButton();
tbGreen = new javax.swing.JToggleButton();
@ -625,9 +559,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
cardCountLabel = new javax.swing.JLabel();
cardCount = new javax.swing.JLabel();
jCheckBoxMenuItem1.setSelected(true);
jCheckBoxMenuItem1.setText("jCheckBoxMenuItem1");
tbColor.setFloatable(false);
tbColor.setRollover(true);
tbColor.setToolTipText("Hold the ALT-key while clicking to deselect all other colors or hold the CTRL-key to select only all other colors.");
@ -1143,7 +1074,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
}
});
chkUnique.setSelected(true);
chkUnique.setSelected(false);
chkUnique.setText("Unique");
chkUnique.setToolTipText("Show only the first found card of every card name.");
chkUnique.setFocusable(false);
@ -1245,9 +1176,9 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(tbColor, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(tbTypes, javax.swing.GroupLayout.DEFAULT_SIZE, 1061, Short.MAX_VALUE)
.addComponent(cardSelectorBottomPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 1061, Short.MAX_VALUE)
.addComponent(tbTypes, javax.swing.GroupLayout.DEFAULT_SIZE, 1057, Short.MAX_VALUE)
.addComponent(cardSelectorScrollPane)
.addComponent(cardSelectorBottomPanel, javax.swing.GroupLayout.DEFAULT_SIZE, 1057, Short.MAX_VALUE)
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
@ -1263,24 +1194,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
}// </editor-fold>//GEN-END:initComponents
private void cbExpansionSetActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbExpansionSetActionPerformed
if(!cbExpansionSet.getSelectedItem().toString().contains(TEST_MULTI_SET))
{
int index=cbExpansionSet.getSelectedIndex();
if(cbExpansionSet.getItemAt(0).contains(TEST_MULTI_SET))
{
cbExpansionSet.removeItemAt(0);
index--;
}
listCodeSelected.uncheckAll();
if(index > 0)
{
//ofset because all sets is removed from the list
listCodeSelected.setChecked(index-1, true);
}
}
filterCards();
}//GEN-LAST:event_cbExpansionSetActionPerformed
@ -1462,7 +1375,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
}//GEN-LAST:event_chkRulesActionPerformed
private void btnExpansionSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExpansionSearchActionPerformed
FastSearchUtil.showFastSearchForStringComboBox(listCodeSelected, FastSearchUtil.DEFAULT_EXPANSION_SEARCH_MESSAGE);
//
int[] choiseValue=listCodeSelected.getCheckedIndices();
@ -1569,10 +1481,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
private TableModel mainModel;
private JTable mainTable;
private ICardGrid currentView;
static boolean isFirstTimeHere=true;
private CheckBoxList listCodeSelected;
private javax.swing.JComboBox<String> cbSetTag;
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.ButtonGroup bgView;
private javax.swing.JButton btnBooster;
@ -1596,7 +1505,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
private javax.swing.JButton jButtonRemoveFromMain;
private javax.swing.JButton jButtonRemoveFromSideboard;
private javax.swing.JButton jButtonSearch;
private javax.swing.JCheckBoxMenuItem jCheckBoxMenuItem1;
private javax.swing.JToolBar.Separator jSeparator1;
private javax.swing.JToolBar.Separator jSeparator2;
private javax.swing.JToolBar.Separator jSeparator3;

View file

@ -1125,7 +1125,7 @@ class DeckFilter extends FileFilter {
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1) {
ext = s.substring(i + 1).toLowerCase();
ext = s.substring(i + 1).toLowerCase(Locale.ENGLISH);
}
return (ext == null) ? false : ext.equals("dck");
}
@ -1149,10 +1149,10 @@ class ImportFilter extends FileFilter {
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1) {
ext = s.substring(i + 1).toLowerCase();
ext = s.substring(i + 1).toLowerCase(Locale.ENGLISH);
}
if (ext != null) {
if (ext.toLowerCase().equals("dec") || ext.toLowerCase().equals("mwdeck") || ext.toLowerCase().equals("txt") || ext.toLowerCase().equals("dek")) {
if (ext.toLowerCase(Locale.ENGLISH).equals("dec") || ext.toLowerCase(Locale.ENGLISH).equals("mwdeck") || ext.toLowerCase(Locale.ENGLISH).equals("txt") || ext.toLowerCase(Locale.ENGLISH).equals("dek")) {
return true;
}
}

View file

@ -1,5 +1,7 @@
package mage.client.deckeditor;
import mage.util.StreamUtils;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedWriter;
@ -39,15 +41,16 @@ public class DeckImportFromClipboardDialog extends JDialog {
}
private void onOK() {
BufferedWriter bw = null;
try {
File temp = File.createTempFile("cbimportdeck", ".txt");
BufferedWriter bw = new BufferedWriter(new FileWriter(temp));
bw = new BufferedWriter(new FileWriter(temp));
bw.write(txtDeckList.getText());
bw.close();
tmpPath = temp.getPath();
} catch (IOException e) {
e.printStackTrace();
} finally {
StreamUtils.closeQuietly(bw);
}
dispose();

View file

@ -177,7 +177,7 @@ public final class CollectionViewerPanel extends JPanel {
JCheckBox cardsOrTokens = new JCheckBox("Display Cards");
cardsOrTokens.setSelected(true);
cardsOrTokens.setForeground(Color.white);
cardsOrTokens.setToolTipText("Select to show Cards or Tokens(and emblems) for the chosen set");
cardsOrTokens.setToolTipText("Select to show Cards for the chosen set. When unselected, will show Tokens, Emblems and Planes for the set instead");
cardsOrTokens.addActionListener(e -> mageBook.cardsOrTokens(cardsOrTokens.isSelected()));
buttonsPanel.add(cardsOrTokens);

View file

@ -37,6 +37,7 @@ import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.UUID;
import javax.imageio.ImageIO;
import javax.swing.*;
@ -56,11 +57,13 @@ import mage.components.ImagePanel;
import mage.components.ImagePanelStyle;
import mage.constants.Rarity;
import mage.game.command.Emblem;
import mage.game.command.Plane;
import mage.game.permanent.PermanentToken;
import mage.game.permanent.token.Token;
import mage.view.CardView;
import mage.view.EmblemView;
import mage.view.PermanentView;
import mage.view.PlaneView;
import org.apache.log4j.Logger;
import org.mage.card.arcane.ManaSymbols;
import org.mage.plugins.card.images.CardDownloadData;
@ -201,8 +204,6 @@ public class MageBook extends JComponent {
Image setImage = ManaSymbols.getSetSymbolImage(set);
if (setImage != null) {
tab.setOverlayImage(setImage);
} else {
System.out.println("Couldn't find symbol image: " + set + "-C.jpg");
}
tab.setSet(set);
tab.setBounds(0, y, 39, 120);
@ -250,7 +251,8 @@ public class MageBook extends JComponent {
} else {
updateCardStats(currentSet, false);
int numTokens = showTokens();
showEmblems(numTokens);
int numTokensEmblems = numTokens + showEmblems(numTokens);
int numTokensEmblemsPlanes = numTokens + showPlanes(numTokensEmblems);
}
}
@ -311,16 +313,17 @@ public class MageBook extends JComponent {
}
jLayeredPane.repaint();
return tokens.size();
}
return tokens.size();
return 0;
}
public void showEmblems(int numTokens) {
public int showEmblems(int numTokens) {
List<Emblem> emblems = getEmblems(currentPage, currentSet, numTokens);
// System.out.println ("Size of origins in " + currentSet + " = " + emblems.size());
int numEmblems = 0;
if (emblems != null && emblems.size() > 0) {
int size = emblems.size();
numEmblems = size;
Rectangle rectangle = new Rectangle();
rectangle.translate(OFFSET_X, OFFSET_Y);
// calculate the x offset of the second (right) page
@ -348,6 +351,7 @@ public class MageBook extends JComponent {
lastI++;
}
rectangle.setLocation(second_page_x, OFFSET_Y);
if (size + numTokens > conf.CARDS_PER_PAGE / 2) {
for (int i = lastI; i < size && i + numTokens < conf.CARDS_PER_PAGE; i++) {
Emblem emblem = emblems.get(i);
@ -358,6 +362,54 @@ public class MageBook extends JComponent {
jLayeredPane.repaint();
}
return numEmblems;
}
public int showPlanes(int numTokensEmblems) {
List<Plane> planes = getPlanes(currentPage, currentSet, numTokensEmblems);
int numPlanes = 0;
if (planes != null && planes.size() > 0) {
int size = planes.size();
numPlanes = size;
Rectangle rectangle = new Rectangle();
rectangle.translate(OFFSET_X, OFFSET_Y);
int second_page_x = (conf.WIDTH - 2 * LEFT_RIGHT_PAGES_WIDTH)
- (cardDimensions.frameWidth + CardPosition.GAP_X) * conf.CARD_COLUMNS + CardPosition.GAP_X - OFFSET_X;
numTokensEmblems = numTokensEmblems % conf.CARDS_PER_PAGE;
if (numTokensEmblems < conf.CARDS_PER_PAGE / 2) {
for (int z = 0; z < numTokensEmblems && z < conf.CARDS_PER_PAGE / 2; z++) {
rectangle = CardPosition.translatePosition(z, rectangle, conf);
}
} else {
rectangle.setLocation(second_page_x, OFFSET_Y);
for (int z = 0; z < numTokensEmblems - conf.CARDS_PER_PAGE / 2; z++) {
rectangle = CardPosition.translatePosition(z, rectangle, conf);
}
}
int lastI = 0;
for (int i = 0; i < size && i + numTokensEmblems < conf.CARDS_PER_PAGE / 2; i++) {
Plane plane = planes.get(i);
addPlane(plane, bigCard, null, rectangle);
rectangle = CardPosition.translatePosition(i + numTokensEmblems, rectangle, conf);
lastI++;
}
rectangle.setLocation(second_page_x, OFFSET_Y);
if (size + numTokensEmblems > conf.CARDS_PER_PAGE / 2) {
for (int i = lastI; i < size && i + numTokensEmblems < conf.CARDS_PER_PAGE; i++) {
Plane plane = planes.get(i);
addPlane(plane, bigCard, null, rectangle);
rectangle = CardPosition.translatePosition(i + numTokensEmblems - conf.CARDS_PER_PAGE / 2, rectangle, conf);
}
}
jLayeredPane.repaint();
}
return numPlanes;
}
private void addCard(CardView card, BigCard bigCard, UUID gameId, Rectangle rectangle) {
@ -400,6 +452,7 @@ public class MageBook extends JComponent {
cardDimension = new Dimension(Config.dimensions.frameWidth, Config.dimensions.frameHeight);
}
PermanentToken newToken = new PermanentToken(token, null, token.getOriginalExpansionSetCode(), null);
newToken.removeSummoningSickness();
PermanentView theToken = new PermanentView(newToken, null, null, null);
theToken.setInViewerOnly(true);
final MageCard cardImg = Plugins.instance.getMagePermanent(theToken, bigCard, cardDimension, gameId, true);
@ -414,6 +467,11 @@ public class MageBook extends JComponent {
addCard(cardView, bigCard, gameId, rectangle);
}
private void addPlane(Plane plane, BigCard bigCard, UUID gameId, Rectangle rectangle) {
CardView cardView = new CardView(new PlaneView(plane));
addCard(cardView, bigCard, gameId, rectangle);
}
private List<CardInfo> getCards(int page, String set) {
CardCriteria criteria = new CardCriteria();
criteria.setCodes(set);
@ -500,10 +558,10 @@ public class MageBook extends JComponent {
className = className.replaceAll("[^a-zA-Z0-9]", "");
className = "mage.game.permanent.token." + className + "Token";
if (token.getTokenClassName() != null && token.getTokenClassName().length() > 0) {
if (token.getTokenClassName().toLowerCase().matches(".*token.*")) {
if (token.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*token.*")) {
className = token.getTokenClassName();
className = "mage.game.permanent.token." + className;
} else if (token.getTokenClassName().toLowerCase().matches(".*emblem.*")) {
} else if (token.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*emblem.*")) {
continue;
}
}
@ -523,16 +581,25 @@ public class MageBook extends JComponent {
}
int start = page * conf.CARDS_PER_PAGE;
int end = page * conf.CARDS_PER_PAGE + conf.CARDS_PER_PAGE;
if (end > tokens.size()) {
end = tokens.size();
int ttokens = getTotalNumTokens(set);
int temblems = getTotalNumEmblems(set);
int tplanes = getTotalNumPlanes(set);
int numTokensEmblemsPlanes = ttokens + temblems + tplanes;
if (end > numTokensEmblemsPlanes) {
end = numTokensEmblemsPlanes;
}
if (tokens.size() > end) {
if (numTokensEmblemsPlanes > end) {
pageRight.setVisible(true);
}
return tokens.subList(start, end);
end = Math.min(end, ttokens);
if (start < ttokens) {
return tokens.subList(start, end);
}
return null;
}
private List<Emblem> getEmblems(int page, String set, int numTokens) {
private List<Emblem> getEmblems(int page, String set, int numTokensEmblems) {
ArrayList<CardDownloadData> allEmblems = getTokenCardUrls();
ArrayList<Emblem> emblems = new ArrayList<>();
@ -541,7 +608,7 @@ public class MageBook extends JComponent {
try {
String className = emblem.getName();
if (emblem.getTokenClassName() != null && emblem.getTokenClassName().length() > 0) {
if (emblem.getTokenClassName().toLowerCase().matches(".*emblem.*")) {
if (emblem.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*emblem.*")) {
className = emblem.getTokenClassName();
className = "mage.game.command.emblems." + className;
}
@ -573,21 +640,138 @@ public class MageBook extends JComponent {
}
}
}
int totalTokens = getTotalNumTokens(set);
int start = 0;
if (!(page * conf.CARDS_PER_PAGE <= totalTokens && (page + 1) * conf.CARDS_PER_PAGE >= totalTokens)) {
start = page * conf.CARDS_PER_PAGE - totalTokens;
}
int end = emblems.size();
if ((page + 1) * conf.CARDS_PER_PAGE < numTokens + emblems.size()) {
end = (page + 1) * conf.CARDS_PER_PAGE - numTokens;
pageRight.setVisible(true);
if ((page + 1) * conf.CARDS_PER_PAGE < totalTokens + emblems.size()) {
end = (page + 1) * conf.CARDS_PER_PAGE - totalTokens;
}
if (emblems.size() > conf.CARDS_PER_PAGE) {
pageLeft.setVisible(true);
pageRight.setVisible(true);
}
start = Math.min(start, end);
return emblems.subList(start, end);
}
private List<Plane> getPlanes(int page, String set, int numTokensEmblems) {
ArrayList<CardDownloadData> allPlanes = getTokenCardUrls();
ArrayList<Plane> planes = new ArrayList<>();
for (CardDownloadData plane : allPlanes) {
if (plane.getSet().equals(set)) {
try {
String className = plane.getName();
if (plane.getTokenClassName() != null && plane.getTokenClassName().length() > 0) {
if (plane.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*plane.*")) {
className = plane.getTokenClassName();
className = "mage.game.command.planes." + className;
}
} else {
continue;
}
Class<?> c = Class.forName(className);
Constructor<?> cons = c.getConstructor();
Object newPlane = cons.newInstance();
if (newPlane != null && newPlane instanceof mage.game.command.Plane) {
((Plane) newPlane).setExpansionSetCodeForImage(set);
planes.add((Plane) newPlane);
}
} catch (ClassNotFoundException ex) {
// Swallow exception
} catch (NoSuchMethodException ex) {
// Swallow exception
} catch (SecurityException ex) {
// Swallow exception
} catch (InstantiationException ex) {
// Swallow exception
} catch (IllegalAccessException ex) {
// Swallow exception
} catch (IllegalArgumentException ex) {
// Swallow exception
} catch (InvocationTargetException ex) {
// Swallow exception
}
}
}
int totalTokens = getTotalNumTokens(set);
int totalTokensEmblems = totalTokens + getTotalNumEmblems(set);
int start = 0;
if (!(page * conf.CARDS_PER_PAGE <= totalTokensEmblems && (page + 1) * conf.CARDS_PER_PAGE >= totalTokensEmblems)) {
start = page * conf.CARDS_PER_PAGE - totalTokensEmblems;
pageRight.setVisible(true);
}
int end = planes.size();
if ((page + 1) * conf.CARDS_PER_PAGE < totalTokensEmblems + planes.size()) {
end = (page + 1) * conf.CARDS_PER_PAGE - totalTokensEmblems;
pageRight.setVisible(true);
} else {
pageRight.setVisible(false);
}
if (numTokensEmblems + planes.size() > conf.CARDS_PER_PAGE && page > 0) {
pageLeft.setVisible(true);
}
start = Math.min(start, end);
return planes.subList(start, end);
}
private int getTotalNumTokens(String set) {
ArrayList<CardDownloadData> allTokens = getTokenCardUrls();
int numTokens = 0;
for (CardDownloadData token : allTokens) {
if (token.getSet().equals(set)) {
String className = token.getName();
if (token.getTokenClassName() != null && token.getTokenClassName().length() > 0) {
if (token.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*token.*")) {
numTokens++;
}
}
}
}
return numTokens;
}
private int getTotalNumEmblems(String set) {
ArrayList<CardDownloadData> allEmblems = getTokenCardUrls();
int numEmblems = 0;
for (CardDownloadData emblem : allEmblems) {
if (emblem.getSet().equals(set)) {
String className = emblem.getName();
if (emblem.getTokenClassName() != null && emblem.getTokenClassName().length() > 0) {
if (emblem.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*emblem.*")) {
numEmblems++;
}
}
}
}
return numEmblems;
}
private int getTotalNumPlanes(String set) {
ArrayList<CardDownloadData> allPlanes = getTokenCardUrls();
int numPlanes = 0;
for (CardDownloadData plane : allPlanes) {
if (plane.getSet().equals(set)) {
String className = plane.getName();
if (plane.getTokenClassName() != null && plane.getTokenClassName().length() > 0) {
if (plane.getTokenClassName().toLowerCase(Locale.ENGLISH).matches(".*plane.*")) {
numPlanes++;
}
}
}
}
return numPlanes;
}
private ImagePanel getImagePanel(String filename, ImagePanelStyle type) {
try {
InputStream is = this.getClass().getResourceAsStream(filename);
@ -666,7 +850,7 @@ public class MageBook extends JComponent {
setPreferredSize(new Dimension(conf.WIDTH, conf.HEIGHT));
setMinimumSize(new Dimension(conf.WIDTH, conf.HEIGHT));
addSetTabs();
showCards();
showCardsOrTokens();
}
/**

View file

@ -44,7 +44,6 @@ import mage.view.CardsView;
import org.apache.log4j.Logger;
import org.jdesktop.swingx.JXPanel;
import org.mage.card.arcane.ManaSymbols;
import org.mage.card.arcane.UI;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;