1
0
Fork 0
mirror of https://github.com/correl/mage.git synced 2025-04-08 01:01:04 -09:00

* Deck editor - Some changes to card movement with double click.

This commit is contained in:
LevelX2 2014-05-05 17:52:29 +02:00
parent 0975a70f14
commit 02e6ba045b
5 changed files with 187 additions and 84 deletions
Mage.Client/src/main/java/mage/client

View file

@ -306,9 +306,17 @@ public class CardGrid extends javax.swing.JLayeredPane implements MouseListener,
e.consume();
Object obj = e.getSource();
if (obj instanceof Card) {
cardEventSource.doubleClick(((Card) obj).getOriginal(), "double-click");
if (e.isShiftDown()) {
cardEventSource.shiftDoubleClick(((Card) obj).getOriginal(), "shift-double-click");
} else {
cardEventSource.doubleClick(((Card) obj).getOriginal(), "double-click");
}
} else if (obj instanceof MageCard) {
cardEventSource.doubleClick(((MageCard) obj).getOriginal(), "double-click");
if (e.isShiftDown()) {
cardEventSource.shiftDoubleClick(((MageCard) obj).getOriginal(), "shift-double-click");
} else {
cardEventSource.doubleClick(((MageCard) obj).getOriginal(), "double-click");
}
}
}
}

View file

@ -162,7 +162,11 @@ public class CardsList extends javax.swing.JPanel implements MouseListener, ICar
public void mousePressed(MouseEvent e) {
if (e.getClickCount() == 2 && !e.isConsumed()) {
e.consume();
handleDoubleClick();
if (e.isShiftDown()) {
handleShiftDoubleClick();
} else {
handleDoubleClick();
}
}
}
});
@ -180,7 +184,18 @@ public class CardsList extends javax.swing.JPanel implements MouseListener, ICar
}
}
}
public void handleShiftDoubleClick() {
if (mainTable.getSelectedRowCount() > 0) {
int[] n = mainTable.getSelectedRows();
List<Integer> indexes = asList(n);
Collections.reverse(indexes);
for (Integer index : indexes) {
mainModel.shiftDoubleClick(index);
}
}
}
public ICardGrid getMainModel() {
return mainModel;
}

View file

@ -83,10 +83,10 @@ import mage.view.CardsView;
*/
public class CardSelector extends javax.swing.JPanel implements ComponentListener {
private final List<Card> cards = new ArrayList<Card>();
private final List<Card> cards = new ArrayList<>();
private BigCard bigCard;
private boolean limited = false;
private SortSetting sortSetting;
private final SortSetting sortSetting;
private final ActionListener searchAction = new ActionListener() {
@Override
@ -154,7 +154,11 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene
public void mousePressed(MouseEvent e) {
if (e.getClickCount() == 2 && !e.isConsumed()) {
e.consume();
jButtonAddToMainActionPerformed(null);
if (e.isShiftDown()) {
jButtonAddToSideboardActionPerformed(null);
} else {
jButtonAddToMainActionPerformed(null);
}
}
}
});

View file

