Changeset 3527 in josm for trunk/src/org/openstreetmap/josm/gui
- Timestamp:
- 2010-09-14T11:26:51+02:00 (16 years ago)
- Location:
- trunk/src/org/openstreetmap/josm/gui
- Files:
-
- 2 edited
-
BookmarkList.java (modified) (5 diffs)
-
download/BookmarkSelection.java (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/BookmarkList.java
r2626 r3527 6 6 import java.awt.Component; 7 7 import java.io.IOException; 8 import java.io.BufferedReader; 9 import java.io.InputStreamReader; 10 import java.io.File; 11 import java.io.FileInputStream; 12 import java.io.FileOutputStream; 13 import java.io.OutputStreamWriter; 14 import java.io.PrintWriter; 15 import java.util.Arrays; 16 import java.util.ArrayList; 8 17 import java.util.Collection; 18 import java.util.Collections; 9 19 import java.util.LinkedList; 20 import java.util.regex.Matcher; 21 import java.util.regex.Pattern; 10 22 11 23 import javax.swing.DefaultListModel; … … 19 31 import org.openstreetmap.josm.Main; 20 32 import org.openstreetmap.josm.data.Bounds; 21 import org.openstreetmap.josm.data.Preferences;22 import org.openstreetmap.josm.data.Preferences.Bookmark;23 33 import org.openstreetmap.josm.tools.ImageProvider; 24 34 … … 30 40 31 41 /** 42 * Class holding one bookmarkentry. 43 * @author imi 44 */ 45 public static class Bookmark implements Comparable<Bookmark> { 46 private String name; 47 private Bounds area; 48 49 public Bookmark(Collection<String> list) throws NumberFormatException, IllegalArgumentException { 50 ArrayList<String> array = new ArrayList<String>(list); 51 if(array.size() < 5) 52 throw new IllegalArgumentException(tr("Wrong number of arguments for bookmark")); 53 name = array.get(0); 54 area = new Bounds(Double.parseDouble(array.get(1)), Double.parseDouble(array.get(2)), 55 Double.parseDouble(array.get(3)), Double.parseDouble(array.get(4))); 56 } 57 58 public Bookmark() { 59 area = null; 60 name = null; 61 } 62 63 public Bookmark(Bounds area) { 64 this.area = area; 65 } 66 67 @Override public String toString() { 68 return name; 69 } 70 71 public int compareTo(Bookmark b) { 72 return name.toLowerCase().compareTo(b.name.toLowerCase()); 73 } 74 75 public Bounds getArea() { 76 return area; 77 } 78 79 public String getName() { 80 return name; 81 } 82 83 public void setName(String name) { 84 this.name = name; 85 } 86 87 public void setArea(Bounds area) { 88 this.area = area; 89 } 90 } 91 92 /** 32 93 * Create a bookmark list as well as the Buttons add and remove. 33 94 */ … … 45 106 DefaultListModel model = (DefaultListModel)getModel(); 46 107 model.removeAllElements(); 47 try { 48 for (Preferences.Bookmark b : Main.pref.loadBookmarks()) { 108 Collection<Collection<String>> args = Main.pref.getArray("bookmarks", null); 109 if(args != null) { 110 LinkedList<Bookmark> bookmarks = new LinkedList<Bookmark>(); 111 for(Collection<String> entry : args) { 112 try { 113 bookmarks.add(new Bookmark(entry)); 114 } 115 catch(Exception e) { 116 System.err.println(tr("Error reading bookmark entry: %s", e.getMessage())); 117 } 118 } 119 Collections.sort(bookmarks); 120 for (Bookmark b : bookmarks) { 49 121 model.addElement(b); 50 122 } 51 } catch (IOException e) { 52 e.printStackTrace(); 53 JOptionPane.showMessageDialog( 54 Main.parent, 55 tr("<html>Could not read bookmarks from<br>''{0}''<br>Error was: {1}</html>", 56 Main.pref.getBookmarksFile(), 57 e.getMessage() 58 ), 59 tr("Error"), 60 JOptionPane.ERROR_MESSAGE 61 ); 123 } 124 else if(!Main.applet) { /* FIXME: remove else clause after spring 2011 */ 125 File bookmarkFile = new File(Main.pref.getPreferencesDir(),"bookmarks"); 126 try { 127 LinkedList<Bookmark> bookmarks = new LinkedList<Bookmark>(); 128 if (bookmarkFile.exists()) { 129 System.out.println("Try loading obsolete bookmarks file"); 130 BufferedReader in = new BufferedReader(new InputStreamReader( 131 new FileInputStream(bookmarkFile), "utf-8")); 132 133 for (String line = in.readLine(); line != null; line = in.readLine()) { 134 Matcher m = Pattern.compile("^(.+)[,\u001e](-?\\d+.\\d+)[,\u001e](-?\\d+.\\d+)[,\u001e](-?\\d+.\\d+)[,\u001e](-?\\d+.\\d+)$").matcher(line); 135 if (!m.matches() || m.groupCount() != 5) { 136 System.err.println(tr("Error: Unexpected line ''{0}'' in bookmark file ''{1}''",line, bookmarkFile.toString())); 137 continue; 138 } 139 Bookmark b = new Bookmark(); 140 b.setName(m.group(1)); 141 double[] values= new double[4]; 142 for (int i = 0; i < 4; ++i) { 143 try { 144 values[i] = Double.parseDouble(m.group(i+2)); 145 } catch(NumberFormatException e) { 146 System.err.println(tr("Error: Illegal double value ''{0}'' on line ''{1}'' in bookmark file ''{2}''",m.group(i+2),line, bookmarkFile.toString())); 147 continue; 148 } 149 } 150 b.setArea(new Bounds(values)); 151 bookmarks.add(b); 152 } 153 in.close(); 154 Collections.sort(bookmarks); 155 for (Bookmark b : bookmarks) { 156 model.addElement(b); 157 } 158 save(); 159 System.out.println("Removing obsolete bookmarks file"); 160 bookmarkFile.delete(); 161 } 162 } catch (IOException e) { 163 e.printStackTrace(); 164 JOptionPane.showMessageDialog( 165 Main.parent, 166 tr("<html>Could not read bookmarks from<br>''{0}''<br>Error was: {1}</html>", 167 bookmarkFile.toString(), 168 e.getMessage() 169 ), 170 tr("Error"), 171 JOptionPane.ERROR_MESSAGE 172 ); 173 } 62 174 } 63 175 } … … 67 179 */ 68 180 public void save() { 69 try { 70 Collection<Preferences.Bookmark> bookmarks = new LinkedList<Preferences.Bookmark>(); 71 for (Object o : ((DefaultListModel)getModel()).toArray()) { 72 bookmarks.add((Preferences.Bookmark)o); 73 } 74 Main.pref.saveBookmarks(bookmarks); 75 } catch (IOException e) { 76 JOptionPane.showMessageDialog( 77 Main.parent, 78 tr("<html>Could not write bookmark.<br>{0}</html>", e.getMessage()), 79 tr("Error"), 80 JOptionPane.ERROR_MESSAGE 81 ); 82 } 181 LinkedList<Collection<String>> coll = new LinkedList<Collection<String>>(); 182 for (Object o : ((DefaultListModel)getModel()).toArray()) { 183 String[] array = new String[5]; 184 Bookmark b = (Bookmark)o; 185 array[0] = b.getName(); 186 Bounds area = b.getArea(); 187 array[1] = String.valueOf(area.getMin().lat()); 188 array[2] = String.valueOf(area.getMin().lon()); 189 array[3] = String.valueOf(area.getMax().lat()); 190 array[4] = String.valueOf(area.getMax().lon()); 191 coll.add(Arrays.asList(array)); 192 } 193 Main.pref.putArray("bookmarks", coll); 83 194 } 84 195 -
trunk/src/org/openstreetmap/josm/gui/download/BookmarkSelection.java
r2904 r3527 25 25 import org.openstreetmap.josm.data.Bounds; 26 26 import org.openstreetmap.josm.data.Preferences; 27 import org.openstreetmap.josm.data.Preferences.Bookmark;28 27 import org.openstreetmap.josm.data.coor.CoordinateFormat; 29 28 import org.openstreetmap.josm.gui.BookmarkList; 29 import org.openstreetmap.josm.gui.BookmarkList.Bookmark; 30 30 import org.openstreetmap.josm.gui.JMultilineLabel; 31 31 import org.openstreetmap.josm.tools.ImageProvider; … … 114 114 bookmarks.getSelectionModel().addListSelectionListener(new ListSelectionListener() { 115 115 public void valueChanged(ListSelectionEvent e) { 116 Preferences.Bookmark b = (Preferences.Bookmark)bookmarks.getSelectedValue();116 Bookmark b = (Bookmark)bookmarks.getSelectedValue(); 117 117 if (b != null) { 118 118 gui.boundingBoxChanged(b.getArea(),BookmarkSelection.this);
Note:
See TracChangeset
for help on using the changeset viewer.
