Changeset 181 in josm


Ignore:
Timestamp:
2006-12-31T16:36:27+01:00 (13 years ago)
Author:
imi
Message:
  • added select all / unselect all actions
  • added option to display the segment order number of a segment
  • fixed freeze when holding down middle button and moving mouse too fast
  • added warning when user deletes a layer
Files:
4 added
7 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java

    r167 r181  
    8585                }
    8686
    87                 for (Segment ls : w.segments)
     87                int orderNumber = 0;
     88                for (Segment ls : w.segments) {
     89                        orderNumber++;
    8890                        if (!ls.selected) // selected already in good color
    8991                                drawSegment(ls, w.selected ? getPreferencesColor("selected", Color.WHITE) : wayColor);
     92                        if (Main.pref.getBoolean("draw.segment.order_number"))
     93                                drawOrderNumber(ls, orderNumber);
     94                }
    9095        }
     96
     97        /**
     98         * Draw an number of the order of the segment within the parents way
     99         */
     100        private void drawOrderNumber(Segment ls, int orderNumber) {
     101                int strlen = (""+orderNumber).length();
     102                Point p1 = nc.getPoint(ls.from.eastNorth);
     103                Point p2 = nc.getPoint(ls.to.eastNorth);
     104                int x = (p1.x+p2.x)/2 - 4*strlen;
     105                int y = (p1.y+p2.y)/2 + 4;
     106                Color c = g.getColor();
     107                g.setColor(Color.black);
     108                g.fillRect(x-1,y-12,8*strlen+1,14);
     109                g.setColor(c);
     110                g.drawString(""+orderNumber,x,y);
     111    }
    91112
    92113        /**
  • src/org/openstreetmap/josm/gui/MainMenu.java

    r175 r181  
    2323import org.openstreetmap.josm.actions.SaveAction;
    2424import org.openstreetmap.josm.actions.SaveAsAction;
     25import org.openstreetmap.josm.actions.SelectAllAction;
    2526import org.openstreetmap.josm.actions.UndoAction;
     27import org.openstreetmap.josm.actions.UnselectAllAction;
    2628import org.openstreetmap.josm.actions.UploadAction;
    2729
     
    3840        public final UndoAction undo = new UndoAction();
    3941        public final RedoAction redo = new RedoAction();
     42        public final Action selectAll = new SelectAllAction();
     43        public final Action unselectAll = new UnselectAllAction();
    4044        public final NewAction newAction = new NewAction();
    4145        public final OpenAction open = new OpenAction();
     
    7781                editMenu.add(redo);
    7882                editMenu.addSeparator();
     83                editMenu.add(selectAll);
     84                editMenu.add(unselectAll);
     85                editMenu.addSeparator();
    7986                editMenu.add(reverseSegment);
    8087                editMenu.add(alignInCircle);
  • src/org/openstreetmap/josm/gui/MapStatus.java

    r172 r181  
    55import java.awt.AWTEvent;
    66import java.awt.Cursor;
     7import java.awt.EventQueue;
    78import java.awt.Font;
    89import java.awt.GridBagLayout;
     
    1415import java.awt.event.MouseEvent;
    1516import java.awt.event.MouseMotionListener;
     17import java.lang.reflect.InvocationTargetException;
    1618import java.util.Collection;
    1719import java.util.ConcurrentModificationException;
     
    133135                                        // Popup Information
    134136                                        if ((ms.modifiers & MouseEvent.BUTTON2_DOWN_MASK) != 0 && osms != null) {
    135                                                 if (popup != null)
    136                                                         popup.hide();
     137                                                if (popup != null) {
     138                                                        try {
     139                                    EventQueue.invokeAndWait(new Runnable() {
     140                                        public void run() {
     141                                                popup.hide();
     142                                        }
     143                                    });
     144                            } catch (InterruptedException e) {
     145                            } catch (InvocationTargetException e) {
     146                                throw new RuntimeException(e);
     147                            }
     148                                                }
    137149
    138150                                                JPanel c = new JPanel(new GridBagLayout());
     
    169181                                                Point p = mv.getLocationOnScreen();
    170182                                                popup = PopupFactory.getSharedInstance().getPopup(mv, c, p.x+ms.mousePos.x+16, p.y+ms.mousePos.y+16);
    171                                                 popup.show();
     183                                                final Popup staticPopup = popup;
     184                                                EventQueue.invokeLater(new Runnable(){
     185                                                        public void run() {
     186                                                                staticPopup.show();
     187                            }
     188                                                });
    172189                                        } else if (popup != null) {
    173                                                 popup.hide();
     190                                                final Popup staticPopup = popup;
    174191                                                popup = null;
     192                                                EventQueue.invokeLater(new Runnable(){
     193                                                        public void run() {
     194                                                                staticPopup.hide();
     195                            }
     196                                                });
    175197                                        }
    176198                                } catch (ConcurrentModificationException x) {
  • src/org/openstreetmap/josm/gui/dialogs/LayerListDialog.java

    r158 r181  
    3434import org.openstreetmap.josm.gui.MapView.LayerChangeListener;
    3535import org.openstreetmap.josm.gui.layer.Layer;
     36import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     37import org.openstreetmap.josm.tools.DontShowAgainInfo;
    3638import org.openstreetmap.josm.tools.ImageProvider;
    3739import org.openstreetmap.josm.tools.ImageProvider.OverlayPosition;
     
    6567                public void actionPerformed(ActionEvent e) {
    6668                        int sel = instance.getSelectedIndex();
    67                         if (layer != null)
    68                                 Main.main.removeLayer(layer);
    69                         else
    70                                 Main.main.removeLayer((Layer)instance.getSelectedValue());
     69                        Layer l = layer != null ? layer : (Layer)instance.getSelectedValue();
     70                        if (l instanceof OsmDataLayer && !DontShowAgainInfo.show("delete_layer", tr("Do you really want to delete the whole layer?")))
     71                                return;
     72                        Main.main.removeLayer(l);
    7173                        if (sel >= instance.getModel().getSize())
    7274                                sel = instance.getModel().getSize()-1;
  • src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java

    r168 r181  
    1717        private JCheckBox largeGpsPoints = new JCheckBox(tr("Draw large GPS points."));
    1818        private JCheckBox directionHint = new JCheckBox(tr("Draw Direction Arrows"));
     19        private JCheckBox segmentOrderNumber = new JCheckBox(tr("Draw segment order numbers"));
    1920
    2021        public void addGui(PreferenceDialog gui) {
     
    4647                directionHint.setSelected(Main.pref.getBoolean("draw.segment.direction"));
    4748                gui.display.add(directionHint, GBC.eop().insets(20,0,0,0));
     49               
     50                // segment order number
     51                segmentOrderNumber.setToolTipText(tr("Draw the order numbers of all segments within their way."));
     52                segmentOrderNumber.setSelected(Main.pref.getBoolean("draw.segment.order_number"));
     53                gui.display.add(segmentOrderNumber, GBC.eop().insets(20,0,0,0));
    4854        }
    4955
     
    5359                Main.pref.put("draw.rawgps.large", largeGpsPoints.isSelected());
    5460                Main.pref.put("draw.segment.direction", directionHint.isSelected());
     61                Main.pref.put("draw.segment.order_number", segmentOrderNumber.isSelected());
    5562    }
    5663}
  • src/org/openstreetmap/josm/gui/preferences/PluginPreference.java

    r168 r181  
    2727public class PluginPreference implements PreferenceSetting {
    2828
    29         private Map<PluginInformation, Boolean> pluginMap = new HashMap<PluginInformation, Boolean>();
     29        private Map<PluginInformation, Boolean> pluginMap;
    3030
    3131        public void addGui(final PreferenceDialog gui) {
     32                pluginMap = new HashMap<PluginInformation, Boolean>();
    3233                Box pluginPanel = Box.createVerticalBox();
    3334                Collection<PluginInformation> availablePlugins = new LinkedList<PluginInformation>();
  • src/org/openstreetmap/josm/tools/DontShowAgainInfo.java

    r180 r181  
    77
    88import javax.swing.JCheckBox;
     9import javax.swing.JLabel;
    910import javax.swing.JOptionPane;
    1011import javax.swing.JPanel;
     
    1314
    1415public class DontShowAgainInfo {
     16
     17        public static boolean show(String prefKey, String msg) {
     18                return show(prefKey, new JLabel(msg));
     19        }
    1520
    1621        public static boolean show(String prefKey, Container msg) {
Note: See TracChangeset for help on using the changeset viewer.