use of mage.client.cards.ICardGrid 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();
}
Aggregations