@ -62,7 +62,6 @@ import static mage.client.constants.Constants.DeckEditorMode.Constructed;
import static mage.client.constants.Constants.DeckEditorMode.Limited;
import static mage.client.constants.Constants.DeckEditorMode.Sideboard;
import mage.client.dialog.AddLandDialog;
import mage.client.plugins.adapters.MageActionCallback;
import mage.client.plugins.impl.Plugins;
import mage.client.util.Event;
import mage.client.util.Listener;
@ -159,7 +158,7 @@ public class DeckEditorPanel extends javax.swing.JPanel {
case Sideboard:
this.btnSubmit.setVisible(true);
if (deck != null) {
this.cardSelector.loadSideboard(new ArrayList<Card>(deck.getSideboard()), this.bigCard);
this.cardSelector.loadSideboard(new ArrayList<>(deck.getSideboard()), this.bigCard);
}
// TODO: take from preferences
this.cardSelector.switchToGrid();
@ -205,51 +204,25 @@ public class DeckEditorPanel extends javax.swing.JPanel {
component.addCardEventListener(
new Listener<Event>() {
@Override
public void event(Event event) {
if (event.getEventName().equals("double-click")) {
SimpleCardView cardView = (SimpleCardView) event.getSource();
CardInfo cardInfo = CardRepository.instance.findCard(cardView.getExpansionSetCode(), cardView.getCardNumber());
Card card = null;
if (mode == DeckEditorMode.Sideboard || mode == DeckEditorMode.Limited) {
Iterator sideboard = deck.getSideboard().iterator();
while (sideboard.hasNext()) {
card = (Card) sideboard.next();
if (card.getId().equals(cardView.getId())) {
break;
}
public void event(Event event) {
switch (event.getEventName()) {
case "double-click":
moveSelectorCardToDeck(event);
break;
case "shift-double-click":
if (mode == DeckEditorMode.Constructed) {
moveSelectorCardToSideboard(event);
} else {
// because in match mode selector is used as sideboard the card goes to deck also for shift click
moveSelectorCardToDeck(event);
}
} else {
card = cardInfo != null ? cardInfo.getMockCard() : null;
}
if (card != null) {
deck.getCards().add(card);
if (mode == DeckEditorMode.Sideboard || mode == DeckEditorMode.Limited) {
deck.getSideboard().remove(card);
cardSelector.removeCard(card.getId());
cardSelector.setCardCount(deck.getSideboard().size());
cardSelector.refresh();
}
if (cardInfoPane instanceof CardInfoPane) {
((CardInfoPane) cardInfoPane).setCard(new CardView(card), null);
}
hidePopup();
}
} else if (event.getEventName().equals("shift-double-click") && mode == DeckEditorMode.Constructed) {
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);
}
if (cardInfoPane instanceof CardInfoPane) {
((CardInfoPane) cardInfoPane).setCard(new CardView(card), null);
}
hidePopup();
} else if (event.getEventName().equals("remove-main")) {
DeckEditorPanel.this.deckArea.getDeckList().handleDoubleClick();
} else if (event.getEventName().equals("remove-sideboard")) {
DeckEditorPanel.this.deckArea.getSideboardList().handleDoubleClick();
break;
case "remove-main":
DeckEditorPanel.this.deckArea.getDeckList().handleDoubleClick();
break;
case "remove-sideboard":
DeckEditorPanel.this.deckArea.getSideboardList().handleDoubleClick();
break;
}
refreshDeck();
}
@ -260,31 +233,56 @@ public class DeckEditorPanel extends javax.swing.JPanel {
new Listener<Event>() {
@Override
public void event(Event event) {
if (event.getEventName().equals("double-click")) {
SimpleCardView cardView = (SimpleCardView) event.getSource();
for (Card card : deck.getCards()) {
if (card.getId().equals(cardView.getId())) {
deck.getCards().remove(card);
if (mode == DeckEditorMode.Limited || mode == DeckEditorMode.Sideboard) {
deck.getSideboard().add(card);
cardSelector.loadSideboard(new ArrayList<Card>(deck.getSideboard()), getBigCard());
if (mode.equals(DeckEditorMode.Constructed)) {
switch (event.getEventName()) {
case "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 "shift-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;
}
}
hidePopup();
refreshDeck();
break;
}
}
hidePopup();
refreshDeck();
} else if (event.getEventName().equals("shift-double-click") && mode == DeckEditorMode.Constructed) {
SimpleCardView cardView = (SimpleCardView) event.getSource();
for (Card card : deck.getCards()) {
if (card.getId().equals(cardView.getId())) {
deck.getCards().remove(card);
deck.getSideboard().add(card);
} else {
// constructing phase or sideboarding during match -> card goes always to sideboard
switch (event.getEventName()) {
case "double-click":
case "shift-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()), getBigCard());
break;
}
}
hidePopup();
refreshDeck();
break;
}
}
hidePopup();
refreshDeck();
}
}
}
});
@ -292,17 +290,51 @@ public class DeckEditorPanel extends javax.swing.JPanel {
new Listener<Event>() {
@Override
public void event(Event event) {
if (event.getEventName().equals("double-click")) {
SimpleCardView cardView = (SimpleCardView) event.getSource();
for (Card card : deck.getSideboard()) {
if (card.getId().equals(cardView.getId())) {
deck.getSideboard().remove(card);
deck.getCards().add(card);
if (mode.equals(DeckEditorMode.Constructed)) {
// normal edit mode
switch (event.getEventName()) {
case "double-click":
// remove card from sideboard (don't add it to deck)
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 "shift-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;
}
}
hidePopup();
refreshDeck();
break;
}
} else {
// construct phase or sideboarding during match
switch (event.getEventName()) {
case "double-click":
case "shift-double-click":
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;
}
} hidePopup();
refreshDeck();
break;
}
}
hidePopup();
refreshDeck();
}
}
});
@ -312,6 +344,50 @@ public class DeckEditorPanel extends javax.swing.JPanel {
this.repaint();
}
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.Sideboard || mode == DeckEditorMode.Limited) {
Iterator sideboard = deck.getSideboard().iterator();
while (sideboard.hasNext()) {
card = (Card) sideboard.next();
if (card.getId().equals(cardView.getId())) {
break;
}
}
} else {
card = cardInfo != null ? cardInfo.getMockCard() : null;
}
if (card != null) {
deck.getCards().add(card);
if (mode == DeckEditorMode.Sideboard || mode == DeckEditorMode.Limited) {
deck.getSideboard().remove(card);
cardSelector.removeCard(card.getId());
cardSelector.setCardCount(deck.getSideboard().size());
cardSelector.refresh();
}
if (cardInfoPane instanceof CardInfoPane) {
((CardInfoPane) cardInfoPane).setCard(new CardView(card), null);
}
hidePopup();
}
}
private void moveSelectorCardToSideboard(Event event) {
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);
}
if (cardInfoPane instanceof CardInfoPane) {
((CardInfoPane) cardInfoPane).setCard(new CardView(card), null);
}
hidePopup();
}
private void hidePopup() {
Plugins.getInstance().getActionCallback().mouseExited(null, null);
}

View file

@ -79,9 +79,9 @@ public class TableModel extends AbstractTableModel implements ICardGrid {
protected CardEventSource cardEventSource = new CardEventSource();
protected BigCard bigCard;
protected UUID gameId;
private final Map<UUID, CardView> cards = new LinkedHashMap<UUID, CardView>();
private final Map<String, Integer> cardsNoCopies = new LinkedHashMap<String, Integer>();
private final List<CardView> view = new ArrayList<CardView>();
private final Map<UUID, CardView> cards = new LinkedHashMap<>();
private final Map<String, Integer> cardsNoCopies = new LinkedHashMap<>();
private final List<CardView> view = new ArrayList<>();
private Dimension cardDimension;
private boolean displayNoCopies = false;