Changeset 172 in josm for src/org


Ignore:
Timestamp:
2006-11-30T00:00:37+01:00 (18 years ago)
Author:
imi
Message:
  • added support for Applet mode again (the basics)
  • added customizable toolbar
  • fixed shortcut for "New Empty Layer"
Location:
src/org/openstreetmap/josm
Files:
1 added
17 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/Main.java

    r169 r172  
    2323import javax.swing.JOptionPane;
    2424import javax.swing.JPanel;
    25 import javax.swing.JToolBar;
    2625import javax.swing.KeyStroke;
    2726import javax.swing.UIManager;
     
    4443import org.openstreetmap.josm.gui.layer.OsmDataLayer;
    4544import org.openstreetmap.josm.gui.layer.OsmDataLayer.CommandQueueListener;
     45import org.openstreetmap.josm.gui.preferences.ToolbarPreferences;
    4646import org.openstreetmap.josm.plugins.PluginException;
    4747import org.openstreetmap.josm.plugins.PluginInformation;
     
    8888         */
    8989        public static PleaseWaitDialog pleaseWaitDlg;
     90
     91        /**
     92         * True, when in applet mode
     93         */
     94        public static boolean applet = false;
     95
     96        /**
     97         * The toolbar preference control to register new actions.
     98         */
     99        public static ToolbarPreferences toolbar = new ToolbarPreferences();
    90100
    91101
     
    163173
    164174                // creating toolbar
    165                 final JToolBar toolBar = new JToolBar();
    166                 toolBar.setFloatable(false);
    167                 toolBar.add(menu.download);
    168                 toolBar.add(menu.upload);
    169                 toolBar.addSeparator();
    170                 toolBar.add(menu.newAction);
    171                 toolBar.add(menu.open);
    172                 toolBar.add(menu.save);
    173                 toolBar.add(menu.gpxExport);
    174                 toolBar.addSeparator();
    175                 toolBar.add(menu.undo);
    176                 toolBar.add(menu.redo);
    177                 toolBar.addSeparator();
    178                 toolBar.add(menu.preferences);
    179                 contentPane.add(toolBar, BorderLayout.NORTH);
     175                contentPane.add(toolbar.control, BorderLayout.NORTH);
    180176
    181177        contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0), "Help");
    182178        contentPane.getActionMap().put("Help", menu.help);
    183179
    184                 contentPane.updateUI();
     180        toolbar.refreshToolbarControl();
     181
     182        toolbar.control.updateUI();
     183        contentPane.updateUI();
    185184        }
    186185
     
    247246
    248247        protected static Rectangle bounds;
    249 
    250248
    251249        private final CommandQueueListener redoUndoListener = new CommandQueueListener(){
     
    346344            return false;
    347345    }
    348        
     346
    349347        private static void downloadFromParamString(final boolean rawGps, String s) {
    350348                if (s.startsWith("http:")) {
  • src/org/openstreetmap/josm/actions/DownloadAction.java

    r158 r172  
    3535import org.openstreetmap.josm.actions.downloadtasks.DownloadOsmTask;
    3636import org.openstreetmap.josm.data.Bounds;
     37import org.openstreetmap.josm.data.Preferences;
    3738import org.openstreetmap.josm.data.coor.LatLon;
    3839import org.openstreetmap.josm.gui.BookmarkList;
    3940import org.openstreetmap.josm.gui.MapView;
    4041import org.openstreetmap.josm.gui.WorldChooser;
    41 import org.openstreetmap.josm.gui.BookmarkList.Bookmark;
    4242import org.openstreetmap.josm.tools.GBC;
    4343
     
    184184                bookmarks.getSelectionModel().addListSelectionListener(new ListSelectionListener(){
    185185                        public void valueChanged(ListSelectionEvent e) {
    186                                 Bookmark b = (Bookmark)bookmarks.getSelectedValue();
     186                                Preferences.Bookmark b = (Preferences.Bookmark)bookmarks.getSelectedValue();
    187187                                for (int i = 0; i < 4; ++i) {
    188188                                        latlon[i].setText(b == null ? "" : ""+b.latlon[i]);
     
    199199                add.addActionListener(new ActionListener(){
    200200                        public void actionPerformed(ActionEvent e) {
    201                                 Bookmark b = readBookmark();
     201                                Preferences.Bookmark b = readBookmark();
    202202                                if (b == null) {
    203203                                        JOptionPane.showMessageDialog(Main.parent, tr("Please enter the desired coordinates first."));
     
    232232
    233233                // Finally: the dialog
    234                 Bookmark b;
     234                Preferences.Bookmark b;
    235235                boolean anySelected = false;
    236236                do {
     
    278278         *              checkbox.
    279279         */
    280         Bookmark readBookmark() {
     280        Preferences.Bookmark readBookmark() {
    281281                try {
    282                         Bookmark b = new Bookmark();
     282                        Preferences.Bookmark b = new Preferences.Bookmark();
    283283                        for (int i = 0; i < 4; ++i) {
    284284                                if (latlon[i].getText().equals(""))
  • src/org/openstreetmap/josm/actions/JosmAction.java

    r155 r172  
    2828                putValue(SHORT_DESCRIPTION, tooltip);
    2929                putValue(MNEMONIC_KEY, mnemonic);
     30                putValue("toolbar", iconName);
     31                Main.toolbar.register(this);
    3032        }
    3133
     
    3739        Main.contentPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke(shortCut, modifier), name);
    3840        Main.contentPane.getActionMap().put(name, this);
     41        putValue("toolbar", iconName);
     42        Main.toolbar.register(this);
    3943        }
    4044
  • src/org/openstreetmap/josm/actions/NewAction.java

    r169 r172  
    44
    55import java.awt.event.ActionEvent;
     6import java.awt.event.InputEvent;
    67import java.awt.event.KeyEvent;
    78
     
    1011public class NewAction extends JosmAction {
    1112
    12 
    1313        public NewAction() {
    14                 super(tr("New"), "new", tr("Create a new map."), KeyEvent.VK_N);
     14                super(tr("New"), "new", tr("Create a new map."), KeyEvent.VK_N, InputEvent.CTRL_DOWN_MASK);
    1515        }
    1616
  • src/org/openstreetmap/josm/actions/RenameLayerAction.java

    r138 r172  
    4343                panel.add(name);
    4444                JCheckBox filerename = new JCheckBox(tr("Also rename the file"));
    45                 panel.add(filerename);
    46                 filerename.setEnabled(file != null);
     45                if (Main.applet) {
     46                        filerename.setEnabled(false);
     47                        filerename.setSelected(false);
     48                } else {
     49                        panel.add(filerename);
     50                        filerename.setEnabled(file != null);
     51                }
    4752                if (filerename.isEnabled())
    4853                        filerename.setSelected(Main.pref.getBoolean("layer.rename-file", true));
  • src/org/openstreetmap/josm/data/Preferences.java

    r171 r172  
    55import java.awt.Color;
    66import java.io.BufferedReader;
     7import java.io.File;
    78import java.io.FileReader;
    89import java.io.FileWriter;
     
    1011import java.io.PrintWriter;
    1112import java.util.ArrayList;
     13import java.util.Collection;
     14import java.util.LinkedList;
    1215import java.util.Map;
    1316import java.util.SortedMap;
     17import java.util.StringTokenizer;
    1418import java.util.TreeMap;
    1519import java.util.Map.Entry;
    1620
     21import org.openstreetmap.josm.Main;
    1722import org.openstreetmap.josm.data.osm.visitor.SimplePaintVisitor;
    1823import org.openstreetmap.josm.tools.ColorHelper;
     
    3338        }
    3439
     40        /**
     41         * Class holding one bookmarkentry.
     42         * @author imi
     43         */
     44        public static class Bookmark {
     45                public String name;
     46                public double[] latlon = new double[4]; // minlat, minlon, maxlat, maxlon
     47                @Override public String toString() {
     48                        return name;
     49                }
     50        }
     51
    3552        public final ArrayList<PreferenceChangedListener> listener = new ArrayList<PreferenceChangedListener>();
    3653
     
    90107        }
    91108
     109
    92110        private final void firePreferenceChanged(final String key, final String value) {
    93111                for (final PreferenceChangedListener l : listener)
    94112                        l.preferenceChanged(key, value);
    95113        }
    96 
    97114
    98115        /**
     
    148165                        properties.put("color.scale", ColorHelper.color2html(Color.white));
    149166        }
     167
     168        public Collection<Bookmark> loadBookmarks() throws IOException {
     169                File bookmarkFile = new File(getPreferencesDir()+"bookmarks");
     170                if (!bookmarkFile.exists())
     171                        bookmarkFile.createNewFile();
     172                BufferedReader in = new BufferedReader(new FileReader(bookmarkFile));
     173
     174                Collection<Bookmark> bookmarks = new LinkedList<Bookmark>();
     175                for (String line = in.readLine(); line != null; line = in.readLine()) {
     176                        StringTokenizer st = new StringTokenizer(line, ",");
     177                        if (st.countTokens() < 5)
     178                                continue;
     179                        Bookmark b = new Bookmark();
     180                        b.name = st.nextToken();
     181                        try {
     182                                for (int i = 0; i < b.latlon.length; ++i)
     183                                        b.latlon[i] = Double.parseDouble(st.nextToken());
     184                                bookmarks.add(b);
     185                        } catch (NumberFormatException x) {
     186                                // line not parsed
     187                        }
     188                }
     189                in.close();
     190                return bookmarks;
     191        }
     192
     193        public void saveBookmarks(Collection<Bookmark> bookmarks) throws IOException {
     194                File bookmarkFile = new File(Main.pref.getPreferencesDir()+"bookmarks");
     195                if (!bookmarkFile.exists())
     196                        bookmarkFile.createNewFile();
     197                PrintWriter out = new PrintWriter(new FileWriter(bookmarkFile));
     198                for (Bookmark b : bookmarks) {
     199                        b.name.replace(',', '_');
     200                        out.print(b.name+",");
     201                        for (int i = 0; i < b.latlon.length; ++i)
     202                                out.print(b.latlon[i]+(i<b.latlon.length-1?",":""));
     203                        out.println();
     204                }
     205                out.close();
     206        }
    150207}
  • src/org/openstreetmap/josm/data/ServerSidePreferences.java

    r101 r172  
    22
    33import java.net.URL;
     4import java.util.Collection;
     5import java.util.Collections;
    46
    57/**
     
    1719                this.serverUrl = serverUrl;
    1820                this.userName = userName;
     21                load();
    1922    }
    2023       
     
    2932        @Override protected void save() {
    3033    }
     34
     35        @Override public Collection<Bookmark> loadBookmarks() {
     36                return Collections.<Bookmark>emptyList();
     37    }
     38
     39        @Override public void saveBookmarks(Collection<Bookmark> bookmarks) {
     40    }
    3141}
  • src/org/openstreetmap/josm/gui/BookmarkList.java

    r161 r172  
    33import static org.openstreetmap.josm.tools.I18n.tr;
    44
    5 import java.io.BufferedReader;
    6 import java.io.File;
    7 import java.io.FileReader;
    8 import java.io.FileWriter;
    95import java.io.IOException;
    10 import java.io.PrintWriter;
    11 import java.util.StringTokenizer;
     6import java.util.Collection;
     7import java.util.LinkedList;
    128
    139import javax.swing.DefaultListModel;
     
    1612
    1713import org.openstreetmap.josm.Main;
     14import org.openstreetmap.josm.data.Preferences;
    1815
    1916/**
     
    2219 */
    2320public class BookmarkList extends JList {
    24 
    25         /**
    26          * Class holding one bookmarkentry.
    27          * @author imi
    28          */
    29         public static class Bookmark {
    30                 public String name;
    31                 public double[] latlon = new double[4]; // minlat, minlon, maxlat, maxlon
    32                 @Override public String toString() {
    33                         return name;
    34                 }
    35         }
    3621
    3722        /**
     
    5035                DefaultListModel model = (DefaultListModel)getModel();
    5136                model.removeAllElements();
    52                 File bookmarkFile = new File(Main.pref.getPreferencesDir()+"bookmarks");
    5337                try {
    54                         if (!bookmarkFile.exists())
    55                                 bookmarkFile.createNewFile();
    56                         BufferedReader in = new BufferedReader(new FileReader(bookmarkFile));
    57 
    58                         for (String line = in.readLine(); line != null; line = in.readLine()) {
    59                                 StringTokenizer st = new StringTokenizer(line, ",");
    60                                 if (st.countTokens() < 5)
    61                                         continue;
    62                                 Bookmark b = new Bookmark();
    63                                 b.name = st.nextToken();
    64                                 try {
    65                                         for (int i = 0; i < b.latlon.length; ++i)
    66                                                 b.latlon[i] = Double.parseDouble(st.nextToken());
    67                                         model.addElement(b);
    68                                 } catch (NumberFormatException x) {
    69                                         // line not parsed
    70                                 }
    71                         }
    72                         in.close();
     38                        for (Preferences.Bookmark b : Main.pref.loadBookmarks())
     39                                model.addElement(b);
    7340                } catch (IOException e) {
     41                        e.printStackTrace();
    7442                        JOptionPane.showMessageDialog(Main.parent, tr("Could not read bookmarks.")+"\n"+e.getMessage());
    7543                }
     
    8048         */
    8149        public void save() {
    82                 File bookmarkFile = new File(Main.pref.getPreferencesDir()+"bookmarks");
    8350                try {
    84                         if (!bookmarkFile.exists())
    85                                 bookmarkFile.createNewFile();
    86                         PrintWriter out = new PrintWriter(new FileWriter(bookmarkFile));
    87                         DefaultListModel m = (DefaultListModel)getModel();
    88                         for (Object o : m.toArray()) {
    89                                 Bookmark b = (Bookmark)o;
    90                                 b.name.replace(',', '_');
    91                                 out.print(b.name+",");
    92                                 for (int i = 0; i < b.latlon.length; ++i)
    93                                         out.print(b.latlon[i]+(i<b.latlon.length-1?",":""));
    94                                 out.println();
    95                         }
    96                         out.close();
     51                        Collection<Preferences.Bookmark> bookmarks = new LinkedList<Preferences.Bookmark>();
     52                        for (Object o : ((DefaultListModel)getModel()).toArray())
     53                                bookmarks.add((Preferences.Bookmark)o);
     54                        Main.pref.saveBookmarks(bookmarks);
    9755                } catch (IOException e) {
    9856                        JOptionPane.showMessageDialog(Main.parent,tr("Could not write bookmark.")+"\n"+e.getMessage());
  • src/org/openstreetmap/josm/gui/MainApplet.java

    r159 r172  
    4040                {"reset-preferences", tr("any"),tr("If specified, reset the configuration instead of reading it.")}
    4141        };
    42        
     42
    4343        private Map<String, Collection<String>> args = new HashMap<String, Collection<String>>();
    4444
     
    7575                }
    7676
     77                Main.applet = true;
    7778                Main.pref = new ServerSidePreferences(getCodeBase(), username);
    78                
     79
    7980                Main.preConstructorInit(args);
    8081                Main.parent = this;
    8182                new MainCaller().postConstructorProcessCmdLine(args);
    82     }
     83               
     84                MainMenu m = Main.main.menu; // shortcut
     85
     86                // remove offending stuff from JOSM (that would break the SecurityManager)
     87                m.remove(m.fileMenu);
     88                m.open.setEnabled(false);
     89                m.exit.setEnabled(false);
     90                m.save.setEnabled(false);
     91                m.saveAs.setEnabled(false);
     92                m.gpxExport.setEnabled(false);
     93        }
    8394
    8495        private Collection<String> readParameter(String s, Collection<String> v) {
  • src/org/openstreetmap/josm/gui/MapFrame.java

    r167 r172  
    5757         * The status line below the map
    5858         */
    59         public MapStatus statusLine;
     59        private MapStatus statusLine;
    6060
    6161        public ConflictDialog conflictDialog;
     
    126126
    127127                // status line below the map
    128                 statusLine = new MapStatus(this);
     128                if (!Main.applet)
     129                statusLine = new MapStatus(this);
    129130        }
    130131
     
    189190                panel.add(this, BorderLayout.CENTER);
    190191                panel.add(toolBarActions, BorderLayout.WEST);
    191                 panel.add(statusLine, BorderLayout.SOUTH);
     192                if (statusLine != null)
     193                        panel.add(statusLine, BorderLayout.SOUTH);
    192194        }
    193195}
  • src/org/openstreetmap/josm/gui/MapStatus.java

    r155 r172  
    232232                // Listen to keyboard/mouse events for pressing/releasing alt key and
    233233                // inform the collector.
    234                 Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener(){
    235                         public void eventDispatched(AWTEvent event) {
    236                                 synchronized (collector) {
    237                                         mouseState.modifiers = ((InputEvent)event).getModifiersEx();
    238                                         if (event instanceof MouseEvent)
    239                                                 mouseState.mousePos = ((MouseEvent)event).getPoint();
    240                                         collector.notify();
    241                                 }
    242                         }
    243                 }, AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK);
     234        Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener(){
     235                public void eventDispatched(AWTEvent event) {
     236                        synchronized (collector) {
     237                                mouseState.modifiers = ((InputEvent)event).getModifiersEx();
     238                                if (event instanceof MouseEvent)
     239                                        mouseState.mousePos = ((MouseEvent)event).getPoint();
     240                                collector.notify();
     241                        }
     242                }
     243        }, AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK);
    244244        }
    245245
  • src/org/openstreetmap/josm/gui/WorldChooser.java

    r155 r172  
    1919
    2020import org.openstreetmap.josm.Main;
     21import org.openstreetmap.josm.data.Preferences;
     22import org.openstreetmap.josm.data.coor.EastNorth;
    2123import org.openstreetmap.josm.data.coor.LatLon;
    22 import org.openstreetmap.josm.data.coor.EastNorth;
    2324import org.openstreetmap.josm.data.projection.Projection;
    24 import org.openstreetmap.josm.gui.BookmarkList.Bookmark;
    2525import org.openstreetmap.josm.gui.SelectionManager.SelectionEnded;
    2626
     
    136136                list.addListSelectionListener(new ListSelectionListener(){
    137137                        public void valueChanged(ListSelectionEvent e) {
    138                                 Bookmark b = (Bookmark)list.getSelectedValue();
     138                                Preferences.Bookmark b = (Preferences.Bookmark)list.getSelectedValue();
    139139                                if (b != null) {
    140140                                        markerMin = getProjection().latlon2eastNorth(new LatLon(b.latlon[0],b.latlon[1]));
  • src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

    r167 r172  
    315315
    316316        @Override public Component[] getMenuEntries() {
     317                if (Main.applet) {
     318                        return new Component[]{
     319                                        new JMenuItem(new LayerListDialog.ShowHideLayerAction(this)),
     320                                        new JMenuItem(new LayerListDialog.DeleteLayerAction(this)),
     321                                        new JSeparator(),
     322                                        new JMenuItem(new RenameLayerAction(associatedFile, this)),
     323                                        new JSeparator(),
     324                                        new JMenuItem(new LayerListPopup.InfoAction(this))};
     325                }
    317326                return new Component[]{
    318327                                new JMenuItem(new LayerListDialog.ShowHideLayerAction(this)),
  • src/org/openstreetmap/josm/gui/layer/RawGpsLayer.java

    r155 r172  
    5656                public ConvertToDataLayerAction() {
    5757                        super(tr("Convert to data layer"), ImageProvider.get("converttoosm"));
    58         }
     58                }
    5959                public void actionPerformed(ActionEvent e) {
    6060                        DataSet ds = new DataSet();
     
    7676                        Main.main.addLayer(new OsmDataLayer(ds, tr("Data Layer"), null));
    7777                        Main.main.removeLayer(RawGpsLayer.this);
    78         }
    79     }
     78                }
     79        }
    8080
    8181        public static class GpsPoint {
     
    8989                }
    9090        }
    91        
     91
    9292        /**
    9393         * A list of ways which containing a list of points.
     
    109109                                        }
    110110                                });
    111             }
     111                        }
    112112                });
    113113        }
     
    130130                        g.setColor(Color.GRAY);
    131131                Point old = null;
    132                
     132
    133133                boolean force = Main.pref.getBoolean("draw.rawgps.lines.force");
    134134                boolean lines = Main.pref.getBoolean("draw.rawgps.lines");
     
    240240                        }
    241241                });
    242                
     242
    243243                JMenuItem tagimage = new JMenuItem(tr("Import images"), ImageProvider.get("tagimages"));
    244244                tagimage.addActionListener(new ActionListener(){
     
    264264                                Main.pref.put("tagimages.lastdirectory", fc.getCurrentDirectory().getPath());
    265265                                GeoImageLayer.create(files, RawGpsLayer.this);
    266             }
     266                        }
    267267
    268268                        private void addRecursiveFiles(LinkedList<File> files, File[] sel) {
     
    273273                                                files.add(f);
    274274                                }
    275             }
     275                        }
    276276                });
    277                
     277
     278                if (Main.applet)
     279                        return new Component[]{
     280                                new JMenuItem(new LayerListDialog.ShowHideLayerAction(this)),
     281                                new JMenuItem(new LayerListDialog.DeleteLayerAction(this)),
     282                                new JSeparator(),
     283                                color,
     284                                line,
     285                                new JMenuItem(new ConvertToDataLayerAction()),
     286                                new JSeparator(),
     287                                new JMenuItem(new RenameLayerAction(associatedFile, this)),
     288                                new JSeparator(),
     289                                new JMenuItem(new LayerListPopup.InfoAction(this))};
    278290                return new Component[]{
    279291                                new JMenuItem(new LayerListDialog.ShowHideLayerAction(this)),
     
    289301                                new JSeparator(),
    290302                                new JMenuItem(new LayerListPopup.InfoAction(this))};
    291     }
     303        }
    292304
    293305        public void preferenceChanged(String key, String newValue) {
  • src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java

    r168 r172  
    88import java.awt.event.ActionListener;
    99import java.util.Collection;
     10import java.util.Iterator;
    1011import java.util.LinkedList;
    1112
     
    8485        public PreferenceDialog() {
    8586                super(JTabbedPane.LEFT, JTabbedPane.SCROLL_TAB_LAYOUT);
    86                 for (PreferenceSetting setting : settings)
    87                         setting.addGui(this);
     87                for (Iterator<PreferenceSetting> it = settings.iterator(); it.hasNext();) {
     88                        try {
     89                    it.next().addGui(this);
     90            } catch (SecurityException e) {
     91                it.remove();
     92            }
     93                }
    8894        }
    8995
     
    98104                settings.add(new AnnotationPresetPreference());
    99105                settings.add(new PluginPreference());
     106                settings.add(Main.toolbar);
    100107               
    101108                for (PluginProxy plugin : Main.plugins) {
  • src/org/openstreetmap/josm/io/OsmConnection.java

    r153 r172  
    3737        protected HttpURLConnection activeConnection;
    3838
    39         private static OsmAuth authentication;
     39        private static OsmAuth authentication = new OsmAuth();
    4040        /**
    4141         * Initialize the http defaults and the authenticator.
    4242         */
    4343        static {
    44                 HttpURLConnection.setFollowRedirects(true);
    45                 Authenticator.setDefault(authentication = new OsmAuth());
     44                //TODO: refactor this crap (maybe just insert the damn auth http-header by yourself)
     45                try {
     46                HttpURLConnection.setFollowRedirects(true);
     47                Authenticator.setDefault(authentication);
     48        } catch (SecurityException e) {
     49        }
    4650        }
    4751
  • src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java

    r153 r172  
    6666                                                if (!f.exists())
    6767                                                        f = new File("bin/org/openstreetmap/josm/Main.class");
     68                                                if (!f.exists())
     69                                                        f = new File("build/org/openstreetmap/josm/Main.class");
    6870                                                if (f.exists()) {
    6971                                                        DateFormat sdf = SimpleDateFormat.getDateTimeInstance();
Note: See TracChangeset for help on using the changeset viewer.