Changeset 2618 in josm


Ignore:
Timestamp:
2009-12-12T16:38:28+01:00 (10 years ago)
Author:
Gubaer
Message:

fixed #4153: Upload dialog's "Upload to '$URL'" isn't updated when the API URL is changed in the preferences
fixed #3642: JOSM offers to use open changeset from a different server

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/.classpath

    r2508 r2618  
    44        <classpathentry kind="src" path="test/unit"/>
    55        <classpathentry kind="src" path="test/functional"/>
    6         <classpathentry excluding="build/|dist/|src/|test/|test/unit/|test/functional/" including="data/|images/|presets/|styles/" kind="src" path=""/>
    7         <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JDK 5"/>
     6        <classpathentry excluding="build/|dist/|src/|test/|test/unit/|test/functional/|test/build/" including="images/|presets/|styles/" kind="src" path=""/>
    87        <classpathentry kind="lib" path="lib/metadata-extractor-2.3.1-nosun.jar"/>
    98        <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
     
    1817        <classpathentry kind="lib" path="test/lib/fest/jcip-annotations-1.0.jar"/>
    1918        <classpathentry kind="lib" path="test/lib/fest/MRJToolkitStubs-1.0.jar"/>
     19        <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
     20        <classpathentry exported="true" kind="con" path="GROOVY_SUPPORT"/>
     21        <classpathentry kind="lib" path="test/build"/>
    2022        <classpathentry kind="output" path="bin"/>
    2123</classpath>
  • trunk/.project

    r2453 r2618  
    2323        </buildSpec>
    2424        <natures>
     25                <nature>org.eclipse.jdt.groovy.core.groovyNature</nature>
    2526                <nature>org.eclipse.jdt.core.javanature</nature>
    2627        </natures>
  • trunk/.settings/org.eclipse.jdt.core.prefs

    r2579 r2618  
    1 #Sun Dec 06 09:20:07 CET 2009
     1#Tue Dec 01 19:01:34 CET 2009
    22eclipse.preferences.version=1
    33org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
     
    1111org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
    1212org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
    13 org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
    14 org.eclipse.jdt.core.compiler.problem.deadCode=warning
    1513org.eclipse.jdt.core.compiler.problem.deprecation=warning
    1614org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
     
    3230org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
    3331org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
    34 org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
    35 org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=warning
     32org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
    3633org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
    37 org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=warning
    3834org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
    3935org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
     
    318314org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
    319315org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
     316org.eclipse.jdt.core.formatter.join_lines_in_comments=true
     317org.eclipse.jdt.core.formatter.join_wrapped_lines=true
    320318org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
    321319org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
  • trunk/build.xml

    r2507 r2618  
    1414        <property name="src.dir" value="src" />
    1515        <property name="build.dir" value="build"/>
    16     <!-- build parameter: compression level (ant -Dclevel=N)
     16        <!-- build parameter: compression level (ant -Dclevel=N)
    1717             N ranges from 0 (no compression) to 9 (maximum compression)
    1818             default: 9 -->
    19     <condition property="clevel" value="${clevel}" else="9">
    20         <isset property="clevel" />
    21     </condition>
     19        <condition property="clevel" value="${clevel}" else="9">
     20                <isset property="clevel" />
     21        </condition>
    2222
    2323        <!-- Java classpath addition (all jar files to compile tests with this) -->
     
    2828        </path>
    2929
    30        
     30
    3131        <!--
    3232          ** Used by Eclipse ant builder for updating
    3333          ** the REVISION file used by JOSM
    34         -->       
     34        -->
    3535        <target name="create-revision-eclipse">
    3636                <property name="revision.dir" value="bin"/>
     
    4040        <!--
    4141          ** Creates the REVISION file to be included in the distribution
    42           -->     
     42          -->
    4343        <target name="create-revision">
    4444                <property name="revision.dir" value="${build.dir}"/>
    4545                <exec append="false" output="REVISION.XML" executable="svn" failifexecutionfails="false">
    46                                 <env key="LANG" value="C"/>
    47                                 <arg value="info"/>
    48                                 <arg value="--xml"/>
    49                                 <arg value="."/>
     46                        <env key="LANG" value="C"/>
     47                        <arg value="info"/>
     48                        <arg value="--xml"/>
     49                        <arg value="."/>
    5050                </exec>
    5151                <xmlproperty file="REVISION.XML" prefix="version" keepRoot="false" collapseAttributes="true"/>
    5252                <delete file="REVISION.XML" />
    5353                <tstamp>
    54                       <format property="build.tstamp" pattern="yyyy-MM-dd HH:mm:ss"/>
     54                        <format property="build.tstamp" pattern="yyyy-MM-dd HH:mm:ss"/>
    5555                </tstamp>
    5656
     
    6262Is-Local-Build: true
    6363Build-Date: ${build.tstamp}             
    64 </echo>                                         
     64</echo>
    6565        </target>
    66                
     66
    6767
    6868        <target name="dist" depends="compile,create-revision">
     
    7878                <property name="version.entry.commit.revision" value="UNKNOWN"/>
    7979                <property name="version.entry.commit.date" value="UNKNOWN"/>
    80             <echo>Revision ${version.entry.commit.revision}</echo>
     80                <echo>Revision ${version.entry.commit.revision}</echo>
    8181                <copy file="CONTRIBUTION" todir="build"/>
    8282                <copy file="README" todir="build"/>
    8383                <copy file="LICENSE" todir="build"/>
    8484
    85         <!-- styles -->
     85                <!-- styles -->
    8686                <copy file="styles/standard/elemstyles.xml" todir="build/styles/standard"/>
    8787
    88         <!-- css-->
     88                <!-- css-->
    8989                <copy file="src/org/openstreetmap/josm/gui/help/help-browser.css" todir="build/org/openstreetmap/josm/gui/help"/>
    9090
     
    9292                <delete file="dist/josm-custom.jar"/>
    9393                <jar destfile="dist/josm-custom.jar" basedir="build" level="${clevel}">
    94         <!-- add attribute excludes="**/*BZip2*,**/*Bzip2*" to create a non-bzip2 supporting jar -->
     94                        <!-- add attribute excludes="**/*BZip2*,**/*Bzip2*" to create a non-bzip2 supporting jar -->
    9595                        <manifest>
    9696                                <attribute name="Main-class" value="JOSM" />
     
    166166                        <compilerarg value="-Xlint:unchecked"/>
    167167                </javac>
     168                <javac srcdir="${src.dir}:${test.dir}/functional" classpathref="test.classpath" destdir="${test.dir}/${build.dir}"
     169                                                target="1.5" source="1.5" debug="on" encoding="UTF-8">
     170                        <compilerarg value="-Xlint:deprecation"/>
     171                        <compilerarg value="-Xlint:unchecked"/>
     172                </javac>
    168173        </target>
    169174
    170     <target name="test" depends="test-compile">
    171         <junit printsummary="yes">
    172                 <sysproperty key="josm.home" value="${test.dir}/config/unit-josm.home"/>
    173             <classpath>
    174                 <path refid="test.classpath"/>
    175                 <pathelement path="${test.dir}/${build.dir}"/>
    176                 <pathelement path="${test.dir}/config"/>
    177             </classpath>
    178             <formatter type="plain"/>
    179             <batchtest fork="no" todir="${test.dir}/report">
    180                 <fileset dir="${test.dir}/unit" includes="**/*.java"/>
    181             </batchtest>
    182         </junit>
    183     </target>
     175        <target name="test" depends="test-compile">
     176                <junit printsummary="yes">
     177                        <sysproperty key="josm.home" value="${test.dir}/config/unit-josm.home"/>
     178                        <classpath>
     179                                <path refid="test.classpath"/>
     180                                <pathelement path="${test.dir}/${build.dir}"/>
     181                                <pathelement path="${test.dir}/config"/>
     182                        </classpath>
     183                        <formatter type="plain"/>
     184                        <batchtest fork="no" todir="${test.dir}/report">
     185                                <fileset dir="${test.dir}/unit" includes="**/*.java"/>
     186                        </batchtest>
     187                </junit>
     188        </target>
    184189
    185190</project>
  • trunk/src/org/openstreetmap/josm/data/Preferences.java

    r2542 r2618  
    2424import java.util.TreeMap;
    2525import java.util.Map.Entry;
     26import java.util.concurrent.CopyOnWriteArrayList;
    2627import java.util.regex.Matcher;
    2728import java.util.regex.Pattern;
     
    5051    private File preferencesDirFile = null;
    5152
     53    public static interface PreferenceChangeEvent{
     54        public String getKey();
     55        public String getOldValue();
     56        public String getNewValue();
     57    }
     58
    5259    public static interface PreferenceChangedListener {
    53         void preferenceChanged(String key, String newValue);
     60        void preferenceChanged(PreferenceChangeEvent e);
     61    }
     62
     63    private static class DefaultPreferenceChangeEvent implements PreferenceChangeEvent {
     64        private String key;
     65        private String oldValue;
     66        private String newValue;
     67
     68        public DefaultPreferenceChangeEvent(String key, String oldValue, String newValue) {
     69            this.key = key;
     70            this.oldValue = oldValue;
     71            this.newValue = newValue;
     72        }
     73
     74        public String getKey() {
     75            return key;
     76        }
     77        public void setKey(String key) {
     78            this.key = key;
     79        }
     80        public String getOldValue() {
     81            return oldValue;
     82        }
     83        public void setOldValue(String oldValue) {
     84            this.oldValue = oldValue;
     85        }
     86        public String getNewValue() {
     87            return newValue;
     88        }
     89        public void setNewValue(String newValue) {
     90            this.newValue = newValue;
     91        }
    5492    }
    5593
     
    96134    }
    97135
    98     public final ArrayList<PreferenceChangedListener> listener = new ArrayList<PreferenceChangedListener>();
     136    private final CopyOnWriteArrayList<PreferenceChangedListener> listeners = new CopyOnWriteArrayList<PreferenceChangedListener>();
     137
     138
     139    public void addPreferenceChangeListener(PreferenceChangedListener listener) {
     140        if (listener != null && ! listeners.contains(listener)) {
     141            listeners.add(listener);
     142        }
     143    }
     144
     145    public void removePreferenceChangeListener(PreferenceChangedListener listener) {
     146        if (listener != null && listeners.contains(listener)) {
     147            listeners.remove(listener);
     148        }
     149    }
     150
     151    protected void firePrefrenceChanged(String key, String oldValue, String newValue) {
     152        PreferenceChangeEvent evt = new DefaultPreferenceChangeEvent(key, oldValue, newValue);
     153        for (PreferenceChangedListener l : listeners) {
     154            l.preferenceChanged(evt);
     155        }
     156    }
    99157
    100158    /**
     
    289347                System.out.println(tr("Warning: failed to persist preferences to ''{0}''", getPreferenceFile().getAbsoluteFile()));
    290348            }
    291             firePreferenceChanged(key, value);
     349            firePrefrenceChanged(key, oldvalue, value);
    292350            return true;
    293351        }
     
    311369    }
    312370
    313     private final void firePreferenceChanged(final String key, final String value) {
    314         for (final PreferenceChangedListener l : listener) {
    315             l.preferenceChanged(key, value);
    316         }
    317     }
    318371
    319372    /**
     
    618671    synchronized public String getCollectionAsString(final String key) {
    619672        String s = get(key);
    620         if(s != null && s.length() != 0)
     673        if(s != null && s.length() != 0) {
    621674            s = s.replaceAll("\u001e",",");
     675        }
    622676        return s;
    623677    }
  • trunk/src/org/openstreetmap/josm/data/osm/ChangesetCache.java

    r2613 r2618  
    1010import java.util.logging.Logger;
    1111
    12 public class ChangesetCache {
     12import org.openstreetmap.josm.Main;
     13import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
     14import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
     15
     16public class ChangesetCache implements PreferenceChangedListener{
    1317    static private final Logger logger = Logger.getLogger(ChangesetCache.class.getName());
    1418    static private final ChangesetCache instance = new ChangesetCache();
     
    2428
    2529    private ChangesetCache() {
     30        Main.pref.addPreferenceChangeListener(this);
    2631    }
    2732
     
    135140        return ret;
    136141    }
     142
     143    /* ------------------------------------------------------------------------- */
     144    /* interface PreferenceChangedListener                                       */
     145    /* ------------------------------------------------------------------------- */
     146    public void preferenceChanged(PreferenceChangeEvent e) {
     147        if (e.getKey() == null || ! e.getKey().equals("osm-server.url"))
     148            return;
     149
     150        // clear the cache when the API url changes
     151        if (e.getOldValue() == null || e.getNewValue() == null || !e.getOldValue().equals(e.getNewValue())) {
     152            clear();
     153        }
     154    }
    137155}
  • trunk/src/org/openstreetmap/josm/gui/io/UploadDialog.java

    r2613 r2618  
    3030import org.openstreetmap.josm.Main;
    3131import org.openstreetmap.josm.data.APIDataSet;
     32import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
     33import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
    3234import org.openstreetmap.josm.data.osm.Changeset;
    3335import org.openstreetmap.josm.data.osm.OsmPrimitive;
     
    4547 *
    4648 */
    47 public class UploadDialog extends JDialog implements PropertyChangeListener{
     49public class UploadDialog extends JDialog implements PropertyChangeListener, PreferenceChangedListener{
    4850    protected static final Logger logger = Logger.getLogger(UploadDialog.class.getName());
    4951
     
    221223                }
    222224        );
     225
     226        Main.pref.addPreferenceChangeListener(this);
    223227    }
    224228
     
    453457        }
    454458    }
     459
     460    /* -------------------------------------------------------------------------- */
     461    /* Interface PreferenceChangedListener                                        */
     462    /* -------------------------------------------------------------------------- */
     463    public void preferenceChanged(PreferenceChangeEvent e) {
     464        if (e.getKey() == null || ! e.getKey().equals("osm-server.url"))
     465            return;
     466        if (e.getNewValue() == null) {
     467            setTitle(tr("Upload"));
     468        } else {
     469            setTitle(tr("Upload to ''{0}''", e.getNewValue()));
     470        }
     471    }
    455472}
  • trunk/src/org/openstreetmap/josm/gui/layer/RawGpsLayer.java

    r2450 r2618  
    3434import org.openstreetmap.josm.actions.RenameLayerAction;
    3535import org.openstreetmap.josm.data.Bounds;
     36import org.openstreetmap.josm.data.Preferences.PreferenceChangeEvent;
    3637import org.openstreetmap.josm.data.Preferences.PreferenceChangedListener;
    3738import org.openstreetmap.josm.data.coor.EastNorth;
     
    113114        setAssociatedFile(associatedFile);
    114115        this.data = data;
    115         Main.pref.listener.add(this);
     116        Main.pref.addPreferenceChangeListener(this);
    116117    }
    117118
     
    284285    }
    285286
    286     public void preferenceChanged(String key, String newValue) {
    287         if (Main.map != null && (key.equals("draw.rawgps.lines") || key.equals("draw.rawgps.lines.force"))) {
     287    public void preferenceChanged(PreferenceChangeEvent e) {
     288        if (Main.map != null && (e.getKey().equals("draw.rawgps.lines") || e.getKey().equals("draw.rawgps.lines.force"))) {
    288289            Main.map.repaint();
    289290        }
     
    291292
    292293    @Override public void destroy() {
    293         Main.pref.listener.remove(RawGpsLayer.this);
     294        Main.pref.removePreferenceChangeListener(this);
    294295    }
    295296}
Note: See TracChangeset for help on using the changeset viewer.