Ignore:
Timestamp:
2019-07-07T18:36:38+02:00 (5 years ago)
Author:
Don-vip
Message:

fix #14208 - add dedicated buttons in filter dialog to sort/reverse filters order.

Major overhaul/harmonization of our reorderable/sortable models.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/FilterTableModel.java

    r15065 r15226  
    99import java.util.List;
    1010
     11import javax.swing.ListSelectionModel;
    1112import javax.swing.table.AbstractTableModel;
    1213
     
    1718import org.openstreetmap.josm.gui.MapFrame;
    1819import org.openstreetmap.josm.gui.autofilter.AutoFilterManager;
     20import org.openstreetmap.josm.gui.util.SortableTableModel;
    1921import org.openstreetmap.josm.gui.widgets.OSDLabel;
    2022import org.openstreetmap.josm.tools.Logging;
     
    2426 *
    2527 * @author Petr_Dlouhý
     28 * @since 2125
    2629 */
    27 public class FilterTableModel extends AbstractTableModel {
     30public class FilterTableModel extends AbstractTableModel implements SortableTableModel<Filter> {
    2831
    2932    /**
     
    5053
    5154    /**
    52      * A helper for {@link #drawOSDText(Graphics2D)}.
     55     * The selection model
     56     */
     57    final ListSelectionModel selectionModel;
     58
     59    /**
     60     * A helper for {@link #drawOSDText(Graphics2D)}
    5361     */
    5462    private final OSDLabel lblOSD = new OSDLabel("");
     
    5664    /**
    5765     * Constructs a new {@code FilterTableModel}.
    58      */
    59     public FilterTableModel() {
     66     * @param listSelectionModel selection model
     67     */
     68    public FilterTableModel(ListSelectionModel listSelectionModel) {
     69        this.selectionModel = listSelectionModel;
    6070        loadPrefs();
    6171    }
     
    134144    }
    135145
     146    @Override
     147    public boolean doMove(int delta, int... selectedRows) {
     148        return model.moveFilters(delta, selectedRows);
     149    }
     150
     151    @Override
     152    public boolean move(int delta, int... selectedRows) {
     153        if (!SortableTableModel.super.move(delta, selectedRows))
     154            return false;
     155        savePrefs();
     156        updateFilters();
     157        int rowIndex = selectedRows[0];
     158        if (delta < 0)
     159            fireTableRowsUpdated(rowIndex + delta, rowIndex);
     160        else if (delta > 0)
     161            fireTableRowsUpdated(rowIndex, rowIndex + delta);
     162        return true;
     163    }
     164
    136165    /**
    137166     * Moves down the filter in the given row.
    138167     * @param rowIndex The filter row
    139      */
     168     * @deprecated Use {@link #moveDown(int...)}
     169     */
     170    @Deprecated
    140171    public void moveDownFilter(int rowIndex) {
    141         if (model.moveDownFilter(rowIndex)) {
    142             savePrefs();
    143             updateFilters();
    144             fireTableRowsUpdated(rowIndex, rowIndex + 1);
    145         }
     172        moveDown(rowIndex);
    146173    }
    147174
     
    149176     * Moves up the filter in the given row
    150177     * @param rowIndex The filter row
    151      */
     178     * @deprecated Use {@link #moveUp(int...)}
     179     */
     180    @Deprecated
    152181    public void moveUpFilter(int rowIndex) {
    153         if (model.moveUpFilter(rowIndex)) {
    154             savePrefs();
    155             updateFilters();
    156             fireTableRowsUpdated(rowIndex - 1, rowIndex);
    157         }
     182        moveUp(rowIndex);
    158183    }
    159184
     
    174199     * @param rowIndex The row index
    175200     * @param filter The filter that should be placed in that row
    176      */
     201     * @deprecated Use {@link #setValue}
     202     */
     203    @Deprecated
    177204    public void setFilter(int rowIndex, Filter filter) {
    178         model.setFilter(rowIndex, filter);
     205        setValue(rowIndex, filter);
     206    }
     207
     208    @Override
     209    public Filter setValue(int rowIndex, Filter filter) {
     210        Filter result = model.setValue(rowIndex, filter);
    179211        savePrefs();
    180212        updateFilters();
    181213        fireTableRowsUpdated(rowIndex, rowIndex);
     214        return result;
    182215    }
    183216
     
    186219     * @param rowIndex The row index
    187220     * @return The filter in that row
    188      */
     221     * @deprecated Use {@link #getValue}
     222     */
     223    @Deprecated
    189224    public Filter getFilter(int rowIndex) {
    190         return model.getFilter(rowIndex);
     225        return getValue(rowIndex);
     226    }
     227
     228    @Override
     229    public Filter getValue(int rowIndex) {
     230        return model.getValue(rowIndex);
     231    }
     232
     233    @Override
     234    public ListSelectionModel getSelectionModel() {
     235        return selectionModel;
    191236    }
    192237
     
    225270     */
    226271    public boolean isCellEnabled(int row, int column) {
    227         return model.getFilter(row).enable || column == 0;
     272        return model.getValue(row).enable || column == 0;
    228273    }
    229274
     
    238283            return;
    239284        }
    240         Filter f = model.getFilter(row);
     285        Filter f = model.getValue(row);
    241286        switch (column) {
    242287        case COL_ENABLED:
     
    254299        default: // Do nothing
    255300        }
    256         setFilter(row, f);
     301        setValue(row, f);
    257302    }
    258303
     
    262307            return null;
    263308        }
    264         Filter f = model.getFilter(row);
     309        Filter f = model.getValue(row);
    265310        switch (column) {
    266311        case COL_ENABLED:
     
    308353        return model.getFilters();
    309354    }
     355
     356    @Override
     357    public void sort() {
     358        model.sort();
     359        fireTableDataChanged();
     360    }
     361
     362    @Override
     363    public void reverse() {
     364        model.reverse();
     365        fireTableDataChanged();
     366    }
    310367}
Note: See TracChangeset for help on using the changeset viewer.