use of mage.view.CardView in project mage by magefree.
the class UpdateDeckTask method init.
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.addCardEventListener((Listener<Event>) event -> {
switch(event.getEventType()) {
case CARD_DOUBLE_CLICK:
{
boolean gameMode = mode != DeckEditorMode.FREE_BUILDING;
if (gameMode) {
moveSelectorCardToDeck(event);
} else {
if (event.isMouseAltDown()) {
moveSelectorCardToSideboard(event);
} else {
moveSelectorCardToDeck(event);
}
}
break;
}
case DECK_REMOVE_SELECTION_MAIN:
{
DeckEditorPanel.this.deckArea.getDeckList().removeSelection();
break;
}
case DECK_REMOVE_SELECTION_SIDEBOARD:
{
DeckEditorPanel.this.deckArea.getSideboardList().removeSelection();
break;
}
}
refreshDeck();
});
}
// 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((Listener<Event>) event -> {
if (mode == DeckEditorMode.FREE_BUILDING) {
switch(event.getEventType()) {
case CARD_DOUBLE_CLICK:
{
SimpleCardView cardView = (SimpleCardView) event.getSource();
Card card = deck.findCard(cardView.getId());
if (card == null) {
return;
}
if (event.isMouseAltDown()) {
deck.getCards().remove(card);
deck.getSideboard().add(card);
} else {
deck.getCards().remove(card);
}
hidePopup();
refreshDeck();
break;
}
case SET_NUMBER:
{
setCardNumberToCardsList(event, deck.getCards());
break;
}
case DECK_REMOVE_SPECIFIC_CARD:
{
SimpleCardView cardView = (SimpleCardView) event.getSource();
Card card = deck.findCard(cardView.getId());
if (card == null) {
return;
}
deck.getCards().remove(card);
storeTemporaryCard(card);
break;
}
case DECK_ADD_SPECIFIC_CARD:
{
SimpleCardView cardView = (CardView) event.getSource();
deck.getCards().add(retrieveTemporaryCard(cardView));
break;
}
}
} else {
switch(event.getEventType()) {
case CARD_DOUBLE_CLICK:
{
SimpleCardView cardView = (SimpleCardView) event.getSource();
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 DECK_REMOVE_SPECIFIC_CARD:
{
SimpleCardView cardView = (SimpleCardView) event.getSource();
Card card = deck.findCard(cardView.getId());
if (card == null) {
return;
}
deck.getCards().remove(card);
storeTemporaryCard(card);
break;
}
case DECK_ADD_SPECIFIC_CARD:
{
SimpleCardView cardView = (CardView) event.getSource();
deck.getCards().add(retrieveTemporaryCard(cardView));
break;
}
}
}
});
// 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) {
switch(event.getEventType()) {
case CARD_DOUBLE_CLICK:
{
SimpleCardView cardView = (SimpleCardView) event.getSource();
Card card = deck.findSideboardCard(cardView.getId());
if (card == null) {
return;
}
if (event.isMouseAltDown()) {
deck.getSideboard().remove(card);
deck.getCards().add(card);
} else {
deck.getSideboard().remove(card);
}
hidePopup();
refreshDeck();
break;
}
case SET_NUMBER:
{
setCardNumberToCardsList(event, deck.getSideboard());
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 DECK_ADD_SPECIFIC_CARD:
{
SimpleCardView cardView = (CardView) event.getSource();
deck.getSideboard().add(retrieveTemporaryCard(cardView));
break;
}
}
} else {
switch(event.getEventType()) {
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 DECK_ADD_SPECIFIC_CARD:
{
SimpleCardView cardView = (CardView) event.getSource();
deck.getSideboard().add(retrieveTemporaryCard(cardView));
break;
}
case CARD_DOUBLE_CLICK:
{
SimpleCardView cardView = (SimpleCardView) event.getSource();
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() {
@Override
protected boolean handleFilesDrop(boolean move, List<File> files) {
loadDeck(files.get(0).getAbsolutePath(), true);
return true;
}
@Override
protected boolean handlePlainTextDrop(boolean move, String text) {
String tmpFile = DeckUtil.writeTextToTempFile(text);
loadDeck(tmpFile, false);
return true;
}
}));
}
this.setVisible(true);
this.repaint();
}
use of mage.view.CardView in project mage by magefree.
the class UpdateDeckTask method setCardNumberToCardsList.
private void setCardNumberToCardsList(Event event, Set<Card> cards) {
CardView cardView = (CardView) event.getSource();
int numberToSet = event.getNumber();
int cardsFound = 0;
java.util.List<Card> toDelete = new ArrayList<>();
for (Card card : cards) {
if (card.getName().equals(cardView.getName()) && Objects.equals(card.getCardNumber(), cardView.getCardNumber()) && card.getExpansionSetCode().equals(cardView.getExpansionSetCode())) {
cardsFound++;
if (cardsFound > numberToSet) {
toDelete.add(card);
}
}
}
if (toDelete.isEmpty()) {
// add cards
CardInfo cardInfo = CardRepository.instance.findCard(cardView.getExpansionSetCode(), cardView.getCardNumber());
for (int i = cardsFound; i < numberToSet; i++) {
cards.add(cardInfo.getMockCard());
}
} else {
// remove cards
for (Card card : toDelete) {
cards.remove(card);
}
}
hidePopup();
refreshDeck();
}
use of mage.view.CardView in project mage by magefree.
the class UpdateDeckTask method moveSelectorCardToSideboard.
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);
}
hidePopup();
}
use of mage.view.CardView in project mage by magefree.
the class ChoiceDialog method displayCards.
private void displayCards(CardsView cards, UUID gameId, BigCard bigCard) {
if (cards.isEmpty()) {
return;
}
java.util.List<Component> toRemove = new ArrayList<>();
for (int i = getComponentCount() - 1; i > 0; i--) {
Component o = getComponent(i);
if (o instanceof MageCard) {
toRemove.add(o);
}
}
for (Component aToRemove : toRemove) {
remove(aToRemove);
}
java.util.List<CardView> cardList = new ArrayList<>(cards.values());
int width = SettingsManager.instance.getCardSize().width;
int height = SettingsManager.instance.getCardSize().height;
int dx = 0;
int dy = 30;
int startIndex = (page - 1) * (in_a_row * rows);
int countPerPage = (in_a_row * rows);
int j = 0;
for (int i = startIndex; i < cards.size() && i < startIndex + countPerPage; i++) {
if (i > startIndex && i % in_a_row == 0) {
// next row
j++;
dx = 0;
}
CardView card = cardList.get(i);
MageCard cardImg = Plugins.instance.getMageCard(card, bigCard, new CardIconRenderSettings(), getCardDimension(), gameId, true, true, PreferencesDialog.getRenderMode(), true);
cardImg.setCardContainerRef(this);
cardImg.update(card);
cardImg.setCardBounds(dx, dy + j * (height + 30), width, height);
this.add(cardImg);
dx += (width + 20);
}
repaint();
}
use of mage.view.CardView in project mage by magefree.
the class CardInfoWindowDialog method qtyCardTypes.
private int qtyCardTypes(mage.view.CardsView cardsView) {
Set<String> cardTypesPresent = new LinkedHashSet<String>() {
};
for (CardView card : cardsView.values()) {
Set<CardType> cardTypes = EnumSet.noneOf(CardType.class);
cardTypes.addAll(card.getCardTypes());
for (CardType cardType : cardTypes) {
cardTypesPresent.add(cardType.toString());
}
}
if (cardTypesPresent.isEmpty()) {
return 0;
} else {
return cardTypesPresent.size();
}
}
Aggregations