Changeset 3490 in josm for trunk/src


Ignore:
Timestamp:
2010-08-29T20:17:41+02:00 (14 years ago)
Author:
bastiK
Message:

fixed #5349 - A LOT of gpx tracks fill entire screen with popup information

Location:
trunk/src/org/openstreetmap/josm
Files:
4 edited

Legend:

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

    r3407 r3490  
    3636import org.openstreetmap.josm.data.projection.Projection;
    3737import org.openstreetmap.josm.gui.help.Helpful;
     38import org.openstreetmap.josm.gui.preferences.ProjectionPreference;
    3839import org.openstreetmap.josm.tools.Predicate;
    3940
     
    116117
    117118    public static String getDistText(double dist) {
    118         SystemOfMeasurement som = SYSTEMS_OF_MEASUREMENT.get(Main.pref.get("system_of_measurement", "Metric"));
    119         if (som == null) {
    120             som = METRIC_SOM;
    121         }
    122         return som.getDistText(dist);
     119        return getSystemOfMeasurement().getDistText(dist);
    123120    }
    124121
     
    718715    }
    719716
     717    public static SystemOfMeasurement getSystemOfMeasurement() {
     718        SystemOfMeasurement som = SYSTEMS_OF_MEASUREMENT.get(ProjectionPreference.PROP_SYSTEM_OF_MEASUREMENT.get());
     719        if (som == null)
     720            return METRIC_SOM;
     721        return som;
     722    }
     723
    720724    public static class SystemOfMeasurement {
    721725        public final double aValue;
  • trunk/src/org/openstreetmap/josm/gui/layer/GpxLayer.java

    r3408 r3490  
    1010import java.awt.BasicStroke;
    1111import java.awt.Color;
     12import java.awt.Dimension;
    1213import java.awt.Graphics2D;
    1314import java.awt.GridBagLayout;
     
    1819import java.io.File;
    1920import java.text.DateFormat;
    20 import java.text.DecimalFormat;
    2121import java.util.ArrayList;
    2222import java.util.Arrays;
     
    4040import javax.swing.JPanel;
    4141import javax.swing.JRadioButton;
     42import javax.swing.JScrollPane;
     43import javax.swing.SwingUtilities;
    4244import javax.swing.filechooser.FileFilter;
    4345
     
    5961import org.openstreetmap.josm.gui.HelpAwareOptionPane;
    6062import org.openstreetmap.josm.gui.MapView;
     63import org.openstreetmap.josm.gui.NavigatableComponent;
    6164import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
    6265import org.openstreetmap.josm.gui.dialogs.LayerListPopup;
     
    6568import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
    6669import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
     70import org.openstreetmap.josm.gui.widgets.HtmlPanel;
    6771import org.openstreetmap.josm.io.JpgImporter;
    6872import org.openstreetmap.josm.tools.AudioUtil;
     
    119123    @Override
    120124    public Object getInfoComponent() {
    121         return getToolTipText();
     125        StringBuilder info = new StringBuilder();
     126
     127        if (data.attr.containsKey("name")) {
     128            info.append(tr("Name: {0}", data.attr.get(GpxData.META_NAME))).append("<br>");
     129        }
     130
     131        if (data.attr.containsKey("desc")) {
     132            info.append(tr("Description: {0}", data.attr.get(GpxData.META_DESC))).append("<br>");
     133        }
     134
     135        if (data.tracks.size() > 0) {
     136            info.append("<table><thead align='center'><tr><td colspan='5'>"
     137                    + trn("{0} track", "{0} tracks", data.tracks.size(), data.tracks.size())
     138                    + "</td></tr><tr align='center'><td>" + tr("Name") + "</td><td>"
     139                    + tr("Description") + "</td><td>" + tr("Timespan")
     140                    + "</td><td>" + tr("Length") + "</td><td>" + tr("URL")
     141                    + "</td></tr></thead>");
     142
     143            for (GpxTrack trk : data.tracks) {
     144                WayPoint earliest = null, latest = null;
     145
     146                info.append("<tr><td>");
     147                if (trk.getAttributes().containsKey("name")) {
     148                    info.append(trk.getAttributes().get("name"));
     149                }
     150                info.append("</td><td>");
     151                if (trk.getAttributes().containsKey("desc")) {
     152                    info.append(" ").append(trk.getAttributes().get("desc"));
     153                }
     154                info.append("</td><td>");
     155
     156                for (GpxTrackSegment seg : trk.getSegments()) {
     157                    for (WayPoint pnt : seg.getWayPoints()) {
     158                        if (latest == null) {
     159                            latest = earliest = pnt;
     160                        } else {
     161                            if (pnt.compareTo(earliest) < 0) {
     162                                earliest = pnt;
     163                            } else {
     164                                latest = pnt;
     165                            }
     166                        }
     167                    }
     168                }
     169
     170                if (earliest != null && latest != null) {
     171                    DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
     172                    String earliestDate = df.format(earliest.getTime());
     173                    String latestDate = df.format(latest.getTime());
     174
     175                    if (earliestDate.equals(latestDate)) {
     176                        DateFormat tf = DateFormat.getTimeInstance(DateFormat.SHORT);
     177                        info.append(earliestDate).append(" ");
     178                        info.append(tf.format(earliest.getTime())).append(" - ").append(tf.format(latest.getTime()));
     179                    } else {
     180                        DateFormat dtf = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
     181                        info.append(dtf.format(earliest.getTime())).append(" - ").append(dtf.format(latest.getTime()));
     182                    }
     183
     184                    int diff = (int) (latest.time - earliest.time);
     185                    info.append(String.format(" (%d:%02d)", diff / 3600, (diff % 3600) / 60));
     186                }
     187
     188                info.append("</td><td>");
     189                info.append(NavigatableComponent.getSystemOfMeasurement().getDistText(trk.length()));
     190                info.append("</td><td>");
     191                if (trk.getAttributes().containsKey("url")) {
     192                    info.append(trk.getAttributes().get("url"));
     193                }
     194                info.append("</td></tr>");
     195            }
     196
     197            info.append("</table><br><br>");
     198
     199        }
     200
     201        info.append(tr("Length: {0}", NavigatableComponent.getSystemOfMeasurement().getDistText(data.length()))).append("<br>");
     202
     203        info.append(trn("{0} route, ", "{0} routes, ", data.routes.size(), data.routes.size())).append(
     204                trn("{0} waypoint", "{0} waypoints", data.waypoints.size(), data.waypoints.size())).append("<br>");
     205
     206        final JScrollPane sp = new JScrollPane(new HtmlPanel(info.toString()), JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
     207        sp.setPreferredSize(new Dimension(sp.getPreferredSize().width, 350));
     208        SwingUtilities.invokeLater(new Runnable() {
     209            @Override
     210            public void run() {
     211                sp.getVerticalScrollBar().setValue(0);
     212            }
     213        });
     214        return sp;
    122215    }
    123216
     
    171264        }
    172265
    173         if (data.tracks.size() > 0) {
    174             info.append("<table><thead align='center'><tr><td colspan='5'>"
    175                     + trn("{0} track", "{0} tracks", data.tracks.size(), data.tracks.size())
    176                     + "</td></tr><tr align='center'><td>" + tr("Name") + "</td><td>"
    177                     + tr("Description") + "</td><td>" + tr("Timespan")
    178                     + "</td><td>" + tr("Length") + "</td><td>" + tr("URL")
    179                     + "</td></tr></thead>");
    180 
    181             for (GpxTrack trk : data.tracks) {
    182                 WayPoint earliest = null, latest = null;
    183 
    184                 info.append("<tr><td>");
    185                 if (trk.getAttributes().containsKey("name")) {
    186                     info.append(trk.getAttributes().get("name"));
    187                 }
    188                 info.append("</td><td>");
    189                 if (trk.getAttributes().containsKey("desc")) {
    190                     info.append(" ").append(trk.getAttributes().get("desc"));
    191                 }
    192                 info.append("</td><td>");
    193 
    194                 for (GpxTrackSegment seg : trk.getSegments()) {
    195                     for (WayPoint pnt : seg.getWayPoints()) {
    196                         if (latest == null) {
    197                             latest = earliest = pnt;
    198                         } else {
    199                             if (pnt.compareTo(earliest) < 0) {
    200                                 earliest = pnt;
    201                             } else {
    202                                 latest = pnt;
    203                             }
    204                         }
    205                     }
    206                 }
    207 
    208                 if (earliest != null && latest != null) {
    209                     DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
    210                     String earliestDate = df.format(earliest.getTime());
    211                     String latestDate = df.format(latest.getTime());
    212 
    213                     if (earliestDate.equals(latestDate)) {
    214                         DateFormat tf = DateFormat.getTimeInstance(DateFormat.SHORT);
    215                         info.append(earliestDate).append(" ");
    216                         info.append(tf.format(earliest.getTime())).append(" - ").append(tf.format(latest.getTime()));
    217                     } else {
    218                         DateFormat dtf = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
    219                         info.append(dtf.format(earliest.getTime())).append(" - ").append(dtf.format(latest.getTime()));
    220                     }
    221 
    222                     int diff = (int) (latest.time - earliest.time);
    223                     info.append(String.format(" (%d:%02d)", diff / 3600, (diff % 3600) / 60));
    224                 }
    225 
    226                 info.append("</td><td>");
    227                 info.append(new DecimalFormat("#0.00").format(trk.length() / 1000) + "km");
    228                 info.append("</td><td>");
    229                 if (trk.getAttributes().containsKey("url")) {
    230                     info.append(trk.getAttributes().get("url"));
    231                 }
    232                 info.append("</td></tr>");
    233             }
    234 
    235             info.append("</table><br><br>");
    236 
    237         }
    238 
    239         info.append(tr("Length: ") + new DecimalFormat("#0.00").format(data.length() / 1000) + "km");
     266        info.append(trn("{0} track, ", "{0} tracks, ", data.tracks.size(), data.tracks.size()));
     267        info.append(trn("{0} route, ", "{0} routes, ", data.routes.size(), data.routes.size()));
     268        info.append(trn("{0} waypoint", "{0} waypoints", data.waypoints.size(), data.waypoints.size())).append("<br>");
     269
     270        info.append(tr("Length: {0}", NavigatableComponent.getSystemOfMeasurement().getDistText(data.length())));
    240271        info.append("<br>");
    241 
    242         info.append(trn("{0} route, ", "{0} routes, ", data.routes.size(), data.routes.size())).append(
    243                 trn("{0} waypoint", "{0} waypoints", data.waypoints.size(), data.waypoints.size())).append("<br>");
    244272
    245273        return info.append("</html>").toString();
  • trunk/src/org/openstreetmap/josm/gui/preferences/ProjectionPreference.java

    r3473 r3490  
    5454        }
    5555    };
    56     private static final StringProperty PROP_SYSTEM_OF_MEASUREMENT = new StringProperty("system_of_measurement", "Metric");
     56    public static final StringProperty PROP_SYSTEM_OF_MEASUREMENT = new StringProperty("system_of_measurement", "Metric");
    5757    private static final String[] unitsValues = (new ArrayList<String>(NavigatableComponent.SYSTEMS_OF_MEASUREMENT.keySet())).toArray(new String[0]);
    5858    private static final String[] unitsValuesTr = new String[unitsValues.length];
  • trunk/src/org/openstreetmap/josm/tools/Shortcut.java

    r3488 r3490  
    236236        for(Shortcut c : shortcuts.values())
    237237        {
    238             if(!c.shortText.equals("core:none"))
     238            if(!c.shortText.equals("core:none")) {
    239239                l.add(c);
     240            }
    240241        }
    241242        return l;
Note: See TracChangeset for help on using the changeset viewer.