diff --git a/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java b/src/org/openstreetmap/josm/actions/mapmode/DrawAction.java
index e623b70..5167817 100644
|
a
|
b
|
public class DrawAction extends MapMode implements MapViewPaintable, SelectionCh
|
| 1298 | 1298 | } |
| 1299 | 1299 | |
| 1300 | 1300 | @Override |
| | 1301 | public Collection<? extends OsmPrimitive> getPreservedPrimitives() { |
| | 1302 | DataSet ds = getLayerManager().getEditDataSet(); |
| | 1303 | if (ds == null) { |
| | 1304 | return null; |
| | 1305 | } else { |
| | 1306 | return ds.getSelected(); |
| | 1307 | } |
| | 1308 | } |
| | 1309 | |
| | 1310 | @Override |
| 1301 | 1311 | public boolean layerIsSupported(Layer l) { |
| 1302 | 1312 | return l instanceof OsmDataLayer; |
| 1303 | 1313 | } |
diff --git a/src/org/openstreetmap/josm/actions/mapmode/MapMode.java b/src/org/openstreetmap/josm/actions/mapmode/MapMode.java
index f6d774f..7e3caf0 100644
|
a
|
b
|
import java.awt.event.InputEvent;
|
| 7 | 7 | import java.awt.event.MouseEvent; |
| 8 | 8 | import java.awt.event.MouseListener; |
| 9 | 9 | import java.awt.event.MouseMotionListener; |
| | 10 | import java.util.Collection; |
| | 11 | import java.util.Collections; |
| 10 | 12 | |
| 11 | 13 | import org.openstreetmap.josm.Main; |
| 12 | 14 | import org.openstreetmap.josm.actions.JosmAction; |
| | 15 | import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent; |
| | 16 | import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener; |
| | 17 | import org.openstreetmap.josm.data.osm.OsmPrimitive; |
| 13 | 18 | import org.openstreetmap.josm.gui.MapFrame; |
| 14 | 19 | import org.openstreetmap.josm.gui.layer.Layer; |
| 15 | 20 | import org.openstreetmap.josm.tools.ImageProvider; |
| 16 | 21 | import org.openstreetmap.josm.tools.Shortcut; |
| 17 | | import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent; |
| 18 | | import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener; |
| 19 | 22 | |
| 20 | 23 | /** |
| 21 | 24 | * A class implementing MapMode is able to be selected as an mode for map editing. |
| … |
… |
public abstract class MapMode extends JosmAction implements MouseListener, Mouse
|
| 171 | 174 | public void preferenceChanged(PreferenceChangeEvent e) { |
| 172 | 175 | readPreferences(); |
| 173 | 176 | } |
| | 177 | |
| | 178 | /** |
| | 179 | * Gets a collection of primitives that should not be hidden by the filter. |
| | 180 | * @return The primitives that the filter should not hide. |
| | 181 | */ |
| | 182 | public Collection<? extends OsmPrimitive> getPreservedPrimitives() { |
| | 183 | return Collections.emptySet(); |
| | 184 | } |
| 174 | 185 | } |
diff --git a/src/org/openstreetmap/josm/data/osm/FilterMatcher.java b/src/org/openstreetmap/josm/data/osm/FilterMatcher.java
index ae5a979..e3f206c 100644
|
a
|
b
|
import java.util.ArrayList;
|
| 5 | 5 | import java.util.Collection; |
| 6 | 6 | import java.util.List; |
| 7 | 7 | |
| | 8 | import org.openstreetmap.josm.Main; |
| 8 | 9 | import org.openstreetmap.josm.actions.search.SearchAction.SearchMode; |
| 9 | 10 | import org.openstreetmap.josm.actions.search.SearchCompiler; |
| 10 | 11 | import org.openstreetmap.josm.actions.search.SearchCompiler.Match; |
| … |
… |
public class FilterMatcher {
|
| 225 | 226 | |
| 226 | 227 | private static FilterType test(List<FilterInfo> filters, OsmPrimitive primitive, boolean hidden) { |
| 227 | 228 | |
| 228 | | if (primitive.isIncomplete()) |
| | 229 | if (primitive.isIncomplete() || Main.map.mapMode.getPreservedPrimitives().contains(primitive)) |
| 229 | 230 | return FilterType.NOT_FILTERED; |
| 230 | 231 | |
| 231 | 232 | boolean filtered = false; |
diff --git a/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java b/src/org/openstreetmap/josm/gui/dialogs/FilterDialog.java
index 721e1db..0f4fcb3 100644
|
a
|
b
|
import javax.swing.table.JTableHeader;
|
| 26 | 26 | import javax.swing.table.TableCellRenderer; |
| 27 | 27 | |
| 28 | 28 | import org.openstreetmap.josm.Main; |
| | 29 | import org.openstreetmap.josm.actions.mapmode.MapMode; |
| 29 | 30 | import org.openstreetmap.josm.actions.search.SearchAction; |
| 30 | 31 | import org.openstreetmap.josm.data.osm.Filter; |
| 31 | 32 | import org.openstreetmap.josm.data.osm.OsmPrimitive; |
| … |
… |
import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
|
| 43 | 44 | import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent; |
| 44 | 45 | import org.openstreetmap.josm.data.osm.event.TagsChangedEvent; |
| 45 | 46 | import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent; |
| | 47 | import org.openstreetmap.josm.gui.MapFrame; |
| | 48 | import org.openstreetmap.josm.gui.MapFrame.MapModeChangeListener; |
| 46 | 49 | import org.openstreetmap.josm.gui.SideButton; |
| 47 | 50 | import org.openstreetmap.josm.tools.ImageProvider; |
| 48 | 51 | import org.openstreetmap.josm.tools.InputMapUtils; |
| … |
… |
import org.openstreetmap.josm.tools.Shortcut;
|
| 54 | 57 | * |
| 55 | 58 | * @author Petr_Dlouhý |
| 56 | 59 | */ |
| 57 | | public class FilterDialog extends ToggleDialog implements DataSetListener { |
| | 60 | public class FilterDialog extends ToggleDialog implements DataSetListener, MapModeChangeListener { |
| 58 | 61 | |
| 59 | 62 | private JTable userTable; |
| 60 | 63 | private final FilterTableModel filterModel = new FilterTableModel(); |
| … |
… |
public class FilterDialog extends ToggleDialog implements DataSetListener {
|
| 79 | 82 | @Override |
| 80 | 83 | public void showNotify() { |
| 81 | 84 | DatasetEventManager.getInstance().addDatasetListener(this, FireMode.IN_EDT_CONSOLIDATED); |
| | 85 | MapFrame.addMapModeChangeListener(this); |
| 82 | 86 | filterModel.executeFilters(); |
| 83 | 87 | } |
| 84 | 88 | |
| 85 | 89 | @Override |
| 86 | 90 | public void hideNotify() { |
| 87 | 91 | DatasetEventManager.getInstance().removeDatasetListener(this); |
| | 92 | MapFrame.removeMapModeChangeListener(this); |
| 88 | 93 | filterModel.clearFilterFlags(); |
| 89 | 94 | Main.map.mapView.repaint(); |
| 90 | 95 | } |
| … |
… |
public class FilterDialog extends ToggleDialog implements DataSetListener {
|
| 361 | 366 | filterModel.executeFilters(getAffectedPrimitives(event.getPrimitives())); |
| 362 | 367 | } |
| 363 | 368 | |
| | 369 | @Override |
| | 370 | public void mapModeChange(MapMode oldMapMode, MapMode newMapMode) { |
| | 371 | filterModel.executeFilters(); |
| | 372 | } |
| | 373 | |
| 364 | 374 | /** |
| 365 | 375 | * This method is intendet for Plugins getting the filtermodel and using .addFilter() to |
| 366 | 376 | * add a new filter. |