Changeset 3670d47


Ignore:
Timestamp:
Mar 14, 2010, 3:46:02 PM (11 years ago)
Author:
Michael Seifert <mseifert@…>
Branches:
master
Children:
eab1f15
Parents:
fe30c80
Message:

The replay table can be filtered by different values

Location:
src/main/java/de/erichseifert/warp/gui
Files:
1 added
1 edited

Legend:

Unmodified
Added
Removed
  • src/main/java/de/erichseifert/warp/gui/ReplayParserGUI.java

    rfe30c80 r3670d47  
    3838import javax.swing.Action;
    3939import javax.swing.DefaultCellEditor;
     40import javax.swing.DefaultComboBoxModel;
     41import javax.swing.JComboBox;
    4042import javax.swing.JFileChooser;
    4143import javax.swing.JFrame;
     
    5052import javax.swing.JToolBar;
    5153import javax.swing.ListSelectionModel;
    52 import javax.swing.RowFilter;
    5354import javax.swing.event.ListSelectionEvent;
    5455import javax.swing.event.ListSelectionListener;
     
    5657import javax.swing.table.DefaultTableModel;
    5758import javax.swing.table.TableColumn;
     59import javax.swing.table.TableModel;
    5860import javax.swing.table.TableRowSorter;
    5961import javax.swing.text.DateFormatter;
    6062
    61 import de.erichseifert.warp.Player;
    6263import de.erichseifert.warp.Replay;
     64import de.erichseifert.warp.gui.ReplayRowFilter.FilterMode;
    6365import de.erichseifert.warp.gui.renderers.sc2replay.SC2ReplayRenderer;
    6466import de.erichseifert.warp.replays.sc2replay.SC2Replay;
     
    7375        private final DefaultTableModel replayTableModel;
    7476        private final JTable replayTable;
     77        private final TableRowSorter<TableModel> replayTableSorter;
     78        private final ReplayRowFilter<TableModel> replayTableFilter;
    7579
    7680        /**
     
    135139                getContentPane().add(toolbar, BorderLayout.PAGE_START);
    136140
     141                JLabel filterModeLabel = new JLabel("Filter mode: ");
     142                toolbar.add(filterModeLabel);
     143
     144                DefaultComboBoxModel filterModeModel = new DefaultComboBoxModel(FilterMode.values());
     145                final JComboBox filterMode = new JComboBox(filterModeModel);
     146                filterMode.addActionListener(new ActionListener() {
     147                        @Override
     148                        public void actionPerformed(ActionEvent e) {
     149                                FilterMode mode = (FilterMode) filterMode.getSelectedItem();
     150                                replayTableFilter.setFilterMode(mode);
     151                        }
     152                });
     153                toolbar.add(filterMode);
     154
    137155                final JTextField filterField = new JTextField();
    138156                filterField.addActionListener(new ActionListener() {
    139157                        @Override
    140158                        public void actionPerformed(ActionEvent e) {
    141                                 final String searchString = filterField.getText().toLowerCase();
    142                                 TableRowSorter<DefaultTableModel> rowSorter = new TableRowSorter<DefaultTableModel>(replayTableModel);
    143                                 RowFilter<DefaultTableModel, Integer> rowFilter = new RowFilter<DefaultTableModel, Integer>() {
    144                                         @Override
    145                                         public boolean include(Entry<? extends DefaultTableModel, ? extends Integer> entry) {
    146                                                 int index = entry.getIdentifier();
    147                                                 DefaultTableModel model = entry.getModel();
    148                                                 Replay replay = (Replay) model.getValueAt(index, 0);
    149                                                 for (Player player : replay.getPlayers()) {
    150                                                         String playerName = player.getName().toLowerCase();
    151                                                         if (playerName.contains(searchString)) {
    152                                                                 return true;
    153                                                         }
    154                                                 }
    155                                                 return false;
    156                                         }
    157                                 };
    158                                 rowSorter.setRowFilter(rowFilter);
    159                                 replayTable.setRowSorter(rowSorter);
     159                                String searchString = filterField.getText().toLowerCase();
     160                                replayTableFilter.setFilterText(searchString);
     161                                replayTableSorter.allRowsChanged();
    160162                        }
    161163                });
     
    181183                        }
    182184                };
     185                replayTableSorter = new TableRowSorter<TableModel>(replayTableModel);
     186                replayTableFilter = new ReplayRowFilter<TableModel>(0);
     187                replayTableSorter.setRowFilter(replayTableFilter);
     188                replayTable.setRowSorter(replayTableSorter);
    183189                // Set Column spacing
    184190                replayTable.getColumnModel().getColumn(0).setPreferredWidth(400);
Note: See TracChangeset for help on using the changeset viewer.