Ignore:
Timestamp:
2010-04-11T20:29:30+02:00 (14 years ago)
Author:
bastiK
Message:
  • disable all filters if the filter dialog is not visible
  • show the number of hidden/disabled object on screen in the upper right corner
  • slightly different behaviour for showNotify and hideNotify in ToggleDialog (Now, expanding and collapsing a dialog does not trigger these notifications.)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/osm/Filters.java

    r3083 r3178  
    11package org.openstreetmap.josm.data.osm;
    22
     3import static org.openstreetmap.josm.tools.I18n.tr;
    34import static org.openstreetmap.josm.tools.I18n.trc;
     5
     6import java.awt.Color;
     7import java.awt.Font;
     8import java.awt.Graphics;
     9import java.awt.Graphics2D;
    410
    511import java.util.Collection;
     
    814import java.util.Map;
    915
     16import javax.swing.BorderFactory;
     17import javax.swing.JLabel;
    1018import javax.swing.table.AbstractTableModel;
    1119
     
    2735
    2836    private List<Filter> filters = new LinkedList<Filter>();
    29     public void filter(){
     37
     38    public void executeFilters(){
    3039        Collection<OsmPrimitive> seld = new LinkedList<OsmPrimitive> ();
    3140        Collection<OsmPrimitive> self = new LinkedList<OsmPrimitive> ();
     
    5665    }
    5766
    58     private void loadPrefs(){
     67    public void clearFilterFlags() {
     68        DataSet ds = Main.main.getCurrentDataSet();
     69        if (ds != null) {
     70            ds.setFiltered();
     71            ds.setDisabled();
     72        }
     73        disabledCount = 0;
     74        hiddenCount = 0;
     75        Main.map.mapView.repaint();
     76    }
     77
     78
     79    private void loadPrefs() {
    5980        Map<String,String> prefs = Main.pref.getAllPrefix("filters.filter");
    6081        for (String value : prefs.values()) {
     
    88109        filters.add(f);
    89110        savePref(filters.size()-1);
    90         filter();
     111        executeFilters();
    91112        fireTableRowsInserted(filters.size()-1, filters.size()-1);
    92113    }
     
    97118        savePref(i);
    98119        savePref(i+1);
    99         filter();
     120        executeFilters();
    100121        fireTableRowsUpdated(i, i+1);
    101122    }
     
    106127        savePref(i);
    107128        savePref(i-1);
    108         filter();
     129        executeFilters();
    109130        fireTableRowsUpdated(i-1, i);
    110131    }
     
    113134        filters.remove(i);
    114135        savePrefs();
    115         filter();
     136        executeFilters();
    116137        fireTableRowsDeleted(i, i);
    117138    }
     
    120141        filters.set(i, f);
    121142        savePref(i);
    122         filter();
     143        executeFilters();
    123144        fireTableRowsUpdated(i, i);
    124145    }
     
    171192        Filter f = filters.get(row);
    172193        switch(column){
    173         case 0: f.enable = (Boolean)aValue;
    174         savePref(row);
    175         filter();
    176         fireTableRowsUpdated(row, row);
    177         break;
    178         case 1: f.hide = (Boolean)aValue;
    179         savePref(row);
    180         filter();
    181         break;
    182         case 2: f.text = (String)aValue;
    183         savePref(row);
    184         break;
    185         case 3: f.applyForChildren = (Boolean)aValue;
    186         savePref(row);
    187         filter();
    188         break;
    189         case 4: f.inverted = (Boolean)aValue;
    190         savePref(row);
    191         filter();
    192         break;
     194        case 0:
     195            f.enable = (Boolean)aValue;
     196            savePref(row);
     197            executeFilters();
     198            fireTableRowsUpdated(row, row);
     199            break;
     200        case 1:
     201            f.hide = (Boolean)aValue;
     202            savePref(row);
     203            executeFilters();
     204            break;
     205        case 2:
     206            f.text = (String)aValue;
     207            savePref(row);
     208            break;
     209        case 3:
     210            f.applyForChildren = (Boolean)aValue;
     211            savePref(row);
     212            executeFilters();
     213            break;
     214        case 4:
     215            f.inverted = (Boolean)aValue;
     216            savePref(row);
     217            executeFilters();
     218            break;
    193219        }
    194220        if(column!=0) {
     
    215241        return null;
    216242    }
     243
     244    private static class OSDLabel extends JLabel {
     245        public OSDLabel(String text) {
     246            super(text);
     247            setOpaque(true);
     248            setForeground(Color.black);
     249            setBackground(new Color(0,0,0,0));
     250            setFont(getFont().deriveFont(Font.PLAIN));
     251            setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
     252        }
     253
     254        @Override
     255        public void paintComponent(Graphics g) {
     256            g.setColor(new Color(255, 255, 255, 140));
     257            g.fillRoundRect(getX(), getY(), getWidth(), getHeight(), 10, 10);
     258            super.paintComponent(g);
     259        }
     260    }
     261
     262    private OSDLabel lblOSD = new OSDLabel("");
     263
     264    public void drawOSDText(Graphics2D g) {
     265        String message = "<html>"+tr("<h2>Filter active</h2>");
     266
     267        if (disabledCount == 0 && hiddenCount == 0)
     268            return;
     269
     270        if (hiddenCount != 0) {
     271            message += tr("<p><b>{0}</b> objects hidden", hiddenCount);
     272        }
     273
     274        if (hiddenCount != 0 && disabledCount != 0) {
     275            message += "<br>";
     276        }
     277
     278        if (disabledCount != 0) {
     279            message += tr("<b>{0}</b> objects disabled", disabledCount);
     280        }
     281
     282        message += tr("</p><p>Close the filter dialog to see all objects.<p></html>");
     283
     284        lblOSD.setText(message);
     285        lblOSD.setSize(lblOSD.getPreferredSize());
     286
     287        int dx = Main.map.mapView.getWidth() - lblOSD.getPreferredSize().width - 15;
     288        int dy = 15;
     289        g.translate(dx, dy);
     290        lblOSD.paintComponent(g);
     291        g.translate(-dx, -dy);
     292    }
    217293}
Note: See TracChangeset for help on using the changeset viewer.