Changeset fe30c80


Ignore:
Timestamp:
Mar 14, 2010, 3:04:20 PM (11 years ago)
Author:
Michael Seifert <mseifert@…>
Branches:
master
Children:
3670d47
Parents:
ab9d8bb
Message:

Support for filtering the replays by player name

File:
1 edited

Legend:

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

    rab9d8bb rfe30c80  
    2727import java.awt.Toolkit;
    2828import java.awt.event.ActionEvent;
     29import java.awt.event.ActionListener;
    2930import java.io.File;
    3031import java.io.IOException;
     
    4748import javax.swing.JTable;
    4849import javax.swing.JTextField;
     50import javax.swing.JToolBar;
    4951import javax.swing.ListSelectionModel;
     52import javax.swing.RowFilter;
    5053import javax.swing.event.ListSelectionEvent;
    5154import javax.swing.event.ListSelectionListener;
     
    5356import javax.swing.table.DefaultTableModel;
    5457import javax.swing.table.TableColumn;
     58import javax.swing.table.TableRowSorter;
    5559import javax.swing.text.DateFormatter;
    5660
     61import de.erichseifert.warp.Player;
    5762import de.erichseifert.warp.Replay;
    5863import de.erichseifert.warp.gui.renderers.sc2replay.SC2ReplayRenderer;
     
    124129                menuBar.add(helpMenu);
    125130                helpMenu.add(aboutAction);
     131
     132                // Tool bar
     133                JToolBar toolbar = new JToolBar();
     134                toolbar.setFloatable(false);
     135                getContentPane().add(toolbar, BorderLayout.PAGE_START);
     136
     137                final JTextField filterField = new JTextField();
     138                filterField.addActionListener(new ActionListener() {
     139                        @Override
     140                        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);
     160                        }
     161                });
     162                toolbar.add(filterField);
    126163
    127164                JSplitPane splitPane = new JSplitPane();
Note: See TracChangeset for help on using the changeset viewer.