Ignore:
Timestamp:
Jan 30, 2013, 11:05:56 AM (12 years ago)
Author:
alloc
Message:

AEI2 0.99k:

  • Added mod string filter
  • Made jump-to-mod by key-press cycle through mods if pressed multiple times
Location:
AE/installer2/src/net/oni2/aeinstaller/gui
Files:
1 added
4 edited

Legend:

Unmodified
Added
Removed
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java

    r658 r660  
    77import java.awt.event.ItemEvent;
    88import java.awt.event.ItemListener;
     9import java.awt.event.KeyAdapter;
     10import java.awt.event.KeyEvent;
    911import java.io.File;
    1012import java.net.URL;
     
    3335import javax.swing.JScrollPane;
    3436import javax.swing.JSplitPane;
     37import javax.swing.JTextField;
    3538import javax.swing.SwingUtilities;
    3639import javax.swing.ToolTipManager;
     
    5760import net.oni2.aeinstaller.gui.downloadwindow.Downloader;
    5861import net.oni2.aeinstaller.gui.modtable.DownloadSizeListener;
     62import net.oni2.aeinstaller.gui.modtable.EApplyFilterTo;
    5963import net.oni2.aeinstaller.gui.modtable.ModSelectionListener;
    6064import net.oni2.aeinstaller.gui.modtable.ModTable;
     
    9498        private JRadioButton radOnline;
    9599        private JRadioButton radLocal;
     100        private JTextField txtShowFilter;
     101        private JComboBox cmbShowFilterTo;
    96102        private JScrollPane scrollMods;
    97103        private ModTable tblMods;
     
    99105
    100106        private PackageInfoBox pkgInfo;
    101        
     107
    102108        private JButton btnInstall;
    103109
     
    142148                lblDownloadSizeVal.setText(SizeFormatter.format(0, 2));
    143149                radAll.setSelected(true);
     150
     151                for (EApplyFilterTo f : EApplyFilterTo.values()) {
     152                        cmbShowFilterTo.addItem(f);
     153                }
     154                txtShowFilter.addKeyListener(new KeyAdapter() {
     155                        @Override
     156                        public void keyReleased(KeyEvent e) {
     157                                super.keyReleased(e);
     158                                updateTableFilter();
     159                        }
     160                });
    144161
    145162                tblMods.addModSelectionListener(this);
     
    716733                if (radLocal.isSelected())
    717734                        downloadState = 2;
    718                 tblMods.setFilter(t, downloadState);
    719         }
    720 
    721         @SuppressWarnings("unused")
    722         private void modTypeSelection() {
    723                 updateTableFilter();
    724         }
    725 
    726         @SuppressWarnings("unused")
    727         private void showTypeSelection() {
    728                 updateTableFilter();
     735                tblMods.setFilter(t, downloadState, txtShowFilter.getText(),
     736                                (EApplyFilterTo) cmbShowFilterTo.getSelectedItem());
    729737        }
    730738
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml

    r658 r660  
    5151        - JPanel(name=panMods):
    5252            - JLabel(name=lblModTypes, text=lblModTypes.text)
    53             - JComboBox(name=cmbModTypes, onAction=modTypeSelection)
     53            - JComboBox(name=cmbModTypes, onAction=updateTableFilter)
    5454            - JLabel(name=lblShowOnly, text=lblShowOnly.text)
    55             - JRadioButton(name=radAll, text=radAll.text, onAction=showTypeSelection)
    56             - JRadioButton(name=radOnline, text=radOnline.text, onAction=showTypeSelection)
    57             - JRadioButton(name=radLocal, text=radLocal.text, onAction=showTypeSelection)
     55            - JRadioButton(name=radAll, text=radAll.text, onAction=updateTableFilter)
     56            - JRadioButton(name=radOnline, text=radOnline.text, onAction=updateTableFilter)
     57            - JRadioButton(name=radLocal, text=radLocal.text, onAction=updateTableFilter)
    5858            - ButtonGroup: [radAll,radOnline,radLocal]
     59            - JLabel(name=lblShowFilter, text=lblShowFilter.text)
     60            - JTextField(name=txtShowFilter)
     61            - JComboBox(name=cmbShowFilterTo, onAction=updateTableFilter)
    5962            - JScrollPane(name=scrollMods, vScrollBar=always, hScrollBar=never)
    6063            - JButton(name=btnUnSelectAll, icon=img.unSelect16, text=btnUnSelectAll.text, onAction=[unSelectAll])
     
    6467            - JLabel(name=lblDownloadSizeVal)
    6568            - MigLayout: |
    66                  [grow]
    67                  lblModTypes<,cmbModTypes                        [min]
    68                  lblShowOnly<,radAll,radOnline,radLocal          [min]
    69                  scrollMods                                      [grow]
    70                  >btnUnSelectAll,>btnRevertSelection,btnInstall  [min]
    71                  lblDownloadSize,lblDownloadSizeVal              [min]
     69                 [min]           [grow]
     70                 >lblModTypes    cmbModTypes                       [min]
     71                 >lblShowOnly    radAll,radOnline,radLocal         [min]
     72                 >lblShowFilter  txtShowFilter>,cmbShowFilterTo<   [min]
     73                 scrollMods+*                                      [grow]
     74                 >btnUnSelectAll+*,>btnRevertSelection,btnInstall  [min]
     75                 lblDownloadSize+*,lblDownloadSizeVal              [min]
    7276        - PackageInfoBox(name=pkgInfo)
    7377    - MigLayout:
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTable.java

    r659 r660  
    9898                setRowSorter(sorter);
    9999
    100                 setFilter(null, 0);
     100                setFilter(null, 0, null, EApplyFilterTo.ALL);
    101101
    102102                List<RowSorter.SortKey> sortKeys = new ArrayList<RowSorter.SortKey>();
     
    221221         * @param downloadState
    222222         *            Show only: 0 = all, 1 = online, 2 = downloaded
    223          */
    224         public void setFilter(Type type, int downloadState) {
     223         * @param filterString
     224         *            String to filter on
     225         * @param filterTo
     226         *            Fields to use string filter on
     227         */
     228        public void setFilter(Type type, int downloadState, String filterString,
     229                        EApplyFilterTo filterTo) {
    225230                sorter.setRowFilter(new ModTableFilter(type, downloadState,
    226                                 contentType == ETableContentType.CORE, false));
     231                                filterString, filterTo, contentType == ETableContentType.CORE,
     232                                false));
    227233        }
    228234
     
    378384
    379385        private class KeyEventHandler extends KeyAdapter {
     386                private void goToRow(int row) {
     387                        setRowSelectionInterval(row, row);
     388                        JViewport viewport = (JViewport) getParent();
     389                        Rectangle rect = getCellRect(row, 0, true);
     390                        Rectangle r2 = viewport.getVisibleRect();
     391                        scrollRectToVisible(new Rectangle(rect.x, rect.y,
     392                                        (int) r2.getWidth(), (int) r2.getHeight()));
     393                }
     394
    380395                @Override
    381396                public void keyTyped(KeyEvent e) {
     
    384399                        if (e.getModifiers() == 0) {
    385400                                String key = String.valueOf(e.getKeyChar()).toLowerCase();
    386                                 for (int i = 0; i < getRowCount(); i++) {
     401                                int row = getSelectedRow();
     402                                if (row == (getRowCount() - 1))
     403                                        row = -1;
     404                                for (int i = row + 1; i < getRowCount(); i++) {
    387405                                        Package m = (Package) getValueAt(i, -1);
    388406                                        if (m.getName().toLowerCase().startsWith(key)) {
    389                                                 setRowSelectionInterval(i, i);
    390                                                 JViewport viewport = (JViewport) getParent();
    391                                                 Rectangle rect = getCellRect(i, 0, true);
    392                                                 Rectangle r2 = viewport.getVisibleRect();
    393                                                 scrollRectToVisible(new Rectangle(rect.x, rect.y,
    394                                                                 (int) r2.getWidth(), (int) r2.getHeight()));
    395                                                 break;
     407                                                goToRow(i);
     408                                                return;
     409                                        }
     410                                }
     411                                if (row > 0) {
     412                                        for (int i = 0; i < row; i++) {
     413                                                Package m = (Package) getValueAt(i, -1);
     414                                                if (m.getName().toLowerCase().startsWith(key)) {
     415                                                        goToRow(i);
     416                                                        return;
     417                                                }
    396418                                        }
    397419                                }
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableFilter.java

    r657 r660  
    1212        private Type type = null;
    1313        private int downloadState = 0;
     14        private EApplyFilterTo filterTo = EApplyFilterTo.ALL;
     15        private String filterString = null;
    1416
    1517        private boolean showCorePackages = false;
     
    2123         * @param downloadState
    2224         *            Show only: 0 = all, 1 = online, 2 = downloaded
     25         * @param filterString
     26         *            Filter for the given string
     27         * @param filterTo
     28         *            Use the string filter only on the named field
    2329         * @param showCorePackages
    2430         *            Show core packages in table
     
    2632         *            Show packages not valid on this platform
    2733         */
    28         public ModTableFilter(Type type, int downloadState,
    29                         boolean showCorePackages, boolean showInvalidPlatform) {
     34        public ModTableFilter(Type type, int downloadState, String filterString,
     35                        EApplyFilterTo filterTo, boolean showCorePackages,
     36                        boolean showInvalidPlatform) {
    3037                super();
    3138                this.type = type;
    3239                this.downloadState = downloadState;
     40                if (filterString != null)
     41                        this.filterString = filterString.toLowerCase();
     42                this.filterTo = filterTo;
    3343                this.showCorePackages = showCorePackages;
    3444                this.showInvalidPlatform = showInvalidPlatform;
     
    5868                                break;
    5969                }
     70                if (filterString != null && filterString.length() > 1) {
     71                        switch (filterTo) {
     72                                case ALL:
     73                                        result &= mod.getName().toLowerCase()
     74                                                        .contains(filterString)
     75                                                        || mod.getCreator().toLowerCase()
     76                                                                        .contains(filterString)
     77                                                        || mod.getDescription().toLowerCase()
     78                                                                        .contains(filterString);
     79                                        break;
     80                                case CREATOR:
     81                                        result &= mod.getCreator().toLowerCase()
     82                                                        .contains(filterString);
     83                                        break;
     84                                case DESCRIPTION:
     85                                        result &= mod.getDescription().toLowerCase()
     86                                                        .contains(filterString);
     87                                        break;
     88                                case NAME:
     89                                        result &= mod.getName().toLowerCase()
     90                                                        .contains(filterString);
     91                                        break;
     92                        }
     93                }
    6094
    6195                return result;
Note: See TracChangeset for help on using the changeset viewer.