Changeset 1165 in josm for trunk


Ignore:
Timestamp:
2008-12-23T14:05:09+01:00 (15 years ago)
Author:
stoecker
Message:

fix bug #1607 and #1833

Location:
trunk
Files:
7 edited

Legend:

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

    r1086 r1165  
    386386                boolean colored = Main.pref.getBoolean("draw.rawgps.colors");                             // color the lines
    387387                boolean alternatedirection = Main.pref.getBoolean("draw.rawgps.alternatedirection");      // paint direction arrow with alternate math. may be faster
     388                int delta = 0;
     389                try {
     390                        delta = Integer.parseInt(Main.pref.get("draw.rawgps.min-arrow-distance", "0"));         // don't draw arrows nearer to each other than this
     391                } catch (java.lang.NumberFormatException e) {
     392                        Main.pref.put("draw.rawgps.min-arrow-distance", "0");
     393                }
    388394
    389395                /****************************************************************
     
    472478                if (lines && direction && !alternatedirection) {
    473479                        Point old = null;
     480                        Point oldA = null; // last arrow painted
    474481                        for (GpxTrack trk : data.tracks) {
    475482                                for (Collection<WayPoint> segment : trk.trackSegs) {
     
    480487                                                        Point screen = mv.getPoint(trkPnt.eastNorth);
    481488                                                        // skip points that are on the same screenposition
    482                                                         if (old != null && ((old.x != screen.x) || (old.y != screen.y))) {
     489                                                        if (old != null && (oldA == null || screen.x < oldA.x-delta || screen.x > oldA.x+delta || screen.y < oldA.y-delta || screen.y > oldA.y+delta)) {
    483490                                                                g.setColor(trkPnt.speedLineColor);
    484491                                                                double t = Math.atan2(screen.y-old.y, screen.x-old.x) + Math.PI;
     
    487494                                                                g.drawLine(screen.x,screen.y, (int)(screen.x + 10*Math.cos(t+PHI)), (int)(screen.y
    488495                                                                + 10*Math.sin(t+PHI)));
     496                                                                oldA = screen;
    489497                                                        }
    490498                                                        old = screen;
     
    500508                if (lines && direction && alternatedirection) {
    501509                        Point old = null;
     510                        Point oldA = null; // last arrow painted
    502511                        for (GpxTrack trk : data.tracks) {
    503512                                for (Collection<WayPoint> segment : trk.trackSegs) {
     
    508517                                                        Point screen = mv.getPoint(trkPnt.eastNorth);
    509518                                                        // skip points that are on the same screenposition
    510                                                         if (old != null && ((old.x != screen.x) || (old.y != screen.y))) {
     519                                                        if (old != null && (oldA == null || screen.x < oldA.x-delta || screen.x > oldA.x+delta || screen.y < oldA.y-delta || screen.y > oldA.y+delta)) {
    511520                                                                g.setColor(trkPnt.speedLineColor);
    512521                                                                g.drawLine(screen.x, screen.y, screen.x + dir[trkPnt.dir][0], screen.y + dir[trkPnt.dir][1]);
    513522                                                                g.drawLine(screen.x, screen.y, screen.x + dir[trkPnt.dir][2], screen.y + dir[trkPnt.dir][3]);
     523                                                                oldA = screen;
    514524                                                        }
    515525                                                        old = screen;
  • trunk/src/org/openstreetmap/josm/gui/preferences/ColorPreference.java

    r1082 r1165  
    88import java.awt.Component;
    99import java.awt.Dimension;
     10import java.awt.GridBagLayout;
    1011import java.awt.event.ActionEvent;
    1112import java.awt.event.ActionListener;
     
    2223import javax.swing.JLabel;
    2324import javax.swing.JOptionPane;
     25import javax.swing.JPanel;
    2426import javax.swing.JScrollPane;
    2527import javax.swing.JTable;
     
    2729import javax.swing.table.DefaultTableModel;
    2830import javax.swing.table.TableCellRenderer;
     31import javax.swing.BorderFactory;
     32import javax.swing.Box;
    2933
    3034import org.openstreetmap.josm.Main;
     
    105109                        }
    106110                };
    107                 colors.setPreferredSize(new Dimension(200,200));
    108111                colors.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    109112                final TableCellRenderer oldColorsRenderer = colors.getDefaultRenderer(Object.class);
     
    137140                colors.setToolTipText(tr("Colors used by different objects in JOSM."));
    138141                colors.setPreferredScrollableViewportSize(new Dimension(100,112));
    139                 gui.display.add(new JLabel(tr("Colors")), GBC.eol());
    140                 gui.display.add(new JScrollPane(colors), GBC.eol().fill(GBC.BOTH));
    141                 gui.display.add(colorEdit, GBC.eol().anchor(GBC.EAST));
     142
     143                JPanel panel = new JPanel(new GridBagLayout());
     144                panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
     145                JScrollPane scrollpane = new JScrollPane(colors);
     146                scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 ));
     147                panel.add(scrollpane, GBC.eol().fill(GBC.BOTH));
     148                panel.add(colorEdit, GBC.eol().anchor(GBC.EAST));
     149                gui.displaycontent.addTab(tr("Colors"), panel);
    142150    }
    143151
  • trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java

    r1053 r1165  
    77import java.awt.event.ActionEvent;
    88import java.awt.event.ActionListener;
     9import java.awt.GridBagLayout;
    910
     11import javax.swing.BorderFactory;
    1012import javax.swing.JCheckBox;
    1113import javax.swing.JLabel;
    1214import javax.swing.JTextField;
     15import javax.swing.JScrollPane;
     16import javax.swing.JPanel;
     17import javax.swing.Box;
    1318
    1419import org.openstreetmap.josm.Main;
     
    2530        private JCheckBox drawGpsArrows = new JCheckBox(tr("Draw Direction Arrows"));
    2631        private JCheckBox drawGpsArrowsFast = new JCheckBox(tr("Fast drawing (looks uglier)"));
     32        private JTextField drawGpsArrowsMinDist = new JTextField(8);
    2733        private JCheckBox interestingDirections = new JCheckBox(tr("Only interesting direction hints (e.g. with oneway tag)."));
    2834        private JCheckBox segmentOrderNumber = new JCheckBox(tr("Draw segment order numbers"));
     
    3137        private JCheckBox inactive = new JCheckBox(tr("Draw inactive layers in other color"));
    3238        private JCheckBox useAntialiasing = new JCheckBox(tr("Smooth map graphics (antialiasing)"));
    33         private JCheckBox showSplashScreen = new JCheckBox(tr("Show splash screen at startup"));
    3439
    3540        public void addGui(PreferenceDialog gui) {
    3641            gui.display.setPreferredSize(new Dimension(400,600));
     42        JPanel panel = new JPanel(new GridBagLayout());
     43        panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
     44
    3745            // drawRawGpsLines
    3846                drawRawGpsLines.addActionListener(new ActionListener(){
     
    4250                            drawGpsArrows.setEnabled(drawRawGpsLines.isSelected());
    4351                            drawGpsArrowsFast.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
     52                            drawGpsArrowsMinDist.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
    4453                            colorTracks.setEnabled(drawRawGpsLines.isSelected());
    4554                        }
     
    4756                drawRawGpsLines.setSelected(Main.pref.getBoolean("draw.rawgps.lines"));
    4857                drawRawGpsLines.setToolTipText(tr("If your gps device draw too few lines, select this to draw lines along your way."));
    49                 gui.display.add(drawRawGpsLines, GBC.eol().insets(20,0,0,0));
     58                panel.add(drawRawGpsLines, GBC.eol().insets(20,0,0,0));
    5059
    5160                // drawRawGpsMaxLineLength
    52                 drawRawGpsMaxLineLength.setText(Main.pref.get("draw.rawgps.max-line-length", "-1"));
     61                drawRawGpsMaxLineLength.setText(Integer.toString(Main.pref.getInteger("draw.rawgps.max-line-length", -1)));
    5362                drawRawGpsMaxLineLength.setToolTipText(tr("Maximum length (in meters) to draw lines. Set to '-1' to draw all lines."));
    5463                drawRawGpsMaxLineLength.setEnabled(drawRawGpsLines.isSelected());
    55                 gui.display.add(new JLabel(tr("Maximum length (meters)")), GBC.std().insets(40,0,0,0));
    56                 gui.display.add(drawRawGpsMaxLineLength, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
     64                panel.add(new JLabel(tr("Maximum length (meters)")), GBC.std().insets(40,0,0,0));
     65                panel.add(drawRawGpsMaxLineLength, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
    5766
    5867                // forceRawGpsLines
     
    6069                forceRawGpsLines.setSelected(Main.pref.getBoolean("draw.rawgps.lines.force"));
    6170                forceRawGpsLines.setEnabled(drawRawGpsLines.isSelected());
    62                 gui.display.add(forceRawGpsLines, GBC.eop().insets(40,0,0,0));
     71                panel.add(forceRawGpsLines, GBC.eop().insets(40,0,0,0));
    6372               
    6473                // drawGpsArrows
     
    6675                        public void actionPerformed(ActionEvent e) {
    6776                            drawGpsArrowsFast.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
     77                            drawGpsArrowsMinDist.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
    6878                        }
    6979                });
     
    7181                drawGpsArrows.setSelected(Main.pref.getBoolean("draw.rawgps.direction"));
    7282                drawGpsArrows.setEnabled(drawRawGpsLines.isSelected());
    73                 gui.display.add(drawGpsArrows, GBC.eop().insets(40,0,0,0));
     83                panel.add(drawGpsArrows, GBC.eop().insets(40,0,0,0));
    7484
    7585                // drawGpsArrowsFast
     
    7787                drawGpsArrowsFast.setSelected(Main.pref.getBoolean("draw.rawgps.alternatedirection"));
    7888                drawGpsArrowsFast.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
    79                 gui.display.add(drawGpsArrowsFast, GBC.eop().insets(60,0,0,0));
     89                panel.add(drawGpsArrowsFast, GBC.eop().insets(60,0,0,0));
     90
     91                // drawGpsArrowsMinDist
     92                drawGpsArrowsMinDist.setToolTipText(tr("Don't draw arrows if they are not at least this distance away from the last one."));
     93                drawGpsArrowsMinDist.setText(Integer.toString(Main.pref.getInteger("draw.rawgps.min-arrow-distance", 0)));
     94                drawGpsArrowsMinDist.setEnabled(drawGpsArrows.isSelected() && drawGpsArrows.isEnabled());
     95                panel.add(new JLabel(tr("Minimum distance (pixels)")), GBC.std().insets(60,0,0,0));
     96                panel.add(drawGpsArrowsMinDist, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5));
    8097
    8198                // colorTracks
     
    83100                colorTracks.setToolTipText(tr("Choose the hue for the track color by the velocity at that point."));
    84101                colorTracks.setEnabled(drawRawGpsLines.isSelected());
    85                 gui.display.add(colorTracks, GBC.eop().insets(40,0,0,0));
     102                panel.add(colorTracks, GBC.eop().insets(40,0,0,0));
    86103               
    87104                // largeGpsPoints
    88105                largeGpsPoints.setSelected(Main.pref.getBoolean("draw.rawgps.large"));
    89106                largeGpsPoints.setToolTipText(tr("Draw larger dots for the GPS points."));
    90                 gui.display.add(largeGpsPoints, GBC.eop().insets(20,0,0,0));
     107                panel.add(largeGpsPoints, GBC.eop().insets(20,0,0,0));
    91108               
     109                panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH));
     110                JScrollPane scrollpane = new JScrollPane(panel);
     111                scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 ));
     112                gui.displaycontent.addTab(tr("GPS Points"), scrollpane);
     113                panel = new JPanel(new GridBagLayout());
     114                panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
     115
    92116                // directionHint
    93117                directionHint.addActionListener(new ActionListener(){
     
    103127                directionHint.setToolTipText(tr("Draw direction hints for way segments."));
    104128                directionHint.setSelected(Main.pref.getBoolean("draw.segment.direction"));
    105                 gui.display.add(directionHint, GBC.eop().insets(20,0,0,0));
     129                panel.add(directionHint, GBC.eop().insets(20,0,0,0));
    106130
    107131                // only interesting directions
     
    109133                interestingDirections.setSelected(Main.pref.getBoolean("draw.segment.relevant_directions_only"));
    110134                interestingDirections.setEnabled(directionHint.isSelected());
    111                 gui.display.add(interestingDirections, GBC.eop().insets(40,0,0,0));
     135                panel.add(interestingDirections, GBC.eop().insets(40,0,0,0));
    112136               
    113137                // segment order number
    114138                segmentOrderNumber.setToolTipText(tr("Draw the order numbers of all segments within their way."));
    115139                segmentOrderNumber.setSelected(Main.pref.getBoolean("draw.segment.order_number"));
    116                 gui.display.add(segmentOrderNumber, GBC.eop().insets(20,0,0,0));
     140                panel.add(segmentOrderNumber, GBC.eop().insets(20,0,0,0));
    117141               
    118142                // antialiasing
    119143                useAntialiasing.setToolTipText(tr("Apply antialiasing to the map view resulting in a smoother appearance."));
    120144                useAntialiasing.setSelected(Main.pref.getBoolean("mappaint.use-antialiasing"));
    121                 gui.display.add(useAntialiasing, GBC.eop().insets(20,0,0,0));
     145                panel.add(useAntialiasing, GBC.eop().insets(20,0,0,0));
    122146               
    123147                // downloaded area
    124148                sourceBounds.setToolTipText(tr("Draw the boundaries of data loaded from the server."));
    125149                sourceBounds.setSelected(Main.pref.getBoolean("draw.data.downloaded_area", true));
    126                 gui.display.add(sourceBounds, GBC.eop().insets(20,0,0,0));
     150                panel.add(sourceBounds, GBC.eop().insets(20,0,0,0));
    127151
    128152                // virtual nodes
    129153                virtualNodes.setToolTipText(tr("Draw virtual nodes in select mode for easy way modification."));
    130154                virtualNodes.setSelected(Main.pref.getInteger("mappaint.node.virtual-size", 8) != 0);
    131                 gui.display.add(virtualNodes, GBC.eop().insets(20,0,0,0));
     155                panel.add(virtualNodes, GBC.eop().insets(20,0,0,0));
    132156
    133157                // background layers in inactive color
    134158                inactive.setToolTipText(tr("Draw the inactive data layers in a different color."));
    135159                inactive.setSelected(Main.pref.getBoolean("draw.data.inactive_color", true));
    136                 gui.display.add(inactive, GBC.eop().insets(20,0,0,0));
     160                panel.add(inactive, GBC.eop().insets(20,0,0,0));
    137161
    138                 // Show splash screen on startup
    139                 showSplashScreen.setToolTipText(tr("Show splash screen at startup"));
    140                 showSplashScreen.setSelected(Main.pref.getBoolean("draw.splashscreen", true));
    141                 gui.display.add(showSplashScreen, GBC.eop().insets(20, 0, 0, 0));
     162                panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH));
     163                scrollpane = new JScrollPane(panel);
     164                scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 ));
     165                gui.displaycontent.addTab(tr("OSM Data"), scrollpane);
    142166        }
    143167
     
    148172                Main.pref.put("draw.rawgps.direction", drawGpsArrows.isSelected());
    149173                Main.pref.put("draw.rawgps.alternatedirection", drawGpsArrowsFast.isSelected());
     174                Main.pref.put("draw.rawgps.min-arrow-distance", drawGpsArrowsMinDist.getText());
    150175                Main.pref.put("draw.rawgps.colors", colorTracks.isSelected());
    151176                Main.pref.put("draw.rawgps.large", largeGpsPoints.isSelected());
     
    156181                Main.pref.put("draw.data.inactive_color", inactive.isSelected());
    157182                Main.pref.put("mappaint.use-antialiasing", useAntialiasing.isSelected());
    158                 Main.pref.put("draw.splashscreen", showSplashScreen.isSelected());
    159183                int vn = Main.pref.getInteger("mappaint.node.virtual-size", 8);
    160184                if(virtualNodes.isSelected()) { if (vn < 1) vn = 8; }
  • trunk/src/org/openstreetmap/josm/gui/preferences/LafPreference.java

    r1053 r1165  
    55
    66import java.awt.Component;
     7import java.awt.GridBagLayout;
    78
     9import javax.swing.BorderFactory;
     10import javax.swing.Box;
    811import javax.swing.DefaultListCellRenderer;
     12import javax.swing.JCheckBox;
    913import javax.swing.JComboBox;
    1014import javax.swing.JLabel;
    1115import javax.swing.JList;
     16import javax.swing.JPanel;
     17import javax.swing.JScrollPane;
    1218import javax.swing.ListCellRenderer;
    1319import javax.swing.UIManager;
     
    2329         */
    2430        private JComboBox lafCombo;
     31        public JPanel panel = new JPanel(new GridBagLayout());
     32        private JCheckBox showSplashScreen = new JCheckBox(tr("Show splash screen at startup"));
     33        private JCheckBox showID = new JCheckBox(tr("Show object ID in selection lists"));
    2534
    2635        public void addGui(PreferenceDialog gui) {
     
    5665                lafCombo.addActionListener(gui.requireRestartAction);
    5766
    58                 gui.display.add(new JLabel(tr("Look and Feel")), GBC.std());
    59                 gui.display.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL));
    60                 gui.display.add(lafCombo, GBC.eol().fill(GBC.HORIZONTAL));
     67                panel.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
     68
     69                // Show splash screen on startup
     70                showSplashScreen.setToolTipText(tr("Show splash screen at startup"));
     71                showSplashScreen.setSelected(Main.pref.getBoolean("draw.splashscreen", true));
     72                panel.add(showSplashScreen, GBC.eop().insets(20, 0, 0, 0));
     73
     74                // Show ID in selection
     75                showID.setToolTipText(tr("Show object ID in selection lists"));
     76                showID.setSelected(Main.pref.getBoolean("osm-primitives.showid", false));
     77                panel.add(showID, GBC.eop().insets(20, 0, 0, 0));
     78
     79                panel.add(Box.createVerticalGlue(), GBC.eol().insets(0, 20, 0, 0));
     80
     81                panel.add(new JLabel(tr("Look and Feel")), GBC.std().insets(20, 0, 0, 0));
     82                panel.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL));
     83                panel.add(lafCombo, GBC.eol().fill(GBC.HORIZONTAL));
     84
     85                JScrollPane scrollpane = new JScrollPane(panel);
     86                scrollpane.setBorder(BorderFactory.createEmptyBorder( 0, 0, 0, 0 ));
     87                gui.displaycontent.addTab(tr("Look and Feel"), scrollpane);
    6188        }
    6289
    6390        public void ok() {
    6491                Main.pref.put("laf", ((LookAndFeelInfo)lafCombo.getSelectedItem()).getClassName());
     92                Main.pref.put("draw.splashscreen", showSplashScreen.isSelected());
     93                Main.pref.put("osm-primitives.showid", showID.isSelected());
    6594    }
    6695
  • trunk/src/org/openstreetmap/josm/gui/preferences/LanguagePreference.java

    r1066 r1165  
    77import java.util.Locale;
    88
     9import javax.swing.Box;
    910import javax.swing.DefaultListCellRenderer;
    1011import javax.swing.JComboBox;
    1112import javax.swing.JLabel;
    1213import javax.swing.JList;
     14import javax.swing.JPanel;
    1315import javax.swing.ListCellRenderer;
    1416
     
    5355                langCombo.addActionListener(gui.requireRestartAction);
    5456
    55                 gui.display.add(new JLabel(tr("Language")), GBC.std());
    56                 gui.display.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL));
    57                 gui.display.add(langCombo, GBC.eol().fill(GBC.HORIZONTAL));
     57                JPanel panel = null;
     58                for(PreferenceSetting s : gui.settings)
     59                {
     60                        if(s instanceof LafPreference)
     61                                panel = ((LafPreference)s).panel;
     62                }
     63                panel.add(new JLabel(tr("Language")), GBC.std().insets(20, 0, 0, 0));
     64                panel.add(GBC.glue(5,0), GBC.std().fill(GBC.HORIZONTAL));
     65                panel.add(langCombo, GBC.eol().fill(GBC.HORIZONTAL));
     66                panel.add(Box.createVerticalGlue(), GBC.eol().fill(GBC.BOTH));
    5867        }
    5968
  • trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java

    r1065 r1165  
    4444        public final JPanel map = createPreferenceTab("map", I18n.tr("Map Settings"), I18n.tr("Settings for the map projection and data interpretation."));
    4545        public final JPanel audio = createPreferenceTab("audio", I18n.tr("Audio Settings"), I18n.tr("Settings for the audio player and audio markers."));
     46
     47  public final javax.swing.JTabbedPane displaycontent = new javax.swing.JTabbedPane();
    4648
    4749        /**
     
    111113        public PreferenceDialog() {
    112114                super(JTabbedPane.LEFT, JTabbedPane.SCROLL_TAB_LAYOUT);
     115                display.add(displaycontent, GBC.eol().fill(GBC.BOTH));
    113116                for (Iterator<PreferenceSetting> it = settings.iterator(); it.hasNext();) {
    114117                        try {
     
    122125        static {
    123126                // order is important!
     127                settings.add(new DrawingPreference());
     128                settings.add(new ColorPreference());
    124129                settings.add(new LafPreference());
    125130                settings.add(new LanguagePreference());
    126                 settings.add(new DrawingPreference());
    127                 settings.add(new ColorPreference());
    128131                settings.add(new MapPaintPreference());
    129132                settings.add(new ServerAccessPreference());
Note: See TracChangeset for help on using the changeset viewer.