Custom configuration XML files for JOSM

Samples (See comments in XML)

Preferences addition or replacement commands

Following code adds one more imagery to the list:

<preferences operation="append">
    <!-- Any preferences.xml fragment can be used here -->
    <tag key="download.autorun" value="true"/> <!-- example of simple preference modification - download.autorun := true -->
    <maps key="imagery.entries"> 
        <tag key="name" value="ScanEx IRS"/>
        <tag key="type" value="scanex"/>
        <tag key="url" value="IRS"/>
        <tag key="attribution-text" value="IRS"/>
        <tag key="attribution-url" value=""/>

If <preferences operation="replace"> will be used instead, all other <map> elements will be deleted from imagery.entries !

Another example:

  <preferences operation="replace"> <!-- old content of draw.anglesnap.angles will be deleted -->
     <list key="draw.anglesnap.angles">
       <entry value="30"/>
       <entry value="45"/>
       <entry value="60"/>

File operations - downloading, deleting, unzipping

  <delete path="plugins/tmp"/>
  <!-- delete recursively plugins/tmp from preferences directory -->
  <!-- base = "prefs" - delete from preferences folder base = "plugins" - delete from plugins folder base = "cache" - delete from cache folder -->
  <delete path="splug" base="plugins"/>
  <!-- delete recursively splug folder from preferences directory -->
  <!--<delete path="." base="cache"/> delete cache folder -->

  <download url="" path="plugins/tmp/bt.jar" mkdir="true" unzip="true"/>
  <!-- download file from url and place as "path" if mkdir="true", then all necessary directories will be created if unzip="true", then zip/jar file will be exanded and then deleted -->

  <download url="" path="1/logo.svg" mkdir="true" base="cache"/>

  <download url="file://localhost/e:/" path="qqq/" unzip="true" mkdir="true"/>
  <!-- copy from local folder and unzip -->

Plugin operations: install, disable, delete

<!-- install plugins and remove them without deleting plastic_laf.jar -->
   <plugin install="buildings_tools;wayselector" remove="plastic_laf"/>
   <plugin delete="proj4j"/> <!-- disable plugin and delete jar -->

Variables, messageboxes and asking user

  <ask var="r" text="Choose something, please!" options="0;1;2"/>
  <messagebox text="You choose ${r}" type="i"/>
  <if test="${r==0}">
     <messagebox text="r=0!"/>
     <messagebox text="no, r!=0 - r=${r} actually!"/>
  <if test="${r==1 || r==2}">
     <messagebox text="r=1 or 2!"/>
  <if test="${r!=2 && r!=0}">
    <messagebox text="It is not 0, it is not 2 , so it is = 1!"/>
  <if test="${r!=2}">
  <ask var="r" text="Choose something, please!" options="A;B"/>
  <messagebox text="You choose button number ${r}" type="i"/>

JavaScript API

  txt = API.askText("Enter something...");
  i = API.askOption("Select background color","red;green;black");
  if (i==0) API.pref['color.background']="#770000";
  if (i==1) API.pref['color.background']="#007700";
  if (i==2) API.pref['color.background']="#000000";
  color = API.pref['color.background'];
  API.messageBox('i',"<html><span color='"+color+"'> You entered "+txt+"</span></html>");
  if ( API.askOption("Do you want to test downloading and plugins?","") == 0 ) { 
     // "" in askOption means Yes/No dialog 
     if( API.askOption("Do you want to delete downloaded files?","") == 0) { 
     if( API.askOption("Do you want to uninstall utilsplugin2","") == 0) { 
   CustomConfigurator.exportPreferencesKeysByPatternToFile ("e:/config.xml", true, ".*"); 
   //println(JSON.stringify(API.prefs)); // JSON works only on JDK1.7 //println(JSON.stringify(API.fragments)); // JSON works only on JDK1.7 ]]>

See also

  • Development discussion: #4421
Last modified 23 months ago Last modified on 2016-02-29T23:32:21+01:00