forked from External/mage
* GUI: new reworked GUI and card render engine, card icons and dozens of other fixes (see full list in related PR);
This commit is contained in:
parent
df98cc3e62
commit
a1da5ef437
304 changed files with 7266 additions and 5093 deletions
|
|
@ -1,8 +1,3 @@
|
|||
/*
|
||||
* CardSelector.java
|
||||
*
|
||||
* Created on Feb 18, 2010, 2:49:03 PM
|
||||
*/
|
||||
package mage.client.deckeditor;
|
||||
|
||||
import mage.MageObject;
|
||||
|
|
@ -1272,7 +1267,8 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
java.util.List<Integer> indexes = asList(n);
|
||||
Collections.reverse(indexes);
|
||||
for (Integer index : indexes) {
|
||||
mainModel.doubleClick(index);
|
||||
// normal double click emulation
|
||||
mainModel.doubleClick(index, null, false);
|
||||
}
|
||||
//if (!mode.equals(Constants.DeckEditorMode.Constructed))
|
||||
if (limited) {
|
||||
|
|
@ -1287,7 +1283,8 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
java.util.List<Integer> indexes = asList(n);
|
||||
Collections.reverse(indexes);
|
||||
for (Integer index : indexes) {
|
||||
mainModel.altDoubleClick(index);
|
||||
// ALT double click emulation
|
||||
mainModel.doubleClick(index, null, true);
|
||||
}
|
||||
//if (!mode.equals(Constants.DeckEditorMode.Constructed))
|
||||
if (limited) {
|
||||
|
|
@ -1537,7 +1534,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
|
|||
private javax.swing.JToggleButton tbWhite;
|
||||
// End of variables declaration//GEN-END:variables
|
||||
|
||||
private final mage.client.cards.CardGrid cardGrid;
|
||||
private final mage.client.cards.CardGrid cardGrid; // grid for piles view mode (example: selected cards in drafting)
|
||||
|
||||
@Override
|
||||
public void componentResized(ComponentEvent e) {
|
||||
|
|
|
|||
|
|
@ -92,8 +92,8 @@ public class DeckArea extends javax.swing.JPanel {
|
|||
// Add to hidden and move to sideboard
|
||||
for (CardView card : cards) {
|
||||
hiddenCards.add(card.getId());
|
||||
maindeckVirtualEvent.fireEvent(card, ClientEventType.REMOVE_SPECIFIC_CARD);
|
||||
sideboardVirtualEvent.fireEvent(card, ClientEventType.ADD_SPECIFIC_CARD);
|
||||
maindeckVirtualEvent.fireEvent(card, ClientEventType.DECK_REMOVE_SPECIFIC_CARD);
|
||||
sideboardVirtualEvent.fireEvent(card, ClientEventType.DECK_ADD_SPECIFIC_CARD);
|
||||
}
|
||||
loadDeck(lastDeck, lastBigCard);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -304,77 +304,92 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
private void init() {
|
||||
//this.cardSelector.setVisible(true);
|
||||
this.panelLeft.setVisible(true);
|
||||
|
||||
// TOP AREA: ENABLE ADDING/REMOVING BY DOUBLE CLICKS
|
||||
for (ICardGrid component : this.cardSelector.getCardGridComponents()) {
|
||||
component.clearCardEventListeners();
|
||||
//component.clearCardEventListeners();
|
||||
component.addCardEventListener((Listener<Event>) event -> {
|
||||
switch (event.getEventType()) {
|
||||
case DOUBLE_CLICK:
|
||||
moveSelectorCardToDeck(event);
|
||||
break;
|
||||
case ALT_DOUBLE_CLICK:
|
||||
if (mode == DeckEditorMode.FREE_BUILDING) {
|
||||
moveSelectorCardToSideboard(event);
|
||||
} else {
|
||||
// because in match mode selector is used as sideboard the card goes to deck also for shift click
|
||||
|
||||
case CARD_DOUBLE_CLICK: {
|
||||
boolean gameMode = mode != DeckEditorMode.FREE_BUILDING;
|
||||
if (gameMode) {
|
||||
// in game mode selector is used as sideboard, so the card must goes to deck all the time
|
||||
moveSelectorCardToDeck(event);
|
||||
} else {
|
||||
// edit mode
|
||||
if (event.isMouseAltDown()) {
|
||||
moveSelectorCardToSideboard(event);
|
||||
} else {
|
||||
moveSelectorCardToDeck(event);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case REMOVE_MAIN:
|
||||
}
|
||||
|
||||
case DECK_REMOVE_SELECTION_MAIN: {
|
||||
DeckEditorPanel.this.deckArea.getDeckList().removeSelection();
|
||||
break;
|
||||
case REMOVE_SIDEBOARD:
|
||||
}
|
||||
|
||||
case DECK_REMOVE_SELECTION_SIDEBOARD: {
|
||||
DeckEditorPanel.this.deckArea.getSideboardList().removeSelection();
|
||||
break;
|
||||
}
|
||||
}
|
||||
refreshDeck();
|
||||
});
|
||||
}
|
||||
this.deckArea.clearDeckEventListeners();
|
||||
|
||||
// BOTTOM AREA: ENABLE ADDING/REMOVING CARDS in MAINBOARD
|
||||
// do not clear event listener - DragCardGrid already have own listeners for cards
|
||||
//this.deckArea.clearDeckEventListeners();
|
||||
this.deckArea.addDeckEventListener(
|
||||
// card manipulation events
|
||||
// warning, do not use drag or single click events here, it's already processing by DragCardGrid
|
||||
|
||||
(Listener<Event>) event -> {
|
||||
if (mode == DeckEditorMode.FREE_BUILDING) {
|
||||
switch (event.getEventType()) {
|
||||
case DOUBLE_CLICK: {
|
||||
case CARD_DOUBLE_CLICK: {
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card : deck.getCards()) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getCards().remove(card);
|
||||
break;
|
||||
}
|
||||
}
|
||||
hidePopup();
|
||||
refreshDeck();
|
||||
break;
|
||||
}
|
||||
case ALT_DOUBLE_CLICK: {
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card : deck.getCards()) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getCards().remove(card);
|
||||
deck.getSideboard().add(card);
|
||||
break;
|
||||
}
|
||||
Card card = deck.findCard(cardView.getId());
|
||||
if (card == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.isMouseAltDown()) {
|
||||
// ALT + double click: MOVE card from one deck to another
|
||||
deck.getCards().remove(card);
|
||||
deck.getSideboard().add(card);
|
||||
} else {
|
||||
// double click: DELETE card from deck
|
||||
deck.getCards().remove(card);
|
||||
}
|
||||
|
||||
hidePopup();
|
||||
refreshDeck();
|
||||
break;
|
||||
}
|
||||
|
||||
case SET_NUMBER: {
|
||||
setCardNumberToCardsList(event, deck.getCards());
|
||||
break;
|
||||
}
|
||||
case REMOVE_SPECIFIC_CARD: {
|
||||
|
||||
case DECK_REMOVE_SPECIFIC_CARD: {
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card : deck.getCards()) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getCards().remove(card);
|
||||
storeTemporaryCard(card);
|
||||
break;
|
||||
}
|
||||
Card card = deck.findCard(cardView.getId());
|
||||
if (card == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
deck.getCards().remove(card);
|
||||
storeTemporaryCard(card);
|
||||
break;
|
||||
}
|
||||
case ADD_SPECIFIC_CARD: {
|
||||
|
||||
case DECK_ADD_SPECIFIC_CARD: {
|
||||
SimpleCardView cardView = (CardView) event.getSource();
|
||||
deck.getCards().add(retrieveTemporaryCard(cardView));
|
||||
break;
|
||||
|
|
@ -383,33 +398,36 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
} else {
|
||||
// constructing phase or sideboarding during match -> card goes always to sideboard
|
||||
switch (event.getEventType()) {
|
||||
case DOUBLE_CLICK:
|
||||
case ALT_DOUBLE_CLICK: {
|
||||
|
||||
case CARD_DOUBLE_CLICK: {
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card : deck.getCards()) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getCards().remove(card);
|
||||
deck.getSideboard().add(card);
|
||||
cardSelector.loadSideboard(new ArrayList<>(deck.getSideboard()), this.bigCard);
|
||||
break;
|
||||
}
|
||||
Card card = deck.findCard(cardView.getId());
|
||||
if (card == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
deck.getCards().remove(card);
|
||||
deck.getSideboard().add(card);
|
||||
cardSelector.loadSideboard(new ArrayList<>(deck.getSideboard()), this.bigCard);
|
||||
|
||||
hidePopup();
|
||||
refreshDeck();
|
||||
break;
|
||||
}
|
||||
case REMOVE_SPECIFIC_CARD: {
|
||||
|
||||
case DECK_REMOVE_SPECIFIC_CARD: {
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card : deck.getCards()) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getCards().remove(card);
|
||||
storeTemporaryCard(card);
|
||||
break;
|
||||
}
|
||||
Card card = deck.findCard(cardView.getId());
|
||||
if (card == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
deck.getCards().remove(card);
|
||||
storeTemporaryCard(card);
|
||||
break;
|
||||
}
|
||||
case ADD_SPECIFIC_CARD: {
|
||||
|
||||
case DECK_ADD_SPECIFIC_CARD: {
|
||||
SimpleCardView cardView = (CardView) event.getSource();
|
||||
deck.getCards().add(retrieveTemporaryCard(cardView));
|
||||
break;
|
||||
|
|
@ -417,95 +435,104 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
}
|
||||
}
|
||||
});
|
||||
this.deckArea.clearSideboardEventListeners();
|
||||
|
||||
// BOTTOM AREA: ENABLE ADDING/REMOVING CARDS in SIDEBOARD
|
||||
// do not clear event listener - DragCardGrid already have own listeners for cards
|
||||
//this.deckArea.clearSideboardEventListeners();
|
||||
this.deckArea.addSideboardEventListener(
|
||||
// card manipulation events
|
||||
(Listener<Event>) event -> {
|
||||
if (mode == DeckEditorMode.FREE_BUILDING) {
|
||||
// normal edit mode
|
||||
// DECK EDITOR MODE
|
||||
switch (event.getEventType()) {
|
||||
case DOUBLE_CLICK:
|
||||
// remove card from sideboard (don't add it to deck)
|
||||
case CARD_DOUBLE_CLICK: {
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card : deck.getSideboard()) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getSideboard().remove(card);
|
||||
break;
|
||||
}
|
||||
}
|
||||
hidePopup();
|
||||
refreshDeck();
|
||||
break;
|
||||
case ALT_DOUBLE_CLICK:
|
||||
// remove card from sideboard
|
||||
cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card : deck.getSideboard()) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getSideboard().remove(card);
|
||||
deck.getCards().add(card);
|
||||
break;
|
||||
}
|
||||
Card card = deck.findSideboardCard(cardView.getId());
|
||||
if (card == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.isMouseAltDown()) {
|
||||
// ALT + double click: MOVE card from one deck to another
|
||||
deck.getSideboard().remove(card);
|
||||
deck.getCards().add(card);
|
||||
} else {
|
||||
// double click: DELETE card from deck
|
||||
deck.getSideboard().remove(card);
|
||||
}
|
||||
|
||||
hidePopup();
|
||||
refreshDeck();
|
||||
break;
|
||||
}
|
||||
|
||||
case SET_NUMBER: {
|
||||
setCardNumberToCardsList(event, deck.getSideboard());
|
||||
break;
|
||||
}
|
||||
case REMOVE_SPECIFIC_CARD: {
|
||||
cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card : deck.getSideboard()) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getSideboard().remove(card);
|
||||
storeTemporaryCard(card);
|
||||
break;
|
||||
}
|
||||
|
||||
case DECK_REMOVE_SPECIFIC_CARD: {
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
Card card = deck.findSideboardCard(cardView.getId());
|
||||
if (card == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
deck.getSideboard().remove(card);
|
||||
storeTemporaryCard(card);
|
||||
break;
|
||||
}
|
||||
case ADD_SPECIFIC_CARD: {
|
||||
cardView = (CardView) event.getSource();
|
||||
|
||||
case DECK_ADD_SPECIFIC_CARD: {
|
||||
SimpleCardView cardView = (CardView) event.getSource();
|
||||
deck.getSideboard().add(retrieveTemporaryCard(cardView));
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// construct phase or sideboarding during match
|
||||
// GAME MODE
|
||||
// constructing phase or sideboarding during match -> card goes always to main board
|
||||
switch (event.getEventType()) {
|
||||
case REMOVE_SPECIFIC_CARD: {
|
||||
|
||||
case DECK_REMOVE_SPECIFIC_CARD: {
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card : deck.getSideboard()) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getSideboard().remove(card);
|
||||
storeTemporaryCard(card);
|
||||
break;
|
||||
}
|
||||
Card card = deck.findSideboardCard(cardView.getId());
|
||||
if (card == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
deck.getSideboard().remove(card);
|
||||
storeTemporaryCard(card);
|
||||
break;
|
||||
}
|
||||
case ADD_SPECIFIC_CARD: {
|
||||
|
||||
case DECK_ADD_SPECIFIC_CARD: {
|
||||
SimpleCardView cardView = (CardView) event.getSource();
|
||||
deck.getSideboard().add(retrieveTemporaryCard(cardView));
|
||||
break;
|
||||
}
|
||||
case DOUBLE_CLICK:
|
||||
case ALT_DOUBLE_CLICK:
|
||||
|
||||
case CARD_DOUBLE_CLICK: {
|
||||
// in games you can't delete cards, only moves from one deck to another
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
for (Card card : deck.getSideboard()) {
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
deck.getSideboard().remove(card);
|
||||
deck.getCards().add(card);
|
||||
break;
|
||||
}
|
||||
Card card = deck.findSideboardCard(cardView.getId());
|
||||
if (card == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
deck.getSideboard().remove(card);
|
||||
deck.getCards().add(card);
|
||||
|
||||
hidePopup();
|
||||
refreshDeck();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
refreshDeck(true);
|
||||
|
||||
// auto-import dropped files from OS
|
||||
if (mode == DeckEditorMode.FREE_BUILDING) {
|
||||
setDropTarget(new DropTarget(this, new DnDDeckTargetListener() {
|
||||
|
||||
|
|
@ -562,26 +589,32 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
|
||||
private void moveSelectorCardToDeck(Event event) {
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
CardInfo cardInfo = CardRepository.instance.findCard(cardView.getExpansionSetCode(), cardView.getCardNumber());
|
||||
Card card = null;
|
||||
if (mode == DeckEditorMode.SIDEBOARDING || mode == DeckEditorMode.LIMITED_BUILDING) {
|
||||
for (Object o : deck.getSideboard()) {
|
||||
card = (Card) o;
|
||||
if (card.getId().equals(cardView.getId())) {
|
||||
boolean gameMode = mode != DeckEditorMode.FREE_BUILDING;
|
||||
if (gameMode) {
|
||||
// game: use existing real cards
|
||||
for (Card sideCard : deck.getSideboard()) {
|
||||
if (sideCard.getId().equals(cardView.getId())) {
|
||||
card = sideCard;
|
||||
break;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// editor: create mock card
|
||||
CardInfo cardInfo = CardRepository.instance.findCard(cardView.getExpansionSetCode(), cardView.getCardNumber());
|
||||
card = cardInfo != null ? cardInfo.getMockCard() : null;
|
||||
}
|
||||
|
||||
if (card != null) {
|
||||
deck.getCards().add(card);
|
||||
if (mode == DeckEditorMode.SIDEBOARDING || mode == DeckEditorMode.LIMITED_BUILDING) {
|
||||
if (gameMode) {
|
||||
// game: move card from another board
|
||||
deck.getSideboard().remove(card);
|
||||
cardSelector.removeCard(card.getId());
|
||||
cardSelector.setCardCount(deck.getSideboard().size());
|
||||
cardSelector.refresh();
|
||||
}
|
||||
// card hint update
|
||||
if (cardInfoPane instanceof CardInfoPane) {
|
||||
((CardInfoPane) cardInfoPane).setCard(new CardView(card), null);
|
||||
}
|
||||
|
|
@ -590,12 +623,19 @@ public class DeckEditorPanel extends javax.swing.JPanel {
|
|||
}
|
||||
|
||||
private void moveSelectorCardToSideboard(Event event) {
|
||||
boolean gameMode = mode != DeckEditorMode.FREE_BUILDING;
|
||||
if (gameMode) {
|
||||
throw new IllegalArgumentException("ERROR, you can move card to sideboard from selector in game mode.");
|
||||
}
|
||||
|
||||
SimpleCardView cardView = (SimpleCardView) event.getSource();
|
||||
CardInfo cardInfo = CardRepository.instance.findCard(cardView.getExpansionSetCode(), cardView.getCardNumber());
|
||||
Card card = cardInfo != null ? cardInfo.getMockCard() : null;
|
||||
if (card != null) {
|
||||
deck.getSideboard().add(card);
|
||||
}
|
||||
|
||||
// card hint update
|
||||
if (cardInfoPane instanceof CardInfoPane) {
|
||||
((CardInfoPane) cardInfoPane).setCard(new CardView(card), null);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ import java.io.ByteArrayOutputStream;
|
|||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* App GUI: deck export window, uses in deck editor
|
||||
*
|
||||
* @author JayDi85
|
||||
*/
|
||||
public class DeckExportClipboardDialog extends MageDialog {
|
||||
|
|
|
|||
|
|
@ -13,6 +13,8 @@ import java.io.IOException;
|
|||
import java.util.Optional;
|
||||
|
||||
/**
|
||||
* App GUI: deck import window, uses in deck editor
|
||||
*
|
||||
* @author JayDi85
|
||||
*/
|
||||
public class DeckImportClipboardDialog extends MageDialog {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package mage.client.deckeditor.collection.viewer;
|
||||
|
||||
import mage.abilities.icon.CardIconRenderSettings;
|
||||
import mage.cards.*;
|
||||
import mage.cards.repository.CardCriteria;
|
||||
import mage.cards.repository.CardInfo;
|
||||
|
|
@ -45,17 +46,17 @@ import static java.lang.Math.min;
|
|||
import static org.mage.plugins.card.images.DownloadPicturesService.getTokenCardUrls;
|
||||
|
||||
/**
|
||||
* Mage book with cards and page flipping.
|
||||
* Card viewer (mage book) with cards and page flipping
|
||||
*
|
||||
* @author nantuko
|
||||
* @author nantuko, JayDi85
|
||||
*/
|
||||
public class MageBook extends JComponent {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public static final String LAYOUT_3X3 = "small";
|
||||
|
||||
public static final String LAYOUT_4X4 = "big";
|
||||
private static final int CARD_CAPTION_OFFSET_Y = 8; // apply offset to see card names with mana icons at the same time
|
||||
|
||||
public MageBook(BigCard bigCard) {
|
||||
super();
|
||||
|
|
@ -71,7 +72,6 @@ public class MageBook extends JComponent {
|
|||
setSize(conf.WIDTH, conf.HEIGHT);
|
||||
setPreferredSize(new Dimension(conf.WIDTH, conf.HEIGHT));
|
||||
setMinimumSize(new Dimension(conf.WIDTH, conf.HEIGHT));
|
||||
//setBorder(BorderFactory.createLineBorder(Color.green));
|
||||
|
||||
jPanelLeft = getImagePanel(LEFT_PANEL_IMAGE_PATH, ImagePanelStyle.TILED);
|
||||
jPanelLeft.setPreferredSize(new Dimension(LEFT_RIGHT_PAGES_WIDTH, 0));
|
||||
|
|
@ -87,7 +87,6 @@ public class MageBook extends JComponent {
|
|||
|
||||
Image image = ImageHelper.loadImage(LEFT_PAGE_BUTTON_IMAGE_PATH);
|
||||
pageLeft = new HoverButton(null, image, image, image, new Rectangle(64, 64));
|
||||
//pageLeft.setBorder(BorderFactory.createLineBorder(new Color(180, 50, 0), 3, true)); //debug
|
||||
pageLeft.setBounds(0, 0, 64, 64);
|
||||
pageLeft.setVisible(false);
|
||||
pageLeft.setObserver(() -> {
|
||||
|
|
@ -124,7 +123,6 @@ public class MageBook extends JComponent {
|
|||
// Top Panel (left page + (caption / stats) + right page
|
||||
jPanelTop = new JPanel();
|
||||
jPanelTop.setLayout(new BorderLayout());
|
||||
// jPanelTop.setBorder(BorderFactory.createLineBorder(new Color(180, 50, 150), 3, true)); // debug
|
||||
jPanelTop.setPreferredSize(new Dimension(captionHeight, captionHeight));
|
||||
jPanelCenter.add(jPanelTop, BorderLayout.NORTH);
|
||||
|
||||
|
|
@ -144,7 +142,6 @@ public class MageBook extends JComponent {
|
|||
// set's caption
|
||||
setCaption = new JLabel();
|
||||
setCaption.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
//setCaption.setBorder(BorderFactory.createLineBorder(new Color(180, 50, 150), 3, true)); // debug
|
||||
setCaption.setFont(jLayeredPane.getFont().deriveFont(25f));
|
||||
setCaption.setText("EMPTY CAPTION");
|
||||
jPanelCaption.add(setCaption, BorderLayout.NORTH);
|
||||
|
|
@ -152,7 +149,6 @@ public class MageBook extends JComponent {
|
|||
// set's info
|
||||
setInfo = new JLabel();
|
||||
setInfo.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
//setCaption.setBorder(BorderFactory.createLineBorder(new Color(180, 50, 150), 3, true)); // debug
|
||||
setInfo.setFont(jLayeredPane.getFont().deriveFont(17f));
|
||||
setInfo.setText("EMPTY STATS");
|
||||
jPanelCaption.add(setInfo, BorderLayout.SOUTH);
|
||||
|
|
@ -245,7 +241,6 @@ public class MageBook extends JComponent {
|
|||
for (int i = 0; i < min(conf.CARDS_PER_PAGE / 2, size); i++) {
|
||||
Card card = cards.get(i).getMockCard();
|
||||
addCard(new CardView(card), bigCard, null, rectangle);
|
||||
|
||||
rectangle = CardPosition.translatePosition(i, rectangle, conf);
|
||||
}
|
||||
|
||||
|
|
@ -407,30 +402,29 @@ public class MageBook extends JComponent {
|
|||
if (cardDimension == null) {
|
||||
cardDimension = new Dimension(ClientDefaultSettings.dimensions.getFrameWidth(), ClientDefaultSettings.dimensions.getFrameHeight());
|
||||
}
|
||||
final MageCard cardImg = Plugins.instance.getMageCard(card, bigCard, cardDimension, gameId, true, true, PreferencesDialog.getRenderMode(), true);
|
||||
cardImg.setBounds(rectangle);
|
||||
jLayeredPane.add(cardImg, JLayeredPane.DEFAULT_LAYER, 10);
|
||||
final MageCard cardImg = Plugins.instance.getMageCard(card, bigCard, new CardIconRenderSettings(), cardDimension, gameId, true, true, PreferencesDialog.getRenderMode(), true);
|
||||
cardImg.setCardContainerRef(jLayeredPane);
|
||||
cardImg.update(card);
|
||||
cardImg.setCardBounds(rectangle.x, rectangle.y, cardDimensions.getFrameWidth(), cardDimensions.getFrameHeight());
|
||||
jLayeredPane.add(cardImg, JLayeredPane.DEFAULT_LAYER, 10);
|
||||
|
||||
cardImg.setCardCaptionTopOffset(8); // card caption below real card caption to see full name even with mana icons
|
||||
// card caption must be below real card caption to see full name even with mana icons
|
||||
cardImg.setCardCaptionTopOffset(CARD_CAPTION_OFFSET_Y);
|
||||
|
||||
// card number label
|
||||
JLabel cardNumber = new JLabel();
|
||||
int dy = -5; // image panel have empty space in bottom (bug?), need to move label up
|
||||
cardNumber.setBounds(rectangle.x, rectangle.y + cardImg.getHeight() + dy, cardDimensions.getFrameWidth(), 20);
|
||||
cardNumber.setBounds(rectangle.x, rectangle.y + cardImg.getCardLocation().getCardHeight() + dy, cardDimensions.getFrameWidth(), 20);
|
||||
cardNumber.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
//cardNumber.setBorder(BorderFactory.createLineBorder(new Color(180, 50, 150), 3, true));
|
||||
cardNumber.setFont(jLayeredPane.getFont().deriveFont(jLayeredPane.getFont().getStyle() | Font.BOLD));
|
||||
cardNumber.setText(card.getCardNumber());
|
||||
jLayeredPane.add(cardNumber);
|
||||
|
||||
// draft rating label (
|
||||
// draft rating label
|
||||
JLabel draftRating = new JLabel();
|
||||
dy = -5 * 2 + cardNumber.getHeight(); // under card number
|
||||
draftRating.setBounds(rectangle.x, rectangle.y + cardImg.getHeight() + dy, cardDimensions.getFrameWidth(), 20);
|
||||
draftRating.setBounds(rectangle.x, rectangle.y + cardImg.getCardLocation().getCardHeight() + dy, cardDimensions.getFrameWidth(), 20);
|
||||
draftRating.setHorizontalAlignment(SwingConstants.CENTER);
|
||||
//draftRating.setBorder(BorderFactory.createLineBorder(new Color(0, 0, 150), 3, true));
|
||||
draftRating.setFont(jLayeredPane.getFont().deriveFont(jLayeredPane.getFont().getStyle() | Font.BOLD));
|
||||
if (card.getOriginalCard() != null) {
|
||||
draftRating.setText("draft rating: " + RateCard.rateCard(card.getOriginalCard(), null));
|
||||
|
|
@ -448,8 +442,8 @@ public class MageBook extends JComponent {
|
|||
newToken.removeSummoningSickness();
|
||||
PermanentView theToken = new PermanentView(newToken, null, null, null);
|
||||
theToken.setInViewerOnly(true);
|
||||
final MageCard cardImg = Plugins.instance.getMagePermanent(theToken, bigCard, cardDimension, gameId, true, PreferencesDialog.getRenderMode(), true);
|
||||
cardImg.setBounds(rectangle);
|
||||
final MageCard cardImg = Plugins.instance.getMagePermanent(theToken, bigCard, new CardIconRenderSettings(), cardDimension, gameId, true, PreferencesDialog.getRenderMode(), true);
|
||||
cardImg.setCardContainerRef(jLayeredPane);
|
||||
jLayeredPane.add(cardImg, JLayeredPane.DEFAULT_LAYER, 10);
|
||||
cardImg.update(theToken);
|
||||
cardImg.setCardBounds(rectangle.x, rectangle.y, cardDimensions.getFrameWidth(), cardDimensions.getFrameHeight());
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
package mage.client.deckeditor.collection.viewer;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import mage.cards.repository.CardScanner;
|
||||
import mage.client.plugins.impl.Plugins;
|
||||
import org.mage.card.arcane.ManaSymbols;
|
||||
import org.mage.card.arcane.SvgUtils;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
/**
|
||||
* @author nantuko
|
||||
|
|
@ -12,6 +13,7 @@ import org.mage.card.arcane.ManaSymbols;
|
|||
public class TestMageBook extends JFrame {
|
||||
public static void main(String[] args) {
|
||||
Plugins.instance.loadPlugins();
|
||||
SvgUtils.checkSvgSupport();
|
||||
ManaSymbols.loadImages();
|
||||
CardScanner.scan();
|
||||
JFrame frame = new TestMageBook();
|
||||
|
|
|
|||
|
|
@ -1,45 +1,18 @@
|
|||
/* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification, are
|
||||
* permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice, this list of
|
||||
* conditions and the following disclaimer.
|
||||
*
|
||||
* 2. Redistributions in binary form must reproduce the above copyright notice, this list
|
||||
* of conditions and the following disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
||||
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
||||
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*
|
||||
* The views and conclusions contained in the software and documentation are those of the
|
||||
* authors and should not be interpreted as representing official policies, either expressed
|
||||
* or implied, of BetaSteward_at_googlemail.com.
|
||||
*/
|
||||
package mage.client.deckeditor.table;
|
||||
|
||||
import mage.cards.MageCard;
|
||||
import mage.client.util.comparators.CardViewComparator;
|
||||
import mage.game.draft.RateCard;
|
||||
import mage.view.CardView;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import java.util.Comparator;
|
||||
|
||||
/**
|
||||
* {@link MageCard} comparator. Used to sort cards in Deck Editor Table View
|
||||
* pane.
|
||||
*
|
||||
* @author nantuko
|
||||
*/
|
||||
public class MageCardComparator implements Comparator<CardView> {
|
||||
public class MageCardComparator implements CardViewComparator {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(MageCardComparator.class);
|
||||
|
||||
|
|
@ -122,5 +95,10 @@ public class MageCardComparator implements Comparator<CardView> {
|
|||
} else {
|
||||
return bCom.compareTo(aCom);
|
||||
}
|
||||
}// compare()
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCategoryName(CardView sample) {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -293,22 +293,17 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
|
|||
cardEventSource.fireEvent(card, ClientEventType.SET_NUMBER, number);
|
||||
}
|
||||
|
||||
public void doubleClick(int index) {
|
||||
public void doubleClick(int index, MouseEvent e, boolean forceFakeAltDown) {
|
||||
CardView card = view.get(index);
|
||||
cardEventSource.fireEvent(card, ClientEventType.DOUBLE_CLICK);
|
||||
}
|
||||
|
||||
public void altDoubleClick(int index) {
|
||||
CardView card = view.get(index);
|
||||
cardEventSource.fireEvent(card, ClientEventType.ALT_DOUBLE_CLICK);
|
||||
cardEventSource.fireEvent(card, ClientEventType.CARD_DOUBLE_CLICK, e, forceFakeAltDown);
|
||||
}
|
||||
|
||||
public void removeFromMainEvent(int index) {
|
||||
cardEventSource.fireEvent(ClientEventType.REMOVE_MAIN);
|
||||
cardEventSource.fireEvent(ClientEventType.DECK_REMOVE_SELECTION_MAIN);
|
||||
}
|
||||
|
||||
public void removeFromSideEvent(int index) {
|
||||
cardEventSource.fireEvent(ClientEventType.REMOVE_SIDEBOARD);
|
||||
cardEventSource.fireEvent(ClientEventType.DECK_REMOVE_SELECTION_SIDEBOARD);
|
||||
}
|
||||
|
||||
public void addListeners(final JTable table) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue