diff --git a/Mage.Client/src/main/java/mage/client/cards/CardEventSource.java b/Mage.Client/src/main/java/mage/client/cards/CardEventSource.java index 7fab2ae91c9..45a9b23db59 100644 --- a/Mage.Client/src/main/java/mage/client/cards/CardEventSource.java +++ b/Mage.Client/src/main/java/mage/client/cards/CardEventSource.java @@ -28,13 +28,14 @@ package mage.client.cards; -import java.io.Serializable; -import java.util.UUID; import mage.client.util.Event; import mage.client.util.EventDispatcher; import mage.client.util.EventSource; import mage.client.util.Listener; +import java.io.Serializable; +import java.util.UUID; + /** * * @author BetaSteward_at_googlemail.com @@ -56,6 +57,14 @@ public class CardEventSource implements EventSource, Serializable { dispatcher.fireEvent(new Event(cardId, message)); } + public void removeFromMainEvent(String message) { + dispatcher.fireEvent(new Event(null, message)); + } + + public void removeFromSideboardEvent(String message) { + dispatcher.fireEvent(new Event(null, message)); + } + @Override public void clearListeners() { dispatcher.clearListeners(); diff --git a/Mage.Client/src/main/java/mage/client/cards/CardsList.java b/Mage.Client/src/main/java/mage/client/cards/CardsList.java index bfa57c80d0e..7c60ccfe390 100644 --- a/Mage.Client/src/main/java/mage/client/cards/CardsList.java +++ b/Mage.Client/src/main/java/mage/client/cards/CardsList.java @@ -119,14 +119,7 @@ public class CardsList extends javax.swing.JPanel implements MouseListener, ICar public void mousePressed(MouseEvent e) { if (e.getClickCount() == 2 && !e.isConsumed()) { e.consume(); - if (mainTable.getSelectedRowCount() > 0) { - int[] n = mainTable.getSelectedRows(); - List indexes = asList(n); - Collections.reverse(indexes); - for (Integer index : indexes) { - mainModel.doubleClick(index); - } - } + handleDoubleClick(); } } }); @@ -134,6 +127,17 @@ public class CardsList extends javax.swing.JPanel implements MouseListener, ICar mainModel.setUpdateCountsCallback(new UpdateCountsCallback(lblCount, lblCreatureCount, lblLandCount)); } + public void handleDoubleClick() { + if (mainTable.getSelectedRowCount() > 0) { + int[] n = mainTable.getSelectedRows(); + List indexes = asList(n); + Collections.reverse(indexes); + for (Integer index : indexes) { + mainModel.doubleClick(index); + } + } + } + public ICardGrid getMainModel() { return mainModel; } diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form index 8b026ecc074..4a31ea1bf87 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form +++ b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.form @@ -163,12 +163,6 @@ - - - - - - @@ -327,8 +321,12 @@ - + + + + + @@ -340,7 +338,7 @@ - + @@ -348,13 +346,15 @@ - + + + @@ -362,7 +362,8 @@ - + + @@ -370,7 +371,8 @@ - + + @@ -415,6 +417,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java index d6bc7ce28dc..9dd024f34a6 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/CardSelector.java @@ -38,6 +38,7 @@ import mage.Constants.CardType; import mage.cards.Card; import mage.cards.ExpansionSet; import mage.client.cards.BigCard; +import mage.client.cards.CardGrid; import mage.client.cards.CardsStorage; import mage.client.cards.ICardGrid; import mage.client.constants.Constants.SortBy; @@ -75,6 +76,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene /** Creates new form CardSelector */ public CardSelector() { initComponents(); + cardGrid = new CardGrid(); makeTransparent(); initListViewComponents(); currentView = mainModel; // by default we use List View @@ -266,7 +268,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene btnBooster = new javax.swing.JButton(); btnClear = new javax.swing.JButton(); jScrollPane1 = new javax.swing.JScrollPane(); - cardGrid = new mage.client.cards.CardGrid(); tbTypes = new javax.swing.JToolBar(); rdoLand = new javax.swing.JRadioButton(); rdoCreatures = new javax.swing.JRadioButton(); @@ -288,6 +289,8 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene jButtonClean = new javax.swing.JButton(); cardCountLabel = new javax.swing.JLabel(); cardCount = new javax.swing.JLabel(); + jButtonRemoveFromMain = new javax.swing.JButton(); + jButtonRemoveFromSideboard = new javax.swing.JButton(); tbColor.setFloatable(false); tbColor.setRollover(true); @@ -364,7 +367,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene }); tbColor.add(rdoColorless); - cbExpansionSet.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); + cbExpansionSet.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"})); cbExpansionSet.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cbExpansionSetActionPerformed(evt); @@ -394,8 +397,6 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene }); tbColor.add(btnClear); - jScrollPane1.setViewportView(cardGrid); - tbTypes.setFloatable(false); tbTypes.setRollover(true); @@ -494,7 +495,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene }); tbTypes.add(chkPiles); - cbSortBy.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); + cbSortBy.setModel(new javax.swing.DefaultComboBoxModel(new String[]{"Item 1", "Item 2", "Item 3", "Item 4"})); cbSortBy.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { cbSortByActionPerformed(evt); @@ -528,14 +529,16 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene jPanel1.setOpaque(false); jPanel1.setPreferredSize(new java.awt.Dimension(897, 35)); - jButtonAddToMain.setText("Add to Main"); + jButtonAddToMain.setText("+"); + jButtonAddToMain.setToolTipText("Add to Main"); jButtonAddToMain.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonAddToMainActionPerformed(evt); } }); - jButtonAddToSideboard.setText("Add to Sideboard"); + jButtonAddToSideboard.setText("+S"); + jButtonAddToSideboard.setToolTipText("Add to Sideboard"); jButtonAddToSideboard.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent evt) { jButtonAddToSideboardActionPerformed(evt); @@ -562,6 +565,22 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene cardCount.setText("0"); + jButtonRemoveFromMain.setText("-"); + jButtonRemoveFromMain.setToolTipText("Remove from Main"); + jButtonRemoveFromMain.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonRemoveFromMainActionPerformed(evt); + } + }); + + jButtonRemoveFromSideboard.setText("-S"); + jButtonRemoveFromSideboard.setToolTipText("Remove from Sideboard"); + jButtonRemoveFromSideboard.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + jButtonRemoveFromSideboardActionPerformed(evt); + } + }); + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( @@ -569,8 +588,12 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene .addGroup(jPanel1Layout.createSequentialGroup() .addComponent(jButtonAddToMain) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jButtonAddToSideboard) + .addComponent(jButtonRemoveFromMain) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(jButtonAddToSideboard) + .addGap(5, 5, 5) + .addComponent(jButtonRemoveFromSideboard) + .addGap(18, 18, 18) .addComponent(jLabel1) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(jTextFieldSearch, javax.swing.GroupLayout.PREFERRED_SIZE, 112, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -582,19 +605,21 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene .addComponent(cardCountLabel) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(cardCount, javax.swing.GroupLayout.PREFERRED_SIZE, 48, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(165, Short.MAX_VALUE)) + .addContainerGap(186, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jButtonAddToMain) - .addComponent(jButtonAddToSideboard) .addComponent(jLabel1) .addComponent(jTextFieldSearch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jButtonSearch) .addComponent(jButtonClean) .addComponent(cardCountLabel) - .addComponent(cardCount)) + .addComponent(cardCount) + .addComponent(jButtonRemoveFromMain) + .addComponent(jButtonAddToSideboard) + .addComponent(jButtonRemoveFromSideboard)) ); cardCountLabel.getAccessibleContext().setAccessibleName("cardCountLabel"); @@ -801,6 +826,15 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene } }//GEN-LAST:event_jButtonAddToSideboardActionPerformed + private void jButtonRemoveFromMainActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonRemoveFromMainActionPerformed + mainModel.removeFromMainEvent(0); + }//GEN-LAST:event_jButtonRemoveFromMainActionPerformed + + private void jButtonRemoveFromSideboardActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonRemoveFromSideboardActionPerformed + mainModel.removeFromSideEvent(0); + }//GEN-LAST:event_jButtonRemoveFromSideboardActionPerformed + + private void jButtonSearchActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonSearchActionPerformed String name = jTextFieldSearch.getText().trim(); filter.setText(name); @@ -813,7 +847,7 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene filterCards(); }//GEN-LAST:event_jButtonCleanActionPerformed - public List asList(final int[] is) { + public List asList(final int[] is) { List list = new ArrayList(); for (int i : is) list.add(i); return list; @@ -837,13 +871,14 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene private javax.swing.JButton btnClear; private javax.swing.JLabel cardCount; private javax.swing.JLabel cardCountLabel; - private mage.client.cards.CardGrid cardGrid; private javax.swing.JComboBox cbExpansionSet; private javax.swing.JComboBox cbSortBy; private javax.swing.JCheckBox chkPiles; private javax.swing.JButton jButtonAddToMain; private javax.swing.JButton jButtonAddToSideboard; private javax.swing.JButton jButtonClean; + private javax.swing.JButton jButtonRemoveFromMain; + private javax.swing.JButton jButtonRemoveFromSideboard; private javax.swing.JButton jButtonSearch; private javax.swing.JLabel jLabel1; private javax.swing.JPanel jPanel1; @@ -868,6 +903,8 @@ public class CardSelector extends javax.swing.JPanel implements ComponentListene private javax.swing.JToolBar tbTypes; // End of variables declaration//GEN-END:variables + private mage.client.cards.CardGrid cardGrid; + @Override public void componentResized(ComponentEvent e) { if (cbSortBy.getSelectedItem() instanceof SortBy) diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/DeckArea.java b/Mage.Client/src/main/java/mage/client/deckeditor/DeckArea.java index c2af70a59e8..94b769b9183 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/DeckArea.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/DeckArea.java @@ -37,6 +37,7 @@ package mage.client.deckeditor; import mage.cards.decks.Deck; import mage.client.cards.BigCard; +import mage.client.cards.CardsList; import mage.client.util.Event; import mage.client.util.Listener; import mage.view.CardsView; @@ -113,6 +114,13 @@ public class DeckArea extends javax.swing.JPanel { ); }// //GEN-END:initComponents + public CardsList getDeckList() { + return deckList; + } + + public CardsList getSideboardList() { + return sideboardList; + } // Variables declaration - do not modify//GEN-BEGIN:variables private mage.client.cards.CardsList deckList; diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java index a3f3b979ec1..22c96659e93 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/DeckEditorPanel.java @@ -27,23 +27,10 @@ */ package mage.client.deckeditor; -import mage.cards.decks.importer.DeckImporter; -import mage.cards.decks.importer.DeckImporterUtil; -import java.awt.*; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.File; -import java.io.IOException; -import java.util.ArrayList; -import java.util.UUID; -import java.util.concurrent.CancellationException; -import java.util.concurrent.ExecutionException; - -import javax.swing.*; -import javax.swing.filechooser.FileFilter; - import mage.cards.Card; import mage.cards.decks.Deck; +import mage.cards.decks.importer.DeckImporter; +import mage.cards.decks.importer.DeckImporterUtil; import mage.client.MageFrame; import mage.client.cards.BigCard; import mage.client.cards.ICardGrid; @@ -59,6 +46,18 @@ import mage.sets.Sets; import mage.view.CardView; import org.apache.log4j.Logger; +import javax.swing.*; +import javax.swing.filechooser.FileFilter; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.io.File; +import java.io.IOException; +import java.util.ArrayList; +import java.util.UUID; +import java.util.concurrent.CancellationException; +import java.util.concurrent.ExecutionException; + /** * * @author BetaSteward_at_googlemail.com @@ -186,7 +185,11 @@ public class DeckEditorPanel extends javax.swing.JPanel { ((CardInfoPane)cardInfoPane).setCard(new CardView(card)); } 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(); + } refreshDeck(); } } @@ -221,7 +224,7 @@ public class DeckEditorPanel extends javax.swing.JPanel { } hidePopup(); refreshDeck(); - } + } } } ); diff --git a/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java b/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java index 85e297f8ec3..6ce26ff2585 100644 --- a/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java +++ b/Mage.Client/src/main/java/mage/client/deckeditor/table/TableModel.java @@ -29,6 +29,7 @@ package mage.client.deckeditor.table; import mage.Constants; +import mage.client.MageFrame; import mage.client.cards.BigCard; import mage.client.cards.CardEventSource; import mage.client.cards.ICardGrid; @@ -38,9 +39,11 @@ import mage.client.util.Config; import mage.client.util.Event; import mage.client.util.ImageHelper; import mage.client.util.Listener; +import mage.client.util.gui.GuiDisplayUtil; import mage.view.CardView; import mage.view.CardsView; import org.apache.log4j.Logger; +import org.jdesktop.swingx.JXPanel; import javax.swing.*; import javax.swing.table.AbstractTableModel; @@ -51,9 +54,6 @@ import java.awt.image.BufferedImage; import java.util.*; import java.util.List; import java.util.Map.Entry; -import mage.client.MageFrame; -import mage.client.util.gui.GuiDisplayUtil; -import org.jdesktop.swingx.JXPanel; /** * Table Model for card list. @@ -277,6 +277,14 @@ public class TableModel extends AbstractTableModel implements ICardGrid { cardEventSource.shiftDoubleClick(card.getId(), "shift-double-click"); } + public void removeFromMainEvent(int index) { + cardEventSource.removeFromMainEvent("remove-main"); + } + + public void removeFromSideEvent(int index) { + cardEventSource.removeFromSideboardEvent("remove-sideboard"); + } + public void addListeners(final JTable table) { // updates card detail, listens to any key strokes