Changeset 247 in josm


Ignore:
Timestamp:
2007-05-24T22:55:15+02:00 (17 years ago)
Author:
framm
Message:

Display a yellow rectangle around the original download bounding box(es). Fixes (well, almost) #149.
Still todo: merge rectangles into nice polygon; possibly shade outlying area and optionally forbid changes to items in that area.

Location:
src/org/openstreetmap/josm
Files:
1 added
5 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/actions/OpenAction.java

    r236 r247  
    1919import org.openstreetmap.josm.Main;
    2020import org.openstreetmap.josm.data.osm.DataSet;
     21import org.openstreetmap.josm.data.osm.DataSource;
    2122import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    2223import org.openstreetmap.josm.gui.layer.RawGpsLayer;
     
    8687                                if (ExtensionFileFilter.filters[ExtensionFileFilter.OSM].acceptName(fn)) {
    8788                                        dataSet = OsmReader.parseDataSet(new FileInputStream(file), null, Main.pleaseWaitDlg);
     89                                        DataSource src = new DataSource();
     90                                        src.sourceSpec = "File " + fn;
     91                                        dataSet.dataSources.add(src);
    8892                                } else if (ExtensionFileFilter.filters[ExtensionFileFilter.CSV].acceptName(fn)) {
    8993                                        JOptionPane.showMessageDialog(Main.parent, fn+": "+tr("CSV Data import for non-GPS data is not implemented yet."));
  • src/org/openstreetmap/josm/data/osm/DataSet.java

    r203 r247  
    4343        public Collection<Way> ways = new LinkedList<Way>();
    4444
     45        /**
     46         * All data sources of this DataSet.
     47         */
     48        public Collection<DataSource> dataSources = new LinkedList<DataSource>();
     49       
    4550        /**
    4651         * A list of listeners to selection changed events.
  • src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

    r234 r247  
    44import static org.openstreetmap.josm.tools.I18n.trn;
    55
     6import java.awt.Color;
    67import java.awt.Component;
    78import java.awt.Graphics;
    89import java.awt.GridBagLayout;
     10import java.awt.Point;
    911import java.awt.event.ActionEvent;
    1012import java.io.File;
     
    2931import org.openstreetmap.josm.actions.SaveAsAction;
    3032import org.openstreetmap.josm.command.Command;
     33import org.openstreetmap.josm.data.coor.EastNorth;
    3134import org.openstreetmap.josm.data.osm.DataSet;
     35import org.openstreetmap.josm.data.osm.DataSource;
    3236import org.openstreetmap.josm.data.osm.Node;
    3337import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    140144         */
    141145        @Override public void paint(final Graphics g, final MapView mv) {
     146                if (Main.pref.getBoolean("draw.data.downloaded_area", false)) {
     147                        // FIXME this is inefficient; instead a proper polygon has to be built, and instead
     148                        // of drawing the outline, the outlying areas should perhaps be shaded.
     149                        for (DataSource src : data.dataSources) {
     150                                if (src.sourceBounds != null) {
     151                                        EastNorth en1 = Main.proj.latlon2eastNorth(src.sourceBounds.min);
     152                                        EastNorth en2 = Main.proj.latlon2eastNorth(src.sourceBounds.max);
     153                                        Point p1 = mv.getPoint(en1);
     154                                        Point p2 = mv.getPoint(en2);
     155                                        g.setColor(SimplePaintVisitor.getPreferencesColor("downloaded Area", Color.YELLOW));
     156                                        g.drawRect(Math.min(p1.x,p2.x), Math.min(p1.y, p2.y), Math.abs(p2.x-p1.x), Math.abs(p2.y-p1.y));
     157                                }
     158                        }
     159                }
    142160                mapPainter.setGraphics(g);
    143161                mapPainter.setNavigatableComponent(mv);
     
    161179                        osm.visit(visitor);
    162180                visitor.fixReferences();
     181               
     182                // copy the merged layer's data source info
     183                for (DataSource src : ((OsmDataLayer)from).data.dataSources)
     184                        data.dataSources.add(src);
     185               
    163186                if (visitor.conflicts.isEmpty())
    164187                        return;
  • src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java

    r181 r247  
    1818        private JCheckBox directionHint = new JCheckBox(tr("Draw Direction Arrows"));
    1919        private JCheckBox segmentOrderNumber = new JCheckBox(tr("Draw segment order numbers"));
     20        private JCheckBox sourceBounds = new JCheckBox(tr("Draw boundaries of downloaded data"));
    2021
    2122        public void addGui(PreferenceDialog gui) {
     
    5253                segmentOrderNumber.setSelected(Main.pref.getBoolean("draw.segment.order_number"));
    5354                gui.display.add(segmentOrderNumber, GBC.eop().insets(20,0,0,0));
     55               
     56                // downloaded area
     57                sourceBounds.setToolTipText(tr("Draw the boundaries of data loaded from the server."));
     58                sourceBounds.setSelected(Main.pref.getBoolean("draw.data.downloaded_area"));
     59                gui.display.add(sourceBounds, GBC.eop().insets(20,0,0,0));
    5460        }
    5561
     
    6066                Main.pref.put("draw.segment.direction", directionHint.isSelected());
    6167                Main.pref.put("draw.segment.order_number", segmentOrderNumber.isSelected());
     68                Main.pref.put("draw.data.downloaded_area", sourceBounds.isSelected());
    6269    }
    6370}
  • src/org/openstreetmap/josm/io/BoundingBoxDownloader.java

    r210 r247  
    99
    1010import org.openstreetmap.josm.Main;
     11import org.openstreetmap.josm.data.Bounds;
     12import org.openstreetmap.josm.data.coor.LatLon;
    1113import org.openstreetmap.josm.data.osm.DataSet;
     14import org.openstreetmap.josm.data.osm.DataSource;
    1215import org.openstreetmap.josm.gui.layer.RawGpsLayer.GpsPoint;
    1316import org.xml.sax.SAXException;
     17
    1418
    1519public class BoundingBoxDownloader extends OsmServerReader {
     
    98102                Main.pleaseWaitDlg.currentAction.setText(tr("Downloading OSM data..."));
    99103                final DataSet data = OsmReader.parseDataSet(in, null, Main.pleaseWaitDlg);
     104                DataSource src = new DataSource();
     105                src.sourceSpec = "Server";
     106                src.sourceBounds = new Bounds(new LatLon(lat1, lon1), new LatLon(lat2, lon2));
     107                data.dataSources.add(src);
    100108                in.close();
    101109                activeConnection = null;
Note: See TracChangeset for help on using the changeset viewer.