diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.form b/Mage.Client/src/main/java/mage/client/table/TablesPanel.form index 09f2b336087..372e4e0fd23 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.form +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.form @@ -53,7 +53,9 @@ - + + + @@ -66,6 +68,7 @@ + @@ -107,6 +110,22 @@ + + + + + + + + + + + + + + + + diff --git a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java index 5151294946e..fdca4071b95 100644 --- a/Mage.Client/src/main/java/mage/client/table/TablesPanel.java +++ b/Mage.Client/src/main/java/mage/client/table/TablesPanel.java @@ -61,12 +61,14 @@ import javax.swing.JInternalFrame; import javax.swing.JLayeredPane; import javax.swing.JOptionPane; import javax.swing.JPopupMenu; +import javax.swing.RowFilter; import javax.swing.SwingWorker; import javax.swing.table.AbstractTableModel; import mage.cards.decks.importer.DeckImporterUtil; import mage.client.MageFrame; import mage.client.chat.ChatPanel; import mage.client.components.MageComponents; +import mage.client.deckeditor.table.TableModel; import mage.client.dialog.JoinTableDialog; import mage.client.dialog.NewTableDialog; import mage.client.dialog.NewTournamentDialog; @@ -107,7 +109,8 @@ public class TablesPanel extends javax.swing.JPanel { private Session session; private List messages; private int currentMessage; - + private MageTableRowSorter activeTablesSorter; + /** Creates new form TablesPanel */ public TablesPanel() { @@ -119,10 +122,11 @@ public class TablesPanel extends javax.swing.JPanel { tableModel.setSession(session); chkShowCompleted.setVisible(true); - + tableTables.createDefaultColumnsFromModel(); - tableTables.setRowSorter(new MageTableRowSorter(tableModel)); - + activeTablesSorter = new MageTableRowSorter(tableModel); + tableTables.setRowSorter(activeTablesSorter); + tableCompleted.setRowSorter(new MageTableRowSorter(matchesModel)); chatPanel.useExtendedView(ChatPanel.VIEW_MODE.NONE); @@ -442,7 +446,15 @@ public class TablesPanel extends javax.swing.JPanel { return this.chatPanel; } - + private void activeTablesFilter() { + if (cbStatusFilter.getSelectedItem().toString().equals("All tables")) { + activeTablesSorter.setRowFilter(null); + } else { + activeTablesSorter.setRowFilter(RowFilter.regexFilter("Waiting for players", 4)); + } + + } + /** This method is called from within the constructor to * initialize the form. * WARNING: Do NOT modify this code. The content of this method is @@ -457,6 +469,7 @@ public class TablesPanel extends javax.swing.JPanel { btnQuickStart = new javax.swing.JButton(); btnNewTournament = new javax.swing.JButton(); chkShowCompleted = new javax.swing.JCheckBox(); + cbStatusFilter = new javax.swing.JComboBox(); jPanel2 = new javax.swing.JPanel(); jLabel1 = new javax.swing.JLabel(); jLabel2 = new javax.swing.JLabel(); @@ -500,6 +513,13 @@ public class TablesPanel extends javax.swing.JPanel { } }); + cbStatusFilter.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "All tables", "Waiting for players" })); + cbStatusFilter.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + cbStatusFilterActionPerformed(evt); + } + }); + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( @@ -513,7 +533,9 @@ public class TablesPanel extends javax.swing.JPanel { .addComponent(btnQuickStart) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(chkShowCompleted) - .addContainerGap(434, Short.MAX_VALUE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(cbStatusFilter, javax.swing.GroupLayout.PREFERRED_SIZE, 140, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); jPanel1Layout.setVerticalGroup( jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -523,7 +545,8 @@ public class TablesPanel extends javax.swing.JPanel { .addComponent(btnNewTable) .addComponent(btnQuickStart) .addComponent(btnNewTournament) - .addComponent(chkShowCompleted)) + .addComponent(chkShowCompleted) + .addComponent(cbStatusFilter, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap(16, Short.MAX_VALUE)) ); @@ -689,16 +712,21 @@ private void chkShowCompletedActionPerformed(java.awt.event.ActionEvent evt) {// this.startTasks(); }//GEN-LAST:event_chkShowCompletedActionPerformed + private void cbStatusFilterActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_cbStatusFilterActionPerformed + activeTablesFilter(); + }//GEN-LAST:event_cbStatusFilterActionPerformed + private void handleError(Exception ex) { logger.fatal("Error loading deck: ", ex); JOptionPane.showMessageDialog(MageFrame.getDesktop(), "Error loading deck.", "Error", JOptionPane.ERROR_MESSAGE); } - + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnNewTable; private javax.swing.JButton btnNewTournament; private javax.swing.JButton btnQuickStart; + private javax.swing.JComboBox cbStatusFilter; private mage.client.chat.ChatPanel chatPanel; private javax.swing.JCheckBox chkShowCompleted; private javax.swing.JButton jButton1;