Changeset 75 in josm for src/org/openstreetmap/josm/data


Ignore:
Timestamp:
2006-03-29T19:11:37+02:00 (18 years ago)
Author:
imi
Message:
  • added editable colors
  • changed preferences format (again)
Location:
src/org/openstreetmap/josm/data
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/org/openstreetmap/josm/data/Preferences.java

    r74 r75  
    11package org.openstreetmap.josm.data;
    22
     3import java.awt.Color;
     4import java.io.BufferedReader;
    35import java.io.FileReader;
    46import java.io.FileWriter;
     
    68import java.io.PrintWriter;
    79import java.util.ArrayList;
     10import java.util.Collection;
     11import java.util.LinkedList;
    812import java.util.SortedMap;
    913import java.util.TreeMap;
    1014import java.util.Map.Entry;
    1115
    12 import org.openstreetmap.josm.tools.XmlWriter;
    13 import org.xml.sax.Attributes;
    14 import org.xml.sax.SAXException;
    15 
    16 import uk.co.wilson.xml.MinML2;
     16import org.openstreetmap.josm.data.osm.visitor.SimplePaintVisitor;
     17import org.openstreetmap.josm.tools.ColorHelper;
    1718
    1819
     
    5960                return properties.get(key);
    6061        }
     62        synchronized public String get(String key, String def) {
     63                String prop = properties.get(key);
     64                if (prop == null || prop.equals(""))
     65                        return def;
     66                return prop;
     67        }
     68        synchronized public Collection<Entry<String, String>> getAllPrefix(String prefix) {
     69                LinkedList<Entry<String,String>> all = new LinkedList<Entry<String,String>>();
     70                for (Entry<String,String> e : properties.entrySet())
     71                        if (e.getKey().startsWith(prefix))
     72                                all.add(e);
     73                return all;
     74        }
    6175        synchronized public boolean getBoolean(String key) {
    6276                return properties.containsKey(key) ? Boolean.parseBoolean(properties.get(key)) : false;
    6377        }
    64        
    65        
     78
     79
    6680        synchronized public void put(String key, String value) {
    6781                if (value == null)
     
    8397        public void save() throws IOException {
    8498                PrintWriter out = new PrintWriter(new FileWriter(getPreferencesDir()+"preferences"));
    85                 out.println(XmlWriter.header());
    86                 out.println("<josm>");
    87                 for (Entry<String, String> e : properties.entrySet()) {
    88                         out.print("  <"+e.getKey());
     99                for (Entry<String, String> e : properties.entrySet())
    89100                        if (!e.getValue().equals(""))
    90                                 out.print(" value='"+XmlWriter.encode(e.getValue())+"'");
    91                         out.println(" />");
    92                 }
    93                 out.println("</josm>");
     101                                out.println(e.getKey()+"="+e.getValue());
    94102                out.close();
    95103        }
     
    97105
    98106        public void load() throws IOException {
    99                 MinML2 reader = new MinML2(){
    100                         @Override public void startElement(String ns, String name, String qName, Attributes attr) {
    101                                 if (name.equals("josm-settings"))
    102                                         throw new RuntimeException("old version");
    103                                 String v = attr.getValue("value");
    104                                 if (!name.equals("josm"))
    105                                         properties.put(name, v == null ? "" : v);
    106                         }
    107                 };
    108                 try {
    109                         reader.parse(new FileReader(getPreferencesDir()+"preferences"));
    110                 } catch (SAXException e) {
    111                         e.printStackTrace();
    112                         throw new IOException("Error in preferences file");
     107                properties.clear();
     108                BufferedReader in = new BufferedReader(new FileReader(getPreferencesDir()+"preferences"));
     109                int lineNumber = 0;
     110                for (String line = in.readLine(); line != null; line = in.readLine(), lineNumber++) {
     111                        int i = line.indexOf('=');
     112                        if (i == -1 || i == 0)
     113                                throw new IOException("Malformed config file at line "+lineNumber);
     114                        properties.put(line.substring(0,i), line.substring(i+1));
    113115                }
    114116        }
     
    118120                properties.put("laf", "javax.swing.plaf.metal.MetalLookAndFeel");
    119121                properties.put("projection", "org.openstreetmap.josm.data.projection.Epsg4263");
    120                 properties.put("osmDataServer", "http://www.openstreetmap.org/api");
     122                properties.put("osm-server.url", "http://www.openstreetmap.org/api");
     123                properties.put("color.node", ColorHelper.color2html(Color.red));
     124                properties.put("color.segment", ColorHelper.color2html(SimplePaintVisitor.darkgreen));
     125                properties.put("color.way", ColorHelper.color2html(SimplePaintVisitor.darkblue));
     126                properties.put("color.incomplete way", ColorHelper.color2html(SimplePaintVisitor.darkerblue));
     127                properties.put("color.selected", ColorHelper.color2html(Color.white));
     128                properties.put("color.gps point", ColorHelper.color2html(Color.gray));
    121129        }
    122130}
  • src/org/openstreetmap/josm/data/osm/visitor/SimplePaintVisitor.java

    r71 r75  
    55import java.awt.Point;
    66
     7import org.openstreetmap.josm.Main;
    78import org.openstreetmap.josm.data.osm.LineSegment;
    89import org.openstreetmap.josm.data.osm.Node;
    910import org.openstreetmap.josm.data.osm.Way;
    1011import org.openstreetmap.josm.gui.NavigatableComponent;
     12import org.openstreetmap.josm.tools.ColorHelper;
    1113
    1214/**
     
    1820public class SimplePaintVisitor implements Visitor {
    1921
    20         private final static Color darkerblue = new Color(0,0,96);
    21         private final static Color darkblue = new Color(0,0,128);
    22         private final static Color darkgreen = new Color(0,128,0);
     22        public final static Color darkerblue = new Color(0,0,96);
     23        public final static Color darkblue = new Color(0,0,128);
     24        public final static Color darkgreen = new Color(0,128,0);
    2325
    2426        /**
     
    4850         */
    4951        public void visit(Node n) {
    50                 drawNode(n, n.isSelected() ? Color.WHITE : Color.RED);
     52                drawNode(n, n.isSelected() ? getPreferencesColor("selected", Color.WHITE)
     53                                : getPreferencesColor("node", Color.RED));
    5154        }
    5255
     
    5659         */
    5760        public void visit(LineSegment ls) {
    58                 drawLineSegment(ls, darkgreen);
     61                drawLineSegment(ls, getPreferencesColor("segment", darkgreen));
    5962        }
    6063
     
    6568        public void visit(Way t) {
    6669                // only to overwrite with blue
    67                 Color wayColor = darkblue;
     70                Color wayColor = getPreferencesColor("way", darkblue);
    6871                for (LineSegment ls : t.segments) {
    6972                        if (ls.incomplete) {
    70                                 wayColor = darkerblue;
     73                                wayColor = getPreferencesColor("incomplete way", darkerblue);
    7174                                break;
    7275                        }
     
    7477                for (LineSegment ls : t.segments)
    7578                        if (!ls.isSelected()) // selected already in good color
    76                                 drawLineSegment(ls, t.isSelected() ? Color.WHITE : wayColor);
     79                                drawLineSegment(ls, t.isSelected() ? getPreferencesColor("selected", Color.WHITE) : wayColor);
    7780        }
    7881
     
    9699                        return;
    97100                if (ls.isSelected())
    98                         col = Color.WHITE;
     101                        col = getPreferencesColor("selected", Color.WHITE);
    99102                g.setColor(col);
    100103                Point p1 = nc.getPoint(ls.from.eastNorth);
     
    102105                g.drawLine(p1.x, p1.y, p2.x, p2.y);
    103106        }
     107       
     108        private Color getPreferencesColor(String colName, Color def) {
     109                String colStr = Main.pref.get("color."+colName);
     110                if (colStr.equals(""))
     111                        return def;
     112                return ColorHelper.html2color(colStr);
     113        }
    104114}
Note: See TracChangeset for help on using the changeset viewer.