openstreetmap team mailing list archive
-
openstreetmap team
-
Mailing list archive
-
Message #00122
[Merge] lp:~thor-peter/josm/fix-for-bug-817749 into lp:josm
Peter Thor has proposed merging lp:~thor-peter/josm/fix-for-bug-817749 into lp:josm.
Requested reviews:
OpenStreetMap (openstreetmap)
For more details, see:
https://code.launchpad.net/~thor-peter/josm/fix-for-bug-817749/+merge/72412
Altered debian/josm.desktop to only include Geography category.
--
The attached diff has been truncated due to its size.
https://code.launchpad.net/~thor-peter/josm/fix-for-bug-817749/+merge/72412
Your team OpenStreetMap is requested to review the proposed merge of lp:~thor-peter/josm/fix-for-bug-817749 into lp:josm.
=== added file '.classpath'
--- .classpath 1970-01-01 00:00:00 +0000
+++ .classpath 2011-08-22 12:04:26 +0000
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="test/unit"/>
+ <classpathentry kind="src" path="test/functional"/>
+ <classpathentry excluding="build/|data_nodist/|dist/|doc/|lib/|macosx/|src/|test/|test/build/|test/functional/|test/performance/|test/unit/|tools/|utils/" kind="src" path=""/>
+ <classpathentry kind="src" path="test/performance"/>
+ <classpathentry kind="lib" path="lib/metadata-extractor-2.3.1-nosun.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/>
+ <classpathentry kind="lib" path="test/lib/fest/debug-1.0.jar"/>
+ <classpathentry kind="lib" path="test/lib/fest/fest-assert-1.0.jar"/>
+ <classpathentry kind="lib" path="test/lib/fest/fest-reflect-1.1.jar"/>
+ <classpathentry kind="lib" path="test/lib/fest/fest-swing-1.1.jar"/>
+ <classpathentry kind="lib" path="test/lib/fest/fest-util-1.0.jar"/>
+ <classpathentry kind="lib" path="test/lib/fest/jcip-annotations-1.0.jar"/>
+ <classpathentry kind="lib" path="test/lib/fest/MRJToolkitStubs-1.0.jar"/>
+ <classpathentry kind="lib" path="test/lib/jfcunit.jar"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry exported="true" kind="con" path="GROOVY_SUPPORT"/>
+ <classpathentry kind="lib" path="lib/signpost-core-1.2.1.1.jar"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
=== renamed file '.classpath' => '.classpath.moved'
=== added directory '.externalToolBuilders'
=== renamed directory '.externalToolBuilders' => '.externalToolBuilders.moved'
=== added file '.externalToolBuilders/revision.launch'
--- .externalToolBuilders/revision.launch 1970-01-01 00:00:00 +0000
+++ .externalToolBuilders/revision.launch 2011-08-22 12:04:26 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.ant.AntBuilderLaunchConfigurationType">
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_AFTER_CLEAN_TARGETS" value="create-revision-eclipse,"/>
+<stringAttribute key="org.eclipse.ant.ui.ATTR_ANT_MANUAL_TARGETS" value="create-revision-eclipse,"/>
+<booleanAttribute key="org.eclipse.ant.ui.ATTR_TARGETS_UPDATED" value="true"/>
+<booleanAttribute key="org.eclipse.ant.ui.DEFAULT_VM_INSTALL" value="false"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS"/>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES"/>
+<booleanAttribute key="org.eclipse.debug.ui.ATTR_LAUNCH_IN_BACKGROUND" value="false"/>
+<stringAttribute key="org.eclipse.jdt.launching.CLASSPATH_PROVIDER" value="org.eclipse.ant.ui.AntClasspathProvider"/>
+<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value=""/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_BUILDER_ENABLED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${build_project}/build.xml"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_RUN_BUILD_KINDS" value="full,incremental,"/>
+<booleanAttribute key="org.eclipse.ui.externaltools.ATTR_TRIGGERS_CONFIGURED" value="true"/>
+<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${build_project}"/>
+<stringAttribute key="process_factory_id" value="org.eclipse.ant.ui.remoteAntProcessFactory"/>
+</launchConfiguration>
=== added directory '.pc'
=== added file '.pc/.version'
--- .pc/.version 1970-01-01 00:00:00 +0000
+++ .pc/.version 2011-08-22 12:04:26 +0000
@@ -0,0 +1,1 @@
+2
=== added directory '.pc/10-build.patch'
=== added file '.pc/10-build.patch/build.xml'
--- .pc/10-build.patch/build.xml 1970-01-01 00:00:00 +0000
+++ .pc/10-build.patch/build.xml 2011-08-22 12:04:26 +0000
@@ -0,0 +1,320 @@
+<!-- ** build.xml - main ant file for JOSM
+**
+** To build run
+** ant clean
+** ant dist
+** This will create 'josm-custom.jar' in directory 'dist'. See also
+** https://josm.openstreetmap.de/wiki/CreateBuild
+**
+**
+-->
+<project name="josm" default="dist" basedir="." xmlns:as="antlib:org.codehaus.mojo.animal_sniffer">
+ <property name="test.dir" value="test" />
+ <property name="src.dir" value="src" />
+ <property name="build.dir" value="build"/>
+ <!-- build parameter: compression level (ant -Dclevel=N)
+ N ranges from 0 (no compression) to 9 (maximum compression)
+ default: 9 -->
+ <condition property="clevel" value="${clevel}" else="9">
+ <isset property="clevel" />
+ </condition>
+
+ <!-- Java classpath addition (all jar files to compile tests with this) -->
+ <path id="classpath">
+ <fileset dir="lib">
+ <include name="**/*.jar"/>
+ </fileset>
+ </path>
+
+
+ <!--
+ ** Used by Eclipse ant builder for updating
+ ** the REVISION file used by JOSM
+ -->
+ <target name="create-revision-eclipse">
+ <property name="revision.dir" value="bin"/>
+ <antcall target="create-revision" />
+ </target>
+
+ <!--
+ ** Creates the REVISION file to be included in the distribution
+ -->
+ <target name="create-revision">
+ <property name="revision.dir" value="${build.dir}"/>
+ <exec append="false" output="REVISION.XML" executable="svn" failifexecutionfails="false">
+ <env key="LANG" value="C"/>
+ <arg value="info"/>
+ <arg value="--xml"/>
+ <arg value="."/>
+ </exec>
+ <xmlproperty file="REVISION.XML" prefix="version" keepRoot="false" collapseAttributes="true"/>
+ <delete file="REVISION.XML" />
+ <tstamp>
+ <format property="build.tstamp" pattern="yyyy-MM-dd HH:mm:ss"/>
+ </tstamp>
+
+ <property name="version.entry.commit.revision" value="UNKNOWN"/>
+ <mkdir dir="${revision.dir}" />
+ <echo file="${revision.dir}/REVISION">
+# automatically generated by JOSM build.xml - do not edit
+Revision: ${version.entry.commit.revision}
+Is-Local-Build: true
+Build-Date: ${build.tstamp}
+</echo>
+ </target>
+
+
+ <target name="dist" depends="compile,create-revision">
+
+ <exec append="false" output="REVISION" executable="svn" failifexecutionfails="false">
+ <env key="LANG" value="C"/>
+ <arg value="info"/>
+ <arg value="--xml"/>
+ <arg value="."/>
+ </exec>
+ <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/>
+ <delete file="REVISION"/>
+ <property name="version.entry.commit.revision" value="UNKNOWN"/>
+ <property name="version.entry.commit.date" value="UNKNOWN"/>
+ <echo>Revision ${version.entry.commit.revision}</echo>
+ <copy file="CONTRIBUTION" todir="build"/>
+ <copy file="README" todir="build"/>
+ <copy file="LICENSE" todir="build"/>
+
+ <!-- create josm-custom.jar -->
+ <delete file="dist/josm-custom.jar"/>
+ <jar destfile="dist/josm-custom.jar" basedir="build" level="${clevel}">
+ <!-- add attribute excludes="**/*BZip2*,**/*Bzip2*" to create a non-bzip2 supporting jar -->
+ <manifest>
+ <attribute name="Main-class" value="JOSM" />
+ <attribute name="Main-Version" value="${version.entry.commit.revision} SVN"/>
+ <attribute name="Main-Date" value="${version.entry.commit.date}"/>
+ </manifest>
+ <zipfileset dir="images" prefix="images" />
+ <zipfileset dir="data" prefix="data" />
+ <zipfileset dir="styles" prefix="styles" />
+ <zipfileset dir="src/org/openstreetmap/gui/jmapviewer/images" prefix="org/openstreetmap/gui/jmapviewer/images" />
+
+ <!-- All jar files necessary to run only JOSM (no tests) -->
+ <zipfileset src="lib/metadata-extractor-2.3.1-nosun.jar" />
+ <zipfileset src="lib/signpost-core-1.2.1.1.jar" />
+ </jar>
+ </target>
+
+ <target name="distmac" depends="dist">
+ <!-- modify MacOS X Info.plist file to hold the SVN version number -->
+ <copy file="macosx/JOSM.app/Contents/Info.plist" todir="build"/>
+ <replace file="build/Info.plist" token="@SVNVersion@" value="${version.entry.commit.revision}"/>
+ <!-- create ZIP file with MacOS X application bundle -->
+ <zip destfile="dist/josm-custom-macosx.zip" update="true">
+ <zipfileset dir="build" includes="CONTRIBUTION README LICENSE"/>
+ <zipfileset dir="macosx" includes="JOSM.app/Contents JOSM.app/Contents/MacOS JOSM.app/Contents/Resources JOSM.app/Contents/Resources/Java JOSM.app/Contents/PkgInfo JOSM.app/Contents/Resources/JOSM.icns"/>
+ <zipfileset dir="build" includes="Info.plist" prefix="JOSM.app/Contents"/>
+ <zipfileset dir="dist" includes="josm-custom.jar" prefix="JOSM.app/Contents/Resources/Java"/>
+ <zipfileset dir="macosx" includes="JOSM.app/Contents/MacOS/JOSM" filemode="755"/>
+ </zip>
+ </target>
+
+ <target name="compile" depends="init">
+ <javac srcdir="src" classpathref="classpath" destdir="build"
+ target="1.5" source="1.5" debug="on" encoding="UTF-8">
+ <compilerarg value="-Xlint:deprecation"/>
+ <compilerarg value="-Xlint:unchecked"/>
+ </javac>
+ </target>
+
+ <target name="init">
+ <mkdir dir="build" />
+ <mkdir dir="dist" />
+ </target>
+
+ <target name="clean">
+ <delete dir="build" />
+ <delete dir="dist" />
+ </target>
+
+ <target name="javacc">
+ <exec executable="javacc">
+ <arg value="-debug_parser=false"/>
+ <arg value="-debug_lookahead=false"/>
+ <arg value="-debug_token_manager=false"/>
+ <arg value="-output_directory=${src.dir}/org/openstreetmap/josm/gui/mappaint/mapcss/parser"/>
+ <arg value="${src.dir}/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParser.jj"/>
+ </exec>
+ </target>
+
+ <path id="test.classpath">
+ <fileset dir="${test.dir}/lib">
+ <include name="**/*.jar"/>
+ </fileset>
+ <fileset dir="lib">
+ <include name="**/*.jar"/>
+ </fileset>
+ <pathelement path="dist/josm-custom.jar"/>
+ </path>
+
+ <target name="test-init">
+ <mkdir dir="${test.dir}/${build.dir}" />
+ <mkdir dir="${test.dir}/report" />
+ </target>
+
+ <target name="test-clean">
+ <delete dir="${test.dir}/${build.dir}"/>
+ <delete dir="${test.dir}/report"/>
+ </target>
+
+ <target name="test-compile" depends="test-init,dist">
+ <javac srcdir="${test.dir}/unit" classpathref="test.classpath" destdir="${test.dir}/${build.dir}"
+ target="1.5" source="1.5" debug="on" encoding="UTF-8">
+ <compilerarg value="-Xlint:deprecation"/>
+ <compilerarg value="-Xlint:unchecked"/>
+ </javac>
+ <javac srcdir="${test.dir}/functional" classpathref="test.classpath" destdir="${test.dir}/${build.dir}"
+ target="1.5" source="1.5" debug="on" encoding="UTF-8">
+ <compilerarg value="-Xlint:deprecation"/>
+ <compilerarg value="-Xlint:unchecked"/>
+ </javac>
+ </target>
+
+ <target name="test" depends="test-compile">
+ <junit printsummary="yes">
+ <sysproperty key="josm.home" value="${test.dir}/config/unit-josm.home"/>
+ <sysproperty key="java.awt.headless" value="true"/>
+ <classpath>
+ <path refid="test.classpath"/>
+ <pathelement path="${test.dir}/${build.dir}"/>
+ <pathelement path="${test.dir}/config"/>
+ </classpath>
+ <formatter type="plain"/>
+ <formatter type="xml"/>
+ <batchtest fork="yes" todir="${test.dir}/report">
+ <fileset dir="${test.dir}/unit" includes="**/*.java"/>
+ </batchtest>
+ </junit>
+ </target>
+
+ <target name="test-html" depends="test" description="Generate HTML test reports">
+ <!-- May require additional ant dependencies like ant-trax package -->
+ <junitreport todir="${test.dir}/report">
+ <fileset dir="${test.dir}/report">
+ <include name="TEST-*.xml"/>
+ </fileset>
+ <report todir="${test.dir}/report/html"/>
+ </junitreport>
+ </target>
+
+ <target name="dist-optimized" depends="dist">
+ <taskdef resource="proguard/ant/task.properties" classpath="tools/proguard.jar" />
+ <proguard>
+ -injars dist/josm-custom.jar
+ -outjars dist/josm-custom-optimized.jar
+
+ -libraryjars ${java.home}/lib/rt.jar
+ -libraryjars ${java.home}/lib/jce.jar
+
+ -dontoptimize
+ -dontobfuscate
+
+ -dontskipnonpubliclibraryclasses
+
+ -keepclasseswithmembers public class org.openstreetmap.josm.gui.MainApplication {
+ public static void main(java.lang.String[]);
+ }
+
+ -keep class JOSM
+ -keep class * extends org.openstreetmap.josm.io.FileImporter
+ -keep class * extends org.openstreetmap.josm.io.FileExporter
+ -keep class org.openstreetmap.josm.actions.search.SearchCompiler$Never
+
+ -keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+ }
+
+ -keepclassmembers class * {
+ public protected *;
+ }
+ </proguard>
+ </target>
+
+ <target name="check-plugins" depends="dist-optimized">
+ <echo message="Check of plugins binary compatibility (needs ant 1.8)"/>
+
+ <local name="dir"/>
+ <local name="plugins"/>
+
+ <property name="dir" value="plugin-check"/>
+
+ <typedef uri="antlib:org.codehaus.mojo.animal_sniffer">
+ <classpath path="tools/animal-sniffer-ant-tasks-1.5.jar" />
+ </typedef>
+
+ <delete dir="${dir}"/>
+
+ <mkdir dir="${dir}"/>
+
+ <as:build-signatures destfile="${dir}/api.sig">
+ <path>
+ <fileset file="dist/josm-custom-optimized.jar" />
+ <fileset file="${java.home}/lib/rt.jar" />
+ <fileset file="${java.home}/lib/jce.jar" />
+ </path>
+ </as:build-signatures>
+
+ <!-- List of deprecated plugins -->
+ <loadfile property="deprecated-plugins" srcFile="src/org/openstreetmap/josm/plugins/PluginHandler.java">
+ <filterchain>
+ <linecontains>
+ <contains value="new DeprecatedPlugin("/>
+ </linecontains>
+ <tokenfilter>
+ <replaceregex pattern='.*new DeprecatedPlugin\("(.+?)".*' replace="\1|" flags="gi"/>
+ </tokenfilter>
+ <striplinebreaks/>
+ <tokenfilter>
+ <replaceregex pattern='\|$' replace="" flags="gi"/>
+ </tokenfilter>
+ </filterchain>
+ </loadfile>
+
+ <!-- Download plugins -->
+ <loadresource property="plugins">
+ <url url="http://josm.openstreetmap.de/plugin"/>
+ <filterchain>
+ <linecontainsregexp negate="true">
+ <regexp pattern="^\t.*"/>
+ </linecontainsregexp>
+ <linecontainsregexp negate="true">
+ <regexp pattern="${deprecated-plugins}"/>
+ </linecontainsregexp>
+ <tokenfilter>
+ <replaceregex pattern="^.*;" replace="" flags="gi"/>
+ </tokenfilter>
+ </filterchain>
+ </loadresource>
+
+ <copy todir="${dir}" flatten="true">
+ <resourcelist>
+ <string value="${plugins}"/>
+ </resourcelist>
+ </copy>
+
+ <!-- Check plugins -->
+ <as:check-signature signature="${dir}/api.sig">
+ <ignore classname="org.jgraph.*"/>
+ <ignore classname="com.touchgraph.*"/>
+ <ignore classname="com.sun.xml.fastinfoset.*"/>
+ <ignore classname="javax.jms.*"/>
+ <ignore classname="org.jvnet.staxex.*"/>
+ <ignore classname="javax.mail.*"/>
+ <ignore classname="com.sun.jdmk.*"/>
+ <ignore classname="org.apache.avalon.framework.logger.Logger"/>
+ <ignore classname="org.apache.log.*"/>
+ <ignore classname="junit.*"/>
+ <path path="${dir}"/>
+ </as:check-signature>
+
+ </target>
+
+
+</project>
=== added directory '.pc/10-build.patch/i18n'
=== added file '.pc/10-build.patch/i18n/build.xml'
--- .pc/10-build.patch/i18n/build.xml 1970-01-01 00:00:00 +0000
+++ .pc/10-build.patch/i18n/build.xml 2011-08-22 12:04:26 +0000
@@ -0,0 +1,139 @@
+<project name="JOSM i18n" default="build" basedir=".">
+
+ <!-- compilation properties -->
+ <property name="josm.build.dir" value="../core"/>
+ <property name="josm.presets" value="${josm.build.dir}/data/defaultpresets.xml"/>
+ <property name="josm.style" value="${josm.build.dir}/styles/standard/elemstyles.xml"/>
+ <property name="plugin.dir" value="../plugins"/>
+ <property name="validator.tagfile" value="${josm.build.dir}/data/tagchecker.cfg"/>
+ <property name="wms.srcfile" value="http://josm.openstreetmap.de/maps"/>
+ <property name="surveyor.srcfile" value="${plugin.dir}/surveyor/resources/surveyor.xml"/>
+ <property name="i18n.build.dir" value="build"/>
+ <property name="i18n.install.dir" value="${josm.build.dir}/data"/>
+ <property name="i18n.oldinstall.dir" value="${josm.build.dir}/lib"/>
+ <property name="i18n.name" value="josm-translation"/>
+ <property name="i18n.jar" value="${i18n.oldinstall.dir}/${i18n.name}.jar"/>
+
+ <property name="ant.build.javac.target" value="1.5"/>
+
+ <property name="gettexttasks.jar" value="lib/gettext-ant-tasks-0.9.7.jar"/>
+
+ <target name="init.gettext" description="Loads the Ant gettext tasks">
+ <taskdef name="gettext-extract" classname="org.xnap.commons.ant.gettext.GettextExtractKeysTask" classpath="${gettexttasks.jar}"/>
+ <taskdef name="gettext-merge" classname="org.xnap.commons.ant.gettext.GettextMergeKeysTask" classpath="${gettexttasks.jar}"/>
+ <taskdef name="gettext-dist" classname="org.xnap.commons.ant.gettext.GettextDistTask" classpath="${gettexttasks.jar}"/>
+ </target>
+
+ <target name="trans_.java">
+ <mkdir dir="${i18n.build.dir}"/>
+ <exec executable="perl" failonerror="true" output="${i18n.build.dir}/trans_presets.java">
+ <arg line="convpreset.pl ${josm.presets}"/>
+ </exec>
+ <exec executable="perl" output="${i18n.build.dir}/trans_style.java">
+ <arg line="convstyle.pl ${josm.style}"/>
+ </exec>
+ <exec executable="perl" output="${i18n.build.dir}/trans_validator.java">
+ <arg line="convvalidator.pl ${validator.tagfile}"/>
+ </exec>
+ <exec executable="perl" output="${i18n.build.dir}/trans_wms.java">
+ <arg line="convwms.pl ${wms.srcfile}"/>
+ </exec>
+ <exec executable="perl" output="${i18n.build.dir}/trans_surveyor.java">
+ <arg line="convsurveyor.pl ${surveyor.srcfile}"/>
+ </exec>
+ <exec executable="perl" output="${i18n.build.dir}/trans_plugins.java">
+ <arg line="convplugins.pl ${plugin.dir}/*/build.xml"/>
+ </exec>
+ <copy file="specialmessages.java" todir="${i18n.build.dir}" />
+ </target>
+
+ <target name="po/josm.pot"
+ description="Extracts message keys from the source code"
+ depends="trans_.java,init.gettext">
+ <gettext-extract keysFile="josm.pot" poDirectory="po"
+ keywords="-k -ktrc:1c,2 -kmarktrc:1c,2 -ktr -kmarktr -ktrn:1,2 -ktrnc:1c,2,3">
+ <fileset dir="${josm.build.dir}/src" includes="**/*.java"/>
+ <fileset dir="${plugin.dir}" includes="**/*.java"/>
+ <fileset dir="${i18n.build.dir}" includes="specialmessages.java"/>
+ <fileset dir="${i18n.build.dir}" includes="trans_*.java"/>
+ </gettext-extract>
+ </target>
+
+ <target name="prebuild" depends="po/josm.pot,init.gettext">
+ <gettext-merge keysFile="josm.pot" poDirectory="po"/>
+ </target>
+
+ <target name="build" depends="prebuild">
+ <exec executable="perl">
+ <arg line="i18n.pl ${i18n.install.dir}/ po/*.po"/>
+ </exec>
+ </target>
+
+ <target name="buildold" depends="prebuild">
+ <copy file="i18n.properties" todir="build/org/openstreetmap/josm" />
+
+ <!--<gettext-dist targetBundle="org.openstreetmap.josm.i18n.Translation"
+ poDirectory="po" outputDirectory="build"/>-->
+ <ant target="build-lang"><property name="language" value="ar"/></ant>
+ <ant target="build-lang"><property name="language" value="bg"/></ant>
+ <ant target="build-lang"><property name="language" value="cs"/></ant>
+ <ant target="build-lang"><property name="language" value="da"/></ant>
+ <ant target="build-lang"><property name="language" value="de"/></ant>
+ <ant target="build-lang"><property name="language" value="el"/></ant>
+ <ant target="build-lang"><property name="language" value="en_AU"/></ant>
+ <ant target="build-lang"><property name="language" value="en_GB"/></ant>
+ <ant target="build-lang"><property name="language" value="es"/></ant>
+ <ant target="build-lang"><property name="language" value="et"/></ant>
+ <ant target="build-lang"><property name="language" value="fi"/></ant>
+ <ant target="build-lang"><property name="language" value="fr"/></ant>
+ <ant target="build-lang"><property name="language" value="gl"/></ant>
+ <ant target="build-lang"><property name="language" value="he"/><property name="jlanguage" value="iw_IL"/></ant>
+ <ant target="build-lang"><property name="language" value="ja"/></ant>
+ <ant target="build-lang"><property name="language" value="is"/></ant>
+ <ant target="build-lang"><property name="language" value="it"/></ant>
+ <ant target="build-lang"><property name="language" value="nb"/></ant>
+ <ant target="build-lang"><property name="language" value="nl"/></ant>
+ <ant target="build-lang"><property name="language" value="pl"/></ant>
+ <ant target="build-lang"><property name="language" value="pt_BR"/></ant>
+ <ant target="build-lang"><property name="language" value="ro"/></ant>
+ <ant target="build-lang"><property name="language" value="ru"/></ant>
+ <ant target="build-lang"><property name="language" value="sk"/></ant>
+ <ant target="build-lang"><property name="language" value="sl"/></ant>
+ <ant target="build-lang"><property name="language" value="sv"/></ant>
+ <ant target="build-lang"><property name="language" value="tr"/></ant>
+ <ant target="build-lang"><property name="language" value="zh_TW"/></ant>
+
+ <exec append="false" output="REVISION" executable="svn" failifexecutionfails="false">
+ <env key="LANG" value="C"/>
+ <arg value="info"/>
+ <arg value="--xml"/>
+ <arg value="po"/>
+ </exec>
+ <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/>
+ <delete file="REVISION"/>
+
+ <jar destfile="${i18n.jar}" basedir="build" excludes="**/*.java">
+ <manifest>
+ <attribute name="Extension-Name" value="JOSM Translation into various languages" />
+ <attribute name="Translation-Version" value="${version.entry.commit.revision}"/>
+ <attribute name="Translation-Date" value="${version.entry.commit.date}"/>
+ </manifest>
+ </jar>
+ </target>
+
+ <target name="build-lang">
+ <property name="jlanguage" value="${language}"/>
+ <exec executable="msgfmt">
+ <arg line="--verbose --java2 -dbuild -rorg.openstreetmap.josm.i18n.Translation -l${jlanguage} po/${language}.po"/>
+ </exec>
+ </target>
+
+ <target name="clean">
+ <delete dir="${i18n.build.dir}" />
+ <delete file="po/josm.pot"/>
+ <delete>
+ <fileset dir="po" includes="*.*~" defaultexcludes="false"/>
+ </delete>
+ </target>
+
+</project>
=== added directory '.pc/20-bts.patch'
=== added directory '.pc/20-bts.patch/src'
=== added directory '.pc/20-bts.patch/src/org'
=== added directory '.pc/20-bts.patch/src/org/openstreetmap'
=== added directory '.pc/20-bts.patch/src/org/openstreetmap/josm'
=== added directory '.pc/20-bts.patch/src/org/openstreetmap/josm/actions'
=== added file '.pc/20-bts.patch/src/org/openstreetmap/josm/actions/AboutAction.java'
--- .pc/20-bts.patch/src/org/openstreetmap/josm/actions/AboutAction.java 1970-01-01 00:00:00 +0000
+++ .pc/20-bts.patch/src/org/openstreetmap/josm/actions/AboutAction.java 2011-08-22 12:04:26 +0000
@@ -0,0 +1,99 @@
+//License: GPL. Copyright 2007 by Immanuel Scholz and others
+package org.openstreetmap.josm.actions;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Dimension;
+import java.awt.Font;
+import java.awt.GridBagLayout;
+import java.awt.event.ActionEvent;
+import java.awt.event.KeyEvent;
+
+import javax.swing.BorderFactory;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTabbedPane;
+import javax.swing.JTextArea;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.data.Version;
+import org.openstreetmap.josm.plugins.PluginHandler;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.Shortcut;
+import org.openstreetmap.josm.tools.UrlLabel;
+
+/**
+ * Nice about screen. I guess every application need one these days.. *sigh*
+ *
+ * The REVISION resource is read and if present, it shows the revision
+ * information of the jar-file.
+ *
+ * @author imi
+ */
+public class AboutAction extends JosmAction {
+
+ public AboutAction() {
+ super(tr("About"), "about", tr("Display the about screen."), Shortcut.registerShortcut("system:about", tr("About"), KeyEvent.VK_F1, Shortcut.GROUP_DIRECT, Shortcut.SHIFT_DEFAULT), true);
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ JTabbedPane about = new JTabbedPane();
+
+ JTextArea readme = new JTextArea();
+ readme.setEditable(false);
+ readme.setText(Version.loadResourceFile(Main.class.getResource("/README")));
+
+ JTextArea contribution = new JTextArea();
+ contribution.setEditable(false);
+ contribution.setText(Version.loadResourceFile(Main.class.getResource("/CONTRIBUTION")));
+
+ JTextArea license = new JTextArea();
+ license.setEditable(false);
+ license.setText(Version.loadResourceFile(Main.class.getResource("/LICENSE")));
+
+ Version version = Version.getInstance();
+
+ JPanel info = new JPanel(new GridBagLayout());
+ JLabel caption = new JLabel("JOSM - " + tr("Java OpenStreetMap Editor"));
+ caption.setFont(new Font("Helvetica", Font.BOLD, 20));
+ info.add(caption, GBC.eol().fill(GBC.HORIZONTAL).insets(10,0,0,0));
+ info.add(GBC.glue(0,10), GBC.eol());
+ info.add(new JLabel(tr("Version {0}", version.getVersionString())), GBC.eol().fill(GBC.HORIZONTAL).insets(10,0,0,0));
+ info.add(GBC.glue(0,5), GBC.eol());
+ info.add(new JLabel(tr("Last change at {0}",version.getTime())), GBC.eol().fill(GBC.HORIZONTAL).insets(10,0,0,0));
+ info.add(GBC.glue(0,5), GBC.eol());
+ info.add(new JLabel(tr("Java Version {0}",System.getProperty("java.version"))), GBC.eol().fill(GBC.HORIZONTAL).insets(10,0,0,0));
+ info.add(GBC.glue(0,10), GBC.eol());
+ info.add(new JLabel(tr("Homepage")), GBC.std().insets(10,0,10,0));
+ info.add(new UrlLabel("http://josm.openstreetmap.de"), GBC.eol().fill(GBC.HORIZONTAL));
+ info.add(new JLabel(tr("Bug Reports")), GBC.std().insets(10,0,10,0));
+ info.add(new UrlLabel("http://josm.openstreetmap.de/newticket"), GBC.eol().fill(GBC.HORIZONTAL));
+
+ JTextArea revision = new JTextArea();
+ revision.setEditable(false);
+ revision.setText(version.getReleaseAttributes());
+ about.addTab(tr("Info"), info);
+ about.addTab(tr("Readme"), createScrollPane(readme));
+ about.addTab(tr("Revision"), createScrollPane(revision));
+ about.addTab(tr("Contribution"), createScrollPane(contribution));
+ about.addTab(tr("License"), createScrollPane(license));
+ about.addTab(tr("Plugins"), new JScrollPane(PluginHandler.getInfoPanel()));
+
+ about.setPreferredSize(new Dimension(500,300));
+
+ JOptionPane.showMessageDialog(Main.parent, about, tr("About JOSM..."),
+ JOptionPane.INFORMATION_MESSAGE, ImageProvider.get("logo"));
+ }
+
+ private JScrollPane createScrollPane(JTextArea area) {
+ area.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
+ area.setOpaque(false);
+ JScrollPane sp = new JScrollPane(area);
+ sp.setBorder(null);
+ sp.setOpaque(false);
+ return sp;
+ }
+}
=== added directory '.pc/20-bts.patch/src/org/openstreetmap/josm/data'
=== added file '.pc/20-bts.patch/src/org/openstreetmap/josm/data/Version.java'
--- .pc/20-bts.patch/src/org/openstreetmap/josm/data/Version.java 1970-01-01 00:00:00 +0000
+++ .pc/20-bts.patch/src/org/openstreetmap/josm/data/Version.java 2011-08-22 12:04:26 +0000
@@ -0,0 +1,207 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.LanguageInfo;
+
+/**
+ * Provides basic information about the currently used JOSM build.
+ *
+ */
+public class Version {
+ /** constant to indicate that the currnt build isn't assigned a JOSM version number */
+ static public final int JOSM_UNKNOWN_VERSION = 0;
+
+ /** the unique instance */
+ private static Version instance;
+
+ /**
+ * Load the specified resource as string.
+ *
+ * @param resource the resource url to load
+ * @return the content of the resource file; null, if an error occurred
+ */
+ static public String loadResourceFile(URL resource) {
+ if (resource == null) return null;
+ BufferedReader in;
+ String s = null;
+ try {
+ in = new BufferedReader(new InputStreamReader(resource.openStream()));
+ StringBuffer sb = new StringBuffer();
+ for (String line = in.readLine(); line != null; line = in.readLine()) {
+ sb.append(line).append("\n");
+ }
+ s = sb.toString();
+ } catch (IOException e) {
+ System.err.println(tr("Failed to load resource ''{0}'', error is {1}.", resource.toString(), e.toString()));
+ e.printStackTrace();
+ }
+ return s;
+ }
+
+ /**
+ * Replies the unique instance of the version information
+ *
+ * @return the unique instance of the version information
+ */
+
+ static public Version getInstance() {
+ if (instance == null) {
+ instance = new Version();
+ instance.init();
+ }
+ return instance;
+ }
+
+ private int version;
+ private String revision;
+ private String time;
+ private boolean isLocalBuild;
+
+ protected HashMap<String, String> parseManifestStyleFormattedString(String content) {
+ HashMap<String, String> properties = new HashMap<String, String>();
+ if (content == null) return properties;
+ Pattern p = Pattern.compile("^([^:]+):(.*)$");
+ for (String line: content.split("\n")) {
+ if (line == null || line.trim().equals("")) {
+ continue;
+ }
+ if (line.matches("^\\s*#.*$")) {
+ continue;
+ }
+ Matcher m = p.matcher(line);
+ if (m.matches()) {
+ properties.put(m.group(1), m.group(2));
+ }
+ }
+ return properties;
+ }
+
+ /**
+ * Initializes the version infos from the revision resource file
+ *
+ * @param revisionInfo the revision info loaded from a revision resource file
+ */
+ protected void initFromRevisionInfo(String revisionInfo) {
+ if (revisionInfo == null) {
+ this.revision = tr("UNKNOWN");
+ this.version = JOSM_UNKNOWN_VERSION;
+ this.time = null;
+ return;
+ }
+
+ HashMap<String, String> properties = parseManifestStyleFormattedString(revisionInfo);
+ String value = properties.get("Revision");
+ if (value != null) {
+ value = value.trim();
+ try {
+ version = Integer.parseInt(value);
+ } catch(NumberFormatException e) {
+ version = 0;
+ System.err.println(tr("Warning: unexpected JOSM version number in revison file, value is ''{0}''", value));
+ }
+ } else {
+ version = JOSM_UNKNOWN_VERSION;
+ }
+
+ // the last changed data
+ //
+ time = properties.get("Last Changed Date");
+ if (time == null) {
+ time = properties.get("Build-Date");
+ }
+
+ // is this a local build ?
+ //
+ isLocalBuild = false;
+ value = properties.get("Is-Local-Build");
+ if (value != null && value.trim().toLowerCase().equals("true")) {
+ isLocalBuild = true;
+ }
+
+ // the revision info
+ //
+ StringBuffer sb = new StringBuffer();
+ for(Entry<String,String> property: properties.entrySet()) {
+ sb.append(property.getKey()).append(":").append(property.getValue()).append("\n");
+ }
+ revision = sb.toString();
+ }
+
+ public void init() {
+ URL u = Main.class.getResource("/REVISION");
+ if (u == null) {
+ System.err.println(tr("Warning: the revision file ''/REVISION'' is missing."));
+ version = 0;
+ revision = "";
+ return;
+ }
+ initFromRevisionInfo(loadResourceFile(u));
+ System.out.println(revision);
+ }
+
+ /**
+ * Replies the version string. Either the SVN revision "1234" (as string) or the
+ * the I18n equivalent of "UNKNOWN".
+ *
+ * @return the JOSM version
+ */
+ public String getVersionString() {
+ return version == 0 ? tr("UNKNOWN") : Integer.toString(version);
+ }
+
+ /**
+ * Replies a text with the release attributes
+ *
+ * @return a text with the release attributes
+ */
+ public String getReleaseAttributes() {
+ return revision;
+ }
+
+ /**
+ * Replies the build date as string
+ *
+ * @return the build date as string
+ */
+ public String getTime() {
+ return time;
+ }
+
+ /**
+ * Replies the JOSM version. Replies {@see #JOSM_UNKNOWN_VERSION} if the version isn't known.
+ * @return the JOSM version
+ */
+ public int getVersion() {
+ return version;
+ }
+
+ /**
+ * Replies true if this is a local build, i.e. an inofficial development build.
+ *
+ * @return true if this is a local build, i.e. an inofficial development build.
+ */
+ public boolean isLocalBuild() {
+ return isLocalBuild;
+ }
+
+ public String getAgentString() {
+ int v = getVersion();
+ String s = (v == JOSM_UNKNOWN_VERSION) ? "UNKNOWN" : Integer.toString(v);
+ if (isLocalBuild() && v != JOSM_UNKNOWN_VERSION) {
+ s += " SVN";
+ }
+ return "JOSM/1.5 ("+ s+" "+LanguageInfo.getJOSMLocaleCode()+")";
+ }
+}
=== added directory '.pc/20-bts.patch/src/org/openstreetmap/josm/tools'
=== added file '.pc/20-bts.patch/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java'
--- .pc/20-bts.patch/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java 1970-01-01 00:00:00 +0000
+++ .pc/20-bts.patch/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java 2011-08-22 12:04:26 +0000
@@ -0,0 +1,160 @@
+// License: GPL. Copyright 2007 by Immanuel Scholz and others
+package org.openstreetmap.josm.tools;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Component;
+import java.awt.GridBagLayout;
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.ClipboardOwner;
+import java.awt.datatransfer.StringSelection;
+import java.awt.datatransfer.Transferable;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.net.URL;
+import java.nio.ByteBuffer;
+
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextArea;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.actions.ShowStatusReportAction;
+import org.openstreetmap.josm.gui.JMultilineLabel;
+import org.openstreetmap.josm.plugins.PluginHandler;
+
+/**
+ * An exception handler that asks the user to send a bug report.
+ *
+ * @author imi
+ */
+public final class BugReportExceptionHandler implements Thread.UncaughtExceptionHandler {
+
+ private static boolean handlingInProgress = false;
+
+ public void uncaughtException(Thread t, Throwable e) {
+ handleException(e);
+ }
+
+ //http://stuffthathappens.com/blog/2007/10/15/one-more-note-on-uncaught-exception-handlers/
+ public void handle(Throwable t) {
+ handleException(t);
+ }
+
+ public static void handleException(Throwable e) {
+ if (handlingInProgress)
+ return; // we do not handle secondary exceptions, this gets too messy
+ handlingInProgress = true;
+ try {
+ e.printStackTrace();
+ if (Main.parent != null) {
+ if (e instanceof OutOfMemoryError) {
+ // do not translate the string, as translation may raise an exception
+ JOptionPane.showMessageDialog(Main.parent, "JOSM is out of memory. " +
+ "Strange things may happen.\nPlease restart JOSM with the -Xmx###M option,\n" +
+ "where ### is the number of MB assigned to JOSM (e.g. 256).\n" +
+ "Currently, " + Runtime.getRuntime().maxMemory()/1024/1024 + " MB are available to JOSM.",
+ "Error",
+ JOptionPane.ERROR_MESSAGE
+ );
+ return;
+ }
+
+ // Give the user a chance to deactivate the plugin which threw the exception (if it
+ // was thrown from a plugin)
+ //
+ PluginHandler.disablePluginAfterException(e);
+
+ // Then ask for submitting a bug report, for exceptions thrown from a plugin too
+ //
+ Object[] options = new String[]{tr("Do nothing"), tr("Report Bug")};
+ int answer = JOptionPane.showOptionDialog(
+ Main.parent,
+ "<html>"
+ + tr("An unexpected exception occurred.<br>" +
+ "This is always a coding error. If you are running the latest<br>" +
+ "version of JOSM, please consider being kind and file a bug report."
+ )
+ + "</html>",
+ tr("Unexpected Exception"),
+ JOptionPane.YES_NO_OPTION,
+ JOptionPane.ERROR_MESSAGE,
+ null,
+ options, options[0]
+ );
+ if (answer != 1) return;
+
+ try {
+ final int maxlen = 6000;
+ StringWriter stack = new StringWriter();
+ e.printStackTrace(new PrintWriter(stack));
+
+ String text = ShowStatusReportAction.getReportHeader()
+ + stack.getBuffer().toString();
+ String urltext = text.replaceAll("\r",""); /* strip useless return chars */
+ if(urltext.length() > maxlen)
+ {
+ urltext = urltext.substring(0,maxlen);
+ int idx = urltext.lastIndexOf("\n");
+ /* cut whole line when not loosing too much */
+ if(maxlen-idx < 200) {
+ urltext = urltext.substring(0,idx+1);
+ }
+ urltext += "...<snip>...\n";
+ }
+
+ URL url = new URL("http://josm.openstreetmap.de/josmticket?" +
+ "tdata="+Base64.encode(ByteBuffer.wrap(urltext.getBytes("UTF8")), true));
+
+ JPanel p = new JPanel(new GridBagLayout());
+ p.add(new JMultilineLabel(
+ tr("You have encountered an error in JOSM. Before you file a bug report " +
+ "make sure you have updated to the latest version of JOSM here:")), GBC.eol());
+ p.add(new UrlLabel("http://josm.openstreetmap.de/#Download"), GBC.eop().insets(8,0,0,0));
+ p.add(new JMultilineLabel(
+ tr("You should also update your plugins. If neither of those help please " +
+ "file a bug report in our bugtracker using this link:")), GBC.eol());
+ p.add(new UrlLabel(url.toString(), "http://josm.openstreetmap.de/josmticket?..."), GBC.eop().insets(8,0,0,0));
+ p.add(new JMultilineLabel(
+ tr("There the error information provided below should already be " +
+ "filled in for you. Please include information on how to reproduce " +
+ "the error and try to supply as much detail as possible.")), GBC.eop());
+ p.add(new JMultilineLabel(
+ tr("Alternatively, if that does not work you can manually fill in the information " +
+ "below at this URL:")), GBC.eol());
+ p.add(new UrlLabel("http://josm.openstreetmap.de/newticket"), GBC.eop().insets(8,0,0,0));
+ try {
+ Toolkit.getDefaultToolkit().getSystemClipboard().setContents(new StringSelection(text), new ClipboardOwner(){
+ public void lostOwnership(Clipboard clipboard, Transferable contents) {}
+ });
+ p.add(new JLabel(tr("(The text has already been copied to your clipboard.)")), GBC.eop());
+ }
+ catch (RuntimeException x) {}
+
+ JTextArea info = new JTextArea(text, 20, 60);
+ info.setCaretPosition(0);
+ info.setEditable(false);
+ p.add(new JScrollPane(info), GBC.eop());
+
+ for (Component c: p.getComponents()) {
+ if (c instanceof JMultilineLabel) {
+ ((JMultilineLabel)c).setMaxWidth(400);
+ }
+ }
+
+ JOptionPane.showMessageDialog(Main.parent, p, tr("You have encountered a bug in JOSM"), JOptionPane.ERROR_MESSAGE);
+ } catch (Exception e1) {
+ e1.printStackTrace();
+ }
+ }
+ } finally {
+ handlingInProgress = false;
+ }
+ }
+ public static boolean exceptionHandlingInProgress() {
+ return handlingInProgress;
+ }
+}
=== added directory '.pc/40-elemstyles.patch'
=== added directory '.pc/40-elemstyles.patch/src'
=== added directory '.pc/40-elemstyles.patch/src/org'
=== added directory '.pc/40-elemstyles.patch/src/org/openstreetmap'
=== added directory '.pc/40-elemstyles.patch/src/org/openstreetmap/josm'
=== added directory '.pc/40-elemstyles.patch/src/org/openstreetmap/josm/gui'
=== added directory '.pc/40-elemstyles.patch/src/org/openstreetmap/josm/gui/mappaint'
=== added file '.pc/40-elemstyles.patch/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java'
--- .pc/40-elemstyles.patch/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java 1970-01-01 00:00:00 +0000
+++ .pc/40-elemstyles.patch/src/org/openstreetmap/josm/gui/mappaint/MapPaintStyles.java 2011-08-22 12:04:26 +0000
@@ -0,0 +1,360 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.gui.mappaint;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import javax.swing.ImageIcon;
+import javax.swing.SwingUtilities;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.gui.PleaseWaitRunnable;
+import org.openstreetmap.josm.gui.mappaint.mapcss.MapCSSStyleSource;
+import org.openstreetmap.josm.gui.mappaint.xml.XmlStyleSource;
+import org.openstreetmap.josm.gui.preferences.MapPaintPreference.MapPaintPrefMigration;
+import org.openstreetmap.josm.gui.preferences.SourceEntry;
+import org.openstreetmap.josm.gui.progress.ProgressMonitor;
+import org.openstreetmap.josm.io.MirroredInputStream;
+import org.openstreetmap.josm.tools.ImageProvider;
+
+/**
+ * This class manages the ElemStyles instance. The object you get with
+ * getStyles() is read only, any manipulation happens via one of
+ * the wrapper methods here. (readFromPreferences, moveStyles, ...)
+ *
+ * On change, mapPaintSylesUpdated() is fired for all listeners.
+ */
+public class MapPaintStyles {
+
+ private static ElemStyles styles = new ElemStyles();
+
+ public static ElemStyles getStyles()
+ {
+ return styles;
+ }
+
+ /**
+ * Value holder for a reference to a tag name. A style instruction
+ * <pre>
+ * text: a_tag_name;
+ * </pre>
+ * results in a tag reference for the tag <tt>a_tag_name</tt> in the
+ * style cascade.
+ */
+ public static class TagKeyReference {
+ public final String key;
+ public TagKeyReference(String key){
+ this.key = key;
+ }
+
+ @Override
+ public String toString() {
+ return "TagKeyReference{" + "key='" + key + "'}";
+ }
+ }
+
+ public static class IconReference {
+
+ public final String iconName;
+ public final StyleSource source;
+
+ public IconReference(String iconName, StyleSource source) {
+ this.iconName = iconName;
+ this.source = source;
+ }
+
+ @Override
+ public String toString() {
+ return "IconReference{" + "iconName='" + iconName + "' source='" + source.getDisplayString() + "'}";
+ }
+ }
+
+ public static ImageIcon getIcon(IconReference ref, boolean sanitize) {
+ String namespace = ref.source.getPrefName();
+ ImageIcon i = ImageProvider.getIfAvailable(getIconSourceDirs(ref.source), "mappaint."+namespace, null, ref.iconName, ref.source.zipIcons, sanitize);
+ if(i == null)
+ {
+ System.out.println("Mappaint style \""+namespace+"\" icon \"" + ref.iconName + "\" not found.");
+ return null;
+ }
+ return i;
+ }
+
+ /**
+ * No icon with the given name was found, show a dummy icon instead
+ * @return the icon misc/no_icon.png, in descending priority:
+ * - relative to source file
+ * - from user icon paths
+ * - josm's default icon
+ * can be null if the defaults are turned off by user
+ */
+ public static ImageIcon getNoIcon_Icon(StyleSource source, boolean sanitize) {
+ return ImageProvider.getIfAvailable(getIconSourceDirs(source), "mappaint."+source.getPrefName(), null, "misc/no_icon.png", source.zipIcons, sanitize);
+ }
+
+ private static List<String> getIconSourceDirs(StyleSource source) {
+ List<String> dirs = new LinkedList<String>();
+
+ String sourceDir = source.getLocalSourceDir();
+ if (sourceDir != null) {
+ dirs.add(sourceDir);
+ }
+
+ Collection<String> prefIconDirs = Main.pref.getCollection("mappaint.icon.sources");
+ for(String fileset : prefIconDirs)
+ {
+ String[] a;
+ if(fileset.indexOf("=") >= 0) {
+ a = fileset.split("=", 2);
+ } else {
+ a = new String[] {"", fileset};
+ }
+
+ /* non-prefixed path is generic path, always take it */
+ if(a[0].length() == 0 || source.getPrefName().equals(a[0])) {
+ dirs.add(a[1]);
+ }
+ }
+
+ if (Main.pref.getBoolean("mappaint.icon.enable-defaults", true)) {
+ /* don't prefix icon path, as it should be generic */
+ dirs.add("resource://images/styles/standard/");
+ dirs.add("resource://images/styles/");
+ }
+
+ return dirs;
+ }
+
+ public static void readFromPreferences() {
+ styles.clear();
+
+ Collection<? extends SourceEntry> sourceEntries = MapPaintPrefMigration.INSTANCE.get();
+
+ for (SourceEntry entry : sourceEntries) {
+ StyleSource source = fromSourceEntry(entry);
+ if (source != null) {
+ styles.add(source);
+ }
+ }
+ for (StyleSource source : styles.getStyleSources()) {
+ source.loadStyleSource();
+ }
+
+ fireMapPaintSylesUpdated();
+ }
+
+ private static StyleSource fromSourceEntry(SourceEntry entry) {
+ MirroredInputStream in = null;
+ try {
+ in = new MirroredInputStream(entry.url);
+ InputStream zip = in.getZipEntry("xml", "style");
+ if (zip != null)
+ return new XmlStyleSource(entry);
+ zip = in.getZipEntry("mapcss", "style");
+ if (zip != null)
+ return new MapCSSStyleSource(entry);
+ if (entry.url.toLowerCase().endsWith(".mapcss"))
+ return new MapCSSStyleSource(entry);
+ if (entry.url.toLowerCase().endsWith(".xml"))
+ return new XmlStyleSource(entry);
+ else {
+ InputStreamReader reader = new InputStreamReader(in);
+ WHILE: while (true) {
+ int c = reader.read();
+ switch (c) {
+ case -1:
+ break WHILE;
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\r':
+ continue;
+ case '<':
+ return new XmlStyleSource(entry);
+ default:
+ return new MapCSSStyleSource(entry);
+ }
+ }
+ System.err.println("Warning: Could not detect style type. Using default (xml).");
+ return new XmlStyleSource(entry);
+ }
+ } catch (IOException e) {
+ System.err.println(tr("Warning: failed to load Mappaint styles from ''{0}''. Exception was: {1}", entry.url, e.toString()));
+ e.printStackTrace();
+ } finally {
+ try {
+ if (in != null) {
+ in.close();
+ }
+ } catch (IOException ex) {
+ }
+ }
+ return null;
+ }
+
+ /**
+ * reload styles
+ * preferences are the same, but the file source may have changed
+ * @param sel the indices of styles to reload
+ */
+ public static void reloadStyles(final int... sel) {
+ List<StyleSource> toReload = new ArrayList<StyleSource>();
+ List<StyleSource> data = styles.getStyleSources();
+ for (int i : sel) {
+ toReload.add(data.get(i));
+ }
+ Main.worker.submit(new MapPaintStyleLoader(toReload));
+ }
+
+ public static class MapPaintStyleLoader extends PleaseWaitRunnable {
+ private boolean canceled;
+ private List<StyleSource> sources;
+
+ public MapPaintStyleLoader(List<StyleSource> sources) {
+ super(tr("Reloading style sources"));
+ this.sources = sources;
+ }
+
+ @Override
+ protected void cancel() {
+ canceled = true;
+ }
+
+ @Override
+ protected void finish() {
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ fireMapPaintSylesUpdated();
+ styles.clearCached();
+ Main.map.mapView.preferenceChanged(null);
+ Main.map.mapView.repaint();
+ }
+ });
+ }
+
+ @Override
+ protected void realRun() {
+ ProgressMonitor monitor = getProgressMonitor();
+ monitor.setTicksCount(sources.size());
+ for (StyleSource s : sources) {
+ if (canceled)
+ return;
+ monitor.subTask(tr("loading style ''{0}''...", s.getDisplayString()));
+ s.loadStyleSource();
+ monitor.worked(1);
+ }
+ }
+ }
+
+ /**
+ * Move position of entries in the current list of StyleSources
+ * @param sele The indices of styles to be moved.
+ * @param delta The number of lines it should move. positive int moves
+ * down and negative moves up.
+ */
+ public static void moveStyles(int[] sel, int delta) {
+ if (!canMoveStyles(sel, delta))
+ return;
+ int[] selSorted = Arrays.copyOf(sel, sel.length);
+ Arrays.sort(selSorted);
+ List<StyleSource> data = new ArrayList<StyleSource>(styles.getStyleSources());
+ for (int row: selSorted) {
+ StyleSource t1 = data.get(row);
+ StyleSource t2 = data.get(row + delta);
+ data.set(row, t2);
+ data.set(row + delta, t1);
+ }
+ styles.setStyleSources(data);
+ MapPaintPrefMigration.INSTANCE.put(data);
+ fireMapPaintSylesUpdated();
+ styles.clearCached();
+ Main.map.mapView.repaint();
+ }
+
+ public static boolean canMoveStyles(int[] sel, int i) {
+ if (sel.length == 0)
+ return false;
+ int[] selSorted = Arrays.copyOf(sel, sel.length);
+ Arrays.sort(selSorted);
+
+ if (i < 0) // Up
+ return selSorted[0] >= -i;
+ else if (i > 0) // Down
+ return selSorted[selSorted.length-1] <= styles.getStyleSources().size() - 1 - i;
+ else
+ return true;
+ }
+
+ public static void toggleStyleActive(int... sel) {
+ List<StyleSource> data = styles.getStyleSources();
+ for (int p : sel) {
+ StyleSource s = data.get(p);
+ s.active = !s.active;
+ }
+ MapPaintPrefMigration.INSTANCE.put(data);
+ if (sel.length == 1) {
+ fireMapPaintStyleEntryUpdated(sel[0]);
+ } else {
+ fireMapPaintSylesUpdated();
+ }
+ styles.clearCached();
+ Main.map.mapView.repaint();
+ }
+
+ public static void addStyle(SourceEntry entry) {
+ StyleSource source = fromSourceEntry(entry);
+ if (source != null) {
+ styles.add(source);
+ source.loadStyleSource();
+ MapPaintPrefMigration.INSTANCE.put(styles.getStyleSources());
+ fireMapPaintSylesUpdated();
+ styles.clearCached();
+ Main.map.mapView.repaint();
+ }
+ }
+
+ /***********************************
+ * MapPaintSylesUpdateListener & related code
+ * (get informed when the list of MapPaint StyleSources changes)
+ */
+
+ public interface MapPaintSylesUpdateListener {
+ public void mapPaintStylesUpdated();
+ public void mapPaintStyleEntryUpdated(int idx);
+ }
+
+ protected static final CopyOnWriteArrayList<MapPaintSylesUpdateListener> listeners
+ = new CopyOnWriteArrayList<MapPaintSylesUpdateListener>();
+
+ public static void addMapPaintSylesUpdateListener(MapPaintSylesUpdateListener listener) {
+ if (listener != null) {
+ listeners.addIfAbsent(listener);
+ }
+ }
+
+ public static void removeMapPaintSylesUpdateListener(MapPaintSylesUpdateListener listener) {
+ listeners.remove(listener);
+ }
+
+ public static void fireMapPaintSylesUpdated() {
+ for (MapPaintSylesUpdateListener l : listeners) {
+ l.mapPaintStylesUpdated();
+ }
+ }
+
+ public static void fireMapPaintStyleEntryUpdated(int idx) {
+ for (MapPaintSylesUpdateListener l : listeners) {
+ l.mapPaintStyleEntryUpdated(idx);
+ }
+ }
+}
=== added directory '.pc/40-elemstyles.patch/src/org/openstreetmap/josm/gui/tagging'
=== added file '.pc/40-elemstyles.patch/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java'
--- .pc/40-elemstyles.patch/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java 1970-01-01 00:00:00 +0000
+++ .pc/40-elemstyles.patch/src/org/openstreetmap/josm/gui/tagging/TaggingPreset.java 2011-08-22 12:04:26 +0000
@@ -0,0 +1,1522 @@
+// License: GPL. Copyright 2007 by Immanuel Scholz and others
+package org.openstreetmap.josm.gui.tagging;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+import static org.openstreetmap.josm.tools.I18n.trc;
+import static org.openstreetmap.josm.tools.I18n.trn;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.GridBagLayout;
+import java.awt.Image;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeSet;
+
+import javax.swing.AbstractAction;
+import javax.swing.Action;
+import javax.swing.ImageIcon;
+import javax.swing.JComboBox;
+import javax.swing.JComponent;
+import javax.swing.JLabel;
+import javax.swing.JList;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextField;
+import javax.swing.ListCellRenderer;
+import javax.swing.ListModel;
+import javax.swing.SwingUtilities;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.command.ChangePropertyCommand;
+import org.openstreetmap.josm.command.Command;
+import org.openstreetmap.josm.command.SequenceCommand;
+import org.openstreetmap.josm.data.osm.Node;
+import org.openstreetmap.josm.data.osm.OsmPrimitive;
+import org.openstreetmap.josm.data.osm.OsmUtils;
+import org.openstreetmap.josm.data.osm.Relation;
+import org.openstreetmap.josm.data.osm.RelationMember;
+import org.openstreetmap.josm.data.osm.Tag;
+import org.openstreetmap.josm.data.osm.Way;
+import org.openstreetmap.josm.data.preferences.BooleanProperty;
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.gui.MapView;
+import org.openstreetmap.josm.gui.QuadStateCheckBox;
+import org.openstreetmap.josm.gui.dialogs.relation.RelationEditor;
+import org.openstreetmap.josm.gui.layer.Layer;
+import org.openstreetmap.josm.gui.layer.OsmDataLayer;
+import org.openstreetmap.josm.gui.preferences.SourceEntry;
+import org.openstreetmap.josm.gui.preferences.TaggingPresetPreference.PresetPrefMigration;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletingTextField;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionItemPritority;
+import org.openstreetmap.josm.gui.tagging.ac.AutoCompletionList;
+import org.openstreetmap.josm.gui.util.GuiHelper;
+import org.openstreetmap.josm.gui.widgets.HtmlPanel;
+import org.openstreetmap.josm.io.MirroredInputStream;
+import org.openstreetmap.josm.tools.GBC;
+import org.openstreetmap.josm.tools.ImageProvider;
+import org.openstreetmap.josm.tools.UrlLabel;
+import org.openstreetmap.josm.tools.XmlObjectParser;
+import org.xml.sax.SAXException;
+
+/**
+ * This class read encapsulate one tagging preset. A class method can
+ * read in all predefined presets, either shipped with JOSM or that are
+ * in the config directory.
+ *
+ * It is also able to construct dialogs out of preset definitions.
+ */
+public class TaggingPreset extends AbstractAction implements MapView.LayerChangeListener {
+
+ public enum PresetType {
+ NODE("Mf_node"), WAY("Mf_way"), RELATION("Mf_relation"), CLOSEDWAY("Mf_closedway");
+
+ private final String iconName;
+
+ PresetType(String iconName) {
+ this.iconName = iconName;
+ }
+
+ public String getIconName() {
+ return iconName;
+ }
+
+ public String getName() {
+ return name().toLowerCase();
+ }
+ }
+
+ public static final int DIALOG_ANSWER_APPLY = 1;
+ public static final int DIALOG_ANSWER_NEW_RELATION = 2;
+ public static final int DIALOG_ANSWER_CANCEL = 3;
+
+ public TaggingPresetMenu group = null;
+ public String name;
+ public String name_context;
+ public String locale_name;
+ public final static String OPTIONAL_TOOLTIP_TEXT = "Optional tooltip text";
+ private static File zipIcons = null;
+ private static final BooleanProperty PROP_FILL_DEFAULT = new BooleanProperty("taggingpreset.fill-default-for-tagged-primitives", false);
+
+ public static abstract class Item {
+ protected void initAutoCompletionField(AutoCompletingTextField field, String key) {
+ OsmDataLayer layer = Main.main.getEditLayer();
+ if (layer == null) return;
+ AutoCompletionList list = new AutoCompletionList();
+ Main.main.getEditLayer().data.getAutoCompletionManager().populateWithTagValues(list, key);
+ field.setAutoCompletionList(list);
+ }
+
+ abstract boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel);
+ abstract void addCommands(List<Tag> changedTags);
+ boolean requestFocusInWindow() {return false;}
+ }
+
+ public static class Usage {
+ TreeSet<String> values;
+ boolean hadKeys = false;
+ boolean hadEmpty = false;
+ public boolean hasUniqueValue() {
+ return values.size() == 1 && !hadEmpty;
+ }
+
+ public boolean unused() {
+ return values.size() == 0;
+ }
+ public String getFirst() {
+ return values.first();
+ }
+
+ public boolean hadKeys() {
+ return hadKeys;
+ }
+ }
+
+ public static final String DIFFERENT = tr("<different>");
+
+ static Usage determineTextUsage(Collection<OsmPrimitive> sel, String key) {
+ Usage returnValue = new Usage();
+ returnValue.values = new TreeSet<String>();
+ for (OsmPrimitive s : sel) {
+ String v = s.get(key);
+ if (v != null) {
+ returnValue.values.add(v);
+ } else {
+ returnValue.hadEmpty = true;
+ }
+ if(s.hasKeys()) {
+ returnValue.hadKeys = true;
+ }
+ }
+ return returnValue;
+ }
+
+ static Usage determineBooleanUsage(Collection<OsmPrimitive> sel, String key) {
+
+ Usage returnValue = new Usage();
+ returnValue.values = new TreeSet<String>();
+ for (OsmPrimitive s : sel) {
+ String booleanValue = OsmUtils.getNamedOsmBoolean(s.get(key));
+ if (booleanValue != null) {
+ returnValue.values.add(booleanValue);
+ }
+ }
+ return returnValue;
+ }
+
+ protected static class PresetListEntry {
+ String value;
+ String display_value;
+ String short_description;
+
+ public String getListDisplay() {
+ if (value.equals(DIFFERENT))
+ return "<b>"+DIFFERENT.replaceAll("<", "<").replaceAll(">", ">")+"</b>";
+
+ if (value.equals(""))
+ return " ";
+
+ StringBuilder res = new StringBuilder("<b>");
+ if (display_value != null) {
+ res.append(display_value);
+ } else {
+ res.append(value);
+ }
+ res.append("</b>");
+ if (short_description != null) {
+ // wrap in table to restrict the text width
+ res.append("<br><table><td width='232'>(").append(short_description).append(")</td></table>");
+ }
+ return res.toString();
+ }
+
+ public PresetListEntry(String value) {
+ this.value = value;
+ this.display_value = value;
+ }
+
+ public PresetListEntry(String value, String display_value) {
+ this.value = value;
+ this.display_value = display_value;
+ }
+
+ // toString is mainly used to initialize the Editor
+ @Override
+ public String toString() {
+ if (value.equals(DIFFERENT))
+ return DIFFERENT;
+ return display_value.replaceAll("<.*>", ""); // remove additional markup, e.g. <br>
+ }
+ }
+
+ public static class Text extends Item {
+
+ public String key;
+ public String text;
+ public String locale_text;
+ public String text_context;
+ public String default_;
+ public String originalValue;
+ public boolean use_last_as_default = false;
+ public boolean delete_if_empty = false;
+ public boolean required = false;
+
+ private JComponent value;
+
+ @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+
+ // find out if our key is already used in the selection.
+ Usage usage = determineTextUsage(sel, key);
+ AutoCompletingTextField textField = new AutoCompletingTextField();
+ initAutoCompletionField(textField, key);
+ if (usage.unused()){
+ if (!usage.hadKeys() || PROP_FILL_DEFAULT.get()) {
+ // selected osm primitives are untagged or filling default values feature is enabled
+ if (use_last_as_default && lastValue.containsKey(key)) {
+ textField.setText(lastValue.get(key));
+ } else {
+ textField.setText(default_);
+ }
+ } else {
+ // selected osm primitives are tagged and filling default values feature is disabled
+ textField.setText("");
+ }
+ value = textField;
+ originalValue = null;
+ } else if (usage.hasUniqueValue()) {
+ // all objects use the same value
+ textField.setText(usage.getFirst());
+ value = textField;
+ originalValue = usage.getFirst();
+ } else {
+ // the objects have different values
+ JComboBox comboBox = new JComboBox(usage.values.toArray());
+ comboBox.setEditable(true);
+ comboBox.setEditor(textField);
+ comboBox.getEditor().setItem(DIFFERENT);
+ value=comboBox;
+ originalValue = DIFFERENT;
+ }
+ if(locale_text == null) {
+ if (text != null) {
+ if(text_context != null) {
+ locale_text = trc(text_context, text);
+ } else {
+ locale_text = tr(text);
+ }
+ }
+ }
+ p.add(new JLabel(locale_text+":"), GBC.std().insets(0,0,10,0));
+ p.add(value, GBC.eol().fill(GBC.HORIZONTAL));
+ return true;
+ }
+
+ @Override public void addCommands(List<Tag> changedTags) {
+
+ // return if unchanged
+ String v = (value instanceof JComboBox) ?
+ ((JComboBox)value).getEditor().getItem().toString() :
+ ((JTextField)value).getText();
+
+ if (use_last_as_default) {
+ lastValue.put(key, v);
+ }
+ if (v.equals(originalValue) || (originalValue == null && v.length() == 0)) return;
+
+ if (delete_if_empty && v.length() == 0) {
+ v = null;
+ }
+ changedTags.add(new Tag(key, v));
+ }
+ @Override boolean requestFocusInWindow() {return value.requestFocusInWindow();}
+ }
+
+ public static class Check extends Item {
+
+ public String key;
+ public String text;
+ public String text_context;
+ public String locale_text;
+ public String value_on = OsmUtils.trueval;
+ public String value_off = OsmUtils.falseval;
+ public boolean default_ = false; // only used for tagless objects
+ public boolean use_last_as_default = false;
+ public boolean required = false;
+
+ private QuadStateCheckBox check;
+ private QuadStateCheckBox.State initialState;
+ private boolean def;
+
+ @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+
+ // find out if our key is already used in the selection.
+ Usage usage = determineBooleanUsage(sel, key);
+ def = default_;
+
+ if(locale_text == null) {
+ if(text_context != null) {
+ locale_text = trc(text_context, text);
+ } else {
+ locale_text = tr(text);
+ }
+ }
+
+ String oneValue = null;
+ for (String s : usage.values) {
+ oneValue = s;
+ }
+ if (usage.values.size() < 2 && (oneValue == null || value_on.equals(oneValue) || value_off.equals(oneValue))) {
+ if (def && !PROP_FILL_DEFAULT.get()) {
+ // default is set and filling default values feature is disabled - check if all primitives are untagged
+ for (OsmPrimitive s : sel)
+ if(s.hasKeys()) {
+ def = false;
+ }
+ }
+
+ // all selected objects share the same value which is either true or false or unset,
+ // we can display a standard check box.
+ initialState = value_on.equals(oneValue) ?
+ QuadStateCheckBox.State.SELECTED :
+ value_off.equals(oneValue) ?
+ QuadStateCheckBox.State.NOT_SELECTED :
+ def ? QuadStateCheckBox.State.SELECTED
+ : QuadStateCheckBox.State.UNSET;
+ check = new QuadStateCheckBox(locale_text, initialState,
+ new QuadStateCheckBox.State[] {
+ QuadStateCheckBox.State.SELECTED,
+ QuadStateCheckBox.State.NOT_SELECTED,
+ QuadStateCheckBox.State.UNSET });
+ } else {
+ def = false;
+ // the objects have different values, or one or more objects have something
+ // else than true/false. we display a quad-state check box
+ // in "partial" state.
+ initialState = QuadStateCheckBox.State.PARTIAL;
+ check = new QuadStateCheckBox(locale_text, QuadStateCheckBox.State.PARTIAL,
+ new QuadStateCheckBox.State[] {
+ QuadStateCheckBox.State.PARTIAL,
+ QuadStateCheckBox.State.SELECTED,
+ QuadStateCheckBox.State.NOT_SELECTED,
+ QuadStateCheckBox.State.UNSET });
+ }
+ p.add(check, GBC.eol().fill(GBC.HORIZONTAL));
+ return true;
+ }
+
+ @Override public void addCommands(List<Tag> changedTags) {
+ // if the user hasn't changed anything, don't create a command.
+ if (check.getState() == initialState && !def) return;
+
+ // otherwise change things according to the selected value.
+ changedTags.add(new Tag(key,
+ check.getState() == QuadStateCheckBox.State.SELECTED ? value_on :
+ check.getState() == QuadStateCheckBox.State.NOT_SELECTED ? value_off :
+ null));
+ }
+ @Override boolean requestFocusInWindow() {return check.requestFocusInWindow();}
+ }
+
+ public static class Combo extends Item {
+
+ public String key;
+ public String text;
+ public String text_context;
+ public String locale_text;
+ public String values;
+ public String values_context;
+ public String display_values;
+ public String locale_display_values;
+ public String short_descriptions;
+ public String locale_short_descriptions;
+ public String default_;
+ public boolean delete_if_empty = false;
+ public boolean editable = true;
+ public boolean use_last_as_default = false;
+ public boolean required = false;
+
+ private List<String> short_description_list;
+ private JComboBox combo;
+ private Map<String, PresetListEntry> lhm;
+ private Usage usage;
+ private PresetListEntry originalValue;
+
+ @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+
+ // find out if our key is already used in the selection.
+ usage = determineTextUsage(sel, key);
+ String def = default_;
+
+ String[] value_array = splitEscaped(',', values);
+ String[] display_array;
+ String[] short_descriptions_array = null;
+
+ if(locale_display_values != null) {
+ display_array = splitEscaped(',', locale_display_values);
+ } else if (display_values != null) {
+ display_array = splitEscaped(',', display_values);
+ } else {
+ display_array = value_array;
+ }
+
+ if (locale_short_descriptions != null) {
+ short_descriptions_array = splitEscaped(',', locale_short_descriptions);
+ } else if (short_descriptions != null) {
+ short_descriptions_array = splitEscaped(',', short_descriptions);
+ } else if (short_description_list != null) {
+ short_descriptions_array = short_description_list.toArray(new String[0]);
+ }
+
+ if (use_last_as_default && def == null && lastValue.containsKey(key)) {
+ def = lastValue.get(key);
+ }
+
+ if (display_array.length != value_array.length) {
+ System.err.println(tr("Broken tagging preset \"{0}-{1}\" - number of items in ''display_values'' must be the same as in ''values''", key, text));
+ display_array = value_array;
+ }
+
+ if (short_descriptions_array != null && short_descriptions_array.length != value_array.length) {
+ System.err.println(tr("Broken tagging preset \"{0}-{1}\" - number of items in ''short_descriptions'' must be the same as in ''values''", key, text));
+ short_descriptions_array = null;
+ }
+
+ lhm = new LinkedHashMap<String, PresetListEntry>();
+ if (!usage.hasUniqueValue() && !usage.unused()) {
+ lhm.put(DIFFERENT, new PresetListEntry(DIFFERENT));
+ }
+ for (int i=0; i<value_array.length; i++) {
+ PresetListEntry e = new PresetListEntry(value_array[i]);
+ e.display_value = (locale_display_values == null)
+ ? (values_context == null ? tr(display_array[i])
+ : trc(values_context, display_array[i])) : display_array[i];
+ if (short_descriptions_array != null) {
+ e.short_description = locale_short_descriptions == null ? tr(short_descriptions_array[i])
+ : short_descriptions_array[i];
+ }
+ lhm.put(value_array[i], e);
+ }
+ if(!usage.unused()){
+ for (String s : usage.values) {
+ if (!lhm.containsKey(s)) {
+ lhm.put(s, new PresetListEntry(s));
+ }
+ }
+ }
+ if (def != null && !lhm.containsKey(def)) {
+ lhm.put(def, new PresetListEntry(def));
+ }
+ lhm.put("", new PresetListEntry(""));
+
+ combo = new JComboBox(lhm.values().toArray());
+ combo.setRenderer(new PresetComboListCellRenderer());
+ combo.setEditable(editable);
+ combo.setMaximumRowCount(13);
+ AutoCompletingTextField tf = new AutoCompletingTextField();
+ initAutoCompletionField(tf, key);
+ tf.getAutoCompletionList().add(Arrays.asList(display_array), AutoCompletionItemPritority.IS_IN_STANDARD);
+ combo.setEditor(tf);
+
+ if (usage.hasUniqueValue()) {
+ // all items have the same value (and there were no unset items)
+ originalValue=lhm.get(usage.getFirst());
+ combo.setSelectedItem(originalValue);
+ }
+ else if (def != null && usage.unused()) {
+ // default is set and all items were unset
+ if (!usage.hadKeys() || PROP_FILL_DEFAULT.get()) {
+ // selected osm primitives are untagged or filling default feature is enabled
+ combo.setSelectedItem(def);
+ } else {
+ // selected osm primitives are tagged and filling default feature is disabled
+ combo.setSelectedItem("");
+ }
+ originalValue=lhm.get(DIFFERENT);
+ }
+ else if (usage.unused()) {
+ // all items were unset (and so is default)
+ originalValue=lhm.get("");
+ combo.setSelectedItem(originalValue);
+ }
+ else {
+ originalValue=lhm.get(DIFFERENT);
+ combo.setSelectedItem(originalValue);
+ }
+
+ if(locale_text == null) {
+ if(text_context != null) {
+ locale_text = trc(text_context, text);
+ } else {
+ locale_text = tr(text);
+ }
+ }
+ p.add(new JLabel(locale_text+":"), GBC.std().insets(0,0,10,0));
+ p.add(combo, GBC.eol().fill(GBC.HORIZONTAL));
+ return true;
+ }
+
+
+ private static class PresetComboListCellRenderer implements ListCellRenderer {
+
+ HtmlPanel lbl;
+ JComponent dummy = new JComponent() {};
+
+ public PresetComboListCellRenderer() {
+ lbl = new HtmlPanel();
+ }
+
+ public Component getListCellRendererComponent(
+ JList list,
+ Object value,
+ int index,
+ boolean isSelected,
+ boolean cellHasFocus)
+ {
+ if (isSelected) {
+ lbl.setBackground(list.getSelectionBackground());
+ lbl.setForeground(list.getSelectionForeground());
+ } else {
+ lbl.setBackground(list.getBackground());
+ lbl.setForeground(list.getForeground());
+ }
+
+ PresetListEntry item = (PresetListEntry) value;
+ String s = item.getListDisplay();
+ lbl.setText(s);
+ // We do not want the editor to have the maximum height of all
+ // entries. Return a dummy with bogus height.
+ if (index == -1) {
+ dummy.setPreferredSize(new Dimension(lbl.getPreferredSize().width, 10));
+ return dummy;
+ }
+ return lbl;
+ }
+ }
+
+ @Override public void addCommands(List<Tag> changedTags) {
+ Object obj = combo.getSelectedItem();
+ String display = (obj == null) ? null : obj.toString();
+ String value = null;
+ if(display == null && combo.isEditable()) {
+ display = combo.getEditor().getItem().toString();
+ }
+
+ if (display != null)
+ {
+ for (String key : lhm.keySet()) {
+ String k = lhm.get(key).toString();
+ if (k != null && k.equals(display)) {
+ value=key;
+ }
+ }
+ if(value == null) {
+ value = display;
+ }
+ } else {
+ value = "";
+ }
+
+ // no change if same as before
+ if (originalValue == null) {
+ if (value.length() == 0)
+ return;
+ } else if (value.equals(originalValue.toString()))
+ return;
+
+ if (delete_if_empty && value.length() == 0) {
+ value = null;
+ }
+ if (use_last_as_default) {
+ lastValue.put(key, value);
+ }
+ changedTags.add(new Tag(key, value));
+ }
+
+ public void setShort_description(String s) {
+ if (short_description_list == null) {
+ short_description_list = new ArrayList<String>();
+ }
+ short_description_list.add(tr(s));
+ }
+
+ @Override boolean requestFocusInWindow() {return combo.requestFocusInWindow();}
+ }
+
+ /**
+ * Class that allows list values to be assigned and retrived as a comma-delimited
+ * string.
+ */
+ public static class ConcatenatingJList extends JList {
+ private String delimiter;
+ public ConcatenatingJList(String del, Object[] o) {
+ super(o);
+ delimiter = del;
+ }
+ public void setSelectedItem(Object o) {
+ if (o == null) {
+ clearSelection();
+ } else {
+ String s = o.toString();
+ HashSet<String> parts = new HashSet<String>(Arrays.asList(s.split(delimiter)));
+ ListModel lm = getModel();
+ int[] intParts = new int[lm.getSize()];
+ int j = 0;
+ for (int i = 0; i < lm.getSize(); i++) {
+ if (parts.contains((((PresetListEntry)lm.getElementAt(i)).value))) {
+ intParts[j++]=i;
+ }
+ }
+ setSelectedIndices(Arrays.copyOf(intParts, j));
+ // check if we have acutally managed to represent the full
+ // value with our presets. if not, cop out; we will not offer
+ // a selection list that threatens to ruin the value.
+ setEnabled(s.equals(getSelectedItem()));
+ }
+ }
+ public String getSelectedItem() {
+ ListModel lm = getModel();
+ int[] si = getSelectedIndices();
+ StringBuilder builder = new StringBuilder();
+ for (int i=0; i<si.length; i++) {
+ if (i>0) {
+ builder.append(delimiter);
+ }
+ builder.append(((PresetListEntry)lm.getElementAt(si[i])).value);
+ }
+ return builder.toString();
+ }
+ }
+
+ public static class MultiSelect extends Item {
+
+ public String key;
+ public String text;
+ public String text_context;
+ public String locale_text;
+ public String values;
+ public String values_context;
+ public String display_values;
+ public String locale_display_values;
+ public String short_descriptions;
+ public String locale_short_descriptions;
+ public String default_;
+ public String delimiter = ";";
+ public boolean delete_if_empty = false;
+ public boolean use_last_as_default = false;
+ public boolean required = false;
+ public long rows = -1;
+
+ private List<String> short_description_list;
+ private ConcatenatingJList list;
+ private Map<String, PresetListEntry> lhm;
+ private Usage usage;
+ private String originalValue;
+
+ @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+
+ // find out if our key is already used in the selection.
+ usage = determineTextUsage(sel, key);
+ String def = default_;
+
+ char delChar = ';';
+ if (delimiter.length() > 0) {
+ delChar = delimiter.charAt(0);
+ }
+
+ String[] value_array = splitEscaped(delChar, values);
+ String[] display_array;
+ String[] short_descriptions_array = null;
+
+ if (locale_display_values != null) {
+ display_array = splitEscaped(delChar, locale_display_values);
+ } else if (display_values != null) {
+ display_array = splitEscaped(delChar, display_values);
+ } else {
+ display_array = value_array;
+ }
+
+ if (locale_short_descriptions != null) {
+ short_descriptions_array = splitEscaped(delChar, locale_short_descriptions);
+ } else if (short_descriptions != null) {
+ short_descriptions_array = splitEscaped(delChar, short_descriptions);
+ } else if (short_description_list != null) {
+ short_descriptions_array = short_description_list.toArray(new String[0]);
+ }
+
+ if (use_last_as_default && def == null && lastValue.containsKey(key)) {
+ def = lastValue.get(key);
+ }
+
+ if (display_array.length != value_array.length) {
+ System.err.println(tr("Broken tagging preset \"{0}-{1}\" - number of items in ''display_values'' must be the same as in ''values''", key, text));
+ display_array = value_array;
+ }
+
+ if (short_descriptions_array != null && short_descriptions_array.length != value_array.length) {
+ System.err.println(tr("Broken tagging preset \"{0}-{1}\" - number of items in ''short_descriptions'' must be the same as in ''values''", key, text));
+ short_descriptions_array = null;
+ }
+
+ lhm = new LinkedHashMap<String, PresetListEntry>();
+ if (!usage.hasUniqueValue() && !usage.unused()) {
+ lhm.put(DIFFERENT, new PresetListEntry(DIFFERENT));
+ }
+ for (int i=0; i<value_array.length; i++) {
+ PresetListEntry e = new PresetListEntry(value_array[i]);
+ e.display_value = (locale_display_values == null)
+ ? (values_context == null ? tr(display_array[i])
+ : trc(values_context, display_array[i])) : display_array[i];
+ if (short_descriptions_array != null) {
+ e.short_description = locale_short_descriptions == null ? tr(short_descriptions_array[i])
+ : short_descriptions_array[i];
+ }
+ lhm.put(value_array[i], e);
+ }
+
+ list = new ConcatenatingJList(delimiter, lhm.values().toArray());
+ PresetListCellRenderer renderer = new PresetListCellRenderer();
+ list.setCellRenderer(renderer);
+
+ if (usage.hasUniqueValue() && !usage.unused()) {
+ originalValue=usage.getFirst();
+ }
+ else if (def != null && !usage.hadKeys()) {
+ originalValue=def;
+ }
+ else if (usage.unused()) {
+ originalValue=null;
+ }
+ else {
+ originalValue=DIFFERENT;
+ }
+ list.setSelectedItem(originalValue);
+
+ if (locale_text == null) {
+ if(text_context != null) {
+ locale_text = trc(text_context, text);
+ } else {
+ locale_text = tr(text);
+ }
+ }
+ p.add(new JLabel(locale_text+":"), GBC.std().insets(0,0,10,0));
+ JScrollPane sp = new JScrollPane(list);
+ // if a number of rows has been specified in the preset,
+ // modify preferred height of scroll pane to match that row count.
+ if (rows != -1)
+ {
+ double height = renderer.getListCellRendererComponent(list,
+ new PresetListEntry("x"), 0, false, false).getPreferredSize().getHeight() * rows;
+ sp.setPreferredSize(new Dimension((int) sp.getPreferredSize().getWidth(), (int) height));
+ }
+ p.add(sp, GBC.eol().fill(GBC.HORIZONTAL));
+ return true;
+ }
+
+ private static class PresetListCellRenderer implements ListCellRenderer {
+
+ HtmlPanel lbl;
+ JComponent dummy = new JComponent() {};
+
+ public PresetListCellRenderer() {
+ lbl = new HtmlPanel();
+ }
+
+ public Component getListCellRendererComponent(
+ JList list,
+ Object value,
+ int index,
+ boolean isSelected,
+ boolean cellHasFocus)
+ {
+ if (isSelected) {
+ lbl.setBackground(list.getSelectionBackground());
+ lbl.setForeground(list.getSelectionForeground());
+ } else {
+ lbl.setBackground(list.getBackground());
+ lbl.setForeground(list.getForeground());
+ }
+
+ PresetListEntry item = (PresetListEntry) value;
+ String s = item.getListDisplay();
+ lbl.setText(s);
+ lbl.setEnabled(list.isEnabled());
+ // We do not want the editor to have the maximum height of all
+ // entries. Return a dummy with bogus height.
+ if (index == -1) {
+ dummy.setPreferredSize(new Dimension(lbl.getPreferredSize().width, 10));
+ return dummy;
+ }
+ return lbl;
+ }
+ }
+
+ @Override public void addCommands(List<Tag> changedTags) {
+ Object obj = list.getSelectedItem();
+ String display = (obj == null) ? null : obj.toString();
+ String value = null;
+
+ if (display != null)
+ {
+ for (String key : lhm.keySet()) {
+ String k = lhm.get(key).toString();
+ if (k != null && k.equals(display)) {
+ value=key;
+ }
+ }
+ if (value == null) {
+ value = display;
+ }
+ } else {
+ value = "";
+ }
+
+ // no change if same as before
+ if (originalValue == null) {
+ if (value.length() == 0)
+ return;
+ } else if (value.equals(originalValue.toString()))
+ return;
+
+ if (delete_if_empty && value.length() == 0) {
+ value = null;
+ }
+ if (use_last_as_default) {
+ lastValue.put(key, value);
+ }
+ changedTags.add(new Tag(key, value));
+ }
+
+ public void setShort_description(String s) {
+ if (short_description_list == null) {
+ short_description_list = new ArrayList<String>();
+ }
+ short_description_list.add(tr(s));
+ }
+
+ @Override boolean requestFocusInWindow() {return list.requestFocusInWindow();}
+ }
+
+ /**
+ * allow escaped comma in comma separated list:
+ * "A\, B\, C,one\, two" --> ["A, B, C", "one, two"]
+ * @param delimiter the delimiter, e.g. a comma. separates the entries and
+ * must be escaped within one entry
+ * @param s the string
+ */
+ private static String[] splitEscaped(char delemiter, String s) {
+ List<String> result = new ArrayList<String>();
+ boolean backslash = false;
+ StringBuilder item = new StringBuilder();
+ for (int i=0; i<s.length(); i++) {
+ char ch = s.charAt(i);
+ if (backslash) {
+ item.append(ch);
+ backslash = false;
+ } else if (ch == '\\') {
+ backslash = true;
+ } else if (ch == delemiter) {
+ result.add(item.toString());
+ item.setLength(0);
+ } else {
+ item.append(ch);
+ }
+ }
+ if (item.length() > 0) {
+ result.add(item.toString());
+ }
+ return result.toArray(new String[result.size()]);
+ }
+
+ public static class Label extends Item {
+ public String text;
+ public String text_context;
+ public String locale_text;
+
+ @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+ if(locale_text == null) {
+ if(text_context != null) {
+ locale_text = trc(text_context, text);
+ } else {
+ locale_text = tr(text);
+ }
+ }
+ p.add(new JLabel(locale_text), GBC.eol());
+ return false;
+ }
+ @Override public void addCommands(List<Tag> changedTags) {}
+ }
+
+ public static class Link extends Item {
+ public String href;
+ public String text;
+ public String text_context;
+ public String locale_text;
+ public String locale_href;
+
+ @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+ if(locale_text == null) {
+ if(text == null) {
+ locale_text = tr("More information about this feature");
+ } else if(text_context != null) {
+ locale_text = trc(text_context, text);
+ } else {
+ locale_text = tr(text);
+ }
+ }
+ String url = locale_href;
+ if (url == null) {
+ url = href;
+ }
+ if (url != null) {
+ p.add(new UrlLabel(url, locale_text), GBC.eol().anchor(GBC.WEST));
+ }
+ return false;
+ }
+ @Override public void addCommands(List<Tag> changedTags) {}
+ }
+
+ public static class Role {
+ public EnumSet<PresetType> types;
+ public String key;
+ public String text;
+ public String text_context;
+ public String locale_text;
+
+ public boolean required=false;
+ public long count = 0;
+
+ public void setType(String types) throws SAXException {
+ this.types = TaggingPreset.getType(types);
+ }
+
+ public void setRequisite(String str) throws SAXException {
+ if("required".equals(str)) {
+ required = true;
+ } else if(!"optional".equals(str))
+ throw new SAXException(tr("Unknown requisite: {0}", str));
+ }
+
+ /* return either argument, the highest possible value or the lowest
+ allowed value */
+ public long getValidCount(long c)
+ {
+ if(count > 0 && !required)
+ return c != 0 ? count : 0;
+ else if(count > 0)
+ return count;
+ else if(!required)
+ return c != 0 ? c : 0;
+ else
+ return c != 0 ? c : 1;
+ }
+ public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+ String cstring;
+ if(count > 0 && !required) {
+ cstring = "0,"+String.valueOf(count);
+ } else if(count > 0) {
+ cstring = String.valueOf(count);
+ } else if(!required) {
+ cstring = "0-...";
+ } else {
+ cstring = "1-...";
+ }
+ if(locale_text == null) {
+ if (text != null) {
+ if(text_context != null) {
+ locale_text = trc(text_context, text);
+ } else {
+ locale_text = tr(text);
+ }
+ }
+ }
+ p.add(new JLabel(locale_text+":"), GBC.std().insets(0,0,10,0));
+ p.add(new JLabel(key), GBC.std().insets(0,0,10,0));
+ p.add(new JLabel(cstring), types == null ? GBC.eol() : GBC.std().insets(0,0,10,0));
+ if(types != null){
+ JPanel pp = new JPanel();
+ for(PresetType t : types) {
+ pp.add(new JLabel(ImageProvider.get(t.getIconName())));
+ }
+ p.add(pp, GBC.eol());
+ }
+ return true;
+ }
+ }
+
+ public static class Roles extends Item {
+ public List<Role> roles = new LinkedList<Role>();
+ @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+ p.add(new JLabel(" "), GBC.eol()); // space
+ if(roles.size() > 0)
+ {
+ JPanel proles = new JPanel(new GridBagLayout());
+ proles.add(new JLabel(tr("Available roles")), GBC.std().insets(0,0,10,0));
+ proles.add(new JLabel(tr("role")), GBC.std().insets(0,0,10,0));
+ proles.add(new JLabel(tr("count")), GBC.std().insets(0,0,10,0));
+ proles.add(new JLabel(tr("elements")), GBC.eol());
+ for (Role i : roles) {
+ i.addToPanel(proles, sel);
+ }
+ p.add(proles, GBC.eol());
+ }
+ return false;
+ }
+ @Override public void addCommands(List<Tag> changedTags) {}
+ }
+
+ public static class Optional extends Item {
+ // TODO: Draw a box around optional stuff
+ @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+ p.add(new JLabel(" "), GBC.eol()); // space
+ p.add(new JLabel(tr("Optional Attributes:")), GBC.eol());
+ p.add(new JLabel(" "), GBC.eol()); // space
+ return false;
+ }
+ @Override public void addCommands(List<Tag> changedTags) {}
+ }
+
+ public static class Space extends Item {
+ @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) {
+ p.add(new JLabel(" "), GBC.eol()); // space
+ return false;
+ }
+ @Override public void addCommands(List<Tag> changedTags) {}
+ }
+
+ public static class Key extends Item {
+ public String key;
+ public String value;
+
+ @Override public boolean addToPanel(JPanel p, Collection<OsmPrimitive> sel) { return false; }
+ @Override public void addCommands(List<Tag> changedTags) {
+ changedTags.add(new Tag(key, value != null && !value.equals("") ? value : null));
+ }
+ }
+
+ /**
+ * The types as preparsed collection.
+ */
+ public EnumSet<PresetType> types;
+ public List<Item> data = new LinkedList<Item>();
+ private static HashMap<String,String> lastValue = new HashMap<String,String>();
+
+ /**
+ * Create an empty tagging preset. This will not have any items and
+ * will be an empty string as text. createPanel will return null.
+ * Use this as default item for "do not select anything".
+ */
+ public TaggingPreset() {
+ MapView.addLayerChangeListener(this);
+ updateEnabledState();
+ }
+
+ /**
+ * Change the display name without changing the toolbar value.
+ */
+ public void setDisplayName() {
+ putValue(Action.NAME, getName());
+ putValue("toolbar", "tagging_" + getRawName());
+ putValue(OPTIONAL_TOOLTIP_TEXT, (group != null ?
+ tr("Use preset ''{0}'' of group ''{1}''", getLocaleName(), group.getName()) :
+ tr("Use preset ''{0}''", getLocaleName())));
+ }
+
+ public String getLocaleName() {
+ if(locale_name == null) {
+ if(name_context != null) {
+ locale_name = trc(name_context, name);
+ } else {
+ locale_name = tr(name);
+ }
+ }
+ return locale_name;
+ }
+
+ public String getName() {
+ return group != null ? group.getName() + "/" + getLocaleName() : getLocaleName();
+ }
+ public String getRawName() {
+ return group != null ? group.getRawName() + "/" + name : name;
+ }
+ /**
+ * Called from the XML parser to set the icon
+ *
+ * FIXME for Java 1.6 - use 24x24 icons for LARGE_ICON_KEY (button bar)
+ * and the 16x16 icons for SMALL_ICON.
+ */
+ public void setIcon(String iconName) {
+ Collection<String> s = Main.pref.getCollection("taggingpreset.icon.sources", null);
+ ImageIcon icon = ImageProvider.getIfAvailable(s, "presets", null, iconName, zipIcons);
+ if (icon == null)
+ {
+ System.out.println("Could not get presets icon " + iconName);
+ icon = new ImageIcon(iconName);
+ }
+ if (Math.max(icon.getIconHeight(), icon.getIconWidth()) != 16) {
+ icon = new ImageIcon(icon.getImage().getScaledInstance(16, 16, Image.SCALE_SMOOTH));
+ }
+ putValue(Action.SMALL_ICON, icon);
+ }
+
+ /**
+ * Called from the XML parser to set the types this preset affects
+ */
+
+ static public EnumSet<PresetType> getType(String types) throws SAXException {
+ EnumSet<PresetType> result = EnumSet.noneOf(PresetType.class);
+ for (String type : Arrays.asList(types.split(","))) {
+ try {
+ PresetType presetType = PresetType.valueOf(type.toUpperCase());
+ result.add(presetType);
+ } catch (IllegalArgumentException e) {
+ throw new SAXException(tr("Unknown type: {0}", type));
+ }
+ }
+ return result;
+ }
+
+ public void setType(String types) throws SAXException {
+ this.types = getType(types);
+ }
+
+ public static List<TaggingPreset> readAll(Reader in, boolean validate) throws SAXException {
+ XmlObjectParser parser = new XmlObjectParser();
+ parser.mapOnStart("item", TaggingPreset.class);
+ parser.mapOnStart("separator", TaggingPresetSeparator.class);
+ parser.mapBoth("group", TaggingPresetMenu.class);
+ parser.map("text", Text.class);
+ parser.map("link", Link.class);
+ parser.mapOnStart("optional", Optional.class);
+ parser.mapOnStart("roles", Roles.class);
+ parser.map("role", Role.class);
+ parser.map("check", Check.class);
+ parser.map("combo", Combo.class);
+ parser.map("multiselect", MultiSelect.class);
+ parser.map("label", Label.class);
+ parser.map("space", Space.class);
+ parser.map("key", Key.class);
+ LinkedList<TaggingPreset> all = new LinkedList<TaggingPreset>();
+ TaggingPresetMenu lastmenu = null;
+ Roles lastrole = null;
+
+ if (validate) {
+ parser.startWithValidation(in, "http://josm.openstreetmap.de/tagging-preset-1.0", "resource://data/tagging-preset.xsd");
+ } else {
+ parser.start(in);
+ }
+ while(parser.hasNext()) {
+ Object o = parser.next();
+ if (o instanceof TaggingPresetMenu) {
+ TaggingPresetMenu tp = (TaggingPresetMenu) o;
+ if(tp == lastmenu) {
+ lastmenu = tp.group;
+ } else
+ {
+ tp.group = lastmenu;
+ tp.setDisplayName();
+ lastmenu = tp;
+ all.add(tp);
+
+ }
+ lastrole = null;
+ } else if (o instanceof TaggingPresetSeparator) {
+ TaggingPresetSeparator tp = (TaggingPresetSeparator) o;
+ tp.group = lastmenu;
+ all.add(tp);
+ lastrole = null;
+ } else if (o instanceof TaggingPreset) {
+ TaggingPreset tp = (TaggingPreset) o;
+ tp.group = lastmenu;
+ tp.setDisplayName();
+ all.add(tp);
+ lastrole = null;
+ } else {
+ if(all.size() != 0) {
+ if(o instanceof Roles) {
+ all.getLast().data.add((Item)o);
+ lastrole = (Roles) o;
+ }
+ else if(o instanceof Role) {
+ if(lastrole == null)
+ throw new SAXException(tr("Preset role element without parent"));
+ lastrole.roles.add((Role) o);
+ }
+ else {
+ all.getLast().data.add((Item)o);
+ lastrole = null;
+ }
+ } else
+ throw new SAXException(tr("Preset sub element without parent"));
+ }
+ }
+ return all;
+ }
+
+ public static Collection<TaggingPreset> readAll(String source, boolean validate) throws SAXException, IOException {
+ MirroredInputStream s = new MirroredInputStream(source);
+ InputStream zip = s.getZipEntry("xml","preset");
+ if(zip != null) {
+ zipIcons = s.getFile();
+ }
+ InputStreamReader r;
+ try
+ {
+ r = new InputStreamReader(zip == null ? s : zip, "UTF-8");
+ }
+ catch (UnsupportedEncodingException e)
+ {
+ r = new InputStreamReader(zip == null ? s: zip);
+ }
+ return TaggingPreset.readAll(new BufferedReader(r), validate);
+ }
+
+ public static Collection<TaggingPreset> readAll(Collection<String> sources, boolean validate) {
+ LinkedList<TaggingPreset> allPresets = new LinkedList<TaggingPreset>();
+ for(String source : sources) {
+ try {
+ allPresets.addAll(TaggingPreset.readAll(source, validate));
+ } catch (IOException e) {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(
+ Main.parent,
+ tr("Could not read tagging preset source: {0}",source),
+ tr("Error"),
+ JOptionPane.ERROR_MESSAGE
+ );
+ } catch (SAXException e) {
+ System.err.println(e.getMessage());
+ System.err.println(source);
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(
+ Main.parent,
+ tr("Error parsing {0}: ", source)+e.getMessage(),
+ tr("Error"),
+ JOptionPane.ERROR_MESSAGE
+ );
+ }
+ zipIcons = null;
+ }
+ return allPresets;
+ }
+
+ public static LinkedList<String> getPresetSources() {
+ LinkedList<String> sources = new LinkedList<String>();
+
+ for (SourceEntry e : (new PresetPrefMigration()).get()) {
+ sources.add(e.url);
+ }
+
+ return sources;
+ }
+
+ public static Collection<TaggingPreset> readFromPreferences(boolean validate) {
+ return readAll(getPresetSources(), validate);
+ }
+
+ private static class PresetPanel extends JPanel {
+ boolean hasElements = false;
+ PresetPanel()
+ {
+ super(new GridBagLayout());
+ }
+ }
+
+ public PresetPanel createPanel(Collection<OsmPrimitive> selected) {
+ if (data == null)
+ return null;
+ PresetPanel p = new PresetPanel();
+ LinkedList<Item> l = new LinkedList<Item>();
+ if(types != null){
+ JPanel pp = new JPanel();
+ for(PresetType t : types){
+ JLabel la = new JLabel(ImageProvider.get(t.getIconName()));
+ la.setToolTipText(tr("Elements of type {0} are supported.", tr(t.getName())));
+ pp.add(la);
+ }
+ p.add(pp, GBC.eol());
+ }
+
+ JPanel items = new JPanel(new GridBagLayout());
+ for (Item i : data){
+ if(i instanceof Link) {
+ l.add(i);
+ } else {
+ if(i.addToPanel(items, selected)) {
+ p.hasElements = true;
+ }
+ }
+ }
+ p.add(items, GBC.eol().fill());
+ if (selected.size() == 0 && !supportsRelation()) {
+ GuiHelper.setEnabledRec(items, false);
+ }
+
+ for(Item link : l) {
+ link.addToPanel(p, selected);
+ }
+
+ return p;
+ }
+
+ public boolean isShowable()
+ {
+ for(Item i : data)
+ {
+ if(!(i instanceof Optional || i instanceof Space || i instanceof Key))
+ return true;
+ }
+ return false;
+ }
+
+ public void actionPerformed(ActionEvent e) {
+ if (Main.main == null) return;
+ if (Main.main.getCurrentDataSet() == null) return;
+
+ Collection<OsmPrimitive> sel = Main.main.getCurrentDataSet().getSelected();
+ int answer = showDialog(sel, supportsRelation());
+
+ if (sel.size() != 0 && answer == DIALOG_ANSWER_APPLY) {
+ Command cmd = createCommand(sel, getChangedTags());
+ if (cmd != null) {
+ Main.main.undoRedo.add(cmd);
+ }
+ } else if (answer == DIALOG_ANSWER_NEW_RELATION) {
+ List<Command> cmds = new ArrayList<Command>(2);
+ final Relation r = new Relation();
+ final Collection<RelationMember> members = new HashSet<RelationMember>();
+ for(Tag t : getChangedTags()) {
+ r.put(t.getKey(), t.getValue());
+ }
+ for(OsmPrimitive osm : sel) {
+ RelationMember rm = new RelationMember("", osm);
+ r.addMember(rm);
+ members.add(rm);
+ }
+ SwingUtilities.invokeLater(new Runnable() {
+ @Override
+ public void run() {
+ RelationEditor.getEditor(Main.main.getEditLayer(), r, members).setVisible(true);
+ }
+ });
+ }
+ Main.main.getCurrentDataSet().setSelected(Main.main.getCurrentDataSet().getSelected()); // force update
+
+ }
+
+ public int showDialog(Collection<OsmPrimitive> selection, final boolean showNewRelation) {
+ Collection<OsmPrimitive> sel = createSelection(selection);
+ PresetPanel p = createPanel(sel);
+ if (p == null)
+ return DIALOG_ANSWER_CANCEL;
+
+ int answer = 1;
+ if (p.getComponentCount() != 0 && (sel.size() == 0 || p.hasElements)) {
+ String title = trn("Change {0} object", "Change {0} objects", sel.size(), sel.size());
+ if(sel.size() == 0) {
+ if(originalSelectionEmpty) {
+ title = tr("Nothing selected!");
+ } else {
+ title = tr("Selection unsuitable!");
+ }
+ }
+
+ class PresetDialog extends ExtendedDialog {
+ public PresetDialog(Component content, String title, boolean disableApply) {
+ super(Main.parent,
+ title,
+ showNewRelation?
+ new String[] { tr("Apply Preset"), tr("New relation"), tr("Cancel") }:
+ new String[] { tr("Apply Preset"), tr("Cancel") },
+ true);
+ contentInsets = new Insets(10,5,0,5);
+ if (showNewRelation) {
+ setButtonIcons(new String[] {"ok.png", "dialogs/addrelation.png", "cancel.png" });
+ } else {
+ setButtonIcons(new String[] {"ok.png", "cancel.png" });
+ }
+ setContent(content);
+ setDefaultButton(1);
+ setupDialog();
+ buttons.get(0).setEnabled(!disableApply);
+ buttons.get(0).setToolTipText(title);
+ showDialog();
+ }
+ }
+
+ answer = new PresetDialog(p, title, (sel.size() == 0)).getValue();
+ }
+ if (!showNewRelation && answer == 2)
+ return DIALOG_ANSWER_CANCEL;
+ else
+ return answer;
+ }
+
+ /**
+ * True whenever the original selection given into createSelection was empty
+ */
+ private boolean originalSelectionEmpty = false;
+
+ /**
+ * Removes all unsuitable OsmPrimitives from the given list
+ * @param participants List of possibile OsmPrimitives to tag
+ * @return Cleaned list with suitable OsmPrimitives only
+ */
+ private Collection<OsmPrimitive> createSelection(Collection<OsmPrimitive> participants) {
+ originalSelectionEmpty = participants.size() == 0;
+ Collection<OsmPrimitive> sel = new LinkedList<OsmPrimitive>();
+ for (OsmPrimitive osm : participants)
+ {
+ if (types != null)
+ {
+ if(osm instanceof Relation)
+ {
+ if(!types.contains(PresetType.RELATION)) {
+ continue;
+ }
+ }
+ else if(osm instanceof Node)
+ {
+ if(!types.contains(PresetType.NODE)) {
+ continue;
+ }
+ }
+ else if(osm instanceof Way)
+ {
+ if(!types.contains(PresetType.WAY) &&
+ !(types.contains(PresetType.CLOSEDWAY) && ((Way)osm).isClosed())) {
+ continue;
+ }
+ }
+ }
+ sel.add(osm);
+ }
+ return sel;
+ }
+
+ public List<Tag> getChangedTags() {
+ List<Tag> result = new ArrayList<Tag>();
+ for (Item i: data) {
+ i.addCommands(result);
+ }
+ return result;
+ }
+
+ public static Command createCommand(Collection<OsmPrimitive> sel, List<Tag> changedTags) {
+ List<Command> cmds = new ArrayList<Command>();
+ for (Tag tag: changedTags) {
+ if (!tag.getValue().isEmpty()) {
+ cmds.add(new ChangePropertyCommand(sel, tag.getKey(), tag.getValue()));
+ }
+ }
+
+ if (cmds.size() == 0)
+ return null;
+ else if (cmds.size() == 1)
+ return cmds.get(0);
+ else
+ return new SequenceCommand(tr("Change Properties"), cmds);
+ }
+
+ private boolean supportsRelation() {
+ return types == null || types.contains(PresetType.RELATION);
+ }
+
+ protected void updateEnabledState() {
+ setEnabled(Main.main != null && Main.main.getCurrentDataSet() != null);
+ }
+
+ public void activeLayerChange(Layer oldLayer, Layer newLayer) {
+ updateEnabledState();
+ }
+
+ public void layerAdded(Layer newLayer) {
+ updateEnabledState();
+ }
+
+ public void layerRemoved(Layer oldLayer) {
+ updateEnabledState();
+ }
+
+ @Override
+ public String toString() {
+ return (types == null?"":types) + " " + name;
+ }
+}
=== added directory '.pc/50-preferences_world_readable.patch'
=== added directory '.pc/50-preferences_world_readable.patch/src'
=== added directory '.pc/50-preferences_world_readable.patch/src/org'
=== added directory '.pc/50-preferences_world_readable.patch/src/org/openstreetmap'
=== added directory '.pc/50-preferences_world_readable.patch/src/org/openstreetmap/josm'
=== added directory '.pc/50-preferences_world_readable.patch/src/org/openstreetmap/josm/data'
=== added file '.pc/50-preferences_world_readable.patch/src/org/openstreetmap/josm/data/Preferences.java'
--- .pc/50-preferences_world_readable.patch/src/org/openstreetmap/josm/data/Preferences.java 1970-01-01 00:00:00 +0000
+++ .pc/50-preferences_world_readable.patch/src/org/openstreetmap/josm/data/Preferences.java 2011-08-22 12:04:26 +0000
@@ -0,0 +1,1001 @@
+// License: GPL. Copyright 2007 by Immanuel Scholz and others
+package org.openstreetmap.josm.data;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.awt.Color;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.io.Reader;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.reflect.Field;
+import java.nio.channels.FileChannel;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.Map.Entry;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+import javax.swing.JOptionPane;
+
+import org.openstreetmap.josm.io.XmlWriter;
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.ColorHelper;
+import org.openstreetmap.josm.tools.Utils;
+import org.openstreetmap.josm.tools.XmlObjectParser;
+import org.xml.sax.SAXException;
+
+/**
+ * This class holds all preferences for JOSM.
+ *
+ * Other classes can register their beloved properties here. All properties will be
+ * saved upon set-access.
+ *
+ * Each property is a simple key=value pair of Strings.
+ * In addition, each key has a unique default value that is set when the value is first
+ * accessed using one of the get...() methods. You can use the same preference
+ * key in different parts of the code, but the default value must be the same
+ * everywhere. null is a legitimate default value.
+ *
+ * At the moment, there is no such thing as an empty value.
+ * If you put "" or null as value, the property is removed.
+ *
+ * @author imi
+ */
+public class Preferences {
+ //static private final Logger logger = Logger.getLogger(Preferences.class.getName());
+
+ /**
+ * Internal storage for the preference directory.
+ * Do not access this variable directly!
+ * @see #getPreferencesDirFile()
+ */
+ private File preferencesDirFile = null;
+
+ /**
+ * Map the property name to the property object. Does not contain null or "" values.
+ */
+ protected final SortedMap<String, String> properties = new TreeMap<String, String>();
+ protected final SortedMap<String, String> defaults = new TreeMap<String, String>();
+
+ public interface PreferenceChangeEvent{
+ String getKey();
+ String getOldValue();
+ String getNewValue();
+ }
+
+ public interface PreferenceChangedListener {
+ void preferenceChanged(PreferenceChangeEvent e);
+ }
+
+ private static class DefaultPreferenceChangeEvent implements PreferenceChangeEvent {
+ private final String key;
+ private final String oldValue;
+ private final String newValue;
+
+ public DefaultPreferenceChangeEvent(String key, String oldValue, String newValue) {
+ this.key = key;
+ this.oldValue = oldValue;
+ this.newValue = newValue;
+ }
+
+ public String getKey() {
+ return key;
+ }
+ public String getOldValue() {
+ return oldValue;
+ }
+ public String getNewValue() {
+ return newValue;
+ }
+ }
+
+ public interface ColorKey {
+ String getColorName();
+ String getSpecialName();
+ Color getDefault();
+ }
+
+ private final CopyOnWriteArrayList<PreferenceChangedListener> listeners = new CopyOnWriteArrayList<PreferenceChangedListener>();
+
+ public void addPreferenceChangeListener(PreferenceChangedListener listener) {
+ if (listener != null) {
+ listeners.addIfAbsent(listener);
+ }
+ }
+
+ public void removePreferenceChangeListener(PreferenceChangedListener listener) {
+ listeners.remove(listener);
+ }
+
+ protected void firePreferenceChanged(String key, String oldValue, String newValue) {
+ PreferenceChangeEvent evt = new DefaultPreferenceChangeEvent(key, oldValue, newValue);
+ for (PreferenceChangedListener l : listeners) {
+ l.preferenceChanged(evt);
+ }
+ }
+
+ /**
+ * Return the location of the user defined preferences file
+ */
+ public String getPreferencesDir() {
+ final String path = getPreferencesDirFile().getPath();
+ if (path.endsWith(File.separator))
+ return path;
+ return path + File.separator;
+ }
+
+ public File getPreferencesDirFile() {
+ if (preferencesDirFile != null)
+ return preferencesDirFile;
+ String path;
+ path = System.getProperty("josm.home");
+ if (path != null) {
+ preferencesDirFile = new File(path);
+ } else {
+ path = System.getenv("APPDATA");
+ if (path != null) {
+ preferencesDirFile = new File(path, "JOSM");
+ } else {
+ preferencesDirFile = new File(System.getProperty("user.home"), ".josm");
+ }
+ }
+ return preferencesDirFile;
+ }
+
+ public File getPreferenceFile() {
+ return new File(getPreferencesDirFile(), "preferences");
+ }
+
+ public File getPluginsDirectory() {
+ return new File(getPreferencesDirFile(), "plugins");
+ }
+
+ /**
+ * @return A list of all existing directories where resources could be stored.
+ */
+ public Collection<String> getAllPossiblePreferenceDirs() {
+ LinkedList<String> locations = new LinkedList<String>();
+ locations.add(Main.pref.getPreferencesDir());
+ String s;
+ if ((s = System.getenv("JOSM_RESOURCES")) != null) {
+ if (!s.endsWith(File.separator)) {
+ s = s + File.separator;
+ }
+ locations.add(s);
+ }
+ if ((s = System.getProperty("josm.resources")) != null) {
+ if (!s.endsWith(File.separator)) {
+ s = s + File.separator;
+ }
+ locations.add(s);
+ }
+ String appdata = System.getenv("APPDATA");
+ if (System.getenv("ALLUSERSPROFILE") != null && appdata != null
+ && appdata.lastIndexOf(File.separator) != -1) {
+ appdata = appdata.substring(appdata.lastIndexOf(File.separator));
+ locations.add(new File(new File(System.getenv("ALLUSERSPROFILE"),
+ appdata), "JOSM").getPath());
+ }
+ locations.add("/usr/local/share/josm/");
+ locations.add("/usr/local/lib/josm/");
+ locations.add("/usr/share/josm/");
+ locations.add("/usr/lib/josm/");
+ return locations;
+ }
+
+ synchronized public boolean hasKey(final String key) {
+ return properties.containsKey(key);
+ }
+
+ /**
+ * Get settings value for a certain key.
+ * @param key the identifier for the setting
+ * @return "" if there is nothing set for the preference key,
+ * the corresponding value otherwise. The result is not null.
+ */
+ synchronized public String get(final String key) {
+ putDefault(key, null);
+ if (!properties.containsKey(key))
+ return "";
+ return properties.get(key);
+ }
+
+ /**
+ * Get settings value for a certain key and provide default a value.
+ * @param key the identifier for the setting
+ * @param def the default value. For each call of get() with a given key, the
+ * default value must be the same.
+ * @return the corresponding value if the property has been set before,
+ * def otherwise
+ */
+ synchronized public String get(final String key, final String def) {
+ putDefault(key, def);
+ final String prop = properties.get(key);
+ if (prop == null || prop.equals(""))
+ return def;
+ return prop;
+ }
+
+ synchronized public Map<String, String> getAllPrefix(final String prefix) {
+ final Map<String,String> all = new TreeMap<String,String>();
+ for (final Entry<String,String> e : properties.entrySet()) {
+ if (e.getKey().startsWith(prefix)) {
+ all.put(e.getKey(), e.getValue());
+ }
+ }
+ return all;
+ }
+
+ synchronized private Map<String, String> getAllPrefixDefault(final String prefix) {
+ final Map<String,String> all = new TreeMap<String,String>();
+ for (final Entry<String,String> e : defaults.entrySet()) {
+ if (e.getKey().startsWith(prefix)) {
+ all.put(e.getKey(), e.getValue());
+ }
+ }
+ return all;
+ }
+
+ synchronized public TreeMap<String, String> getAllColors() {
+ final TreeMap<String,String> all = new TreeMap<String,String>();
+ for (final Entry<String,String> e : defaults.entrySet()) {
+ if (e.getKey().startsWith("color.") && e.getValue() != null) {
+ all.put(e.getKey().substring(6), e.getValue());
+ }
+ }
+ for (final Entry<String,String> e : properties.entrySet()) {
+ if (e.getKey().startsWith("color.")) {
+ all.put(e.getKey().substring(6), e.getValue());
+ }
+ }
+ return all;
+ }
+
+ synchronized public Map<String, String> getDefaults() {
+ return defaults;
+ }
+
+ synchronized public void putDefault(final String key, final String def) {
+ if(!defaults.containsKey(key) || defaults.get(key) == null) {
+ defaults.put(key, def);
+ } else if(def != null && !defaults.get(key).equals(def)) {
+ System.out.println("Defaults for " + key + " differ: " + def + " != " + defaults.get(key));
+ }
+ }
+
+ synchronized public boolean getBoolean(final String key) {
+ putDefault(key, null);
+ return properties.containsKey(key) ? Boolean.parseBoolean(properties.get(key)) : false;
+ }
+
+ synchronized public boolean getBoolean(final String key, final boolean def) {
+ putDefault(key, Boolean.toString(def));
+ return properties.containsKey(key) ? Boolean.parseBoolean(properties.get(key)) : def;
+ }
+
+ /**
+ * Set a value for a certain setting. The changed setting is saved
+ * to the preference file immediately. Due to caching mechanisms on modern
+ * operating systems and hardware, this shouldn't be a performance problem.
+ * @param key the unique identifier for the setting
+ * @param value the value of the setting. Can be null or "" wich both removes
+ * the key-value entry.
+ * @return if true, something has changed (i.e. value is different than before)
+ */
+ public boolean put(final String key, String value) {
+ boolean changed = false;
+ String oldValue = null;
+
+ synchronized (this) {
+ oldValue = properties.get(key);
+ if(value != null && value.length() == 0) {
+ value = null;
+ }
+ // value is the same as before - no need to save anything
+ boolean equalValue = oldValue != null && oldValue.equals(value);
+ // The setting was previously unset and we are supposed to put a
+ // value that equals the default value. This is not necessary because
+ // the default value is the same throughout josm. In addition we like
+ // to have the possibility to change the default value from version
+ // to version, which would not work if we wrote it to the preference file.
+ boolean unsetIsDefault = oldValue == null && (value == null || value.equals(defaults.get(key)));
+
+ if (!(equalValue || unsetIsDefault)) {
+ if (value == null) {
+ properties.remove(key);
+ } else {
+ properties.put(key, value);
+ }
+ try {
+ save();
+ } catch(IOException e){
+ System.out.println(tr("Warning: failed to persist preferences to ''{0}''", getPreferenceFile().getAbsoluteFile()));
+ }
+ changed = true;
+ }
+ }
+ if (changed) {
+ // Call outside of synchronized section in case some listener wait for other thread that wait for preference lock
+ firePreferenceChanged(key, oldValue, value);
+ }
+ return changed;
+ }
+
+ public boolean put(final String key, final boolean value) {
+ return put(key, Boolean.toString(value));
+ }
+
+ public boolean putInteger(final String key, final Integer value) {
+ return put(key, Integer.toString(value));
+ }
+
+ public boolean putDouble(final String key, final Double value) {
+ return put(key, Double.toString(value));
+ }
+
+ public boolean putLong(final String key, final Long value) {
+ return put(key, Long.toString(value));
+ }
+
+ /**
+ * Called after every put. In case of a problem, do nothing but output the error
+ * in log.
+ */
+ public void save() throws IOException {
+ /* currently unused, but may help to fix configuration issues in future */
+ putInteger("josm.version", Version.getInstance().getVersion());
+
+ updateSystemProperties();
+ if(Main.applet)
+ return;
+ File prefFile = new File(getPreferencesDirFile(), "preferences");
+
+ // Backup old preferences if there are old preferences
+ if(prefFile.exists()) {
+ copyFile(prefFile, new File(prefFile + "_backup"));
+ }
+
+ final PrintWriter out = new PrintWriter(new OutputStreamWriter(
+ new FileOutputStream(prefFile + "_tmp"), "utf-8"), false);
+ for (final Entry<String, String> e : properties.entrySet()) {
+ String s = defaults.get(e.getKey());
+ /* don't save default values */
+ if(s == null || !s.equals(e.getValue())) {
+ out.println(e.getKey() + "=" + e.getValue());
+ }
+ }
+ out.close();
+
+ File tmpFile = new File(prefFile + "_tmp");
+ copyFile(tmpFile, prefFile);
+ tmpFile.delete();
+ }
+
+ /**
+ * Simple file copy function that will overwrite the target file
+ * Taken from http://www.rgagnon.com/javadetails/java-0064.html (CC-NC-BY-SA)
+ * @param in
+ * @param out
+ * @throws IOException
+ */
+ public static void copyFile(File in, File out) throws IOException {
+ FileChannel inChannel = new FileInputStream(in).getChannel();
+ FileChannel outChannel = new FileOutputStream(out).getChannel();
+ try {
+ inChannel.transferTo(0, inChannel.size(),
+ outChannel);
+ }
+ catch (IOException e) {
+ throw e;
+ }
+ finally {
+ if (inChannel != null) {
+ inChannel.close();
+ }
+ if (outChannel != null) {
+ outChannel.close();
+ }
+ }
+ }
+
+ public void load() throws IOException {
+ properties.clear();
+ if(!Main.applet) {
+ final BufferedReader in = new BufferedReader(new InputStreamReader(
+ new FileInputStream(getPreferencesDir()+"preferences"), "utf-8"));
+ int lineNumber = 0;
+ ArrayList<Integer> errLines = new ArrayList<Integer>();
+ for (String line = in.readLine(); line != null; line = in.readLine(), lineNumber++) {
+ final int i = line.indexOf('=');
+ if (i == -1 || i == 0) {
+ errLines.add(lineNumber);
+ continue;
+ }
+ String key = line.substring(0,i);
+ String value = line.substring(i+1);
+ if (!value.isEmpty()) {
+ properties.put(key, value);
+ }
+ }
+ if (!errLines.isEmpty())
+ throw new IOException(tr("Malformed config file at lines {0}", errLines));
+ }
+ updateSystemProperties();
+ }
+
+ public void init(boolean reset){
+ if(Main.applet)
+ return;
+ // get the preferences.
+ File prefDir = getPreferencesDirFile();
+ if (prefDir.exists()) {
+ if(!prefDir.isDirectory()) {
+ System.err.println(tr("Warning: Failed to initialize preferences. Preference directory ''{0}'' is not a directory.", prefDir.getAbsoluteFile()));
+ JOptionPane.showMessageDialog(
+ Main.parent,
+ tr("<html>Failed to initialize preferences.<br>Preference directory ''{0}'' is not a directory.</html>", prefDir.getAbsoluteFile()),
+ tr("Error"),
+ JOptionPane.ERROR_MESSAGE
+ );
+ return;
+ }
+ } else {
+ if (! prefDir.mkdirs()) {
+ System.err.println(tr("Warning: Failed to initialize preferences. Failed to create missing preference directory: {0}", prefDir.getAbsoluteFile()));
+ JOptionPane.showMessageDialog(
+ Main.parent,
+ tr("<html>Failed to initialize preferences.<br>Failed to create missing preference directory: {0}</html>",prefDir.getAbsoluteFile()),
+ tr("Error"),
+ JOptionPane.ERROR_MESSAGE
+ );
+ return;
+ }
+ }
+
+ File preferenceFile = getPreferenceFile();
+ try {
+ if (!preferenceFile.exists()) {
+ System.out.println(tr("Warning: Missing preference file ''{0}''. Creating a default preference file.", preferenceFile.getAbsoluteFile()));
+ resetToDefault();
+ save();
+ } else if (reset) {
+ System.out.println(tr("Warning: Replacing existing preference file ''{0}'' with default preference file.", preferenceFile.getAbsoluteFile()));
+ resetToDefault();
+ save();
+ }
+ } catch(IOException e) {
+ e.printStackTrace();
+ JOptionPane.showMessageDialog(
+ Main.parent,
+ tr("<html>Failed to initialize preferences.<br>Failed to reset preference file to default: {0}</html>",getPreferenceFile().getAbsoluteFile()),
+ tr("Error"),
+ JOptionPane.ERROR_MESSAGE
+ );
+ return;
+ }
+ try {
+ load();
+ } catch (IOException e) {
+ e.printStackTrace();
+ File backupFile = new File(prefDir,"preferences.bak");
+ JOptionPane.showMessageDialog(
+ Main.parent,
+ tr("<html>Preferences file had errors.<br> Making backup of old one to <br>{0}<br> and creating a new default preference file.</html>", backupFile.getAbsoluteFile()),
+ tr("Error"),
+ JOptionPane.ERROR_MESSAGE
+ );
+ preferenceFile.renameTo(backupFile);
+ try {
+ resetToDefault();
+ save();
+ } catch(IOException e1) {
+ e1.printStackTrace();
+ System.err.println(tr("Warning: Failed to initialize preferences.Failed to reset preference file to default: {0}", getPreferenceFile()));
+ }
+ }
+ }
+
+ public final void resetToDefault(){
+ properties.clear();
+ }
+
+ /**
+ * Convenience method for accessing colour preferences.
+ *
+ * @param colName name of the colour
+ * @param def default value
+ * @return a Color object for the configured colour, or the default value if none configured.
+ */
+ synchronized public Color getColor(String colName, Color def) {
+ return getColor(colName, null, def);
+ }
+
+ public Color getColor(ColorKey key) {
+ return getColor(key.getColorName(), key.getSpecialName(), key.getDefault());
+ }
+
+ /**
+ * Convenience method for accessing colour preferences.
+ *
+ * @param colName name of the colour
+ * @param specName name of the special colour settings
+ * @param def default value
+ * @return a Color object for the configured colour, or the default value if none configured.
+ */
+ synchronized public Color getColor(String colName, String specName, Color def) {
+ putDefault("color."+colName, ColorHelper.color2html(def));
+ String colStr = specName != null ? get("color."+specName) : "";
+ if(colStr.equals("")) {
+ colStr = get("color."+colName);
+ }
+ return colStr.equals("") ? def : ColorHelper.html2color(colStr);
+ }
+
+ synchronized public Color getDefaultColor(String colName) {
+ String colStr = defaults.get("color."+colName);
+ return colStr == null || "".equals(colStr) ? null : ColorHelper.html2color(colStr);
+ }
+
+ synchronized public boolean putColor(String colName, Color val) {
+ return put("color."+colName, val != null ? ColorHelper.color2html(val) : null);
+ }
+
+ synchronized public int getInteger(String key, int def) {
+ putDefault(key, Integer.toString(def));
+ String v = get(key);
+ if(null == v)
+ return def;
+
+ try {
+ return Integer.parseInt(v);
+ } catch(NumberFormatException e) {
+ // fall out
+ }
+ return def;
+ }
+
+ synchronized public long getLong(String key, long def) {
+ putDefault(key, Long.toString(def));
+ String v = get(key);
+ if(null == v)
+ return def;
+
+ try {
+ return Long.parseLong(v);
+ } catch(NumberFormatException e) {
+ // fall out
+ }
+ return def;
+ }
+
+ synchronized public double getDouble(String key, double def) {
+ putDefault(key, Double.toString(def));
+ String v = get(key);
+ if(null == v)
+ return def;
+
+ try {
+ return Double.parseDouble(v);
+ } catch(NumberFormatException e) {
+ // fall out
+ }
+ return def;
+ }
+
+ synchronized public double getDouble(String key, String def) {
+ putDefault(key, def);
+ String v = get(key);
+ if(v != null && v.length() != 0) {
+ try { return Double.parseDouble(v); } catch(NumberFormatException e) {}
+ }
+ try { return Double.parseDouble(def); } catch(NumberFormatException e) {}
+ return 0.0;
+ }
+
+ synchronized public String getCollectionAsString(final String key) {
+ String s = get(key);
+ if(s != null && s.length() != 0) {
+ s = s.replaceAll("\u001e",",");
+ }
+ return s;
+ }
+
+ public boolean isCollection(String key, boolean def) {
+ String s = get(key);
+ if (s != null && s.length() != 0)
+ return s.indexOf("\u001e") >= 0;
+ else
+ return def;
+ }
+
+ /**
+ * Get a list of values for a certain key
+ * @param key the identifier for the setting
+ * @param def the default value.
+ * @return the corresponding value if the property has been set before,
+ * def otherwise
+ */
+ synchronized public Collection<String> getCollection(String key, Collection<String> def) {
+ putCollectionDefault(key, def);
+ String s = get(key);
+ if(s != null && s.length() != 0)
+ return Arrays.asList(s.split("\u001e", -1));
+ return def;
+ }
+
+ /**
+ * Get a list of values for a certain key
+ * @param key the identifier for the setting
+ * @return the corresponding value if the property has been set before,
+ * an empty Collection otherwise.
+ */
+ synchronized public Collection<String> getCollection(String key) {
+ putCollectionDefault(key, null);
+ String s = get(key);
+ if (s != null && s.length() != 0)
+ return Arrays.asList(s.split("\u001e", -1));
+ return Collections.emptyList();
+ }
+
+ /* old style conversion, replace by above call after some transition time */
+ /* remove this function, when no more old-style preference collections in the code */
+ @Deprecated
+ synchronized public Collection<String> getCollectionOld(String key, String sep) {
+ putCollectionDefault(key, null);
+ String s = get(key);
+ if (s != null && s.length() != 0) {
+ if(!s.contains("\u001e") && s.contains(sep)) {
+ s = s.replace(sep, "\u001e");
+ put(key, s);
+ }
+ return Arrays.asList(s.split("\u001e", -1));
+ }
+ return Collections.emptyList();
+ }
+
+ synchronized public void removeFromCollection(String key, String value) {
+ List<String> a = new ArrayList<String>(getCollection(key, Collections.<String>emptyList()));
+ a.remove(value);
+ putCollection(key, a);
+ }
+
+ synchronized public boolean putCollection(String key, Collection<String> val) {
+ return put(key, Utils.join("\u001e", val));
+ }
+
+ synchronized private void putCollectionDefault(String key, Collection<String> val) {
+ putDefault(key, Utils.join("\u001e", val));
+ }
+
+ /**
+ * Used to read a 2-dimensional array of strings from the preference file.
+ * If not a single entry could be found, def is returned.
+ */
+ synchronized public Collection<Collection<String>> getArray(String key,
+ Collection<Collection<String>> def)
+ {
+ if(def != null)
+ putArrayDefault(key, def);
+ key += ".";
+ int num = 0;
+ Collection<Collection<String>> col = new LinkedList<Collection<String>>();
+ while(properties.containsKey(key+num)) {
+ col.add(getCollection(key+num++, null));
+ }
+ return num == 0 ? def : col;
+ }
+
+ synchronized public boolean putArray(String key, Collection<Collection<String>> val) {
+ boolean changed = false;
+ key += ".";
+ Collection<String> keys = getAllPrefix(key).keySet();
+ if(val != null) {
+ int num = 0;
+ for(Collection<String> c : val) {
+ keys.remove(key+num);
+ changed |= putCollection(key+num++, c);
+ }
+ }
+ int l = key.length();
+ for(String k : keys) {
+ try {
+ Integer.valueOf(k.substring(l));
+ changed |= put(k, null);
+ } catch(NumberFormatException e) {
+ /* everything which does not end with a number should not be deleted */
+ }
+ }
+ return changed;
+ }
+
+ synchronized private void putArrayDefault(String key, Collection<Collection<String>> val) {
+ key += ".";
+ Collection<String> keys = getAllPrefixDefault(key).keySet();
+ int num = 0;
+ for(Collection<String> c : val) {
+ keys.remove(key+num);
+ putCollectionDefault(key+num++, c);
+ }
+ int l = key.length();
+ for(String k : keys) {
+ try {
+ Integer.valueOf(k.substring(l));
+ defaults.remove(k);
+ } catch(Exception e) {
+ /* everything which does not end with a number should not be deleted */
+ }
+ }
+ }
+
+ @Retention(RetentionPolicy.RUNTIME) public @interface pref { }
+ @Retention(RetentionPolicy.RUNTIME) public @interface writeExplicitly { }
+
+ /**
+ * Get a list of hashes which are represented by a struct-like class.
+ * It reads lines of the form
+ * > key.0=prop:val \u001e prop:val \u001e ... \u001e prop:val
+ * > ...
+ * > key.N=prop:val \u001e prop:val \u001e ... \u001e prop:val
+ * Possible properties are given by fields of the class klass that have
+ * the @pref annotation.
+ * Default constructor is used to initialize the struct objects, properties
+ * then override some of these default values.
+ * @param key main preference key
+ * @param klass The struct class
+ * @return a list of objects of type T or an empty list if nothing was found
+ */
+ public <T> List<T> getListOfStructs(String key, Class<T> klass) {
+ List<T> r = getListOfStructs(key, null, klass);
+ if (r == null)
+ return Collections.emptyList();
+ else
+ return r;
+ }
+
+ /**
+ * same as above, but returns def if nothing was found
+ */
+ public <T> List<T> getListOfStructs(String key, Collection<T> def, Class<T> klass) {
+ Collection<Collection<String>> array =
+ getArray(key, def == null ? null : serializeListOfStructs(def, klass));
+ if (array == null)
+ return def == null ? null : new ArrayList<T>(def);
+ List<T> lst = new ArrayList<T>();
+ for (Collection<String> entries : array) {
+ T struct = deserializeStruct(entries, klass);
+ lst.add(struct);
+ }
+ return lst;
+ }
+
+ /**
+ * Save a list of hashes represented by a struct-like class.
+ * Considers only fields that have the @pref annotation.
+ * In addition it does not write fields with null values. (Thus they are cleared)
+ * Default values are given by the field values after default constructor has
+ * been called.
+ * Fields equal to the default value are not written unless the field has
+ * the @writeExplicitly annotation.
+ * @param key main preference key
+ * @param val the list that is supposed to be saved
+ * @param klass The struct class
+ * @return true if something has changed
+ */
+ public <T> boolean putListOfStructs(String key, Collection<T> val, Class<T> klass) {
+ return putArray(key, serializeListOfStructs(val, klass));
+ }
+
+ private <T> Collection<Collection<String>> serializeListOfStructs(Collection<T> l, Class<T> klass) {
+ if (l == null)
+ return null;
+ Collection<Collection<String>> vals = new ArrayList<Collection<String>>();
+ for (T struct : l) {
+ if (struct == null)
+ continue;
+ vals.add(serializeStruct(struct, klass));
+ }
+ return vals;
+ }
+
+ private <T> Collection<String> serializeStruct(T struct, Class<T> klass) {
+ T structPrototype;
+ try {
+ structPrototype = klass.newInstance();
+ } catch (InstantiationException ex) {
+ throw new RuntimeException();
+ } catch (IllegalAccessException ex) {
+ throw new RuntimeException();
+ }
+
+ Collection<String> hash = new ArrayList<String>();
+ for (Field f : klass.getDeclaredFields()) {
+ if (f.getAnnotation(pref.class) == null) {
+ continue;
+ }
+ f.setAccessible(true);
+ try {
+ Object fieldValue = f.get(struct);
+ Object defaultFieldValue = f.get(structPrototype);
+ if (fieldValue != null) {
+ if (f.getAnnotation(writeExplicitly.class) != null || !Utils.equal(fieldValue, defaultFieldValue)) {
+ hash.add(String.format("%s:%s", f.getName().replace("_", "-"), fieldValue.toString()));
+ }
+ }
+ } catch (IllegalArgumentException ex) {
+ throw new RuntimeException();
+ } catch (IllegalAccessException ex) {
+ throw new RuntimeException();
+ }
+ }
+ return hash;
+ }
+
+ private <T> T deserializeStruct(Collection<String> hash, Class<T> klass) {
+ T struct = null;
+ try {
+ struct = klass.newInstance();
+ } catch (InstantiationException ex) {
+ throw new RuntimeException();
+ } catch (IllegalAccessException ex) {
+ throw new RuntimeException();
+ }
+ for (String key_value : hash) {
+ final int i = key_value.indexOf(':');
+ if (i == -1 || i == 0) {
+ continue;
+ }
+ String key = key_value.substring(0,i);
+ String valueString = key_value.substring(i+1);
+
+ Object value = null;
+ Field f;
+ try {
+ f = klass.getDeclaredField(key.replace("-", "_"));
+ } catch (NoSuchFieldException ex) {
+ continue;
+ } catch (SecurityException ex) {
+ throw new RuntimeException();
+ }
+ if (f.getAnnotation(pref.class) == null) {
+ continue;
+ }
+ f.setAccessible(true);
+ if (f.getType() == Boolean.class || f.getType() == boolean.class) {
+ value = Boolean.parseBoolean(valueString);
+ } else if (f.getType() == Integer.class || f.getType() == int.class) {
+ try {
+ value = Integer.parseInt(valueString);
+ } catch (NumberFormatException nfe) {
+ continue;
+ }
+ } else if (f.getType() == String.class) {
+ value = valueString;
+ } else
+ throw new RuntimeException("unsupported preference primitive type");
+
+ try {
+ f.set(struct, value);
+ } catch (IllegalArgumentException ex) {
+ throw new AssertionError();
+ } catch (IllegalAccessException ex) {
+ throw new RuntimeException();
+ }
+ }
+ return struct;
+ }
+
+ /**
+ * Updates system properties with the current values in the preferences.
+ *
+ */
+ public void updateSystemProperties() {
+ Properties sysProp = System.getProperties();
+ sysProp.put("http.agent", Version.getInstance().getAgentString());
+ System.setProperties(sysProp);
+ }
+
+ /**
+ * The default plugin site
+ */
+ private final static String[] DEFAULT_PLUGIN_SITE = {
+ "http://josm.openstreetmap.de/plugin%<?plugins=>"};
+
+ /**
+ * Replies the collection of plugin site URLs from where plugin lists can be downloaded
+ *
+ * @return
+ */
+ public Collection<String> getPluginSites() {
+ return getCollection("pluginmanager.sites", Arrays.asList(DEFAULT_PLUGIN_SITE));
+ }
+
+ /**
+ * Sets the collection of plugin site URLs.
+ *
+ * @param sites the site URLs
+ */
+ public void setPluginSites(Collection<String> sites) {
+ putCollection("pluginmanager.sites", sites);
+ }
+
+ public static class XMLTag {
+ public String key;
+ public String value;
+ }
+ public static class XMLCollection {
+ public String key;
+ }
+ public static class XMLEntry {
+ public String value;
+ }
+ public void fromXML(Reader in) throws SAXException {
+ XmlObjectParser parser = new XmlObjectParser();
+ parser.map("tag", XMLTag.class);
+ parser.map("entry", XMLEntry.class);
+ parser.map("collection", XMLCollection.class);
+ parser.startWithValidation(in,
+ "http://josm.openstreetmap.de/preferences-1.0", "resource://data/preferences.xsd");
+ LinkedList<String> vals = new LinkedList<String>();
+ while(parser.hasNext()) {
+ Object o = parser.next();
+ if(o instanceof XMLTag) {
+ properties.put(((XMLTag)o).key, ((XMLTag)o).value);
+ } else if (o instanceof XMLEntry) {
+ vals.add(((XMLEntry)o).value);
+ } else if (o instanceof XMLCollection) {
+ properties.put(((XMLCollection)o).key, Utils.join("\u001e", vals));
+ vals = new LinkedList<String>();
+ }
+ }
+ }
+
+ public String toXML(boolean nopass) {
+ StringBuilder b = new StringBuilder(
+ "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" +
+ "<preferences xmlns=\"http://josm.openstreetmap.de/preferences-1.0\">\n");
+ for (Entry<String, String> p : properties.entrySet()) {
+ if (nopass && p.getKey().equals("osm-server.password")) {
+ continue; // do not store plain password.
+ }
+ String r = p.getValue();
+ if(r.contains("\u001e"))
+ {
+ b.append(" <collection key='");
+ b.append(XmlWriter.encode(p.getKey()));
+ b.append("'>\n");
+ for (String val : r.split("\u001e", -1))
+ {
+ b.append(" <entry value='");
+ b.append(XmlWriter.encode(val));
+ b.append("' />\n");
+ }
+ b.append(" </collection>\n");
+ }
+ else
+ {
+ b.append(" <tag key='");
+ b.append(XmlWriter.encode(p.getKey()));
+ b.append("' value='");
+ b.append(XmlWriter.encode(p.getValue()));
+ b.append("' />\n");
+ }
+ }
+ b.append("</preferences>");
+ return b.toString();
+ }
+}
=== added directory '.pc/70-default_look_and_feel.patch'
=== added directory '.pc/70-default_look_and_feel.patch/src'
=== added directory '.pc/70-default_look_and_feel.patch/src/org'
=== added directory '.pc/70-default_look_and_feel.patch/src/org/openstreetmap'
=== added directory '.pc/70-default_look_and_feel.patch/src/org/openstreetmap/josm'
=== added directory '.pc/70-default_look_and_feel.patch/src/org/openstreetmap/josm/tools'
=== added file '.pc/70-default_look_and_feel.patch/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java'
--- .pc/70-default_look_and_feel.patch/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java 1970-01-01 00:00:00 +0000
+++ .pc/70-default_look_and_feel.patch/src/org/openstreetmap/josm/tools/PlatformHookUnixoid.java 2011-08-22 12:04:26 +0000
@@ -0,0 +1,80 @@
+// License: GPL. Copyright 2007 by Immanuel Scholz and others
+package org.openstreetmap.josm.tools;
+
+import java.awt.event.KeyEvent;
+import java.io.IOException;
+
+import org.openstreetmap.josm.Main;
+
+/**
+ * see PlatformHook.java
+ *
+ * BTW: THIS IS A STUB. See comments below for details.
+ */
+public class PlatformHookUnixoid implements PlatformHook {
+ public void preStartupHook(){
+ }
+ public void startupHook() {
+ }
+ public void openUrl(String url) throws IOException {
+ String[] programs = {"gnome-open", "kfmclient openURL", "firefox"};
+ for (String program : programs) {
+ try {
+ Runtime.getRuntime().exec(program+" "+url);
+ return;
+ } catch (IOException e) {
+ }
+ }
+ }
+ public void initShortcutGroups() {
+ // This is the Windows list. Someone should look over it and make it more "*nix"...
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_NONE), Integer.toString(-1));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_HOTKEY), Integer.toString(KeyEvent.CTRL_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MENU), Integer.toString(KeyEvent.CTRL_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_EDIT), Integer.toString(0));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_LAYER), Integer.toString(KeyEvent.ALT_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_DIRECT), Integer.toString(0));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_DEFAULT+Shortcut.GROUP_MNEMONIC),Integer.toString(KeyEvent.ALT_DOWN_MASK));
+
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_NONE), Integer.toString(-1));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_HOTKEY), Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MENU), Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_EDIT), Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_LAYER), Integer.toString(KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_DIRECT), Integer.toString(KeyEvent.SHIFT_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT1+Shortcut.GROUP_MNEMONIC), Integer.toString(KeyEvent.ALT_DOWN_MASK));
+
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_NONE), Integer.toString(-1));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_HOTKEY), Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MENU), Integer.toString(KeyEvent.CTRL_DOWN_MASK | KeyEvent.ALT_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_EDIT), Integer.toString(KeyEvent.ALT_DOWN_MASK | KeyEvent.SHIFT_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_LAYER), Integer.toString(KeyEvent.ALT_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_DIRECT), Integer.toString(KeyEvent.CTRL_DOWN_MASK));
+ Main.pref.put("shortcut.groups."+(Shortcut.GROUPS_ALT2+Shortcut.GROUP_MNEMONIC), Integer.toString(KeyEvent.ALT_DOWN_MASK));
+ }
+ public void initSystemShortcuts() {
+ // TODO: Insert system shortcuts here. See Windows and espacially OSX to see how to.
+ }
+ /**
+ * This should work for all platforms. Yeah, should.
+ * See PlatformHook.java for a list of reasons why
+ * this is implemented here...
+ */
+ public String makeTooltip(String name, Shortcut sc) {
+ String result = "";
+ result += "<html>";
+ result += name;
+ if (sc != null && sc.getKeyText().length() != 0) {
+ result += " ";
+ result += "<font size='-2'>";
+ result += "("+sc.getKeyText()+")";
+ result += "</font>";
+ }
+ result += " </html>";
+ return result;
+ }
+
+ public String getDefaultStyle() {
+ return "javax.swing.plaf.metal.MetalLookAndFeel";
+ }
+}
=== added directory '.pc/80-fix_images.patch'
=== added directory '.pc/80-fix_images.patch/data'
=== added file '.pc/80-fix_images.patch/data/defaultpresets.xml'
--- .pc/80-fix_images.patch/data/defaultpresets.xml 1970-01-01 00:00:00 +0000
+++ .pc/80-fix_images.patch/data/defaultpresets.xml 2011-08-22 12:04:26 +0000
@@ -0,0 +1,4183 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<presets xmlns="http://josm.openstreetmap.de/tagging-preset-1.0">
+<!--
+ Pics have been derived from
+ http://de.wikipedia.org/wiki/Bildtafel_der_Verkehrszeichen_in_Deutschland (german street sign SVGs)
+ http://commons.wikimedia.org/wiki/Image:National_Park_Service_sample_pictographs.svg (various monochrome pictograms)
+ http://www.kde.org
+ http://openclipart.org/media/view/media/clip_art
+ http://www.sjjb.co.uk/mapicons/ (meanwhile in osm svn)
+-->
+<!--
+item:
+ name: the text to display
+ icon: the icon to display
+ - relative to the icon path
+ - URL's are also supported to allow remote icons (are cached locally)
+ type: the data types - way,node,relation,closedway (separated by comma)
+
+link: link to the relating map features website
+
+label: simple static text label
+ text: the text to display
+
+key: fixed key/value pair to be set
+ key: key to set
+ value: value to set
+
+text: text box
+ key: key to set
+ text: fixed label to display
+ default: default string to display
+ delete_if_empty: true/false
+ use_last_as_default: true/false
+
+combo: combo box, with multiple choices and possible to enter free form text
+ key: key to set
+ text: fixed label to display
+ values: comma separated list of values
+ display_values: comma separated list of values to be displayed instead of the
+ database values, order and number must be equal to values
+ short_description: comma separated list of texts to be displayed below each
+ display_value. (Only if it is not possible to describe
+ the entry in 2-3 words.) Instead of comma separeted list, you can
+ also write it in the following form:
+ <short_description>first description</short_description>
+ ...
+ <short_description>last description</short_description>
+ default: default string to display
+ delete_if_empty: true/false
+ use_last_as_default: true/false
+
+multiselect: list of values from which zero or more can be selected
+ key: key to set
+ text: fixed label to display
+ delimiter: character that separates values (default: semicolon) - this
+ will also be used to separate selected values in the tag.
+ values: delimiter-separated list of values (delimiter can be escaped with backslash)
+ display_values: delimiter-separated list of values to be displayed instead of the
+ database values, order and number must be equal to values
+ short_description: delimiter-separated list of texts to be displayed below each
+ display_value. (Only if it is not possible to describe
+ the entry in 2-3 words.) Instead of a separated list, you can
+ also write it in the following form:
+ <short_description>first description</short_description>
+ ...
+ <short_description>last description</short_description>
+ default: default string to display
+ delete_if_empty: true/false
+ use_last_as_default: true/false
+
+check: checkbox
+ key: key to set
+ text: fixed label to display
+ default: ticked on/off
+ delete_if_empty: true/false
+ value_on: the value to set when checked (default is "yes")
+ value_off: the value to set when unchecked (default is 'no')
+
+role: type to specify possible roles in relations
+ key: the role name used in relation
+ text: fixed label to display
+ requisite: "optional" or "required" (default is optional)
+ count: how often can the role occur (if not given unlimited number is assumed)
+ type: the data types - way,node,relation,closedway (separated by comma)
+
+For external files the <presets> should have following elements:
+- author the author of the preset
+- version a version number of some sort (e.g. creation date)
+- description what is your preset meant to be
+- shortdescription very short description
+- link a link to a helpful website (optional)
+- The fields description, shortdescription and link may also be localized (e.g. de.link)
+
+See also http://josm.openstreetmap.de/wiki/TaggingPresets.
+
+The fields "name", "text", "display_values" may also be localized (e.g. de.name).
+When translations of equal words but different meanings may conflict, a translation
+context should be specified. Use "name_context", "text_context" or "values_context"
+for this. The context should be a meaningful short description to help translators.
+
+In JOSM internally all "name", "text" and "display_values" are translated when
+no specific translation has been given in XML file. When no "display_values"
+are supplied, then "values" will be treated as "display_values" and translated instead.
+-->
+ <group name="Highways" icon="presets/way_secondary.png">
+ <group name="Streets" icon="presets/way_secondary.png">
+ <item name="Motorway" icon="presets/motorway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=motorway"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=motorway" />
+ <label text="Edit Motorway" />
+ <space />
+ <key key="highway" value="motorway" />
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="lanes" text="Lanes" values="1,2,3,4,5" default="2" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="on" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Motorway Link" icon="presets/motorway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=motorway_link"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=motorway_link" />
+ <label text="Edit Motorway Link" />
+ <space />
+ <key key="highway" value="motorway_link" />
+ <optional>
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="lanes" text="Lanes" values="1,2,3,4,5" default="2" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="on" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Trunk" icon="presets/trunk.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=trunk"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=trunk" />
+ <label text="Edit Trunk" />
+ <space />
+ <key key="highway" value="trunk" />
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="lanes" text="Lanes" values="1,2,3,4,5" default="2" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="on" delete_if_empty="true" />
+ <check key="motorroad" text="Motorroad" default="on" delete_if_empty="false" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Trunk Link" icon="presets/trunk.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=trunk_link"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=trunk_link"/>
+ <label text="Edit Trunk Link" />
+ <space />
+ <key key="highway" value="trunk_link" />
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ <optional>
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="lanes" text="Lanes" values="1,2,3,4,5" default="1" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="on" delete_if_empty="true" />
+ <check key="motorroad" text="Motorroad" default="on" delete_if_empty="false" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <separator/>
+ <item name="Primary" icon="presets/way_primary.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=primary"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=primary" />
+ <label text="Edit Primary Road" />
+ <space />
+ <key key="highway" value="primary" />
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="lanes" text="Lanes" values="1,2,3,4,5" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="motorroad" text="Motorroad" default="off" delete_if_empty="false" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Primary Link" icon="presets/way_primary.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=primary_link" />
+ <label text="Edit Primary Link" />
+ <space />
+ <key key="highway" value="primary_link" />
+ <optional>
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="lanes" text="Lanes" values="1,2,3,4,5" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="motorroad" text="Motorroad" default="off" delete_if_empty="false" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Secondary" icon="presets/way_secondary.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=secondary"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=secondary"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=secondary" />
+ <label text="Edit Secondary Road" />
+ <space />
+ <key key="highway" value="secondary" />
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="lanes" text="Lanes" values="1,2,3,4,5" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Tertiary" icon="presets/way_tertiary.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=tertiary"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=tertiary"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=tertiary" />
+ <label text="Edit Tertiary Road" />
+ <space />
+ <key key="highway" value="tertiary" />
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="lanes" text="Lanes" values="1,2,3,4,5" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Unclassified" icon="presets/way_unclassified.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=unclassified"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=unclassified"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=unclassified" />
+ <label text="Edit Unclassified Road" />
+ <space />
+ <key key="highway" value="unclassified" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <check key="passing_places" text="Passing Places" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="lanes" text="Lanes" values="1,2,3,4,5" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Residential" icon="presets/residential.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=residential"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=residential" />
+ <label text="Edit Residential Street" />
+ <space />
+ <key key="highway" value="residential" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <optional>
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="lanes" text="Lanes" values="1,2,3,4,5" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Living Street" icon="presets/living_street.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=living_street"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=living_street" />
+ <label text="Edit Living Street" />
+ <space />
+ <key key="highway" value="living_street" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <optional>
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Pedestrian" icon="presets/pedestrian.png" type="way,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=pedestrian"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=pedestrian" />
+ <label text="Edit Pedestrian Street" />
+ <space />
+ <key key="highway" value="pedestrian" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <optional>
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Service" icon="presets/way_unclassified.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=service"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=service" />
+ <label text="Edit Serviceway" />
+ <space />
+ <key key="highway" value="service" />
+ <optional>
+ <combo key="service" text="Serviceway type" values="alley,driveway,parking_aisle" default="" delete_if_empty="true" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <check key="passing_places" text="Passing Places" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Parking Aisle" icon="presets/way_unclassified.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:service=parking_aisle"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:service=parking_aisle"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:service=parking_aisle" />
+ <label text="Edit Parking Aisle" />
+ <space />
+ <key key="highway" value="service" />
+ <key key="service" value="parking_aisle" />
+ <optional>
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Road (Unknown Type)" icon="presets/way_unclassified.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=road"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=road" />
+ <label text="Edit Road of unknown type" />
+ <space />
+ <key key="highway" value="road" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Construction" icon="presets/construction.png" type="way">
+ <label text="Edit Highway Under Construction" />
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=construction"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=construction" />
+ <space />
+ <key key="highway" value="construction" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <combo key="junction" text="Junction" values="roundabout" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <separator/>
+ <item name="Road Restrictions" icon="presets/restrictions.png" type="node,way">
+ <link href="http://wiki.openstreetmap.org/wiki/Key:access"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Key:access" />
+ <label text="Edit Road Restrictions" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="toll" text="Toll" default="off" delete_if_empty="true" />
+ <check key="noexit" text="No exit (cul-de-sac)" default="off" delete_if_empty="true" />
+ <label text="Transport mode restrictions" />
+ <combo key="access" text="General Access" values="yes,destination,delivery,permissive,private,agricultural,forestry,no" default="" delete_if_empty="true" />
+ <combo key="foot" text="Foot" values="yes,official,designated,permissive,destination,delivery,private,no" default="" delete_if_empty="true" />
+ <combo key="horse" text="Horse" values="yes,official,designated,permissive,destination,delivery,private,no" default="" delete_if_empty="true" />
+ <label text="Vehicles per type" />
+ <combo key="vehicle" text="All vehicles" values="yes,destination,delivery,permissive,private,agricultural,forestry,no" default="" delete_if_empty="true" />
+ <combo key="bicycle" text="Bicycle" values="yes,official,designated,permissive,destination,delivery,private,no" default="" delete_if_empty="true" />
+ <combo key="motor_vehicle" text="Motor vehicles" values="yes,destination,delivery,permissive,private,agricultural,forestry,no" default="" delete_if_empty="true" />
+ <combo key="motorcycle" text="Motorcycle" values="yes,official,designated,destination,delivery,permissive,private,agricultural,forestry,no" default="" delete_if_empty="true" />
+ <combo key="motorcar" text="Motorcar" values="yes,official,designated,destination,delivery,permissive,private,agricultural,forestry,no" default="" delete_if_empty="true" />
+ <combo key="goods" text="Light Commercial Vehicles (goods)" values="yes,official,designated,destination,delivery,permissive,private,agricultural,forestry,no" default="" delete_if_empty="true" />
+ <combo key="hgv" text="Heavy Goods Vehicles (hgv)" values="yes,official,designated,destination,delivery,permissive,private,agricultural,forestry,no" default="" delete_if_empty="true" />
+ <label text="Vehicles per use" />
+ <combo key="agricultural" text="Agricultural" values="yes,official,designated,destination,permissive,private,no" default="" delete_if_empty="true" />
+ <combo key="emergency" text="Emergency vehicles" values="yes,official,designated,destination,permissive,private,no" default="" delete_if_empty="true" />
+ <combo key="hov" text="High-occupancy vehicles (hov)" values="yes,official,designated,destination,permissive,private,no" default="" delete_if_empty="true" />
+ <combo key="psv" text="Public Service Vehicles (psv)" values="yes,official,designated,destination,permissive,private,no" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <text key="minspeed" text="Min. speed (km/h)" default="" delete_if_empty="true" />
+ <text key="maxweight" text="Max. weight (tonnes)" default="" delete_if_empty="true" />
+ <text key="maxaxleload" text="Max. axleload (tonnes)" default="" delete_if_empty="true" />
+ <text key="maxheight" text="Max. height (meters)" default="" delete_if_empty="true" />
+ <text key="maxwidth" text="Max. width (meters)" default="" delete_if_empty="true" />
+ <text key="maxlength" text="Max. length (meters)" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Roundabout" icon="presets/roundabout.png" type="closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:junction=roundabout"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:junction=roundabout"
+ it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:junction=roundabout"
+ ro.href="http://wiki.openstreetmap.org/wiki/Ro:Tag:junction=roundabout" />
+ <label text="Edit Junction" />
+ <space />
+ <key key="junction" value="roundabout" />
+ <combo key="highway" text="Type" values="motorway,motorway_link,trunk,trunk_link,primary,primary_link,secondary,tertiary,unclassified,residential,living_street,service,bus_guideway,construction" delete_if_empty="true" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="lanes" text="Lanes" values="1,2,3,4,5" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Bridge" icon="presets/bridge.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Key:bridge"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Key:bridge"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:bridge"
+ fr.href="http://wiki.openstreetmap.org/wiki/FR:Key:bridge" />
+ <label text="Edit Bridge" />
+ <space />
+ <combo key="bridge" text="Bridge" values="yes,viaduct,swing,aqueduct" required="true" default="yes" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="1" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <text key="maxweight" text="Max. weight (tonnes)" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Tunnel" icon="presets/tunnel.png" type="way">
+ <label text="Edit Tunnel"/>
+ <link href="http://wiki.openstreetmap.org/wiki/Key:tunnel"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Key:tunnel"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Key:tunnel" />
+ <space />
+ <key key="tunnel" value="yes" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="-1" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ </group> <!-- Streets -->
+ <group name="Ways" icon="presets/way_unclassified.png">
+ <item name="Track" icon="presets/track1.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=track"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=track" />
+ <label text="Edit Track" />
+ <space />
+ <key key="highway" value="track" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="tracktype" text="Tracktype" values="grade1,grade2,grade3,grade4,grade5" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,concrete,cobblestone,gravel,ground,grass,sand" default="" delete_if_empty="true" />
+ <combo key="mtb:scale" text="MTB Scale" values="0,1,2,3,4,5" default="" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="access" text="General access" values="yes,official,designated,destination,delivery,permissive,private,agricultural,forestry,no" default="" delete_if_empty="true" />
+ <combo key="motor_vehicle" text="Motor vehicles" values="yes,official,designated,destination,delivery,permissive,private,agricultural,forestry,no" default="" delete_if_empty="true" />
+ <combo key="motorcycle" text="Motorcycle" values="yes,official,designated,destination,delivery,permissive,private,agricultural,forestry,no" default="" delete_if_empty="true" />
+ <combo key="motorcar" text="Motorcar" values="yes,official,designated,destination,delivery,permissive,private,agricultural,forestry,no" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Path" icon="presets/path.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=path"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=path" />
+ <label text="Edit Path" />
+ <space />
+ <key key="highway" value="path" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="sac_scale" text="SAC Scale" values="hiking,mountain_hiking,demanding_mountain_hiking,alpine_hiking,demanding_alpine_hiking,difficult_alpine_hiking" default="" delete_if_empty="true" display_values="T1 - hiking trail,T2 - mountain hiking trail,T3 - difficult\, exposed hiking trail,T4 - difficult\, exposed\, steep alpine trail,T5 - difficult alpine trail with climbing,T6 - hazardous alpine trail with climbing">
+ <short_description>Trail well cleared. Area flat or slightly sloped, no fall hazard</short_description>
+ <short_description>Trail with continuous line and balanced ascent. Terrain partially steep, fall hazard possible</short_description>
+ <short_description>exposed sites may be secured with ropes or chains, possible need to use hands for balance. Partly exposed sites with fall hazard, scree, pathless jagged rocks</short_description>
+ <short_description>sometimes need for hand use to get ahead. Terrain quite exposed, precarious grassy acclivities, jagged rocks, facile snow-free glaciers.</short_description>
+ <short_description>single plainly climbing up to second grade. Exposed, demanding terrain, jagged rocks, few dangerous glacier and snow</short_description>
+ <short_description>climbing up to second grade. Often very exposed, precarious jagged rocks, glacier with danger to slip and fall</short_description>
+ </combo>
+ <combo key="mtb:scale" text="MTB Scale" values="0,1,2,3,4,5" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <combo key="trail_visibility" text="Visibility" values="excellent,good,intermediate,bad,horrible,no" default="" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <combo key="foot" text="Foot" values="yes,official,designated,permissive,destination,delivery,private,no" default="" delete_if_empty="true" />
+ <combo key="bicycle" text="Bicycle" values="yes,official,designated,permissive,destination,delivery,private,no" default="" delete_if_empty="true" />
+ <combo key="horse" text="Horse" values="yes,official,designated,permissive,destination,delivery,private,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="unknown,yes,official,no" default="" delete_if_empty="true" />
+ <combo key="ski" text="Ski" values="yes,official,designated,permissive,private,no" default="" delete_if_empty="true" />
+ <combo key="snowmobile" text="Snowmobile" values="yes,official,designated,permissive,destination,delivery,private,no" default="" delete_if_empty="true" />
+ <!-- <combo key="motorcar" text="Motorcar" values="yes,designated,no" default="no" delete_if_empty="true" /> -->
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <separator/>
+ <item name="Dedicated Bridleway" icon="presets/equestrian.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=bridleway" />
+ <label text="Edit Bridleway" />
+ <space />
+ <key key="highway" value="bridleway" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Dedicated Cycleway" icon="presets/cycleway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=cycleway"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=cycleway"
+ it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=cycleway" />
+ <label text="Edit Cycleway" />
+ <space />
+ <key key="highway" value="cycleway" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <combo key="foot" text="Pedestrians" values="unknown,yes,no" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Segregated Foot- and Cycleway" icon="presets/foot_and_cycleway_segregated.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=cycleway"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=cycleway"
+ it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=cycleway" />
+ <label text="Edit Cycleway" />
+ <space />
+ <key key="highway" value="path" />
+ <key key="bicycle" value="designated" />
+ <key key="foot" value="designated" />
+ <key key="segregated" value="yes" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Combined Foot- and Cycleway" icon="presets/foot_and_cycleway_combined.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=cycleway"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=cycleway"
+ it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=cycleway" />
+ <label text="Edit Cycleway" />
+ <space />
+ <key key="highway" value="path" />
+ <key key="bicycle" value="designated" />
+ <key key="foot" value="designated" />
+ <key key="segregated" value="no" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <check key="passing_places" text="Passing Places" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Dedicated Footway" icon="presets/footway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=footway"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=footway" />
+ <label text="Edit Footway" />
+ <space />
+ <key key="highway" value="footway" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <check key="passing_places" text="Passing Places" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Steps" icon="presets/steps.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=steps"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=steps"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:highway=steps" />
+ <label text="Edit Flight of Steps" />
+ <space />
+ <key key="highway" value="steps" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ <text key="step_count" text="Amount of Steps" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ </group> <!-- Ways -->
+ <group name="Waypoints" icon="presets/waypoints.png">
+ <item name="Motorway Junction" icon="presets/motorway_exit.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=motorway_junction" />
+ <label text="Edit Motorway Junction" />
+ <space />
+ <key key="highway" value="motorway_junction" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="ref" text="Number" default="" delete_if_empty="true" />
+ <text key="exit_to" text="Exit to" default="" delete_if_empty="true" />
+ </item>
+ <item name="Services" icon="styles/standard/vehicle/services.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=services" />
+ <label text="Edit Service Station" />
+ <space />
+ <key key="highway" value="services" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <check key="toilets" text="Toilets" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Rest Area" icon="presets/parking.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=rest_area" />
+ <label text="Edit Rest Area" />
+ <space />
+ <key key="highway" value="rest_area" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <check key="toilets" text="Toilets" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Emergency Phone" icon="presets/telephone.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/emergency_phone" />
+ <key key="amenity" value="emergency_phone" />
+ </item>
+ <separator/>
+ <item name="Traffic Signal" icon="presets/traffic-light.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=traffic_signals" />
+ <key key="highway" value="traffic_signals" />
+ <optional>
+ <combo key="crossing" text="Pedestrian crossing type" values="uncontrolled,traffic_signals,island,unmarked,no,unknown" default="" delete_if_empty="true" />
+ <check key="horse" text="Cross on horseback" default="off" delete_if_empty="true" />
+ <check key="bicycle" text="Cross by bicycle" default="off" delete_if_empty="true" />
+ <check key="supervised" text="Crossing attendant" default="off" delete_if_empty="true" />
+ <combo key="crossing_ref" text="Crossing type name (UK)" values="zebra,pelican,toucan,puffin,pegasus,tiger" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Stop" icon="presets/Stop.png" type="node">
+ <key key="highway" value="stop" />
+ </item>
+ <item name="Mini-roundabout" icon="presets/roundabout_left.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=mini_roundabout"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=mini_roundabout"
+ it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:highway=mini_roundabout" />
+ <key key="highway" value="mini_roundabout" />
+ <combo key="direction" text="Direction" values="clockwise" default="" delete_if_empty="true" />
+ </item>
+ <item name="Pedestrian Crossing" icon="styles/standard/vehicle/zebra_crossing.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Key:crossing"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=crossing" />
+ <label text="Edit Crossing" />
+ <key key="highway" value="crossing" />
+ <combo key="crossing" text="Type" values="uncontrolled,traffic_signals,island,unmarked,no,unknown" default="" delete_if_empty="true" />
+ <check key="bicycle" text="Cross by bicycle" default="off" delete_if_empty="true" />
+ <check key="horse" text="Cross on horseback" default="off" delete_if_empty="true" />
+ <check key="supervised" text="Crossing attendant" default="off" delete_if_empty="true" />
+ <combo key="crossing_ref" text="Type name (UK)" values="zebra,pelican,toucan,puffin,pegasus,tiger" default="" delete_if_empty="true" />
+ </item>
+ <item name="Traffic Calming" icon="presets/chicane.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Key:traffic_calming"/>
+ <label text="Edit Traffic Calming" />
+ <combo key="traffic_calming" text="Type" values="yes,bump,chicane,choker,cushion,hump,table" default="" delete_if_empty="true" />
+ </item>
+ <item name="Passing Place" icon="presets/passingplace.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=passing_place"/>
+ <label text="Edit Passing Place" />
+ <key key="highway" value="passing_place" />
+ </item>
+ <item name="Turning Circle" icon="presets/turning_circle.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=turning_circle"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=turning_circle" />
+ <key key="highway" value="turning_circle" />
+ </item>
+ <item name="City Limit" icon="presets/citylimit.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:traffic_sign%3Dcity_limit" />
+ <label text="Edit City Limit Sign" />
+ <space />
+ <key key="traffic_sign" value="city_limit" />
+ <space />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="alt_name" text="Second Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Speed Camera" icon="presets/speed_camera.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway%3Dspeed_camera" />
+ <key key="highway" value="speed_camera" />
+ </item>
+ <separator/>
+ <item name="Incline" icon="presets/incline.png" type="node,way">
+ <key key="highway" value="incline" />
+ </item>
+ <item name="Incline Steep" icon="presets/incline_steep.png" type="node,way">
+ <key key="highway" value="incline_steep" />
+ </item>
+ <item name="Grit Bin" icon="styles/standard/misc/grit_bin.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity%3Dgrit_bin" />
+ <key key="amenity" value="grit_bin" />
+ </item>
+ <separator/>
+ <item name="Ford" icon="presets/ford.png" type="node,way">
+ <label text="Edit Ford" />
+ <space />
+ <key key="highway" value="ford" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Mountain Pass" icon="presets/mountain_pass.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Key:mountain_pass" />
+ <label text="Edit Mountain Pass" />
+ <space />
+ <key key="mountain_pass" value="yes" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="ele" text="Elevation" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ </group> <!-- Waypoints -->
+ <group name="Barriers" icon="presets/barrier.png">
+
+ <!-- *** node barriers *** -->
+ <item name="Bollard" icon="presets/bollard.png" type="node,way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=bollard" />
+ <label text="Edit Bollard" />
+ <space />
+ <key key="barrier" value="bollard" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="on" delete_if_empty="true" />
+ <check key="horse" text="Horse" default="off" delete_if_empty="true" />
+ <check key="motorcycle" text="Motorcycle" default="off" delete_if_empty="true" />
+ </item> <!-- bollard -->
+ <item name="Cycle Barrier" icon="styles/standard/vehicle/cycle_barrier.png" type="node">
+ <link href="http://de.wikipedia.org/wiki/Umlaufgitter" />
+ <key key="barrier" value="cycle_barrier" />
+ </item> <!-- cycle_barrier -->
+ <item name="Block" icon="presets/block.png" type="node,way,closedway">
+ <key key="barrier" value="block" />
+ </item> <!-- block -->
+ <item name="Cattle Grid" icon="presets/cattle_grid.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=cattle_grid" />
+ <label text="Edit Cattle Grid" />
+ <space />
+ <key key="barrier" value="cattle_grid" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="on" delete_if_empty="true" />
+ <check key="motorcycle" text="Motorcycle" default="off" delete_if_empty="true" />
+ <check key="motorcar" text="Motorcar" default="off" delete_if_empty="true" />
+ </item> <!-- cattle_grid -->
+ <item name="Bus Trap" icon="presets/empty.png" type="node">
+ <key key="barrier" value="bus_trap" />
+ </item> <!-- bus_trap -->
+ <item name="Spikes" icon="presets/empty.png" type="node">
+ <label text="Edit Spikes" />
+ <space />
+ <key key="barrier" value="spikes" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="on" delete_if_empty="true" />
+ <check key="horse" text="Horse" default="off" delete_if_empty="true" />
+ <check key="motorcycle" text="Motorcycle" default="off" delete_if_empty="true" />
+ <check key="motorcar" text="Motorcar" default="off" delete_if_empty="true" />
+ </item> <!-- spikes -->
+ <item name="Toll Booth" icon="presets/toll_station.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=toll_booth" />
+ <label text="Edit Toll Booth" />
+ <space />
+ <key key="barrier" value="toll_booth" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ </optional>
+ </item> <!-- toll_booth -->
+ <item name="Border Control" icon="presets/douane.png" type="node">
+ <label text="Edit Border Control" />
+ <space />
+ <key key="barrier" value="border_control" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="on" delete_if_empty="true" />
+ <check key="horse" text="Horse" default="off" delete_if_empty="true" />
+ <check key="motorcycle" text="Motorcycle" default="off" delete_if_empty="true" />
+ <check key="motorcar" text="Motorcar" default="off" delete_if_empty="true" />
+ </item> <!-- border_control -->
+ <separator/>
+
+ <!-- *** linear barriers *** -->
+ <item name="Hedge" icon="presets/hedge.png" type="way,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=hedge" />
+ <key key="barrier" value="hedge" />
+ </item> <!-- hedge -->
+ <item name="Fence" icon="presets/fence.png" type="way,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=fence" />
+ <combo key="barrier" text="Fence" values="fence,wood_fence,wire_fence" default="" delete_if_empty="true" />
+ </item> <!-- fence -->
+ <item name="Wall" icon="presets/wall.png" type="way,closedway">
+ <key key="barrier" value="wall" />
+ </item> <!-- wall -->
+ <item name="City Wall" icon="presets/city_wall.png" type="way,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=city_wall" />
+ <key key="barrier" value="city_wall" />
+ </item> <!-- city_wall -->
+ <item name="Retaining Wall" icon="presets/retaining_wall.png" type="way,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=retaining_wall" />
+ <key key="barrier" value="retaining_wall" />
+ </item> <!-- retaining_wall -->
+ <separator/>
+
+ <!-- *** access *** -->
+ <item name="Entrance" icon="styles/standard/vehicle/entrance.png" type="node">
+ <label text="Edit Entrance" />
+ <space />
+ <key key="barrier" value="entrance" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="on" delete_if_empty="true" />
+ <check key="horse" text="Horse" default="off" delete_if_empty="true" />
+ <check key="motorcycle" text="Motorcycle" default="off" delete_if_empty="true" />
+ <check key="motorcar" text="Motorcar" default="off" delete_if_empty="true" />
+ </item> <!-- entrance -->
+ <item name="Gate" icon="presets/gate.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:barrier=gate" />
+ <label text="Edit Gate" />
+ <space />
+ <key key="barrier" value="gate" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="on" delete_if_empty="true" />
+ <check key="horse" text="Horse" default="off" delete_if_empty="true" />
+ <check key="motorcycle" text="Motorcycle" default="off" delete_if_empty="true" />
+ <check key="motorcar" text="Motorcar" default="off" delete_if_empty="true" />
+ </item> <!-- gate -->
+ <item name="Lift Gate" icon="presets/lift_gate.png" type="node">
+ <label text="Edit Lift Gate" />
+ <space />
+ <key key="barrier" value="lift_gate" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="on" delete_if_empty="true" />
+ <check key="horse" text="Horse" default="off" delete_if_empty="true" />
+ <check key="motorcycle" text="Motorcycle" default="off" delete_if_empty="true" />
+ <check key="motorcar" text="Motorcar" default="off" delete_if_empty="true" />
+ </item> <!-- lift_gate -->
+ <item name="Hampshire Gate" icon="presets/empty.png" type="node">
+ <label text="Edit Hampshire Gate" />
+ <space />
+ <key key="barrier" value="hampshire_gate" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="on" delete_if_empty="true" />
+ <check key="horse" text="Horse" default="off" delete_if_empty="true" />
+ <check key="motorcycle" text="Motorcycle" default="off" delete_if_empty="true" />
+ <check key="motorcar" text="Motorcar" default="off" delete_if_empty="true" />
+ </item> <!-- hampshire_gate -->
+ <item name="Bump Gate" icon="presets/empty.png" type="node">
+ <label text="Edit Bump Gate" />
+ <space />
+ <key key="barrier" value="bump_gate" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="on" delete_if_empty="true" />
+ <check key="horse" text="Horse" default="off" delete_if_empty="true" />
+ <check key="motorcycle" text="Motorcycle" default="off" delete_if_empty="true" />
+ <check key="motorcar" text="Motorcar" default="off" delete_if_empty="true" />
+ </item> <!-- bump_gate -->
+ <item name="Kissing Gate" icon="presets/empty.png" type="node">
+ <label text="Edit Kissing Gate" />
+ <space />
+ <key key="barrier" value="kissing_gate" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="off" delete_if_empty="true" />
+ </item> <!-- kissing_gate -->
+ <item name="Stile" icon="presets/stile.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=stile" />
+ <label text="Edit Stile" />
+ <space />
+ <key key="barrier" value="stile" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="off" delete_if_empty="true" />
+ </item> <!-- stile -->
+ <item name="Turnstile" icon="styles/standard/vehicle/turnstile.png" type="node">
+ <label text="Edit Turnstile" />
+ <space />
+ <key key="barrier" value="turnstile" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="off" delete_if_empty="true" />
+ </item> <!-- turnstile -->
+ <item name="Sally Port" icon="styles/standard/vehicle/sally_port.png" type="node">
+ <label text="Edit Sally Port" />
+ <space />
+ <key key="barrier" value="sally_port" />
+ <label text="Allowed traffic:" />
+ <space />
+ <check key="foot" text="Foot" default="on" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="on" delete_if_empty="true" />
+ <check key="horse" text="Horse" default="off" delete_if_empty="true" />
+ <check key="motorcycle" text="Motorcycle" default="off" delete_if_empty="true" />
+ <check key="motorcar" text="Motorcar" default="off" delete_if_empty="true" />
+ </item> <!-- sally_port -->
+
+ </group> <!-- Barriers -->
+ </group>
+ <group name="Water" icon="presets/waterway.png">
+ <group name="Water" icon="presets/waterway.png">
+ <separator/>
+ <item name="Drain" icon="presets/waterway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=drain" />
+ <label text="Edit Drain" />
+ <space />
+ <key key="waterway" value="drain" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ </item>
+ <item name="Ditch" icon="presets/waterway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=ditch" />
+ <label text="Edit Ditch" />
+ <space />
+ <key key="waterway" value="ditch" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ </item>
+ <item name="Stream" icon="presets/waterway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=stream" />
+ <label text="Edit Stream" />
+ <space />
+ <key key="waterway" value="stream" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ </item>
+ <item name="Canal" icon="presets/waterway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=canal" />
+ <label text="Edit Canal" />
+ <space />
+ <key key="waterway" value="canal" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="River" icon="presets/river.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=river"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=river"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:waterway=river" />
+ <label text="Edit River" />
+ <space />
+ <key key="waterway" value="river" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Spring" icon="presets/spring.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=spring" />
+ <label text="Edit Spring" />
+ <key key="natural" value="spring" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Waterfall" icon="presets/waterfall.png" type="node,way">
+ <label text="Edit Waterfall" />
+ <space />
+ <key key="waterway" value="waterfall" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Weir" icon="presets/weir.png" type="node,way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=weir" />
+ <label text="Edit Weir" />
+ <space />
+ <key key="waterway" value="weir" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Dam" icon="presets/dam.png" type="node,way,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=dam" />
+ <label text="Edit Dam" />
+ <space />
+ <key key="waterway" value="dam" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Groyne" icon="presets/groyne.png" type="node,way,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made%3Dgroyne" />
+ <label text="Edit Groyne" />
+ <space />
+ <key key="man_made" value="groyne" />
+ </item>
+ <separator/>
+ <item name="Basin" icon="presets/landuse_water.png" type="node,closedway,relation">
+ <label text="Edit Basin Landuse" />
+ <space />
+ <key key="landuse" value="basin" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Reservoir" icon="presets/landuse_water.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=reservoir" />
+ <label text="Edit Reservoir Landuse" />
+ <space />
+ <key key="landuse" value="reservoir" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Covered Reservoir" icon="presets/reservoir_covered.png" type="node,closedway,relation">
+ <label text="Edit Covered Reservoir" />
+ <key key="man_made" value="reservoir_covered" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Water" icon="presets/water.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=water" />
+ <label text="Edit Water" />
+ <key key="natural" value="water" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Land" icon="presets/landuse.png" type="node,closedway,relation">
+ <label text="Edit Land" />
+ <key key="natural" value="land" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Coastline" icon="presets/coastline.png" type="node,way,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=coastline" />
+ <label text="Edit Coastline" />
+ <key key="natural" value="coastline" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Riverbank" icon="presets/waterway.png" type="closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=riverbank"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:waterway=riverbank" />
+ <label text="Edit Riverbank" />
+ <key key="waterway" value="riverbank" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Wetland" icon="presets/empty.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=wetland"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=wetland"
+ pt.href="http://wiki.openstreetmap.org/wiki/Pt:Tag:natural=wetland"
+ pt_BR.href="http://wiki.openstreetmap.org/wiki/Pt_br:Tag:natural=wetland" />
+ <label text="Edit Wetland" />
+ <key key="natural" value="wetland" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="wetland" text="Type" values="swamp,bog,marsh,reedbed,saltmarsh,tidalflat,mangrove" default="" delete_if_empty="true" />
+ </item>
+ <item name="Mud" icon="presets/mud.png" type="node,closedway,relation">
+ <label text="Edit Mud" />
+ <key key="natural" value="mud" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Beach" icon="presets/beach.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=beach" />
+ <label text="Edit Beach" />
+ <key key="natural" value="beach" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Bay" icon="presets/bay.png" type="node,closedway,relation">
+ <label text="Edit Bay" />
+ <key key="natural" value="bay" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Cliff" icon="presets/cliff.png" type="node,way,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=cliff" />
+ <label text="Edit Cliff" />
+ <key key="natural" value="cliff" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Water -->
+ <group name="Shipping" icon="presets/ferry.png">
+ <item name="Ferry Terminal" icon="presets/ferry.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=ferry_terminal" />
+ <label text="Edit Ferry Terminal" />
+ <key key="amenity" value="ferry_terminal" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="cargo" text="Cargo" values="passengers,vehicle,bicycle,hgv,passengers;vehicle" default="" delete_if_empty="true" />
+ </item>
+ <item name="Ferry Route" icon="presets/ferry.png" type="way,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:route=ferry" />
+ <label text="Edit Ferry" />
+ <space />
+ <key key="route" value="ferry" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <separator/>
+ <item name="Marina" icon="presets/marina.png" type="node,closedway">
+ <label text="Edit Marina" />
+ <key key="leisure" value="marina" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Pier" icon="presets/pier.png" type="way,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=pier" />
+ <label text="Edit Pier" />
+ <key key="man_made" value="pier" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Lock Gate" icon="presets/lock_gate.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=lock_gate" />
+ <key key="waterway" value="lock_gate" />
+ </item>
+ <item name="Turning Point" icon="presets/turning.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=turning_point" />
+ <key key="waterway" value="turning_point" />
+ </item>
+ <separator/>
+ <item name="Slipway" icon="styles/standard/nautical/slipway.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=slipway"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:leisure=slipway"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:leisure=slipway" />
+ <label text="Edit Slipway" />
+ <key key="leisure" value="slipway" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Boatyard" icon="presets/boatyard.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=boatyard" />
+ <label text="Edit Boatyard" />
+ <space />
+ <key key="waterway" value="boatyard" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Dock" icon="presets/boatyard.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:waterway=dock" />
+ <label text="Edit Dock" />
+ <space />
+ <key key="waterway" value="dock" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Shipping -->
+ </group>
+ <group name="Transport" icon="presets/railway.png">
+ <group name="Railway" icon="presets/railway.png">
+ <item name="Rail" icon="presets/railway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=rail" />
+ <label text="Edit Rail" />
+ <space />
+ <key key="railway" value="rail" />
+ <optional>
+ <combo key="gauge" text="Gauge (mm)" values="1668,1676,1674,1600,1524,1520,1495,1435,1067,1000,914,762,760,750" default="" delete_if_empty="true" />
+ <combo key="service" text="Types" values="yard,siding,spur" default="" delete_if_empty="true" />
+ <combo key="electrified" text="Electrified" values="contact_line,no,yes,rail" default="" delete_if_empty="true" />
+ <combo key="voltage" text="Voltage" values="600,650,750,1500,3000,15000,25000" default="" delete_if_empty="true" />
+ <combo key="frequency" text="Frequency (Hz)" values="0,16.7,50,60" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Narrow Gauge Rail" icon="presets/railway.png" type="way">
+ <label text="Edit Narrow Gauge Rail" />
+ <space />
+ <key key="railway" value="narrow_gauge" />
+ <optional>
+ <combo key="gauge" text="Gauge (mm)" values="1668,1676,1674,1600,1524,1520,1495,1435,1067,1000,914,762,760,750" default="" delete_if_empty="true" />
+ <combo key="service" text="Types" values="yard,siding,spur" default="" delete_if_empty="true" />
+ <combo key="electrified" text="Electrified" values="contact_line,no,yes,rail" default="" delete_if_empty="true" />
+ <combo key="voltage" text="Voltage" values="600,650,750,1500,3000,15000,25000" default="" delete_if_empty="true" />
+ <combo key="frequency" text="Frequency (Hz)" values="0,16.7,50,60" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Monorail" icon="presets/railway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=monorail" />
+ <label text="Edit Monorail" />
+ <space />
+ <key key="railway" value="monorail" />
+ <optional>
+ <combo key="service" text="Types" values="yard,siding,spur" default="" delete_if_empty="true" />
+ <combo key="electrified" text="Electrified" values="contact_line,no,yes,rail" default="" delete_if_empty="true" />
+ <combo key="voltage" text="Voltage" values="600,650,750,1500,3000,15000,25000" default="" delete_if_empty="true" />
+ <combo key="frequency" text="Frequency (Hz)" values="0,16.7,50,60" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Preserved" icon="presets/rail_preserved.png" type="way">
+ <label text="Edit Preserved Railway" />
+ <space />
+ <key key="railway" value="preserved" />
+ <optional>
+ <combo key="gauge" text="Gauge (mm)" values="1668,1676,1674,1600,1524,1520,1495,1435,1067,1000,914,762,760,750" default="" delete_if_empty="true" />
+ <combo key="service" text="Types" values="yard,siding,spur" default="" delete_if_empty="true" />
+ <combo key="electrified" text="Electrified" values="contact_line,no,yes,rail" default="" delete_if_empty="true" />
+ <combo key="voltage" text="Voltage" values="600,650,750,1500,3000,15000,25000" default="" delete_if_empty="true" />
+ <combo key="frequency" text="Frequency (Hz)" values="0,16.7,50,60" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Light Rail" icon="presets/rail_light.png" type="way">
+ <label text="Edit Light Rail" />
+ <space />
+ <key key="railway" value="light_rail" />
+ <optional>
+ <combo key="gauge" text="Gauge (mm)" values="1668,1676,1674,1600,1524,1520,1495,1435,1067,1000,914,762,760,750" default="" delete_if_empty="true" />
+ <combo key="service" text="Types" values="yard,siding,spur" default="" delete_if_empty="true" />
+ <combo key="electrified" text="Electrified" values="contact_line,no,yes,rail" default="" delete_if_empty="true" />
+ <combo key="voltage" text="Voltage" values="600,650,750,1500,3000,15000,25000" default="" delete_if_empty="true" />
+ <combo key="frequency" text="Frequency (Hz)" values="0,16.7,50,60" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Subway" icon="presets/rail_light.png" type="way">
+ <label text="Edit Subway" />
+ <space />
+ <key key="railway" value="subway" />
+ <optional>
+ <combo key="gauge" text="Gauge (mm)" values="1668,1676,1674,1600,1524,1520,1495,1435,1067,1000,914,762,760,750" default="" delete_if_empty="true" />
+ <combo key="service" text="Types" values="yard,siding,spur" default="" delete_if_empty="true" />
+ <combo key="electrified" text="Electrified" values="contact_line,no,yes,rail" default="" delete_if_empty="true" />
+ <combo key="voltage" text="Voltage" values="600,650,750,1500,3000,15000,25000" default="" delete_if_empty="true" />
+ <combo key="frequency" text="Frequency (Hz)" values="0,16.7,50,60" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Tram" icon="presets/tram.png" type="way">
+ <label text="Edit Tram" />
+ <space />
+ <key key="railway" value="tram" />
+ <optional>
+ <combo key="gauge" text="Gauge (mm)" values="1668,1676,1674,1600,1524,1520,1495,1435,1067,1000,914,762,760,750" default="" delete_if_empty="true" />
+ <combo key="service" text="Types" values="yard,siding,spur" default="" delete_if_empty="true" />
+ <combo key="electrified" text="Electrified" values="contact_line,no,yes,rail" default="" delete_if_empty="true" />
+ <combo key="voltage" text="Voltage" values="600,650,750,1500,3000,15000,25000" default="" delete_if_empty="true" />
+ <combo key="frequency" text="Frequency (Hz)" values="0,16.7,50,60" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Bus Guideway" icon="presets/busway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=bus_guideway" />
+ <label text="Edit Bus Guideway" />
+ <space />
+ <key key="highway" value="bus_guideway" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <check key="oneway" text="Oneway" default="off" delete_if_empty="true" />
+ <check key="bridge" text="Bridge" default="off" delete_if_empty="true" />
+ <check key="tunnel" text="Tunnel" default="off" delete_if_empty="true" />
+ <check key="cutting" text="Cutting" default="off" delete_if_empty="true" />
+ <check key="embankment" text="Embankment" default="off" delete_if_empty="true" />
+ <combo key="layer" text="Layer" values="5,4,3,2,1,0,-1,-2,-3,-4,-5" default="" delete_if_empty="true" />
+ <combo key="surface" text="Surface" values="paved,unpaved,asphalt,concrete,metal,wood,paving_stones,cobblestone,gravel,pebblestone,compacted,grass_paver,grass,sand,ground" default="" delete_if_empty="true" />
+ <text key="maxspeed" text="Max. speed (km/h)" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <separator/>
+ <item name="Disused Rail" icon="presets/railway.png" type="way">
+ <label text="Edit Disused Railway" />
+ <space />
+ <key key="railway" value="disused" />
+ <combo key="service" text="Optional Types" values="yard,siding,spur" default="" delete_if_empty="true" />
+ </item>
+ <item name="Abandoned Rail" icon="presets/railway.png" type="way">
+ <key key="railway" value="abandoned" />
+ </item>
+ <separator/>
+ <item name="Level Crossing" icon="presets/level_crossing.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=level_crossing" />
+ <key key="railway" value="level_crossing" />
+ </item>
+ <item name="Crossing" icon="presets/crossing.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Key:crossing" />
+ <key key="railway" value="crossing" />
+ <optional>
+ <combo key="crossing" text="Crossing type" values="uncontrolled,traffic_signals,island,unmarked,no,unknown" default="" delete_if_empty="true" />
+ <check key="horse" text="Cross on horseback" default="off" delete_if_empty="true" />
+ <check key="bicycle" text="Cross by bicycle" default="off" delete_if_empty="true" />
+ <check key="supervised" text="Crossing attendant" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Turntable" icon="presets/turntable.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=turntable" />
+ <key key="railway" value="turntable" />
+ </item>
+ <item name="Buffer Stop" icon="styles/standard/transport/buffer_stop.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:railway%3Dbuffer_stop" />
+ <key key="railway" value="buffer_stop" />
+ </item>
+ </group> <!-- Railway -->
+ <group name="Aerialway" icon="presets/aerialway.png">
+ <item name="Chair Lift" icon="presets/chair_lift.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=chair_lift" />
+ <label text="Edit Chair Lift" />
+ <key key="aerialway" value="chair_lift" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Drag Lift" icon="presets/drag_lift.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=drag_lift" />
+ <label text="Edit Drag Lift" />
+ <key key="aerialway" value="drag_lift" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Cable Car" icon="presets/cable_car.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:aerialway=cable_car" />
+ <label text="Edit Cable Car" />
+ <key key="aerialway" value="cable_car" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Gondola" icon="presets/gondola.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Piste_Maps#aerialway" />
+ <label text="Edit Gondola" />
+ <key key="aerialway" value="gondola" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Station" name_context="aerialway" icon="presets/aerialway_station.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Piste_Maps#aerialway" />
+ <label text="Edit Station" text_context="aerialway" />
+ <key key="aerialway" value="station" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Pylon" name_context="aerialway" icon="presets/power_tower.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Piste_Maps#aerialway" />
+ <label text="Edit Pylon" text_context="aerialway" />
+ <key key="aerialway" value="pylon" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Goods" name_context="aerialway" icon="presets/goods.png" type="node">
+ <label text="Edit Goods" text_context="aerialway" />
+ <key key="aerialway" value="goods" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Aerialway -->
+ <separator/>
+ <group name="Car" icon="presets/car.png">
+ <item name="Parking" icon="presets/parking.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=parking"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=parking" />
+ <label text="Edit Parking" />
+ <key key="amenity" value="parking" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="ref" text="Reference number" default="" delete_if_empty="true" />
+ <combo key="parking" text="Type" values="multi-storey,surface,underground" default="surface" delete_if_empty="true" />
+ <combo key="park_ride" text="Park and Ride" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="fee" text="Fee" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="capacity" text="Capacity (overall)" default="" delete_if_empty="true" />
+ <combo key="capacity:disabled" text="Spaces for Disabled" values="yes,no,unknown,1,2,3" default="" delete_if_empty="true" />
+ <combo key="capacity:women" text="Spaces for Women" values="yes,no,unknown,1,2,3" default="" delete_if_empty="true" />
+ <combo key="capacity:parent" text="Spaces for Parents" values="yes,no,unknown,1,2,3" default="" delete_if_empty="true" />
+ <label text="See the Wiki for other capacity:[types]=*." />
+ </item>
+ <separator/>
+ <item name="Fuel" icon="presets/fuel.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fuel"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=fuel"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=fuel" />
+ <label text="Edit Fuel" />
+ <key key="amenity" value="fuel" />
+ <combo key="brand" text="Brand" values="Agip,Aral,Avia,BP,Chevron,Citgo,Esso,Exxon,Gulf,Mobil,OMV,Petro-Canada,Pioneer,Q8,Repsol,Shell,Sunoco,Statoil,Tamoil,Texaco,Total,Independent" default="" delete_if_empty="true" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <combo key="shop" text="With shop" values="yes,convenience,kiosk,no" default="" delete_if_empty="true" />
+ <label text="Fuel types:" />
+ <check key="fuel:diesel" text="Diesel" default="off" delete_if_empty="true" />
+ <check key="fuel:biodiesel" text="Bio Diesel" default="off" delete_if_empty="true" />
+ <check key="fuel:GTL_diesel" text="Diesel (Gas To Liquid - ultimate diesel)" default="off" delete_if_empty="true" />
+ <check key="fuel:HGV_diesel" text="Diesel for Heavy Good Vehicles" default="off" delete_if_empty="true" />
+ <check key="fuel:octane_91" text="Octane 91" default="off" delete_if_empty="true" />
+ <check key="fuel:octane_95" text="Octane 95" default="off" delete_if_empty="true" />
+ <check key="fuel:octane_98" text="Octane 98" default="off" delete_if_empty="true" />
+ <check key="fuel:octane_100" text="Octane 100" default="off" delete_if_empty="true" />
+ <check key="fuel:e10" text="E10 (10% Ethanol mix)" default="off" delete_if_empty="true" />
+ <check key="fuel:e85" text="E85 (85% Ethanol mix)" default="off" delete_if_empty="true" />
+ <check key="fuel:lpg" text="LPG (Liquefied petroleum gas)" default="off" delete_if_empty="true" />
+ <check key="fuel:cng" text="CNG (Compressed Natural Gas)" default="off" delete_if_empty="true" />
+ <check key="fuel:1_25" text="1/25 mix (mofa/moped)" default="off" delete_if_empty="true" />
+ <check key="fuel:1_50" text="1/50 mix (mofa/moped)" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Charging Station" icon="styles/standard/accommodation/camping/hookup.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fuel"/>
+ <label text="Edit Charging Station (for electric cars)" />
+ <key key="amenity" value="charging_station" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="voltage" text="Voltage" default="" delete_if_empty="true" />
+ <text key="amperage" text="Amperage" default="" delete_if_empty="true" />
+ </item>
+ <item name="Wash" icon="presets/car_wash.png" type="node,closedway">
+ <label text="Edit Car Wash" />
+ <key key="amenity" value="car_wash" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="brand" text="Brand" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Car Dealer" icon="presets/car.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=car" />
+ <label text="Edit Car Shop" />
+ <key key="shop" value="car" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ </item>
+ <item name="Repair" icon="presets/car_repair.png" type="node,closedway">
+ <label text="Edit Car Repair" />
+ <key key="shop" value="car_repair" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="brand" text="Brand" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Tyres" icon="presets/tyres.png" type="node,closedway">
+ <label text="Edit Tyres" />
+ <key key="shop" value="tyres" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="brand" text="Brand" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <label text="Contact:" />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Rental" icon="presets/car_rental.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=car_rental"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=car_rental" />
+ <label text="Edit Car Rental" />
+ <key key="amenity" value="car_rental" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="brand" text="Brand" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Sharing" icon="presets/car_sharing.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=car_sharing" />
+ <label text="Edit Car Sharing" />
+ <key key="amenity" value="car_sharing" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="brand" text="Brand" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Car -->
+ <group name="Motorcycle" icon="presets/motorbike.png">
+ <item name="Parking" icon="styles/standard/vehicle/parking/motorbike.png" type="node,closedway">
+ <label text="Edit Motorcycle Parking" />
+ <key key="amenity" value="motorcycle_parking" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="capacity" text="Capacity" default="" delete_if_empty="true" />
+ <combo key="parking" text="Type" values="multi-storey,surface,underground" default="surface" delete_if_empty="true" />
+ <combo key="fee" text="Fee" values="yes,no" default="" delete_if_empty="true" />
+ </item>
+ <item name="Motorcycle Dealer" icon="presets/motorbike.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=motorcycle"/>
+ <label text="Edit Shop Motorcycle" />
+ <key key="shop" value="motorcycle" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="brand" text="Brand" values="independent" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <label text="Services:" />
+ <combo key="sale" text="Sale" values="yes,brand,used,no" values_context="motorcycle" default="" delete_if_empty="true" />
+ <combo key="rental" text="Rental" values="yes,brand,no" default="" delete_if_empty="true" />
+ <combo key="repair" text="Repair" values="yes,brand,oldtimer,no" default="" delete_if_empty="true" />
+ <combo key="safety_inspection" text="Safety inspection" values="yes,DEKRA,GTÃ,MOT,TÃV,no" default="" delete_if_empty="true" />
+ <combo key="parts" text="Parts" values="yes,brand,oldtimer,no" default="" delete_if_empty="true" />
+ <combo key="clothes" text="Clothes" values="yes,brand,no" default="" delete_if_empty="true" />
+ <text key="services" text="Other" default="" delete_if_empty="true" />
+ <label text="Contact:" />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Motorcycle -->
+ <group name="Bicycle" icon="presets/bike.png">
+ <item name="Parking" icon="styles/standard/vehicle/parking/bicycle.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bicycle_parking" />
+ <label text="Edit Bicycle Parking" />
+ <key key="amenity" value="bicycle_parking" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="capacity" text="Capacity" default="" delete_if_empty="true" />
+ </item>
+ <item name="Bike Dealer" icon="presets/bike.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=bicycle"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:shop=bicycle" />
+ <label text="Edit Bicycle Shop" />
+ <key key="shop" value="bicycle" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Rental" icon="presets/bicycle_rental.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bicycle_rental"
+ it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:bicycle_rental" />
+ <label text="Edit Bicycle Rental" />
+ <key key="amenity" value="bicycle_rental" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Bicycle -->
+ <group name="Public Transport" icon="presets/bus.png">
+ <item name="Station" name_context="railway" icon="styles/standard/transport/railway_station.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=station"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=station" />
+ <label text="Edit Station" text_context="railway" />
+ <space />
+ <key key="railway" value="station" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="uic_ref" text="UIC-Reference" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Railway Halt" icon="presets/station.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=halt" />
+ <label text="Edit Halt" />
+ <space />
+ <key key="railway" value="halt" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Tram Stop" icon="presets/tram.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=tram_stop"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=tram_stop" />
+ <label text="Edit Tram Stop" />
+ <space />
+ <key key="railway" value="tram_stop" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Railway Platform" icon="presets/platform_rail.png" type="way,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=platform"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:railway=platform" />
+ <label text="Edit Railway Platform" />
+ <key key="railway" value="platform" />
+ <space />
+ <text key="ref" text="Reference (track number)" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ <check key="area" text="Area" default="off" delete_if_empty="true" />
+ </item>
+ <item name="Subway Entrance" icon="presets/underground.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:railway=subway_entrance"
+ fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:railway=subway_entrance" />
+ <label text="Edit Subway Entrance" />
+ <space />
+ <key key="railway" value="subway_entrance" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <check key="wheelchair" text="Wheelchair" default="off" delete_if_empty="true" />
+ <check key="bicycle" text="Bicycle" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <separator/>
+ <item name="Bus Station" icon="presets/bus.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bus_station"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=bus_station" />
+ <label text="Edit Bus Station" />
+ <key key="amenity" value="bus_station" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Bus Stop" icon="presets/bus_small.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=bus_stop"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=bus_stop"
+ fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:highway=bus_stop" />
+ <label text="Edit Bus Stop" />
+ <space />
+ <key key="highway" value="bus_stop" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="shelter" text="Shelter" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="bench" text="Bench" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="tactile_paving" text="Tactile Paving" values="yes,no" default="" delete_if_empty="true" />
+
+ </optional>
+ </item>
+ <item name="Bus Platform" icon="presets/platform_bus.png" type="node,closedway">
+ <label text="Edit Bus Platform" />
+ <key key="highway" value="platform" />
+ <space />
+ <text key="ref" text="Reference (track number)" default="" delete_if_empty="true" />
+ <text key="width" text="Width (meters)" default="" delete_if_empty="true" />
+ <check key="area" text="Area" default="off" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Ticket Machine" de.name="Fahrausweisautomat" icon="presets/vending_machine.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity%3Dvending_machine" de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity%3Dvending_machine"/>
+ <key key="amenity" value="vending_machine"/>
+ <key key="vending" value="public_transport_tickets"/>
+ <text key="name" text="Name" default="" delete_if_empty="true"/>
+ <text key="operator" text="Operator" default="" delete_if_empty="true"/>
+ <text key="ref" text="Reference Number" default="" delete_if_empty="true"/>
+ <check key="payment:coins" text="Coins" default="off" delete_if_empty="true" />
+ <check key="payment:notes" text="Notes" default="off" delete_if_empty="true" />
+ <check key="payment:electronic_purses" text="Electronic purses and Charge cards" default="off" delete_if_empty="true" />
+ <check key="payment:debit_cards" text="Debit cards" default="off" delete_if_empty="true" />
+ <check key="payment:credit_cards" text="Credit cards" default="off" delete_if_empty="true" />
+ <check key="payment:account_cards" text="Account or loyalty cards" default="off" delete_if_empty="true" />
+ </item>
+ </group> <!-- Public Transport -->
+ <item name="Taxi" icon="presets/taxi.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=taxi" />
+ <label text="Edit Taxi station" />
+ <key key="amenity" value="taxi" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <group name="Airport" icon="presets/plane.png">
+ <item name="Airport Ground" icon="presets/plane.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=aerodrome" />
+ <label text="Edit Airport Ground" />
+ <key key="aeroway" value="aerodrome" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <optional>
+ <text key="iata" text="IATA" default="" delete_if_empty="true" />
+ <text key="icao" text="ICAO" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <separator/>
+ <item name="Runway" icon="presets/runway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=runway" />
+ <label text="Edit Runway" />
+ <key key="aeroway" value="runway" />
+ <optional>
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Taxiway" icon="presets/taxiway.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=taxiway" />
+ <label text="Edit Taxiway" />
+ <key key="aeroway" value="taxiway" />
+ <optional>
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Helipad" icon="styles/standard/transport/airport/helipad.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=helipad" />
+ <label text="Edit Helipad" />
+ <key key="aeroway" value="helipad" />
+ <optional>
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Apron" icon="presets/apron.png" type="closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=apron" />
+ <label text="Apron" />
+ <key key="aeroway" value="apron" />
+ </item>
+ <item name="Hangar" icon="presets/hangar.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=hangar" />
+ <label text="Hangar" />
+ <key key="building" value="hangar" />
+ </item>
+ <item name="Beacon" icon="styles/standard/misc/landmark/beacon.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made%3Dbeacon" />
+ <label text="Beacon" />
+ <key key="man_made" value="beacon" />
+ </item>
+ <item name="Windsock" icon="styles/standard/transport/airport/windsock.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=windsock" />
+ <label text="Windsock" />
+ <key key="aeroway" value="windsock" />
+ </item>
+ <separator/>
+ <item name="Terminal" icon="styles/standard/transport/airport/terminal.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=terminal" />
+ <label text="Edit Terminal" />
+ <key key="aeroway" value="terminal" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Gate" name_context="airport" icon="presets/aeroway_gate.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:aeroway=gate" />
+ <label text="Edit Terminal Gate" />
+ <key key="aeroway" value="gate" />
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Aeroway -->
+ </group>
+ <group name="Facilities" icon="presets/bed.png">
+ <group name="Accommodation" icon="presets/bed.png">
+ <item name="Hotel" icon="presets/bed.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=hotel"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:tourism=hotel" />
+ <label text="Edit Hotel" />
+ <key key="tourism" value="hotel" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="stars" text="Stars" values="1,2,3,4,5,6,7" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Motel" icon="styles/standard/accommodation/motel.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=motel" />
+ <label text="Edit Motel" />
+ <key key="tourism" value="motel" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="stars" text="Stars" values="1,2,3,4,5,6,7" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Guest House" icon="styles/standard/accommodation/guest_house.png" type="node,closedway">
+ <label text="Edit Guest House" />
+ <key key="tourism" value="guest_house" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="stars" text="Stars" values="1,2,3,4,5,6,7" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Chalet" icon="styles/standard/accommodation/chalet.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=chalet" />
+ <label text="Edit Chalet" />
+ <key key="tourism" value="chalet" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="stars" text="Stars" values="1,2,3,4,5,6,7" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Hostel" icon="presets/hostel.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=hostel" />
+ <label text="Edit Hostel" />
+ <key key="tourism" value="hostel" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="stars" text="Stars" values="1,2,3,4,5,6,7" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Alpine Hut" icon="styles/standard/accommodation/alpine_hut.png" type="node,closedway">
+ <label text="Edit Alpine Hut" />
+ <key key="tourism" value="alpine_hut" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="ele" text="Elevation" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Caravan Site" icon="presets/caravan2.png" type="node,closedway">
+ <label text="Edit Caravan Site" />
+ <key key="tourism" value="caravan_site" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="stars" text="Stars" values="1,2,3,4,5,6,7" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="capacity" text="Number of places" default="" delete_if_empty="true" />
+ <combo key="fee" text="Requires a fee" values="yes,no,interval" delete_if_empty="true" />
+ <check key="power_supply" text="Power supply" default="off" delete_if_empty="true" />
+ <check key="tents" text="Tents allowed" default="off" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Camping Site" icon="presets/tent.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=camp_site" />
+ <label text="Edit Camping Site" />
+ <key key="tourism" value="camp_site" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="stars" text="Stars" values="1,2,3,4,5,6,7" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Accomodation -->
+ <group name="Food+Drinks" icon="presets/restaurant.png">
+ <item name="Restaurant" icon="presets/restaurant.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=restaurant" />
+ <label text="Edit Restaurant" />
+ <key key="amenity" value="restaurant" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <multiselect key="cuisine" text="Cuisine" values="italian;chinese;pizza;burger;greek;german;indian;regional;kebab;turkish;asian;thai;mexican;japanese;french;sandwich;sushi" default=""/>
+ <check key="microbrewery" text="Microbrewery" default="off" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <combo key="stars" text="Stars" values="1,2,3,4,5,6,7" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Fast Food" icon="presets/fastfood.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fast_food" />
+ <label text="Edit Fast Food Restaurant" />
+ <key key="amenity" value="fast_food" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="cuisine" text="Cuisine" values="italian,chinese,pizza,burger,greek,german,indian,regional,kebab,turkish,asian,thai,mexican,japanese,french,sandwich,sushi,fish_and_chips,chicken" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Food Court" icon="presets/fastfood.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=food_court" />
+ <label text="Edit Food Court" />
+ <key key="amenity" value="food_court" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Cafe" icon="presets/cafe.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=cafe" />
+ <label text="Edit Cafe" />
+ <key key="amenity" value="cafe" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="cuisine" text="Cuisine" values="ice_cream" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Pub" icon="presets/pub.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=pub" />
+ <label text="Edit Pub" />
+ <key key="amenity" value="pub" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <check key="microbrewery" text="Microbrewery" default="off" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Biergarten" icon="presets/biergarten.png" type="node,closedway">
+ <label text="Edit Biergarten" />
+ <key key="amenity" value="biergarten" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Bar" icon="presets/bar.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bar" />
+ <label text="Edit Bar" />
+ <key key="amenity" value="bar" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <space />
+ <combo key="internet_access" text="Internet access" values="yes,wlan,wired,terminal,no" default="" delete_if_empty="true" />
+ <combo key="internet_access:fee" text="Internet access fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ <item name="Nightclub" icon="presets/bar.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=nightclub" />
+ <label text="Edit Nightclub" />
+ <key key="amenity" value="nightclub" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <space />
+ <combo key="smoking" text="Smoking" values="yes,dedicated,separated,isolated,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchairs" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Food+Drinks -->
+ <group name="Tourism" icon="presets/sightseeing.png">
+ <item name="Attraction" icon="presets/sightseeing.png" type="node,closedway">
+ <label text="Edit Attraction" />
+ <key key="tourism" value="attraction" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="opening_hours" text="Opening Hours" default="" delete_if_empty="true" />
+ </item>
+ <item name="Viewpoint" icon="presets/viewpoint.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=viewpoint" />
+ <label text="Edit Viewpoint" />
+ <key key="tourism" value="viewpoint" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+<!--<check key="man_made" value="tower" text="Look-Out Tower" default="off" delete_if_empty="true" />-->
+ </item>
+ <separator/>
+ <item name="Information Office" icon="presets/informationoffice.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Key:information" />
+ <key key="tourism" value="information" />
+ <key key="information" value="office" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Map" icon="presets/map.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Key:information" />
+ <key key="tourism" value="information" />
+ <key key="information" value="map" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="map_type" text="Detail Grade" values="topo,street,scheme" default="" delete_if_empty="true" />
+ <combo key="map_size" text="Shown Area" values="site,city,region" default="" delete_if_empty="true" />
+ <text key="description" text="Closer Description" default="" delete_if_empty="true" />
+ <space />
+ <label text="Routes shown for:" />
+ <check key="hiking" text="Hiking" default="off" delete_if_empty="true" />
+ <check key="bicycle" text="Cycling" default="off" delete_if_empty="true" />
+ <check key="mtb" text="Mountainbiking" default="off" delete_if_empty="true" />
+ <check key="ski" text="Skiing" default="off" delete_if_empty="true" />
+ <check key="horse" text="Riding" default="off" delete_if_empty="true" />
+ <label text="... other transportation modes possible" />
+ </item>
+ <item name="Information Board" icon="presets/board.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:information%3Dboard" />
+ <key key="tourism" value="information" />
+ <key key="information" value="board" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="board_type" text="Board Content" values="notice,history,nature,wildlife,plants" default="board" delete_if_empty="true" />
+ <text key="description" text="Closer Description" default="" delete_if_empty="true" />
+ </item>
+ <item name="Guidepost" icon="presets/guidepost.png" type="node">
+ <link href="http://wiki.openstreetmap.org/index.php/Proposed_features/Guidepost" />
+ <key key="tourism" value="information" />
+ <key key="information" value="guidepost" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="ele" text="Elevation" default="" delete_if_empty="true" />
+ <space />
+ <label text="Routes shown for:" />
+ <check key="hiking" text="Hiking" default="off" delete_if_empty="true" />
+ <check key="bicycle" text="Cycling" default="off" delete_if_empty="true" />
+ <check key="mtb" text="Mountainbiking" default="off" delete_if_empty="true" />
+ <check key="ski" text="Skiing" default="off" delete_if_empty="true" />
+ <check key="horse" text="Riding" default="off" delete_if_empty="true" />
+ <label text="... other transportation modes possible" />
+ </item>
+ <item name="Information Terminal" icon="presets/information.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Key:information" />
+ <key key="tourism" value="information" />
+ <key key="information" value="terminal" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="description" text="Closer description" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="ref" text="Reference number" default="" delete_if_empty="true" />
+ <combo key="fee" text="Fee" values="yes,no" default="" delete_if_empty="true" />
+ </item>
+ <item name="Audioguide" icon="presets/information.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Key:information" />
+ <key key="tourism" value="information" />
+ <key key="information" value="audioguide" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="description" text="Closer description" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="ref" text="Reference number" default="" delete_if_empty="true" />
+ <combo key="fee" text="Fee" values="yes,no" default="" delete_if_empty="true" />
+ <space />
+ <label text="Audioguide via mobile phone?" />
+ <text key="phone" text="Phone number" default="" delete_if_empty="true" />
+ </item>
+ <item name="Other Information Points" icon="presets/information.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism%3Dinformation" />
+ <key key="tourism" value="information" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="description" text="Closer Description" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Tourism -->
+ <group name="Leisure" icon="presets/theme_park.png">
+ <item name="Cinema" icon="presets/cinema.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=cinema"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=cinema" />
+ <label text="Edit Cinema" />
+ <key key="amenity" value="cinema" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Zoo" icon="presets/zoo.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=zoo"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:tourism=zook" />
+ <label text="Edit Zoo" />
+ <key key="tourism" value="zoo" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Dog Park" icon="presets/dogpark.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=dog_park"
+ it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:leisure=dog_park" />
+ <label text="Edit Dog Park" />
+ <key key="leisure" value="dog_park" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <check key="area" text="Area" default="off" delete_if_empty="true" />
+ <combo key="barrier" text="Barrier" values="fence,wall" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <check key="lit" text="Lit" default="off" delete_if_empty="true" />
+ </item>
+ <item name="Theme Park" icon="presets/theme_park.png" type="node,closedway">
+ <label text="Edit Theme Park" />
+ <key key="tourism" value="theme_park" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Water Park" icon="presets/swimming.png" type="node,closedway">
+ <label text="Edit Water Park" />
+ <key key="leisure" value="water_park" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Sauna" de.name="Sauna" icon="presets/sauna.png" type="node,closedway">
+ <label text="Edit Sauna" />
+ <space />
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Sauna" />
+ <label text="Edit Sauna" de.text="bearbeite Sauna" />
+ <space />
+ <key key="leisure" value="sauna" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" de.text="Betreiber" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" de.text="Ãffnungszeiten" values="Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <combo key="access" text="Access" values="yes,permissive,private,unknown" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Playground" icon="styles/standard/leisure/playground.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=playground" />
+ <label text="Edit Playground" />
+ <key key="leisure" value="playground" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Picnic Site" icon="presets/picnic.png" type="node,closedway">
+ <label text="Edit Picnic Site" />
+ <key key="tourism" value="picnic_site" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <check key="fireplace" text="Fireplace" default="off" delete_if_empty="true" />
+ </item>
+ <item name="Public Grill" icon="presets/bbq.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity%3Dbbq" />
+ <label text="Edit Public Grill"/>
+ <space />
+ <key key="amenity" value="bbq" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="covered" text="Covered" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="fuel" text="Fuel" text_context="grill" values="charcoal,electric,wood" default="" delete_if_empty="true" />
+ </item>
+ <item name="Fishing" icon="presets/fishing.png" type="node,closedway">
+ <label text="Edit Fishing" />
+ <key key="leisure" value="fishing" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Leisure -->
+ <group name="Culture" icon="presets/theater.png">
+ <item name="Museum" icon="presets/State_Public.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=museum" />
+ <label text="Edit Museum" />
+ <key key="tourism" value="museum" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Theatre" icon="presets/theater.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=theatre"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=theatre" />
+ <label text="Edit Theatre" />
+ <key key="amenity" value="theatre" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Library" icon="styles/standard/shop/rental/library.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=library"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=library" />
+ <label text="Edit Library" />
+ <key key="amenity" value="library" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Arts Centre" icon="presets/arts_centre.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=arts_centre" />
+ <label text="Edit Arts Centre" />
+ <key key="amenity" value="arts_centre" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Artwork" icon="presets/arts_centre.png" type="node,way,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:tourism=artwork" />
+ <label text="Edit Artwork" />
+ <key key="tourism" value="artwork" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Place of Worship" icon="presets/church.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=place_of_worship"
+ it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=place_of_worship"
+ sv.href="http://wiki.openstreetmap.org/wiki/Sv:Tag:amenity=place_of_worship" />
+ <label text="Edit Place of Worship" />
+ <key key="amenity" value="place_of_worship" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="religion" text="Religion" values="bahai,buddhist,christian,hindu,jain,jewish,muslim,sikh,spiritualist,taoist,unitarian,zoroastrian" default="" delete_if_empty="true" />
+ <combo key="denomination" text="Denomination" values="anglican,baptist,catholic,evangelical,jehovahs_witness,lutheran,methodist,mormon,orthodox,pentecostal,presbyterian,protestant,quaker,shia,sunni" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Recording Studio" icon="presets/studio.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity%3Dstudio" />
+ <label text="Edit Studio" />
+ <space />
+ <key key="amenity" value="studio" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="type" text="Type" values="audio,video" default="" delete_if_empty="true" />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Culture -->
+ <group name="Public Building" icon="presets/townhall.png">
+ <item name="Public Building" icon="styles/standard/service.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=public_building" />
+ <label text="Edit Public Building" />
+ <key key="amenity" value="public_building" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Town hall" icon="presets/townhall.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=townhall" />
+ <label text="Edit Town hall" />
+ <key key="amenity" value="townhall" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Community Centre" icon="presets/community_centre.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity%3Dcommunity_centre" />
+ <label text="Community Centre" />
+ <space />
+ <key key="amenity" value="community_centre" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Embassy" icon="presets/embassy.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=embassy" />
+ <label text="Edit Embassy" />
+ <key key="amenity" value="embassy" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Courthouse" icon="presets/JusticeScales.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=courthouse"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=courthouse" />
+ <label text="Edit Courthouse" />
+ <key key="amenity" value="courthouse" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Prison" icon="presets/prison.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=prison"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=prison" />
+ <label text="Edit Prison" />
+ <key key="amenity" value="prison" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Police" icon="styles/standard/service/police.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=police"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=police"
+ it.href="http://wiki.openstreetmap.org/wiki/IT:Tag:amenity=police" />
+ <label text="Edit Police" />
+ <key key="amenity" value="police" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Fire Station" icon="presets/firebrigade.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fire_station"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:fire_station" />
+ <label text="Edit Fire Station" />
+ <key key="amenity" value="fire_station" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Post Office" icon="styles/standard/service/post_office.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=post_office" />
+ <label text="Edit Post Office" />
+ <key key="amenity" value="post_office" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Public Buildings -->
+ <group name="Education" icon="presets/school.png">
+ <item name="Kindergarten" icon="presets/kindergarten.png" type="node,closedway,relation">
+ <label text="Edit Kindergarten" />
+ <key key="amenity" value="kindergarten" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="School" icon="presets/school.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=school" />
+ <label text="Edit School" />
+ <key key="amenity" value="school" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="University" icon="styles/standard/education/university.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=university" />
+ <label text="Edit University" />
+ <key key="amenity" value="university" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="College" icon="styles/standard/education/college.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=college" />
+ <label text="Edit College" />
+ <key key="amenity" value="college" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Driving School" icon="styles/standard/education/driving_school.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/driving_school" />
+ <label text="Edit Driving School"/>
+ <space />
+ <key key="amenity" value="driving_school" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="license_classes" text="License Classes" values="A1;A;B;BE;C" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Education -->
+ <group name="Health" icon="presets/pharmacy.png">
+ <item name="Doctors" icon="styles/standard/health/doctor.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=doctors" />
+ <label text="Edit Doctors" />
+ <key key="amenity" value="doctors" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Dentist" icon="styles/standard/health/dentist.png" type="node,closedway">
+ <label text="Edit Dentist" />
+ <key key="amenity" value="dentist" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Pharmacy" icon="presets/pharmacy.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=pharmacy" />
+ <label text="Edit Pharmacy" />
+ <key key="amenity" value="pharmacy" />
+ <combo key="dispensing" text="Dispensing" values="yes,no" default="no" delete_if_empty="true" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Hearing Aids" icon="presets/hearing_aids.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dhearing_aids"/>
+ <label text="Edit Hearing Aids" />
+ <space />
+ <key key="shop" value="hearing_aids" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Hospital" icon="styles/standard/health/hospital.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=hospital" />
+ <label text="Edit Hospital" />
+ <key key="amenity" value="hospital" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Baby Hatch" icon="presets/baby_hatch.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=baby_hatch" />
+ <label text="Edit Baby Hatch" />
+ <key key="amenity" value="baby_hatch" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="opening_hours" text="Opening Hours" default="" delete_if_empty="true" />
+ </item>
+ <item name="Emergency Access Point" icon="styles/standard/service/emergency_access_point.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway=emergency_access_point"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:highway=emergency_access_point" />
+ <label text="Edit Emergency Access Point" />
+ <space />
+ <key key="highway" value="emergency_access_point" />
+ <text key="ref" text="Point Number" default="" delete_if_empty="true" />
+ <text key="name" text="Point Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <label text="(Use international code, like +12-345-67890)" />
+ <space />
+ </item>
+ <item name="Veterinary" icon="styles/standard/health/veterinary.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=veterinary"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=veterinary" />
+ <label text="Edit Veterinary" />
+ <key key="amenity" value="veterinary" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Health -->
+ <group name="Facilities" icon="presets/telephone.png">
+ <item name="Toilets" icon="presets/toilet.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=toilets"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=toilets" />
+ <key key="amenity" value="toilets" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="ref" text="Reference number" default="" delete_if_empty="true" />
+ <combo key="fee" text="Fee" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="wheelchair" text="Wheelchair" values="no,limited,yes" default="" delete_if_empty="true" />
+ <text key="note" text="Note" default="" delete_if_empty="true" />
+ </item>
+ <item name="Post Box" icon="styles/standard/service/post_box.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=post_box" />
+ <key key="amenity" value="post_box" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ </item>
+ <item name="Telephone" icon="presets/telephone.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=telephone"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=telephone" />
+ <label text="Edit Telephone" />
+ <key key="amenity" value="telephone" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <check key="payment:coins" text="Coins" default="off" delete_if_empty="true" />
+ <check key="payment:notes" text="Notes" default="off" delete_if_empty="true" />
+ <check key="payment:electronic_purses" text="Electronic purses and Charge cards" default="off" delete_if_empty="true" />
+ <check key="payment:debit_cards" text="Debit cards" default="off" delete_if_empty="true" />
+ <check key="payment:credit_cards" text="Credit cards" default="off" delete_if_empty="true" />
+ <check key="payment:telephone_cards" text="Telephone cards" default="off" delete_if_empty="true" />
+ </item>
+ <item name="Clock" icon="styles/standard/service/clock.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=clock"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=clock" />
+ <label text="Edit Clock" />
+ <key key="amenity" value="clock" />
+ <optional>
+ <combo key="display" text="Display" values="analog,digital,sundial,unorthodox" default="" delete_if_empty="true" />
+ <combo key="support" text="Support" values="pole,wall_mounted,billboard,ground" default="" delete_if_empty="true" />
+ <combo key="visibility" text="Visibility/readability" values="house,street,area" display_values="(up to 5m),(up to 20m),(more than 20m)" default="" delete_if_empty="true" />
+ <check key="date" text="Shows current date" default="off" delete_if_empty="true" />
+ <check key="thermometer" text="Shows temperature" default="off" delete_if_empty="true" />
+ <check key="barometer" text="Shows barometric pressure" default="off" delete_if_empty="true" />
+ <check key="hygrometer" text="Shows humidity" default="off" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Recycling" icon="presets/recycling.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=recycling"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=recycling" />
+ <label text="Edit Recycling station" />
+ <key key="amenity" value="recycling" />
+ <check key="recycling:batteries" text="Batteries" default="off" delete_if_empty="true" />
+ <check key="recycling:cans" text="Cans" default="off" delete_if_empty="true" />
+ <check key="recycling:clothes" text="Clothes" default="off" delete_if_empty="true" />
+ <check key="recycling:glass" text="Glass" default="off" delete_if_empty="true" />
+ <check key="recycling:paper" text="Paper" default="off" delete_if_empty="true" />
+ <check key="recycling:scrap_metal" text="Scrap Metal" default="off" delete_if_empty="true" />
+ </item>
+ <item name="Waste Basket" icon="styles/standard/service/recycling/trash-bin.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity%3Dwaste_basket" />
+ <label text="Edit Waste Basket" />
+ <key key="amenity" value="waste_basket" />
+ </item>
+ <separator/>
+ <item name="Bench" icon="presets/bench.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bench" />
+ <key key="amenity" value="bench" />
+ <combo key="backrest" text="Backrest" values="yes,no" default="" delete_if_empty="true" />
+ <combo key="material" text="Material" values="stone,metal,wood,plastic" default="" delete_if_empty="true" />
+ <combo key="colour" text="Colour" values="black,brown,green,red,blue,gray,white" default="" delete_if_empty="true" />
+ <combo key="seats" text="Amount of Seats" values="2,3,4,5,6,7,8,9,10" default="" delete_if_empty="true" />
+ </item>
+ <item name="Shelter" icon="presets/shelter.png" type="node,closedway">
+ <label text="Edit Shelter" />
+ <key key="amenity" value="shelter" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <check key="fireplace" text="Fireplace" default="off" delete_if_empty="true" />
+ </item>
+ <item name="Hunting Stand" icon="presets/hunting_stand.png" type="node">
+ <label text="Edit Hunting Stand" />
+ <key key="amenity" value="hunting_stand" />
+ <combo key="height" text="Height" values="low,half,full,5,10,15,20" default="" delete_if_empty="true" />
+ <combo key="shelter" text="Shelter" values="yes,no,unknown" default="" delete_if_empty="true" />
+ <combo key="hide" text="Hide" values="yes,no,unknown" default="" delete_if_empty="true" />
+ <combo key="lock" text="Lock" values="yes,no,unknown" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Drinking Water" icon="presets/drinking_water.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=drinking_water"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:amenity=drinking_water" />
+ <label text="Edit Drinking Water" />
+ <key key="amenity" value="drinking_water" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Fire Hydrant" icon="presets/fire_hydrant.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:emergency=fire_hydrant"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:emergency=fire_hydrant" />
+ <label text="Edit Fire Hydrant" />
+ <key key="emergency" value="fire_hydrant" />
+ <combo key="fire_hydrant:type" text="Type" values="underground,pillar,wall,pond" values_context="pipeline" default="pillar" delete_if_empty="true" />
+ <combo key="fire_hydrant:diameter" text="Diameter" values="50,80,100,150,200,250,300,400" default="" delete_if_empty="true" />
+ <space />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <space />
+ <combo key="fire_hydrant:position" text="Position" values="lane,parking_lot,sidewalk,green" default="" delete_if_empty="true" />
+ <combo key="fire_hydrant:pressure" text="Pressure" values="xx l/min,suction" default="" delete_if_empty="true" />
+ <text key="fire_hydrant:count" text="Count" values="" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Facilities -->
+ </group> <!-- Facilities -->
+ <group name="Sports" icon="presets/soccer.png">
+ <group name="Sport Facilities" icon="presets/stadium.png">
+ <item name="Stadium" icon="presets/stadium.png" type="node,closedway">
+ <label text="Edit Stadium" />
+ <key key="leisure" value="stadium" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <space />
+ <label text="select sport:" />
+ <space />
+ <combo key="sport" text="sport" values="multi,archery,athletics,american_football,australian_football,baseball,basketball,boules,bowls,canadian_football,canoe,climbing,cricket,cricket_nets,croquet,cycling,dog_racing,equestrian,gaelic_football,golf,gymnastics,hockey,horse_racing,motor,pelota,racquet,rugby_league,rugby_union,shooting,skateboard,skating,skiing,soccer,swimming,table_tennis,tennis" default="" delete_if_empty="true" />
+ </item>
+ <item name="Sports Centre" icon="presets/sports_centre.png" type="node,closedway">
+ <label text="Edit Sports Centre" />
+ <key key="leisure" value="sports_centre" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <space />
+ <label text="select sport:" />
+ <space />
+ <combo key="sport" text="sport" values="multi,archery,athletics,american_football,australian_football,baseball,basketball,boules,bowls,canadian_football,canoe,climbing,cricket,cricket_nets,croquet,cycling,dog_racing,equestrian,gaelic_football,golf,gymnastics,hockey,horse_racing,motor,pelota,racquet,rugby_league,rugby_union,shooting,skateboard,skating,skiing,soccer,swimming,table_tennis,tennis" default="" delete_if_empty="true" />
+ </item>
+ <item name="Pitch" icon="presets/pitch.png" type="node,closedway">
+ <label text="Edit Pitch" />
+ <key key="leisure" value="pitch" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <space />
+ <label text="select sport:" />
+ <space />
+ <combo key="sport" text="sport" values="multi,archery,athletics,american_football,australian_football,baseball,basketball,boules,bowls,canadian_football,canoe,climbing,cricket,cricket_nets,croquet,cycling,dog_racing,equestrian,gaelic_football,golf,gymnastics,hockey,horse_racing,motor,pelota,racquet,rugby_league,rugby_union,shooting,skateboard,skating,skiing,soccer,swimming,table_tennis,tennis" default="" delete_if_empty="true" />
+ </item>
+ <item name="Racetrack" icon="presets/stadium.png" type="node,way,closedway,relation">
+ <label text="Edit Racetrack" />
+ <key key="leisure" value="track" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <space />
+ <label text="select sport:" />
+ <space />
+ <combo key="sport" text="sport" values="multi,archery,athletics,american_football,australian_football,baseball,basketball,boules,bowls,canadian_football,canoe,climbing,cricket,cricket_nets,croquet,cycling,dog_racing,equestrian,gaelic_football,golf,gymnastics,hockey,horse_racing,motor,pelota,racquet,rugby_league,rugby_union,shooting,skateboard,skating,skiing,soccer,swimming,table_tennis,tennis" default="" delete_if_empty="true" />
+ </item>
+ <item name="Golf Course" icon="presets/golf.png" type="node,closedway">
+ <label text="Edit Golf Course" />
+ <key key="leisure" value="golf_course" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Miniature Golf" icon="presets/golf.png" type="node,closedway">
+ <label text="Edit Miniature Golf" />
+ <key key="leisure" value="miniature_golf" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Sport facilities -->
+ <group name="Sport" icon="presets/rowing.png">
+ <item name="Multi" icon="styles/standard/sport/multi.png" type="node,closedway">
+ <label text="Edit Multi" />
+ <key key="sport" value="multi" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="10pin" icon="styles/standard/sport/10pin.png" type="node,closedway">
+ <label text="Edit 10pin" />
+ <key key="sport" value="10pin" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Athletics" icon="presets/athletics.png" type="node,closedway">
+ <label text="Edit Athletics" />
+ <key key="sport" value="athletics" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Archery" icon="styles/standard/sport/archery.png" type="node,closedway">
+ <label text="Edit Archery" />
+ <key key="sport" value="archery" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Climbing" icon="styles/standard/sport/climbing.png" type="node,closedway">
+ <label text="Edit Climbing" />
+ <key key="sport" value="climbing" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Canoeing" icon="presets/canoe.png" type="node,way,closedway">
+ <label text="Edit Canoeing" />
+ <key key="sport" value="canoe" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Cycling" icon="presets/cycling.png" type="node,closedway">
+ <label text="Edit Cycling" />
+ <key key="sport" value="cycling" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Dog Racing" icon="styles/standard/leisure/dog.png" type="node,closedway">
+ <label text="Edit Dog Racing" />
+ <key key="sport" value="dog_racing" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Equestrian" icon="presets/equestrian.png" type="node,closedway">
+ <label text="Edit Equestrian" />
+ <key key="sport" value="equestrian" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Horse Racing" icon="presets/equestrian.png" type="node,closedway">
+ <label text="Edit Horse Racing" />
+ <key key="sport" value="horse_racing" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Gymnastics" icon="presets/gymnastics.png" type="node,closedway">
+ <label text="Edit Gymnastics" />
+ <key key="sport" value="gymnastics" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Skating" icon="presets/skating.png" type="node,closedway">
+ <label text="Edit Skating" />
+ <key key="sport" value="skating" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Skateboard" icon="styles/standard/sport/skateboard.png" type="node,closedway">
+ <label text="Edit Skateboard" />
+ <key key="sport" value="skateboard" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Swimming" icon="presets/swimming.png" type="node,closedway">
+ <label text="Edit Swimming" />
+ <key key="sport" value="swimming" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Skiing" icon="presets/skiing_downhill.png" type="node,way,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Piste_Maps"/>
+ <label text="Edit Skiing" />
+ <key key="sport" value="skiing" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="piste:type" text="Piste type" values="downhill,nordic,snow_park" default="" delete_if_empty="true" />
+ <combo key="piste:difficulty" text="Difficulty" values="novice,easy,intermediate,advanced,expert,freeride" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Shooting" icon="presets/range.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:sport=shooting" />
+ <label text="Edit Shooting" />
+ <key key="sport" value="shooting" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Sport -->
+ <group name="Sport (Ball)" icon="presets/soccer.png">
+ <item name="Soccer" icon="presets/soccer.png" type="node,closedway">
+ <label text="Edit Soccer" />
+ <key key="sport" value="soccer" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Australian Football" icon="presets/soccer.png" type="node,closedway">
+ <label text="Edit Australian Football" />
+ <key key="sport" value="australian_football" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="American Football" icon="presets/football.png" type="node,closedway">
+ <label text="Edit American Football" />
+ <key key="sport" value="american_football" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Canadian Football" icon="presets/football.png" type="node,closedway">
+ <label text="Edit Canadian Football" />
+ <key key="sport" value="canadian_football" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Gaelic Football" icon="presets/soccer.png" type="node,closedway">
+ <label text="Edit Gaelic Football" />
+ <key key="sport" value="gaelic_football" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Rugby League" icon="presets/football.png" type="node,closedway">
+ <label text="Edit Rugby League" />
+ <key key="sport" value="rugby_league" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Rugby Union" icon="presets/football.png" type="node,closedway">
+ <label text="Edit Rugby Union" />
+ <key key="sport" value="rugby_union" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Baseball" icon="presets/baseball.png" type="node,closedway">
+ <label text="Edit Baseball" />
+ <key key="sport" value="baseball" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Basketball" icon="presets/basketball.png" type="node,closedway">
+ <label text="Edit Basketball" />
+ <key key="sport" value="basketball" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Volleyball" icon="styles/standard/sport/volleyball.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:sport%3Dvolleyball" />
+ <label text="Edit Volleyball" />
+ <space />
+ <key key="sport" value="volleyball" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="leisure" text="Type" values="stadium,pitch,sports_centre" default="" delete_if_empty="true" />
+ </item>
+ <item name="Beachvolleyball" icon="presets/beachvolleyball.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:sport%3Dbeachvolleyball" />
+ <label text="Edit Beachvolleyball" />
+ <space />
+ <key key="sport" value="beachvolleyball" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="leisure" text="Type" values="stadium,pitch,sports_centre" default="" delete_if_empty="true" />
+ </item>
+ <item name="Golf" icon="presets/golf.png" type="node,closedway">
+ <label text="Edit Golf" />
+ <key key="sport" value="golf" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="golf_course,pitch,sports_centre,stadium,track" default="golf_course" delete_if_empty="true" />
+ </item>
+ <item name="Boule" icon="presets/boule.png" type="node,closedway">
+ <label text="Edit Boule" />
+ <key key="sport" value="boules" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Bowls" icon="presets/boule.png" type="node,closedway">
+ <label text="Edit Bowls" />
+ <key key="sport" value="bowls" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Cricket" icon="presets/cricket.png" type="node,closedway">
+ <label text="Edit Cricket" />
+ <key key="sport" value="cricket" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Cricket Nets" icon="presets/cricket.png" type="node,closedway">
+ <label text="Edit Cricket Nets" />
+ <key key="sport" value="cricket_nets" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Croquet" icon="styles/standard/sport/croquet.png" type="node,closedway">
+ <label text="Edit Croquet" />
+ <key key="sport" value="croquet" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Hockey" icon="presets/Hockey.png" type="node,closedway">
+ <label text="Edit Hockey" />
+ <key key="sport" value="hockey" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Pelota" icon="presets/pelota.png" type="node,closedway">
+ <label text="Edit Pelota" />
+ <key key="sport" value="pelota" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Racquet" icon="presets/racquetball.png" type="node,closedway">
+ <label text="Edit Racquet" />
+ <key key="sport" value="racquet" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Table Tennis" icon="presets/table_tennis.png" type="node,closedway">
+ <label text="Edit Table Tennis" />
+ <key key="sport" value="table_tennis" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Tennis" icon="presets/tennis.png" type="node,closedway">
+ <label text="Edit Tennis" />
+ <key key="sport" value="tennis" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Sport (Ball) -->
+ <group name="Motorsport" icon="presets/motorbike.png">
+ <item name="Motorsport" icon="styles/standard/sport/motor.png" type="node,closedway">
+ <label text="Edit Motorsport" />
+ <key key="sport" value="motor" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,stadium,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Karting" icon="presets/karting.png" type="node,closedway">
+ <label text="Edit Karting" />
+ <key key="sport" value="karting" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Motocross" icon="styles/standard/sport/motocross.png" type="node,closedway">
+ <label text="Edit Motocross" />
+ <key key="sport" value="motocross" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="Safety Training" icon="presets/safety_training.png" type="node,closedway">
+ <label text="Edit Safety Training" />
+ <key key="sport" value="safety_training" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,track" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Model Aerodrome" icon="presets/plane.png" type="node,closedway">
+ <label text="Edit Model Aerodrome" />
+ <key key="sport" value="model_aerodrome" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,track" default="" delete_if_empty="true" />
+ </item>
+ <item name="RC Car" icon="presets/car.png" type="node,closedway">
+ <label text="Edit RC Car" />
+ <key key="sport" value="rc_car" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="leisure" text="type" values="pitch,sports_centre,track" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Motorsport -->
+ </group> <!-- Sports -->
+ <group name="Man Made" icon="presets/works.png">
+ <group name="Man Made" icon="presets/works.png">
+ <item name="Building" icon="styles/standard/misc/landmark/building.png" type="node,closedway,relation">
+ <key key="building" value="yes" />
+ </item>
+ <item name="Tower" icon="presets/tower.png" type="node,closedway">
+ <label text="Edit Tower" />
+ <key key="man_made" value="tower" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="tower:type" text="Tower type" values="communication,observation" />
+ <optional>
+ <text key="height" text="Height (meters)" delete_if_empty="true" />
+ <text key="operator" text="Operator" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Flagpole" icon="presets/flag.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/flagpole" />
+ <key key="man_made" value="flagpole" />
+ </item>
+ <separator/>
+ <item name="Works" icon="presets/works.png" type="node,closedway">
+ <label text="Edit Works" />
+ <key key="man_made" value="works" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Chimney" icon="presets/chimney.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Chimney" />
+ <label text="Edit Chimney" />
+ <space />
+ <key key="man_made" value="chimney" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="height" text="Height (meters)" default="" delete_if_empty="true" />
+ </item>
+ <item name="Windmill" icon="presets/windmill.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=windmill" />
+ <label text="Edit Windmill" />
+ <key key="man_made" value="windmill" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Gasometer" icon="presets/gasometer.png" type="node,closedway">
+ <label text="Edit Gasometer" />
+ <key key="man_made" value="gasometer" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Pipeline" icon="presets/path.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=pipeline"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=pipeline"/>
+ <label text="Edit Pipeline" />
+ <key key="man_made" value="pipeline" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="type" text="Type" values="water,gas,heat,oil,sewage" default="" delete_if_empty="true" />
+ <combo key="location" text="Location" values="underground,underwater,overground" values_context="pipeline" default="" delete_if_empty="true" />
+ </item>
+ <item name="Crane" icon="presets/crane.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=crane" />
+ <label text="Edit Crane" />
+ <key key="man_made" value="crane" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Mineshaft" icon="presets/mineshaft.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made%3Dmineshaft"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made%3Dmineshaft" />
+ <label text="Edit Mineshaft" />
+ <key key="man_made" value="mineshaft" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="mineshaft_type" text="Function" values="winding,air" default="" delete_if_empty="true" />
+ <text key="depth" text="Depth in meters" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="resource" text="Resource" values="aggregate,bauxite,coal,copper,dimension_stone,gold,ilmenite,iron_ore,lead,limestone,nickel,rutile,salt,silver,tin,zinc,zircon" default="" delete_if_empty="true" />
+ <combo key="headframe" text="Visible Headframe" values="yes,no" default="" delete_if_empty="true" />
+ <check key="disused" text="Disused" default="off" delete_if_empty="true" />
+ </item>
+ <item name="Adit" icon="presets/adit.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made%3Dadit" />
+ <label text="Edit Adit" />
+ <key key="man_made" value="adit" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="length" text="Length in meters" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="resource" text="Resource" values="aggregate,bauxite,coal,copper,dimension_stone,gold,ilmenite,iron_ore,lead,limestone,nickel,rutile,salt,silver,tin,zinc,zircon" default="" delete_if_empty="true" />
+ <check key="disused" text="Disused" default="off" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Water Tower" icon="presets/water_tower.png" type="node,closedway">
+ <label text="Edit Water Tower" />
+ <key key="man_made" value="water_tower" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Water Works" icon="presets/water_works.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made%3Dwater_works" />
+ <label text="Edit Water Works" />
+ <space />
+ <key key="man_made" value="water_works" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ </item>
+ <item name="Wastewater Plant" icon="presets/wastewater_plant.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=wastewater_plant"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:man_made=wastewater_plant"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:man_made=wastewater_plant" />
+ <label text="Edit Wastewater Plant" />
+ <key key="man_made" value="wastewater_plant" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Watermill" icon="styles/standard/misc/landmark/watermill.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made%3Dwatermill" />
+ <label text="Edit Watermill"/>
+ <space />
+ <key key="man_made" value="watermill" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Fountain" icon="presets/spring.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=fountain"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:amenity=fountain" />
+ <label text="Edit Fountain" />
+ <key key="amenity" value="fountain" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Water Well" icon="presets/water_well.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made%3Dwater_well" />
+ <label text="Edit Water Well" />
+ <key key="man_made" value="water_well" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Lighthouse" icon="styles/standard/misc/landmark/lighthouse.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=lighthouse" />
+ <label text="Edit Lighthouse" />
+ <key key="man_made" value="lighthouse" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Beacon" icon="styles/standard/misc/landmark/beacon.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=beacon" />
+ <label text="Edit Beacon" />
+ <key key="man_made" value="beacon" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Street Lamp" icon="styles/standard/misc/streetlamp.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:highway%3Dstreet_lamp" />
+ <label text="Edit Street Lamp" />
+ <space />
+ <key key="highway" value="street_lamp" />
+ <combo key="opening_hours" text="Operation times" values="Mo-Fr 22:00-05:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Measurement Station" icon="presets/measurement_station.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/measurement_station" />
+ <label text="Edit Measurement Station" />
+ <space />
+ <key key="man_made" value="measurement_station" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="measurement" text="Measurement" values="particulate_matter,seismic,water_level,weather" default="" delete_if_empty="true" />
+ <combo key="recording" text="Recording" values="manually,automated,remote,no" default="" delete_if_empty="true" />
+ <combo key="display" text="Display" values="analog,digital,no" default="" delete_if_empty="true" />
+ </item>
+ <item name="Survey Point" icon="presets/survey_point.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=survey_point" />
+ <label text="Edit Survey Point" />
+ <key key="man_made" value="survey_point" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Surveillance" icon="presets/surveillance.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:man_made=surveillance" />
+ <label text="Edit Surveillance Camera" />
+ <key key="man_made" value="surveillance" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="surveillance" text="Type" values="indoor,outdoor,public" default="" />
+ </item>
+ </group> <!-- Man Made -->
+ <group name="Power" icon="presets/power.png">
+ <item name="Power Generator" icon="presets/power.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:power=generator"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=generator"
+ fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:power=generator" />
+ <label text="Edit Power Generator" />
+ <key key="power" value="generator" />
+ <combo key="power_source" text="Type" values="wind,hydro,fossil,nuclear,coal,photovoltaic,gas" default="" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Power Station" icon="presets/power.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:power=line"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=line" />
+ <label text="Edit Power Station" />
+ <key key="power" value="station" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ </item>
+ <item name="Power Sub Station" icon="presets/power.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:power=sub_station"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=sub_station" />
+ <label text="Edit Power Sub Station" />
+ <key key="power" value="sub_station" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="ref" text="Line reference" default="" delete_if_empty="true" />
+ </item>
+ <item name="Cable Distribution Cabinet" icon="presets/power.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:power%3Dcable_distribution_cabinet"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power%3Dcable_distribution_cabinet" />
+ <label text="Edit Cable Distribution Cabinet" />
+ <key key="power" value="cable_distribution_cabinet" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Power Tower" icon="presets/power_tower.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:power=tower"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=tower"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:power=tower"
+ fr.href="http://wiki.openstreetmap.org/wiki/FR:Tag:power=tower" />
+ <label text="Edit Power Tower" />
+ <key key="power" value="tower" />
+ <text key="ref" text="Tower reference" default="" delete_if_empty="true" />
+ </item>
+ <item name="Pole" icon="styles/standard/misc/landmark/power/pole.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:power%3Dpole"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power%3Dpole" />
+ <label text="Edit Power Pole" />
+ <key key="power" value="pole" />
+ <text key="ref" text="Pole reference" default="" delete_if_empty="true" />
+ </item>
+ <item name="Power Line" icon="presets/power.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:power=line"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:power=line" />
+ <label text="Edit Power Line" />
+ <combo key="power" text="Line type" values_context="Power Line" values="line,minor_line" default="line" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="ref" text="Line reference" default="" delete_if_empty="true" />
+ <!-- TODO: voltage values used are a mixture of power lines and railways - needs cleanup -->
+ <combo key="voltage" text="Voltage" values="3000,10000,15000,20000,25000,110000,220000,380000" default="" delete_if_empty="true" />
+ <text key="cables" text="Amount of Cables" default="" delete_if_empty="true" />
+ <combo key="wires" text="Number of wires (better: conductors) per power cable" values="single,double,triple,quad" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Power -->
+ <group name="Historic Places" icon="presets/State_Tourist.png">
+ <item name="Castle" icon="presets/State_Tourist.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=castle"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=castle" />
+ <label text="Edit Castle" />
+ <key key="historic" value="castle" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Ruins" icon="presets/ruins.png" type="node,closedway">
+ <label text="Edit Ruins" />
+ <key key="historic" value="ruins" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Archaeological Site" icon="styles/standard/sightseeing/archaeological.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=archaeological_site"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:historic=archaeological_site" />
+ <label text="Edit Archaeological Site" />
+ <key key="historic" value="archaeological_site" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Battlefield" icon="presets/battlefield.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=battlefield" />
+ <label text="Edit Battlefield" />
+ <key key="historic" value="battlefield" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Palaeontological Site" icon="presets/palaeontological_site.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:geological" />
+ <label text="Edit Palaeontological Site" />
+ <key key="geological" value="palaeontological_site" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Monument" icon="presets/monument.png" type="node,closedway">
+ <label text="Edit Monument" />
+ <key key="historic" value="monument" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Memorial" icon="presets/memorial.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:historic=memorial" />
+ <label text="Edit Memorial" />
+ <key key="historic" value="memorial" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Wayside Cross" icon="presets/wayside_cross.png" type="node,closedway">
+ <label text="Edit Wayside Cross" />
+ <key key="historic" value="wayside_cross" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Wayside Shrine" icon="presets/wayside_shrine.png" type="node,closedway">
+ <label text="Edit Wayside Shrine" />
+ <key key="historic" value="wayside_shrine" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Boundary Stone" icon="styles/standard/historic/boundary_stone.png" type="node,closedway">
+ <label text="Edit Boundary Stone" />
+ <key key="historic" value="boundary_stone" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Historic Places -->
+ </group> <!-- Structures -->
+ <group name="Shops" icon="styles/standard/shop/mall.png">
+ <group name="Food" icon="styles/standard/shop/supermarket.png">
+ <item name="Supermarket" icon="styles/standard/shop/supermarket.png" type="node,closedway">
+ <label text="Edit Supermarket" />
+ <key key="shop" value="supermarket" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Convenience Store" icon="presets/convenience.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=convenience" />
+ <label text="Edit Convenience Store" />
+ <key key="shop" value="convenience" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Kiosk" icon="presets/kiosk.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=kiosk" />
+ <label text="Edit Kiosk" />
+ <key key="shop" value="kiosk" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Baker" icon="presets/baker.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=bakery" />
+ <label text="Edit Baker" />
+ <key key="shop" value="bakery" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Butcher" icon="presets/cow.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=butcher" />
+ <label text="Edit Butcher" />
+ <key key="shop" value="butcher" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Seafood" icon="presets/seafood.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dseafood"/>
+ <label text="Edit Seafood" />
+ <space />
+ <key key="shop" value="seafood" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Deli (Fine Food)" icon="presets/deli.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Ddeli"/>
+ <label text="Edit Deli (Fine Food)" />
+ <space />
+ <key key="shop" value="deli" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Confectionery" icon="presets/confectionery.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dconfectionery" />
+ <label text="Edit Confectionery" />
+ <key key="shop" value="confectionery" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Marketplace" icon="styles/standard/place/marketplace.png" type="node,way,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity%3Dmarketplace" />
+ <label text="Edit Marketplace" />
+ <space />
+ <key key="amenity" value="marketplace" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Greengrocer" icon="presets/greengrocer.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dgreengrocer"/>
+ <label text="Edit Greengrocer" />
+ <space />
+ <key key="shop" value="greengrocer" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Organic" icon="presets/fruits.png" type="node,closedway">
+ <label text="Edit Organic Shop" />
+ <key key="shop" value="organic" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Alcohol" icon="styles/standard/shop/beverages.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=alcohol" />
+ <label text="Edit Alcohol Shop" />
+ <key key="shop" value="alcohol" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Beverages" icon="styles/standard/shop/beverages.png" type="node,closedway">
+ <label text="Edit Beverages Shop" />
+ <key key="shop" value="beverages" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Food -->
+ <group name="Clothes" icon="styles/standard/shop/clothes.png">
+ <item name="Clothes" icon="styles/standard/shop/clothes.png" type="node,closedway">
+ <label text="Edit Clothes Shop" />
+ <key key="shop" value="clothes" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Boutique" icon="presets/boutique.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dboutique"/>
+ <label text="Edit Boutique" />
+ <space />
+ <key key="shop" value="boutique" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Shoes" icon="styles/standard/shop/shoes.png" type="node,closedway">
+ <label text="Edit Shoe Shop" />
+ <key key="shop" value="shoes" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Outdoor" icon="presets/tent.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=outdoor" />
+ <label text="Edit Outdoor Shop" />
+ <key key="shop" value="outdoor" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Sports" icon="presets/rowing.png" type="node,closedway">
+ <label text="Edit Sports Shop" />
+ <key key="shop" value="sports" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Dry Cleaning" icon="presets/laundry.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=dry_cleaning" />
+ <label text="Edit Dry Cleaning" />
+ <key key="shop" value="dry_cleaning" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Laundry" icon="presets/laundry.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/Laundry" />
+ <label text="Edit Laundry" />
+ <key key="shop" value="laundry" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Tailor" icon="styles/standard/shop/tailor.png" type="node,closedway">
+ <label text="Edit Tailor" />
+ <key key="shop" value="tailor" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Fabric" icon="presets/fabric.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dfabric"/>
+ <label text="Edit Fabric" />
+ <space />
+ <key key="shop" value="fabric" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Clothes -->
+ <group name="Electronic" icon="styles/standard/shop/electronics.png">
+ <item name="Computer" icon="styles/standard/shop/computer.png" type="node,closedway">
+ <label text="Edit Computer Shop" />
+ <key key="shop" value="computer" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Electronics" icon="styles/standard/shop/electronics.png" type="node,closedway">
+ <label text="Edit Electronics Shop" />
+ <key key="shop" value="electronics" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Mobile Phone" icon="presets/mobile_phone.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dmobile_phone"/>
+ <label text="Edit Mobile Phone" />
+ <space />
+ <key key="shop" value="mobile_phone" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Vacuum Cleaner" icon="presets/vacuum_cleaner.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dvacuum_cleaner"/>
+ <label text="Edit Vacuum Cleaner" />
+ <space />
+ <key key="shop" value="vacuum_cleaner" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Hifi" icon="styles/standard/shop/hifi.png" type="node,closedway">
+ <label text="Edit Hifi Shop" />
+ <key key="shop" value="hifi" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Video" icon="styles/standard/shop/video.png" type="node,closedway">
+ <label text="Edit Video Shop" />
+ <key key="shop" value="video" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Electronic -->
+ <group name="Cash" icon="presets/dollar.png">
+ <item name="Bank" icon="styles/standard/money/bank.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bank" />
+ <label text="Edit Bank" />
+ <key key="amenity" value="bank" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ <check key="atm" text="Automated Teller Machine" default="on" delete_if_empty="true" />
+ </item>
+ <item name="Money Exchange" icon="styles/standard/money/exchange.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=bureau_de_change" />
+ <label text="Edit Money Exchange" />
+ <key key="amenity" value="bureau_de_change" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Automated Teller Machine" icon="styles/standard/money/atm.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=atm" />
+ <label text="Edit Automated Teller Machine" />
+ <key key="amenity" value="atm" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Cash -->
+ <group name="Other" icon="styles/standard/shop/mall.png">
+ <item name="Department Store" icon="styles/standard/shop/mall.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Ddepartment_store"/>
+ <label text="Edit Department Store" />
+ <space />
+ <key key="shop" value="department_store" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Mall" icon="styles/standard/shop/mall.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dmall"/>
+ <label text="Edit Mall" />
+ <space />
+ <key key="shop" value="mall" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Chemist" icon="styles/standard/shop/chemist.png" type="node,closedway">
+ <label text="Edit Chemist" />
+ <key key="shop" value="chemist" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Hairdresser" icon="styles/standard/shop/hairdresser.png" type="node,closedway">
+ <label text="Edit Hairdresser" />
+ <key key="shop" value="hairdresser" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Optician" icon="styles/standard/shop/optician.png" type="node,closedway">
+ <label text="Edit Optician" />
+ <key key="shop" value="optician" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Jewelry" icon="styles/standard/shop/jewelry.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Djewelry"/>
+ <label text="Edit Jewelry" />
+ <space />
+ <key key="shop" value="jewelry" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Erotic" icon="presets/erotic.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Derotic"/>
+ <label text="Edit Erotic" />
+ <space />
+ <key key="shop" value="erotic" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Florist" icon="styles/standard/shop/florist.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=florist" />
+ <label text="Edit Florist" />
+ <key key="shop" value="florist" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Garden Centre" icon="styles/standard/shop/garden_centre.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=garden_centre" />
+ <label text="Edit Garden Centre" />
+ <key key="shop" value="garden_centre" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Do-it-yourself-store" icon="presets/diy_store.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=doityourself" />
+ <label text="Edit Do-it-yourself-store" />
+ <key key="shop" value="doityourself" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Hardware" icon="presets/hardware.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop=hardware" />
+ <label text="Edit Hardware Store" />
+ <key key="shop" value="hardware" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Paint" icon="presets/paint.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dpaint"/>
+ <label text="Edit Paint" />
+ <space />
+ <key key="shop" value="paint" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Furniture" icon="styles/standard/shop/furniture.png" type="node,closedway">
+ <label text="Edit Furniture Shop" />
+ <key key="shop" value="furniture" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Kitchen" icon="presets/kitchen.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dkitchen"/>
+ <label text="Edit Kitchen" />
+ <space />
+ <key key="shop" value="kitchen" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Curtain" icon="presets/curtain.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dcurtain"/>
+ <label text="Edit Curtain" />
+ <space />
+ <key key="shop" value="curtain" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Frame" icon="presets/frame.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dframe"/>
+ <label text="Edit Frames" />
+ <space />
+ <key key="shop" value="frame" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Stationery" icon="presets/stationery.png" type="node,closedway">
+ <label text="Edit Stationery Shop" />
+ <key key="shop" value="stationery" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Copyshop" icon="presets/copyshop.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dcopyshop"/>
+ <label text="Edit Copyshop" />
+ <space />
+ <key key="shop" value="copyshop" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Book Store" icon="presets/book.png" type="node,closedway">
+ <label text="Edit Book Store" />
+ <key key="shop" value="books" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Travel Agency" icon="presets/travel.png" type="node,closedway">
+ <label text="Edit Travel Agency" />
+ <key key="shop" value="travel_agency" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Musical Instrument" icon="presets/musical_instrument.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dmusical_instrument"/>
+ <label text="Edit Musical Instruments" />
+ <space />
+ <key key="shop" value="musical_instrument" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Toys" icon="styles/standard/shop/toys.png" type="node,closedway">
+ <label text="Edit Toy Shop" />
+ <key key="shop" value="toys" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00;Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ <item name="Variety Store" icon="presets/variety_store.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:shop%3Dvariety_store"/>
+ <label text="Edit Variety Store" />
+ <space />
+ <key key="shop" value="variety_store" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="opening_hours" text="Opening Hours" values="24/7,Mo-Fr 08:30-20:00,Tu-Su 08:00-15:00; Sa 08:00-12:00" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Other -->
+ <item name="Vending machine" icon="presets/vending_machine.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=vending_machine" />
+ <label text="Edit Vending machine" />
+ <key key="amenity" value="vending_machine" />
+ <multiselect key="vending" text="Vending products" values="public_transport_tickets;public_transport_plans;parking_tickets;food;drinks;sweets;cigarettes;photos;animal_food;news_papers;toys;stamps;SIM-cards;telephone_vouchers;vouchers;bicycle_tube;condoms;tampons;excrement_bags" default="" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <text key="ref" text="Reference number" default="" delete_if_empty="true" />
+ <text key="note" text="Note" default="" delete_if_empty="true" />
+ <check key="payment:coins" text="Coins" default="off" delete_if_empty="true" />
+ <check key="payment:notes" text="Notes" default="off" delete_if_empty="true" />
+ <check key="payment:electronic_purses" text="Electronic purses and Charge cards" default="off" delete_if_empty="true" />
+ <check key="payment:debit_cards" text="Debit cards" default="off" delete_if_empty="true" />
+ <check key="payment:credit_cards" text="Credit cards" default="off" delete_if_empty="true" />
+ <check key="payment:account_cards" text="Account or loyalty cards" default="off" delete_if_empty="true" />
+ </item>
+ </group> <!-- Shops -->
+ <group name="Geography" icon="presets/peak.png">
+ <group name="Boundaries" icon="presets/boundaries.png">
+ <item name="National" icon="presets/boundaries.png" type="closedway,relation">
+ <label text="Edit National Boundary" />
+ <space />
+ <key key="boundary" value="national" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Administrative" icon="presets/boundaries.png" type="closedway,relation">
+ <label text="Edit Administrative Boundary" />
+ <space />
+ <key key="boundary" value="administrative" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Civil" icon="presets/boundaries.png" type="closedway,relation">
+ <label text="Edit Civil Boundary" />
+ <space />
+ <key key="boundary" value="civil" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Political" icon="presets/boundaries.png" type="closedway,relation">
+ <label text="Edit Political Boundary" />
+ <space />
+ <key key="boundary" value="political" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="National park" icon="presets/boundaries.png" type="closedway,relation">
+ <label text="Edit National Park Boundary" />
+ <space />
+ <key key="boundary" value="national_park" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Boundaries -->
+ <group name="Places" icon="presets/places.png">
+ <item name="Continent" icon="presets/places.png" type="node,closedway">
+ <label text="Edit Continent" />
+ <space />
+ <key key="place" value="continent" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Country" icon="presets/places.png" type="node,closedway">
+ <label text="Edit Country" />
+ <space />
+ <key key="place" value="country" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="State" icon="presets/places.png" type="node,closedway">
+ <label text="Edit State" />
+ <space />
+ <key key="place" value="state" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Region" icon="presets/places.png" type="node,closedway">
+ <label text="Edit Region" />
+ <space />
+ <key key="place" value="region" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="County" icon="presets/places.png" type="node,closedway">
+ <label text="Edit County" />
+ <space />
+ <key key="place" value="county" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="City" icon="presets/places.png" type="node,closedway">
+ <label text="Edit City" />
+ <space />
+ <key key="place" value="city" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Town" icon="presets/places.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:place=town" />
+ <label text="Edit Town" />
+ <space />
+ <key key="place" value="town" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Suburb" icon="presets/places.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:place=suburb" />
+ <label text="Edit Suburb" />
+ <space />
+ <key key="place" value="suburb" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Village" icon="presets/places.png" type="node,closedway">
+ <label text="Edit Village" />
+ <space />
+ <key key="place" value="village" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Hamlet" icon="presets/places.png" type="node,closedway">
+ <label text="Edit Hamlet" />
+ <space />
+ <key key="place" value="hamlet" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Locality" icon="presets/locality.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:place=locality" />
+ <label text="Edit Locality" />
+ <space />
+ <key key="place" value="locality" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Places -->
+ <group name="Geography" icon="presets/peak.png">
+ <item name="Peak" icon="presets/peak.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=peak" />
+ <label text="Edit Peak" />
+ <key key="natural" value="peak" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="ele" text="Elevation" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Glacier" icon="presets/glacier.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=glacier" />
+ <label text="Edit Glacier" />
+ <key key="natural" value="glacier" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="ele" text="Elevation" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Volcano" icon="presets/volcano.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=volcano" />
+ <label text="Edit Volcano" />
+ <key key="natural" value="volcano" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="ele" text="Elevation" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Cave Entrance" icon="presets/cave_entrance.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=cave_entrance" />
+ <label text="Edit Cave Entrance" />
+ <key key="natural" value="cave_entrance" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Island" icon="presets/island.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:place=island" />
+ <label text="Edit Island" />
+ <space />
+ <key key="place" value="island" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ <item name="Islet" icon="presets/islet.png" type="node,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:place=islet" />
+ <label text="Edit Islet" />
+ <space />
+ <key key="place" value="islet" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Geography -->
+ <group name="Nature" icon="presets/tree.png">
+ <item name="Tree" icon="presets/tree.png" type="node">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=tree"
+ fi.href="http://wiki.openstreetmap.org/wiki/Fi:Tag:natural=tree" />
+ <label text="Edit Tree" />
+ <key key="natural" value="tree" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="type" text="Type" default="" delete_if_empty="true" />
+ <text key="height" text="Height" default="" delete_if_empty="true" />
+ <text key="name:botanical" text="Botanical Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Wood" icon="presets/landuse.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=wood"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:natural=wood" />
+ <label text="Edit Wood" />
+ <key key="natural" value="wood" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="wood" text="Type" values="coniferous,deciduous,mixed" default="" delete_if_empty="true" />
+ </item>
+ <item name="Forest" icon="presets/landuse.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=forest"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=forest" />
+ <label text="Edit Forest Landuse" />
+ <space />
+ <key key="landuse" value="forest" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="wood" text="Type" values="coniferous,deciduous,mixed" default="" delete_if_empty="true" />
+ </item>
+ <item name="Nature Reserve" icon="styles/standard/leisure/nature_reserve.png" type="node,closedway,relation">
+ <label text="Edit Nature Reserve" />
+ <key key="leisure" value="nature_reserve" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Scree" icon="presets/empty.png" type="node,closedway,relation">
+ <label text="Edit Scree" />
+ <key key="natural" value="scree" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Fell" icon="presets/empty.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=fell" />
+ <label text="Edit Fell" />
+ <key key="natural" value="fell" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Scrub" icon="presets/empty.png" type="node,closedway,relation">
+ <label text="Edit Scrub" />
+ <key key="natural" value="scrub" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Heath" icon="presets/empty.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:natural=heath" />
+ <label text="Edit Heath" />
+ <key key="natural" value="heath" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Nature -->
+ <group name="Land use" icon="presets/landuse.png">
+ <item name="Farmyard" icon="presets/landuse.png" type="closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=farmyard"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse=farmyard" />
+ <label text="Edit Farmyard Landuse" />
+ <space />
+ <key key="landuse" value="farmyard" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Farmland" icon="presets/landuse.png" type="closedway,relation">
+ <label text="Edit Farmland Landuse" />
+ <space />
+ <key key="landuse" value="farmland" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Meadow" icon="presets/landuse.png" type="node,closedway,relation">
+ <label text="Edit Meadow Landuse" />
+ <space />
+ <key key="landuse" value="meadow" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Vineyard" icon="presets/fruits.png" type="node,closedway,relation">
+ <label text="Edit Vineyard Landuse" />
+ <space />
+ <key key="landuse" value="vineyard" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Greenhouse Horticulture" icon="presets/greenhouse_horticulture.png" type="closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse%3Dgreenhouse_horticulture" />
+ <label text="Edit Greenhouse Horticulture" />
+ <space />
+ <key key="landuse" value="greenhouse_horticulture" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ </item>
+ <item name="Allotments" icon="presets/landuse.png" type="node,closedway,relation">
+ <label text="Edit Allotments Landuse" />
+ <space />
+ <key key="landuse" value="allotments" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Garden" icon="presets/empty.png" type="node,closedway,relation">
+ <label text="Edit Garden" />
+ <key key="leisure" value="garden" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Grass" icon="presets/landuse.png" type="node,closedway,relation">
+ <label text="Edit Grass Landuse" />
+ <space />
+ <key key="landuse" value="grass" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Village Green" icon="presets/landuse.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=village_green" />
+ <label text="Edit Village Green Landuse" />
+ <space />
+ <key key="landuse" value="village_green" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Common" icon="presets/empty.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:leisure=common" />
+ <label text="Edit Common" />
+ <key key="leisure" value="common" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Park" icon="presets/empty.png" type="node,closedway,relation">
+ <label text="Edit Park" />
+ <key key="leisure" value="park" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Recreation Ground" icon="presets/landuse.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=recreation_ground" />
+ <label text="Edit Recreation Ground Landuse" />
+ <space />
+ <key key="landuse" value="recreation_ground" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Residential area" icon="styles/standard/misc/landmark/building.png" type="closedway,relation">
+ <label text="Edit Residential Landuse" />
+ <space />
+ <key key="landuse" value="residential" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Graveyard" icon="presets/graveyard.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:amenity=grave_yard" />
+ <label text="Edit Graveyard" />
+ <key key="amenity" value="grave_yard" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="religion" text="Religion" values="bahai,buddhist,christian,hindu,jain,jewish,muslim,sikh,spiritualist,taoist,unitarian,zoroastrian" default="" delete_if_empty="true" />
+ <combo key="denomination" text="Denomination" values="anglican,baptist,catholic,evangelical,jehovahs_witness,lutheran,methodist,mormon,orthodox,pentecostal,presbyterian,protestant,quaker,shia,sunni" default="" delete_if_empty="true" />
+ </item>
+ <item name="Cemetery" icon="presets/cemetery.png" type="node,closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=cemetery" />
+ <label text="Edit Cemetery Landuse" />
+ <space />
+ <key key="landuse" value="cemetery" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <combo key="religion" text="Religion" values="bahai,buddhist,christian,hindu,jain,jewish,muslim,sikh,spiritualist,taoist,unitarian,zoroastrian" default="" delete_if_empty="true" />
+ <combo key="denomination" text="Denomination" values="anglican,baptist,catholic,evangelical,jehovahs_witness,lutheran,methodist,mormon,orthodox,pentecostal,presbyterian,protestant,quaker,shia,sunni" default="" delete_if_empty="true" />
+ </item>
+ <item name="Retail" icon="styles/standard/shop/supermarket.png" type="node,closedway,relation">
+ <label text="Edit Retail Landuse" />
+ <space />
+ <key key="landuse" value="retail" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Commercial" icon="presets/empty.png" type="node,closedway,relation">
+ <label text="Edit Commercial Landuse" />
+ <space />
+ <key key="landuse" value="commercial" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Industrial" icon="presets/works.png" type="node,closedway,relation">
+ <label text="Edit Industrial Landuse" />
+ <space />
+ <key key="landuse" value="industrial" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Garages" icon="presets/garages.png" type="closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/DE:Tag:landuse%3Dgarages" />
+ <label text="Edit Garages" />
+ <space />
+ <key key="landuse" value="garages" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ </item>
+ <item name="Railway land" icon="presets/rail_light.png" type="closedway,relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Tag:landuse=railway" />
+ <label text="Edit Railway Landuse" />
+ <space />
+ <key key="landuse" value="railway" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Military" icon="presets/military.png" type="node,closedway,relation">
+ <label text="Edit Military Landuse" />
+ <space />
+ <key key="landuse" value="military" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <separator/>
+ <item name="Construction area" icon="presets/construction.png" type="node,closedway,relation">
+ <label text="Edit Construction Landuse" />
+ <space />
+ <key key="landuse" value="construction" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Brownfield" icon="presets/landuse.png" type="node,closedway,relation">
+ <label text="Edit Brownfield Landuse" />
+ <space />
+ <key key="landuse" value="brownfield" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Greenfield" icon="presets/landuse.png" type="node,closedway,relation">
+ <label text="Edit Greenfield Landuse" />
+ <space />
+ <key key="landuse" value="greenfield" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Landfill" icon="presets/landuse.png" type="node,closedway,relation">
+ <label text="Edit Landfill Landuse" />
+ <space />
+ <key key="landuse" value="landfill" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ <item name="Quarry" icon="presets/mine.png" type="node,closedway,relation">
+ <label text="Edit Quarry Landuse" />
+ <space />
+ <key key="landuse" value="quarry" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Landuse -->
+ </group>
+ <group name="Annotation" icon="presets/addresses.png">
+ <item name="Addresses" icon="presets/addresses.png" type="node,way,closedway">
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/House_numbers/Karlsruhe_Schema"
+ de.href="http://wiki.openstreetmap.org/wiki/Proposed_features/De:Hausnummern" />
+ <label text="Edit Address Information" />
+ <space />
+ <text key="addr:housenumber" text="House number" default="" delete_if_empty="true" />
+ <optional>
+ <text key="addr:housename" text="House name" default="" delete_if_empty="true" />
+ <text key="addr:street" text="Street name" use_last_as_default="true" delete_if_empty="true" />
+ <text key="addr:city" text="City name" use_last_as_default="true" delete_if_empty="true" />
+ <text key="addr:postcode" text="Post code" use_last_as_default="true" delete_if_empty="true" />
+ <combo key="addr:country" text="Country code" values="AT,CH,DE,FR,GB,IT,US" use_last_as_default="true" delete_if_empty="true" />
+ </optional>
+ </item>
+ <item name="Address Interpolation" icon="presets/interpolation.png" type="way">
+ <link href="http://wiki.openstreetmap.org/wiki/Proposed_features/House_numbers/Karlsruhe_Schema"
+ de.href="http://wiki.openstreetmap.org/wiki/Proposed_features/De:Hausnummern" />
+ <label text="Edit Address Interpolation" />
+ <space />
+ <combo key="addr:interpolation" text="Numbering scheme" values="odd,even,all,alphabetic" default="odd" />
+ </item>
+ <item name="Contact" icon="presets/contact.png" type="node,way,closedway,relation">
+ <label text="Edit Contact information" />
+ <space />
+ <text key="phone" text="Phone Number" default="" delete_if_empty="true" />
+ <text key="fax" text="Fax Number" default="" delete_if_empty="true" />
+ <space />
+ <text key="website" text="Website" default="" delete_if_empty="true" />
+ <text key="email" text="Email Address" default="" delete_if_empty="true" />
+ <space />
+ <text key="wikipedia" text="Wikipedia" default="" delete_if_empty="true" />
+ <text key="image" text="Image" default="" delete_if_empty="true" />
+ </item>
+ </group> <!-- Annotation -->
+ <group name="Relations" icon="presets/relations.png">
+ <item name="Multipolygon" icon="presets/multipolygon.png" type="relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Relation:multipolygon"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:multipolygon"
+ fr.href="http://wiki.openstreetmap.org/wiki/FR:Relation:multipolygon" />
+ <label text="Edit Multipolygon" />
+ <key key="type" value="multipolygon" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </optional>
+ <roles>
+ <role key="outer" text="outer segment" requisite="required" type="way" />
+ <role key="inner" text="inner segment" requisite="optional" type="way" />
+ </roles>
+ </item>
+ <item name="Boundary" icon="presets/boundaries.png" type="relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Relation:boundary"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:boundary"
+ es.href="http://wiki.openstreetmap.org/wiki/ES:Relation:boundary"
+ fr.href="http://wiki.openstreetmap.org/wiki/FR:Relation:boundary" />
+ <label text="Edit Boundary" />
+ <key key="type" value="boundary" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <optional>
+ <combo key="boundary" text="Boundary type" values="administrative,national,civil,political" default="" delete_if_empty="true" />
+ <combo key="admin_level" text="Administrative level" values="1,2,3,4,5,6,7,8,9,10" default="" delete_if_empty="true" />
+ </optional>
+ <roles>
+ <role key="outer" text="outer segment" requisite="required" type="way" />
+ <role key="inner" text="inner segment" requisite="optional" type="way" />
+ <role key="subarea" text="Sub area" requisite="optional" type="relation" />
+ <role key="admin_centre" text="Administration centre" requisite="optional" type="node" />
+ </roles>
+ </item>
+ <item name="Turn restriction" icon="styles/standard/vehicle/restriction/turn_restrictions/no_u_turn.png" type="relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Relation:restriction"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:restriction"/>
+ <label text="Edit Turn Restriction" />
+ <key key="type" value="restriction" />
+ <combo key="restriction" text="Restriction" values="no_left_turn,no_right_turn,no_straight_on,no_u_turn,only_right_turn,only_left_turn,only_straight_on" default="" delete_if_empty="true" />
+ <optional>
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ </optional>
+ <roles>
+ <role key="from" text="from way" requisite="required" count="1" type="way" />
+ <role key="via" text="via node or way" requisite="required" count="1" type="way,node" />
+ <role key="to" text="to way" requisite="required" count="1" type="way" />
+ </roles>
+ </item>
+ <item name="Route" icon="presets/path.png" type="relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Relation:route"
+ de.href="http://wiki.openstreetmap.org/wiki/DE:Relation:route"/>
+ <label text="Edit Route" />
+ <key key="type" value="route" />
+ <combo key="route" text="Route type" values="bicycle,bus,road,ferry,ski,foot,hiking,tram,detour,railway,subway" default="" delete_if_empty="true" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <text key="ref" text="Reference" default="" delete_if_empty="true" />
+ <text key="symbol" text="Symbol description" default="" delete_if_empty="true" />
+ <text key="description" text="Description" default="" delete_if_empty="true" />
+ <optional>
+ <text key="network" text="Network" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ <combo key="state" text="Route state" values="proposed,alternate,temporary,connection" default="" delete_if_empty="true" />
+ <text key="color" text="Color (hex)" default="" delete_if_empty="true" />
+ </optional>
+ <roles>
+ <role key="" text="route segment" requisite="optional" type="way" />
+ <role key="forward" text="forward segment" requisite="optional" type="way" />
+ <role key="backward" text="backward segment" requisite="optional" type="way" />
+ <role key="stop" text="halt point" requisite="optional" type="node" />
+ <role key="forward_stop" text="forward halt point" requisite="optional" type="node" />
+ <role key="backward_stop" text="backward halt point" requisite="optional" type="node" />
+ </roles>
+ </item>
+ <item name="Route network" icon="presets/path.png" type="relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Relations/Proposed/Network"/>
+ <label text="Edit route network" />
+ <key key="type" value="network" />
+ <text key="name" text="Name" default="" delete_if_empty="true" />
+ <optional>
+ <text key="network" text="Network" default="" delete_if_empty="true" />
+ <text key="operator" text="Operator" default="" delete_if_empty="true" />
+ </optional>
+ <roles>
+ <role key="" text="member" requisite="required" type="relation" />
+ </roles>
+ </item>
+ <item name="Associated street" icon="presets/addresses.png" type="relation">
+ <link href="http://wiki.openstreetmap.org/wiki/Relation:associatedStreet"/>
+ <label text="Edit associated street" />
+ <key key="type" value="associatedStreet" />
+ <text key="name" text="Street name" default="" delete_if_empty="true" />
+ <roles>
+ <role key="street" text="street" requisite="required" count="1" type="way" />
+ <role key="house" text="house" requisite="required" type="node,closedway" />
+ </roles>
+ </item>
+ </group> <!-- Relations -->
+</presets>
=== added directory '.pc/90-fix_version.patch'
=== added file '.pc/90-fix_version.patch/build.xml'
--- .pc/90-fix_version.patch/build.xml 1970-01-01 00:00:00 +0000
+++ .pc/90-fix_version.patch/build.xml 2011-08-22 12:04:26 +0000
@@ -0,0 +1,308 @@
+<!-- ** build.xml - main ant file for JOSM
+**
+** To build run
+** ant clean
+** ant dist
+** This will create 'josm-custom.jar' in directory 'dist'. See also
+** https://josm.openstreetmap.de/wiki/CreateBuild
+**
+**
+-->
+<project name="josm" default="dist" basedir="." xmlns:as="antlib:org.codehaus.mojo.animal_sniffer">
+ <property name="test.dir" value="test" />
+ <property name="src.dir" value="src" />
+ <property name="build.dir" value="build"/>
+ <!-- build parameter: compression level (ant -Dclevel=N)
+ N ranges from 0 (no compression) to 9 (maximum compression)
+ default: 9 -->
+ <condition property="clevel" value="${clevel}" else="9">
+ <isset property="clevel" />
+ </condition>
+
+ <!-- Java classpath addition (all jar files to compile tests with this) -->
+ <path id="classpath">
+ <fileset dir="/usr/share/java">
+ <include name="gettext-commons.jar"/>
+ <include name="metadata-extractor.jar"/>
+ </fileset>
+ </path>
+
+
+ <!--
+ ** Used by Eclipse ant builder for updating
+ ** the REVISION file used by JOSM
+ -->
+ <target name="create-revision-eclipse">
+ <property name="revision.dir" value="bin"/>
+ <antcall target="create-revision" />
+ </target>
+
+ <!--
+ ** Creates the REVISION file to be included in the distribution
+ -->
+ <target name="create-revision">
+ <property name="revision.dir" value="${build.dir}"/>
+ <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/>
+ <tstamp>
+ <format property="build.tstamp" pattern="yyyy-MM-dd HH:mm:ss"/>
+ </tstamp>
+
+ <property name="version.entry.commit.revision" value="UNKNOWN"/>
+ <mkdir dir="${revision.dir}" />
+ <echo file="${revision.dir}/REVISION">
+# automatically generated by JOSM build.xml - do not edit
+Revision: ${version.entry.commit.revision}
+Is-Local-Build: true
+Build-Date: ${build.tstamp}
+Debian-Release: ${debian.version}
+</echo>
+ </target>
+
+
+ <target name="dist" depends="compile,create-revision">
+ <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/>
+ <property name="version.entry.commit.revision" value="UNKNOWN"/>
+ <property name="version.entry.commit.date" value="UNKNOWN"/>
+ <echo>Revision ${version.entry.commit.revision}</echo>
+ <copy file="CONTRIBUTION" todir="build"/>
+ <copy file="README" todir="build"/>
+ <copy file="LICENSE" todir="build"/>
+
+ <ant target="dist" dir="i18n"/>
+
+ <!-- create josm-custom.jar -->
+ <jar destfile="dist/josm-custom.jar" basedir="build" level="${clevel}">
+ <!-- add attribute excludes="**/*BZip2*,**/*Bzip2*" to create a non-bzip2 supporting jar -->
+ <manifest>
+ <attribute name="Main-class" value="JOSM" />
+ <attribute name="Main-Version" value="${version.entry.commit.revision} SVN"/>
+ <attribute name="Main-Date" value="${version.entry.commit.date}"/>
+ <attribute name="Debian-Release" value="${debian.version}"/>
+ <attribute name="Class-Path" value="/usr/share/java/gettext-commons.jar /usr/share/java/metadata-extractor.jar /usr/share/java/signpost-core.jar"/>
+ </manifest>
+ <zipfileset dir="images" prefix="images" />
+ <zipfileset dir="data" prefix="data" />
+ <zipfileset dir="styles" prefix="styles" />
+ <zipfileset dir="src/org/openstreetmap/gui/jmapviewer/images" prefix="org/openstreetmap/gui/jmapviewer/images" />
+ </jar>
+ </target>
+
+ <target name="distmac" depends="dist">
+ <!-- modify MacOS X Info.plist file to hold the SVN version number -->
+ <copy file="macosx/JOSM.app/Contents/Info.plist" todir="build"/>
+ <replace file="build/Info.plist" token="@SVNVersion@" value="${version.entry.commit.revision}"/>
+ <!-- create ZIP file with MacOS X application bundle -->
+ <zip destfile="dist/josm-custom-macosx.zip" update="true">
+ <zipfileset dir="build" includes="CONTRIBUTION README LICENSE"/>
+ <zipfileset dir="macosx" includes="JOSM.app/Contents JOSM.app/Contents/MacOS JOSM.app/Contents/Resources JOSM.app/Contents/Resources/Java JOSM.app/Contents/PkgInfo JOSM.app/Contents/Resources/JOSM.icns"/>
+ <zipfileset dir="build" includes="Info.plist" prefix="JOSM.app/Contents"/>
+ <zipfileset dir="dist" includes="josm-custom.jar" prefix="JOSM.app/Contents/Resources/Java"/>
+ <zipfileset dir="macosx" includes="JOSM.app/Contents/MacOS/JOSM" filemode="755"/>
+ </zip>
+ </target>
+
+ <target name="compile" depends="init">
+ <javac srcdir="src" classpathref="classpath" destdir="build"
+ target="1.5" source="1.5" debug="on" encoding="UTF-8">
+ <compilerarg value="-Xlint:deprecation"/>
+ <compilerarg value="-Xlint:unchecked"/>
+ </javac>
+ <ant target="build" dir="i18n"/>
+ </target>
+
+ <target name="init">
+ <mkdir dir="build" />
+ <mkdir dir="dist" />
+ </target>
+
+ <target name="clean">
+ <delete dir="build" />
+ <delete dir="dist" />
+ <ant target="clean" dir="i18n"/>
+ </target>
+
+ <target name="javacc">
+ <exec executable="javacc">
+ <arg value="-debug_parser=false"/>
+ <arg value="-debug_lookahead=false"/>
+ <arg value="-debug_token_manager=false"/>
+ <arg value="-output_directory=${src.dir}/org/openstreetmap/josm/gui/mappaint/mapcss/parser"/>
+ <arg value="${src.dir}/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParser.jj"/>
+ </exec>
+ </target>
+
+ <path id="test.classpath">
+ <fileset dir="${test.dir}/lib">
+ <include name="**/*.jar"/>
+ </fileset>
+ <fileset dir="lib">
+ <include name="**/*.jar"/>
+ </fileset>
+ <pathelement path="dist/josm-custom.jar"/>
+ </path>
+
+ <target name="test-init">
+ <mkdir dir="${test.dir}/${build.dir}" />
+ <mkdir dir="${test.dir}/report" />
+ </target>
+
+ <target name="test-clean">
+ <delete dir="${test.dir}/${build.dir}"/>
+ <delete dir="${test.dir}/report"/>
+ </target>
+
+ <target name="test-compile" depends="test-init,dist">
+ <javac srcdir="${test.dir}/unit" classpathref="test.classpath" destdir="${test.dir}/${build.dir}"
+ target="1.5" source="1.5" debug="on" encoding="UTF-8">
+ <compilerarg value="-Xlint:deprecation"/>
+ <compilerarg value="-Xlint:unchecked"/>
+ </javac>
+ <javac srcdir="${test.dir}/functional" classpathref="test.classpath" destdir="${test.dir}/${build.dir}"
+ target="1.5" source="1.5" debug="on" encoding="UTF-8">
+ <compilerarg value="-Xlint:deprecation"/>
+ <compilerarg value="-Xlint:unchecked"/>
+ </javac>
+ </target>
+
+ <target name="test" depends="test-compile">
+ <junit printsummary="yes">
+ <sysproperty key="josm.home" value="${test.dir}/config/unit-josm.home"/>
+ <sysproperty key="java.awt.headless" value="true"/>
+ <classpath>
+ <path refid="test.classpath"/>
+ <pathelement path="${test.dir}/${build.dir}"/>
+ <pathelement path="${test.dir}/config"/>
+ </classpath>
+ <formatter type="plain"/>
+ <formatter type="xml"/>
+ <batchtest fork="yes" todir="${test.dir}/report">
+ <fileset dir="${test.dir}/unit" includes="**/*.java"/>
+ </batchtest>
+ </junit>
+ </target>
+
+ <target name="test-html" depends="test" description="Generate HTML test reports">
+ <!-- May require additional ant dependencies like ant-trax package -->
+ <junitreport todir="${test.dir}/report">
+ <fileset dir="${test.dir}/report">
+ <include name="TEST-*.xml"/>
+ </fileset>
+ <report todir="${test.dir}/report/html"/>
+ </junitreport>
+ </target>
+
+ <target name="dist-optimized" depends="dist">
+ <taskdef resource="proguard/ant/task.properties" classpath="tools/proguard.jar" />
+ <proguard>
+ -injars dist/josm-custom.jar
+ -outjars dist/josm-custom-optimized.jar
+
+ -libraryjars ${java.home}/lib/rt.jar
+ -libraryjars ${java.home}/lib/jce.jar
+
+ -dontoptimize
+ -dontobfuscate
+
+ -dontskipnonpubliclibraryclasses
+
+ -keepclasseswithmembers public class org.openstreetmap.josm.gui.MainApplication {
+ public static void main(java.lang.String[]);
+ }
+
+ -keep class JOSM
+ -keep class * extends org.openstreetmap.josm.io.FileImporter
+ -keep class * extends org.openstreetmap.josm.io.FileExporter
+ -keep class org.openstreetmap.josm.actions.search.SearchCompiler$Never
+
+ -keepclassmembers enum * {
+ public static **[] values();
+ public static ** valueOf(java.lang.String);
+ }
+
+ -keepclassmembers class * {
+ public protected *;
+ }
+ </proguard>
+ </target>
+
+ <target name="check-plugins" depends="dist-optimized">
+ <echo message="Check of plugins binary compatibility (needs ant 1.8)"/>
+
+ <local name="dir"/>
+ <local name="plugins"/>
+
+ <property name="dir" value="plugin-check"/>
+
+ <typedef uri="antlib:org.codehaus.mojo.animal_sniffer">
+ <classpath path="tools/animal-sniffer-ant-tasks-1.5.jar" />
+ </typedef>
+
+ <delete dir="${dir}"/>
+
+ <mkdir dir="${dir}"/>
+
+ <as:build-signatures destfile="${dir}/api.sig">
+ <path>
+ <fileset file="dist/josm-custom-optimized.jar" />
+ <fileset file="${java.home}/lib/rt.jar" />
+ <fileset file="${java.home}/lib/jce.jar" />
+ </path>
+ </as:build-signatures>
+
+ <!-- List of deprecated plugins -->
+ <loadfile property="deprecated-plugins" srcFile="src/org/openstreetmap/josm/plugins/PluginHandler.java">
+ <filterchain>
+ <linecontains>
+ <contains value="new DeprecatedPlugin("/>
+ </linecontains>
+ <tokenfilter>
+ <replaceregex pattern='.*new DeprecatedPlugin\("(.+?)".*' replace="\1|" flags="gi"/>
+ </tokenfilter>
+ <striplinebreaks/>
+ <tokenfilter>
+ <replaceregex pattern='\|$' replace="" flags="gi"/>
+ </tokenfilter>
+ </filterchain>
+ </loadfile>
+
+ <!-- Download plugins -->
+ <loadresource property="plugins">
+ <url url="http://josm.openstreetmap.de/plugin"/>
+ <filterchain>
+ <linecontainsregexp negate="true">
+ <regexp pattern="^\t.*"/>
+ </linecontainsregexp>
+ <linecontainsregexp negate="true">
+ <regexp pattern="${deprecated-plugins}"/>
+ </linecontainsregexp>
+ <tokenfilter>
+ <replaceregex pattern="^.*;" replace="" flags="gi"/>
+ </tokenfilter>
+ </filterchain>
+ </loadresource>
+
+ <copy todir="${dir}" flatten="true">
+ <resourcelist>
+ <string value="${plugins}"/>
+ </resourcelist>
+ </copy>
+
+ <!-- Check plugins -->
+ <as:check-signature signature="${dir}/api.sig">
+ <ignore classname="org.jgraph.*"/>
+ <ignore classname="com.touchgraph.*"/>
+ <ignore classname="com.sun.xml.fastinfoset.*"/>
+ <ignore classname="javax.jms.*"/>
+ <ignore classname="org.jvnet.staxex.*"/>
+ <ignore classname="javax.mail.*"/>
+ <ignore classname="com.sun.jdmk.*"/>
+ <ignore classname="org.apache.avalon.framework.logger.Logger"/>
+ <ignore classname="org.apache.log.*"/>
+ <ignore classname="junit.*"/>
+ <path path="${dir}"/>
+ </as:check-signature>
+
+ </target>
+
+
+</project>
=== added directory '.pc/90-fix_version.patch/src'
=== added directory '.pc/90-fix_version.patch/src/org'
=== added directory '.pc/90-fix_version.patch/src/org/openstreetmap'
=== added directory '.pc/90-fix_version.patch/src/org/openstreetmap/josm'
=== added directory '.pc/90-fix_version.patch/src/org/openstreetmap/josm/data'
=== added file '.pc/90-fix_version.patch/src/org/openstreetmap/josm/data/Version.java'
--- .pc/90-fix_version.patch/src/org/openstreetmap/josm/data/Version.java 1970-01-01 00:00:00 +0000
+++ .pc/90-fix_version.patch/src/org/openstreetmap/josm/data/Version.java 2011-08-22 12:04:26 +0000
@@ -0,0 +1,214 @@
+// License: GPL. For details, see LICENSE file.
+package org.openstreetmap.josm.data;
+
+import static org.openstreetmap.josm.tools.I18n.tr;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.util.HashMap;
+import java.util.Map.Entry;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.openstreetmap.josm.Main;
+import org.openstreetmap.josm.tools.LanguageInfo;
+
+/**
+ * Provides basic information about the currently used JOSM build.
+ *
+ */
+public class Version {
+ /** constant to indicate that the currnt build isn't assigned a JOSM version number */
+ static public final int JOSM_UNKNOWN_VERSION = 0;
+
+ /** the unique instance */
+ private static Version instance;
+
+ /**
+ * Load the specified resource as string.
+ *
+ * @param resource the resource url to load
+ * @return the content of the resource file; null, if an error occurred
+ */
+ static public String loadResourceFile(URL resource) {
+ if (resource == null) return null;
+ BufferedReader in;
+ String s = null;
+ try {
+ in = new BufferedReader(new InputStreamReader(resource.openStream()));
+ StringBuffer sb = new StringBuffer();
+ for (String line = in.readLine(); line != null; line = in.readLine()) {
+ sb.append(line).append("\n");
+ }
+ s = sb.toString();
+ } catch (IOException e) {
+ System.err.println(tr("Failed to load resource ''{0}'', error is {1}.", resource.toString(), e.toString()));
+ e.printStackTrace();
+ }
+ return s;
+ }
+
+ /**
+ * Replies the unique instance of the version information
+ *
+ * @return the unique instance of the version information
+ */
+
+ static public Version getInstance() {
+ if (instance == null) {
+ instance = new Version();
+ instance.init();
+ }
+ return instance;
+ }
+
+ private int version;
+ private String revision;
+ private String debianVersion;
+ private String time;
+ private boolean isLocalBuild;
+
+ protected HashMap<String, String> parseManifestStyleFormattedString(String content) {
+ HashMap<String, String> properties = new HashMap<String, String>();
+ if (content == null) return properties;
+ Pattern p = Pattern.compile("^([^:]+):(.*)$");
+ for (String line: content.split("\n")) {
+ if (line == null || line.trim().equals("")) {
+ continue;
+ }
+ if (line.matches("^\\s*#.*$")) {
+ continue;
+ }
+ Matcher m = p.matcher(line);
+ if (m.matches()) {
+ properties.put(m.group(1), m.group(2));
+ }
+ }
+ return properties;
+ }
+
+ /**
+ * Initializes the version infos from the revision resource file
+ *
+ * @param revisionInfo the revision info loaded from a revision resource file
+ */
+ protected void initFromRevisionInfo(String revisionInfo) {
+ if (revisionInfo == null) {
+ this.revision = tr("UNKNOWN");
+ this.version = JOSM_UNKNOWN_VERSION;
+ this.time = null;
+ return;
+ }
+
+ HashMap<String, String> properties = parseManifestStyleFormattedString(revisionInfo);
+ String value = properties.get("Revision");
+ if (value != null) {
+ value = value.trim();
+ try {
+ version = Integer.parseInt(value);
+ } catch(NumberFormatException e) {
+ version = 0;
+ System.err.println(tr("Warning: unexpected JOSM version number in revison file, value is ''{0}''", value));
+ }
+ } else {
+ version = JOSM_UNKNOWN_VERSION;
+ }
+
+ debianVersion = properties.get("Debian-Release");
+
+ // the last changed data
+ //
+ time = properties.get("Last Changed Date");
+ if (time == null) {
+ time = properties.get("Build-Date");
+ }
+
+ // is this a local build ?
+ //
+ isLocalBuild = false;
+ value = properties.get("Is-Local-Build");
+ if (value != null && value.trim().toLowerCase().equals("true")) {
+ isLocalBuild = true;
+ }
+
+ // the revision info
+ //
+ StringBuffer sb = new StringBuffer();
+ for(Entry<String,String> property: properties.entrySet()) {
+ sb.append(property.getKey()).append(":").append(property.getValue()).append("\n");
+ }
+ revision = sb.toString();
+ }
+
+ public void init() {
+ URL u = Main.class.getResource("/REVISION");
+ if (u == null) {
+ System.err.println(tr("Warning: the revision file ''/REVISION'' is missing."));
+ version = 0;
+ revision = "";
+ return;
+ }
+ initFromRevisionInfo(loadResourceFile(u));
+ System.out.println(revision);
+ }
+
+ /**
+ * Replies the version string. Either the SVN revision "1234" (as string) or the
+ * the I18n equivalent of "UNKNOWN".
+ *
+ * @return the JOSM version
+ */
+ public String getVersionString() {
+ return version == 0 ? tr("UNKNOWN") : Integer.toString(version);
+ }
+
+ public String getDebianVersionString() {
+ return debianVersion;
+ }
+
+ /**
+ * Replies a text with the release attributes
+ *
+ * @return a text with the release attributes
+ */
+ public String getReleaseAttributes() {
+ return revision;
+ }
+
+ /**
+ * Replies the build date as string
+ *
+ * @return the build date as string
+ */
+ public String getTime() {
+ return time;
+ }
+
+ /**
+ * Replies the JOSM version. Replies {@see #JOSM_UNKNOWN_VERSION} if the version isn't known.
+ * @return the JOSM version
+ */
+ public int getVersion() {
+ return version;
+ }
+
+ /**
+ * Replies true if this is a local build, i.e. an inofficial development build.
+ *
+ * @return true if this is a local build, i.e. an inofficial development build.
+ */
+ public boolean isLocalBuild() {
+ return isLocalBuild;
+ }
+
+ public String getAgentString() {
+ int v = getVersion();
+ String s = (v == JOSM_UNKNOWN_VERSION) ? "UNKNOWN" : Integer.toString(v);
+ if (isLocalBuild() && v != JOSM_UNKNOWN_VERSION) {
+ s += " SVN";
+ }
+ return "JOSM/1.5 ("+ s+" "+LanguageInfo.getJOSMLocaleCode()+")";
+ }
+}
=== added file '.pc/applied-patches'
--- .pc/applied-patches 1970-01-01 00:00:00 +0000
+++ .pc/applied-patches 2011-08-22 12:04:26 +0000
@@ -0,0 +1,7 @@
+10-build.patch
+20-bts.patch
+40-elemstyles.patch
+50-preferences_world_readable.patch
+70-default_look_and_feel.patch
+80-fix_images.patch
+90-fix_version.patch
=== added file '.project'
--- .project 1970-01-01 00:00:00 +0000
+++ .project 2011-08-22 12:04:26 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>JOSM</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.ui.externaltools.ExternalToolBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ <dictionary>
+ <key>LaunchConfigHandle</key>
+ <value><project>/.externalToolBuilders/revision.launch</value>
+ </dictionary>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.groovy.core.groovyNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
=== renamed file '.project' => '.project.moved'
=== added directory '.settings'
=== renamed directory '.settings' => '.settings.moved'
=== added file '.settings/org.eclipse.jdt.core.prefs'
--- .settings/org.eclipse.jdt.core.prefs 1970-01-01 00:00:00 +0000
+++ .settings/org.eclipse.jdt.core.prefs 2011-08-22 12:04:26 +0000
@@ -0,0 +1,335 @@
+#Sun May 23 17:35:27 CEST 2010
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.annotationSuperInterface=warning
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.autoboxing=ignore
+org.eclipse.jdt.core.compiler.problem.comparingIdentical=warning
+org.eclipse.jdt.core.compiler.problem.deadCode=warning
+org.eclipse.jdt.core.compiler.problem.deprecation=warning
+org.eclipse.jdt.core.compiler.problem.deprecationInDeprecatedCode=disabled
+org.eclipse.jdt.core.compiler.problem.deprecationWhenOverridingDeprecatedMethod=disabled
+org.eclipse.jdt.core.compiler.problem.discouragedReference=warning
+org.eclipse.jdt.core.compiler.problem.emptyStatement=warning
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore
+org.eclipse.jdt.core.compiler.problem.fatalOptionalError=enabled
+org.eclipse.jdt.core.compiler.problem.fieldHiding=ignore
+org.eclipse.jdt.core.compiler.problem.finalParameterBound=warning
+org.eclipse.jdt.core.compiler.problem.finallyBlockNotCompletingNormally=warning
+org.eclipse.jdt.core.compiler.problem.forbiddenReference=error
+org.eclipse.jdt.core.compiler.problem.hiddenCatchBlock=warning
+org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning
+org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=ignore
+org.eclipse.jdt.core.compiler.problem.indirectStaticAccess=ignore
+org.eclipse.jdt.core.compiler.problem.localVariableHiding=ignore
+org.eclipse.jdt.core.compiler.problem.methodWithConstructorName=warning
+org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=warning
+org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=warning
+org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore
+org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore
+org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore
+org.eclipse.jdt.core.compiler.problem.noEffectAssignment=error
+org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning
+org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore
+org.eclipse.jdt.core.compiler.problem.nullReference=warning
+org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning
+org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore
+org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=error
+org.eclipse.jdt.core.compiler.problem.potentialNullReference=warning
+org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning
+org.eclipse.jdt.core.compiler.problem.redundantNullCheck=warning
+org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore
+org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled
+org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning
+org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled
+org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore
+org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning
+org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning
+org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore
+org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore
+org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=warning
+org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=warning
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionExemptExceptionAndThrowable=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownExceptionWhenOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.unusedImport=warning
+org.eclipse.jdt.core.compiler.problem.unusedLabel=warning
+org.eclipse.jdt.core.compiler.problem.unusedLocal=warning
+org.eclipse.jdt.core.compiler.problem.unusedParameter=ignore
+org.eclipse.jdt.core.compiler.problem.unusedParameterIncludeDocCommentReference=enabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenImplementingAbstract=disabled
+org.eclipse.jdt.core.compiler.problem.unusedParameterWhenOverridingConcrete=disabled
+org.eclipse.jdt.core.compiler.problem.unusedPrivateMember=warning
+org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning
+org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.formatter.align_type_members_on_columns=false
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_assignment=0
+org.eclipse.jdt.core.formatter.alignment_for_binary_expression=16
+org.eclipse.jdt.core.formatter.alignment_for_compact_if=16
+org.eclipse.jdt.core.formatter.alignment_for_conditional_expression=80
+org.eclipse.jdt.core.formatter.alignment_for_enum_constants=0
+org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer=16
+org.eclipse.jdt.core.formatter.alignment_for_multiple_fields=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=16
+org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration=16
+org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration=16
+org.eclipse.jdt.core.formatter.blank_lines_after_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_after_package=1
+org.eclipse.jdt.core.formatter.blank_lines_before_field=0
+org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration=0
+org.eclipse.jdt.core.formatter.blank_lines_before_imports=1
+org.eclipse.jdt.core.formatter.blank_lines_before_member_type=1
+org.eclipse.jdt.core.formatter.blank_lines_before_method=1
+org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk=1
+org.eclipse.jdt.core.formatter.blank_lines_before_package=0
+org.eclipse.jdt.core.formatter.blank_lines_between_import_groups=1
+org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations=1
+org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_array_initializer=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_block_in_case=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_constant=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_method_declaration=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_switch=end_of_line
+org.eclipse.jdt.core.formatter.brace_position_for_type_declaration=end_of_line
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment=false
+org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment=false
+org.eclipse.jdt.core.formatter.comment.format_block_comments=false
+org.eclipse.jdt.core.formatter.comment.format_comments=true
+org.eclipse.jdt.core.formatter.comment.format_header=false
+org.eclipse.jdt.core.formatter.comment.format_html=false
+org.eclipse.jdt.core.formatter.comment.format_javadoc_comments=false
+org.eclipse.jdt.core.formatter.comment.format_line_comments=false
+org.eclipse.jdt.core.formatter.comment.format_source_code=false
+org.eclipse.jdt.core.formatter.comment.indent_parameter_description=true
+org.eclipse.jdt.core.formatter.comment.indent_root_tags=false
+org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags=do not insert
+org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter=do not insert
+org.eclipse.jdt.core.formatter.comment.line_length=100
+org.eclipse.jdt.core.formatter.compact_else_if=true
+org.eclipse.jdt.core.formatter.continuation_indentation=2
+org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer=2
+org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line=false
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header=true
+org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header=true
+org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_empty_lines=false
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_block=true
+org.eclipse.jdt.core.formatter.indent_statements_compare_to_body=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases=true
+org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch=false
+org.eclipse.jdt.core.formatter.indentation.size=4
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member=insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body=insert
+org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments=insert
+org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters=insert
+org.eclipse.jdt.core.formatter.insert_space_after_ellipsis=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_after_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter=insert
+org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_binary_operator=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_ellipsis=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized=insert
+org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return=insert
+org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw=insert
+org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional=insert
+org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for=do not insert
+org.eclipse.jdt.core.formatter.insert_space_before_unary_operator=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration=do not insert
+org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation=do not insert
+org.eclipse.jdt.core.formatter.join_lines_in_comments=true
+org.eclipse.jdt.core.formatter.join_wrapped_lines=true
+org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line=false
+org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line=false
+org.eclipse.jdt.core.formatter.lineSplit=120
+org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column=false
+org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body=0
+org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve=1
+org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line=true
+org.eclipse.jdt.core.formatter.tabulation.char=space
+org.eclipse.jdt.core.formatter.tabulation.size=4
+org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations=false
+org.eclipse.jdt.core.formatter.wrap_before_binary_operator=true
=== added file '.settings/org.eclipse.jdt.ui.prefs'
--- .settings/org.eclipse.jdt.ui.prefs 1970-01-01 00:00:00 +0000
+++ .settings/org.eclipse.jdt.ui.prefs 2011-08-22 12:04:26 +0000
@@ -0,0 +1,59 @@
+#Wed Jan 27 11:53:40 EST 2010
+cleanup_settings_version=2
+eclipse.preferences.version=1
+editor_save_participant_org.eclipse.jdt.ui.postsavelistener.cleanup=true
+formatter_profile=_josm
+formatter_settings_version=11
+org.eclipse.jdt.ui.javadoc=false
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter method" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="false" context\="filecomment_context" deleted\="false" description\="Comment for created Java files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.filecomment" name\="filecomment">// License\: GPL. \r\n</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for fields" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Javadoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate methods" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="false" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.newtype" name\="newtype">// License\: GPL. For details, see LICENSE file.\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="interfacebody_context" deleted\="false" description\="Code in new interface type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name\="interfacebody">\r\n</template><template autoinsert\="true" context\="enumbody_context" deleted\="false" description\="Code in new enum type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.enumbody" name\="enumbody">\r\n</template><template autoinsert\="true" context\="annotationbody_context" deleted\="false" description\="Code in new annotation type bodies" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name\="annotationbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created method stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated method stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.jdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template><template autoinsert\="true" context\="gettercomment_context" deleted\="false" description\="Comment for getter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.gettercomment" name\="gettercomment">/**\r\n * @return the ${bare_field_name}\r\n */</template><template autoinsert\="true" context\="settercomment_context" deleted\="false" description\="Comment for setter function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.settercomment" name\="settercomment">/**\r\n * @param ${param} the ${bare_field_name} to set\r\n */</template><template autoinsert\="true" context\="constructorcomment_context" deleted\="false" description\="Comment for created constructors" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorcomment" name\="constructorcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="filecomment_context" deleted\="false" description\="Comment for created JavaScript files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.filecomment" name\="filecomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="typecomment_context" deleted\="false" description\="Comment for created types" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.typecomment" name\="typecomment">/**\r\n * @author ${user}\r\n *\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="fieldcomment_context" deleted\="false" description\="Comment for vars" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.fieldcomment" name\="fieldcomment">/**\r\n * \r\n */</template><template autoinsert\="true" context\="methodcomment_context" deleted\="false" description\="Comment for non-overriding function" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodcomment" name\="methodcomment">/**\r\n * ${tags}\r\n */</template><template autoinsert\="true" context\="overridecomment_context" deleted\="false" description\="Comment for overriding functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.overridecomment" name\="overridecomment">/* (non-Jsdoc)\r\n * ${see_to_overridden}\r\n */</template><template autoinsert\="true" context\="delegatecomment_context" deleted\="false" description\="Comment for delegate functions" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.delegatecomment" name\="delegatecomment">/**\r\n * ${tags}\r\n * ${see_to_target}\r\n */</template><template autoinsert\="true" context\="newtype_context" deleted\="false" description\="Newly created files" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.newtype" name\="newtype">${filecomment}\r\n${package_declaration}\r\n\r\n${typecomment}\r\n${type_declaration}</template><template autoinsert\="true" context\="classbody_context" deleted\="false" description\="Code in new class type bodies" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.classbody" name\="classbody">\r\n</template><template autoinsert\="true" context\="catchblock_context" deleted\="false" description\="Code in new catch blocks" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.catchblock" name\="catchblock">// ${todo} Auto-generated catch block\r\n${exception_var}.printStackTrace();</template><template autoinsert\="true" context\="methodbody_context" deleted\="false" description\="Code in created function stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.methodbody" name\="methodbody">// ${todo} Auto-generated function stub\r\n${body_statement}</template><template autoinsert\="true" context\="constructorbody_context" deleted\="false" description\="Code in created constructor stubs" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.constructorbody" name\="constructorbody">${body_statement}\r\n// ${todo} Auto-generated constructor stub</template><template autoinsert\="true" context\="getterbody_context" deleted\="false" description\="Code in created getters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.getterbody" name\="getterbody">return ${field};</template><template autoinsert\="true" context\="setterbody_context" deleted\="false" description\="Code in created setters" enabled\="true" id\="org.eclipse.wst.jsdt.ui.text.codetemplates.setterbody" name\="setterbody">${field} \= ${param};</template></templates>
+sp_cleanup.add_default_serial_version_id=true
+sp_cleanup.add_generated_serial_version_id=false
+sp_cleanup.add_missing_annotations=true
+sp_cleanup.add_missing_deprecated_annotations=true
+sp_cleanup.add_missing_methods=false
+sp_cleanup.add_missing_nls_tags=false
+sp_cleanup.add_missing_override_annotations=true
+sp_cleanup.add_serial_version_id=false
+sp_cleanup.always_use_blocks=false
+sp_cleanup.always_use_parentheses_in_expressions=false
+sp_cleanup.always_use_this_for_non_static_field_access=false
+sp_cleanup.always_use_this_for_non_static_method_access=false
+sp_cleanup.convert_to_enhanced_for_loop=false
+sp_cleanup.correct_indentation=true
+sp_cleanup.format_source_code=false
+sp_cleanup.format_source_code_changes_only=false
+sp_cleanup.make_local_variable_final=false
+sp_cleanup.make_parameters_final=false
+sp_cleanup.make_private_fields_final=false
+sp_cleanup.make_type_abstract_if_missing_method=false
+sp_cleanup.make_variable_declarations_final=false
+sp_cleanup.never_use_blocks=false
+sp_cleanup.never_use_parentheses_in_expressions=true
+sp_cleanup.on_save_use_additional_actions=true
+sp_cleanup.organize_imports=true
+sp_cleanup.qualify_static_field_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_member_accesses_through_instances_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class=true
+sp_cleanup.qualify_static_member_accesses_with_declaring_class=false
+sp_cleanup.qualify_static_method_accesses_with_declaring_class=false
+sp_cleanup.remove_private_constructors=true
+sp_cleanup.remove_trailing_whitespaces=true
+sp_cleanup.remove_trailing_whitespaces_all=true
+sp_cleanup.remove_trailing_whitespaces_ignore_empty=false
+sp_cleanup.remove_unnecessary_casts=true
+sp_cleanup.remove_unnecessary_nls_tags=false
+sp_cleanup.remove_unused_imports=false
+sp_cleanup.remove_unused_local_variables=false
+sp_cleanup.remove_unused_private_fields=true
+sp_cleanup.remove_unused_private_members=false
+sp_cleanup.remove_unused_private_methods=true
+sp_cleanup.remove_unused_private_types=true
+sp_cleanup.sort_members=false
+sp_cleanup.sort_members_all=false
+sp_cleanup.use_blocks=true
+sp_cleanup.use_blocks_only_for_return_and_throw=true
+sp_cleanup.use_parentheses_in_expressions=false
+sp_cleanup.use_this_for_non_static_field_access=false
+sp_cleanup.use_this_for_non_static_field_access_only_if_necessary=true
+sp_cleanup.use_this_for_non_static_method_access=false
+sp_cleanup.use_this_for_non_static_method_access_only_if_necessary=true
=== added file 'CONTRIBUTION'
--- CONTRIBUTION 1970-01-01 00:00:00 +0000
+++ CONTRIBUTION 2011-08-22 12:04:26 +0000
@@ -0,0 +1,44 @@
+JOSM was originally designed and coded by Immanuel Scholz,
+and is now maintained by the OpenStreetMap community.
+
+The current JOSM maintainer is Dirk Stöcker.
+A lot of administration work is done by Sebastian Klein.
+
+Major code contributions from (in alphabetical order):
+
+Stefan Breunig
+David Earl
+Gabriel Ebner
+Dave Hansen
+Karl Guggisberg
+Matthias Julius
+Sebastian Klein
+Jiri Klement
+Ulf Lamping
+Raphael Mack
+Upliner Mikhalych
+Frederik Ramm
+Dirk Stöcker
+
+Many minor contributions and patches by others; see SVN history
+at http://josm.openstreetmap.de/svn/ for details. Use
+"josm-dev AT openstreetmap.org" to contact still active authors.
+
+Copyright rests with the contributors.
+
+The jpeg metadata extraction code is from Drew Noakes
+(http://drewnoakes.com/code/exif).
+
+Most icons have been nicked from GNOME and the GIMP, both
+under GPL. Some are originally LGPL but redistributed here under
+GPL. The world image is from onearth.pl.
+
+The gettext-commons-0.9.jar is from Felix Berger and Steffen
+Pingel (http://xnap-commons.sourceforge.net/gettext-commons/).
+The jar file is licensed under LGPL.
+
+The Bzip2 code is from Keiron Liddle (Apache project) and licensed
+with Apache license version 2.0.
+
+The signpost code (http://code.google.com/p/oauth-signpost/)
+is from Matthias Käppler and licensed with the Apache License 2.0.
=== renamed file 'CONTRIBUTION' => 'CONTRIBUTION.moved'
=== added file 'LICENSE'
--- LICENSE 1970-01-01 00:00:00 +0000
+++ LICENSE 2011-08-22 12:04:26 +0000
@@ -0,0 +1,19 @@
+JOSM License
+============
+
+JOSM, and all its integral parts, are released under the GNU General
+Public License v2 or later.
+
+The GPL v3 is accessible here:
+http://www.gnu.org/licenses/gpl.html
+
+The GPL v2 is accessible here:
+http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
+
+When compiled with Bzip2 support code included the whole software is licensed
+GPL v3 or later.
+
+
+
+Note: This is not valid for JOSM plugins. These are not considered
+an integral part of JOSM and may be under any license.
=== renamed file 'LICENSE' => 'LICENSE.moved'
=== added file 'README'
--- README 1970-01-01 00:00:00 +0000
+++ README 2011-08-22 12:04:26 +0000
@@ -0,0 +1,50 @@
+This is a readme.txt to the Java OpenStreetMap Editor
+
+
+Install Notes
+-------------
+
+To run JOSM, you need:
+
+* The jar file (e.g. josm.jar)
+* The latest Java Runtime Environment 1.6.
+
+
+How to get Java
+---------------
+
+You need at least Version 1.6 (called Java6).
+
+Microsoft Windows people should just visit java.sun.com and
+download the latest Java6 executable.
+
+To get Java under linux, either download the environment
+directly from Sun at http://java.sun.com (there is a linux
+binary installer which you have to execute from a console) or
+use the mechanisms of your distributions packaging system.
+
+How to launch
+-------------
+
+Microsoft Windows people launch by double clicking on the jar file.
+If this does not help, open a command shell and type
+"java -jar josm-latest.jar" in the directory that holds the file.
+(Please replace josm-latest.jar with the name of your jar file, if
+you don't used the latest version.)
+
+Under Linux open a shell, go to the file directory and type
+"java -jar josm-latest.jar" to launch. If this don't help, try to set
+you JAVA_HOME variable to the java location (the root location, not
+the bin)
+
+MacOS people just click on the jar-file.
+
+
+How to get the Source
+---------------------
+
+Download it directly from the subversion at
+https://josm.openstreetmap.de/svn/trunk. To use the command line
+subverion client, type
+
+svn co https://josm.openstreetmap.de/svn/trunk
=== renamed file 'README' => 'README.moved'
=== added file 'REVISION'
--- REVISION 1970-01-01 00:00:00 +0000
+++ REVISION 2011-08-22 12:04:26 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<info>
+<entry
+ kind="dir"
+ path="trunk"
+ revision="4064">
+<url>http://josm.openstreetmap.de/svn/trunk</url>
+<repository>
+<root>http://josm.openstreetmap.de/svn</root>
+<uuid>0c6e7542-c601-0410-84e7-c038aed88b3b</uuid>
+</repository>
+<commit
+ revision="4064">
+<author>bastiK</author>
+<date>2011-04-25T18:32:26.424951Z</date>
+</commit>
+</entry>
+</info>
=== added file 'build.xml'
--- build.xml 1970-01-01 00:00:00 +0000
+++ build.xml 2011-08-22 12:04:26 +0000
@@ -0,0 +1,308 @@
+<!-- ** build.xml - main ant file for JOSM
+**
+** To build run
+** ant clean
+** ant dist
+** This will create 'josm-custom.jar' in directory 'dist'. See also
+** https://josm.openstreetmap.de/wiki/CreateBuild
+**
+**
+-->
+<project name="josm" default="dist" basedir="." xmlns:as="antlib:org.codehaus.mojo.animal_sniffer">
+ <property name="test.dir" value="test" />
+ <property name="src.dir" value="src" />
+ <property name="build.dir" value="build"/>
+ <!-- build parameter: compression level (ant -Dclevel=N)
+ N ranges from 0 (no compression) to 9 (maximum compression)
+ default: 9 -->
+ <condition property="clevel" value="${clevel}" else="9">
+ <isset property="clevel" />
+ </condition>
+
+ <!-- Java classpath addition (all jar files to compile tests with this) -->
+ <path id="classpath">
+ <fileset dir="/usr/share/java">
+ <include name="gettext-commons.jar"/>
+ <include name="metadata-extractor.jar"/>
+ </fileset>
+ </path>
+
+
+ <!--
+ ** Used by Eclipse ant builder for updating
+ ** the REVISION file used by JOSM
+ -->
+ <target name="create-revision-eclipse">
+ <property name="revision.dir" value="bin"/>
+ <antcall target="create-revision" />
+ </target>
+
+ <!--
+ ** Creates the REVISION file to be included in the distribution
+ -->
+ <target name="create-revision">
+ <property name="revision.dir" value="${build.dir}"/>
+ <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/>
+ <tstamp>
+ <format property="build.tstamp" pattern="yyyy-MM-dd HH:mm:ss"/>
+ </tstamp>
+
+ <property name="version.entry.commit.revision" value="UNKNOWN"/>
+ <mkdir dir="${revision.dir}" />
+ <echo file="${revision.dir}/REVISION">
+# automatically generated by JOSM build.xml - do not edit
+Revision: ${version.entry.commit.revision}
+Is-Local-Build: true
+Build-Date: ${build.tstamp}
+Debian-Release: ${debian.version}
+</echo>
+ </target>
+
+
+ <target name="dist" depends="compile,create-revision">
+ <xmlproperty file="REVISION" prefix="version" keepRoot="false" collapseAttributes="true"/>
+ <property name="version.entry.commit.revision" value="UNKNOWN"/>
+ <property name="version.entry.commit.date" value="UNKNOWN"/>
+ <echo>Revision ${version.entry.commit.revision}</echo>
+ <copy file="CONTRIBUTION" todir="build"/>
+ <copy file="README" todir="build"/>
+ <copy file="LICENSE" todir="build"/>
+
+ <ant target="dist" dir="i18n"/>
+
+ <!-- create josm-custom.jar -->
+ <jar destfile="dist/josm-custom.jar" basedir="build" level="${clevel}">
+ <!-- add attribute excludes="**/*BZip2*,**/*Bzip2*" to create a non-bzip2 supporting jar -->
+ <manifest>
+ <attribute name="Main-class" value="JOSM" />
+ <attribute name="Main-Version" value="${version.entry.commit.revision}"/>
+ <attribute name="Main-Date" value="${version.entry.commit.date}"/>
+ <attribute name="Debian-Release" value="${debian.version}"/>
+ <attribute name="Class-Path" value="/usr/share/java/gettext-commons.jar /usr/share/java/metadata-extractor.jar /usr/share/java/signpost-core.jar"/>
+ </manifest>
+ <zipfileset dir="images" prefix="images" />
+ <zipfileset dir="data" prefix="data" />
+ <zipfileset dir="styles" prefix="styles" />
+ <zipfileset dir="src/org/openstreetmap/gui/jmapviewer/images" prefix="org/openstreetmap/gui/jmapviewer/images" />
+ </jar>
+ </target>
+
+ <target name="distmac" depends="dist">
+ <!-- modify MacOS X Info.plist file to hold the SVN version number -->
+ <copy file="macosx/JOSM.app/Contents/Info.plist" todir="build"/>
+ <replace file="build/Info.plist" token="@SVNVersion@" value="${version.entry.commit.revision}"/>
+ <!-- create ZIP file with MacOS X application bundle -->
+ <zip destfile="dist/josm-custom-macosx.zip" update="true">
+ <zipfileset dir="build" includes="CONTRIBUTION README LICENSE"/>
+ <zipfileset dir="macosx" includes="JOSM.app/Contents JOSM.app/Contents/MacOS JOSM.app/Contents/Resources JOSM.app/Contents/Resources/Java JOSM.app/Contents/PkgInfo JOSM.app/Contents/Resources/JOSM.icns"/>
+ <zipfileset dir="build" includes="Info.plist" prefix="JOSM.app/Contents"/>
+ <zipfileset dir="dist" includes="josm-custom.jar" prefix="JOSM.app/Contents/Resources/Java"/>
+ <zipfileset dir="macosx" includes="JOSM.app/Contents/MacOS/JOSM" filemode="755"/>
+ </zip>
+ </target>
+
+ <target name="compile" depends="init">
+ <javac srcdir="src" classpathref="classpath" destdir="build"
+ target="1.5" source="1.5" debug="on" encoding="UTF-8">
+ <compilerarg value="-Xlint:deprecation"/>
+ <compilerarg value="-Xlint:unchecked"/>
+ </javac>
+ <ant target="build" dir="i18n"/>
+ </target>
+
+ <target name="init">
+ <mkdir dir="build" />
+ <mkdir dir="dist" />
+ </target>
+
+ <target name="clean">
+ <delete dir="build" />
+ <delete dir="dist" />
+ <ant target="clean" dir="i18n"/>
+ </target>
+
+ <target name="javacc">
+ <exec executable="javacc">
+ <arg value="-debug_parser=false"/>
+ <arg value="-debug_lookahead=false"/>
+ <arg value="-debug_token_manager=false"/>
+ <arg value="-output_directory=${src.dir}/org/openstreetmap/josm/gui/mappaint/mapcss/parser"/>
+ <arg value="${src.dir}/org/openstreetmap/josm/gui/mappaint/mapcss/parser/MapCSSParser.jj"/>
+ </exec>
+ </target>
+
+ <path id="test.classpath">
+ <fileset dir="${test.dir}/lib">
+ <include name="**/*.jar"/>
+ </fileset>
+ <fileset dir="lib">
+ <include name="**/*.jar"/>
+ </fileset>
+ <pathelement path="dist/josm-custom.jar"/>
+ </path>
+
+ <target name="test-init">
+ <mkdir dir="${test.dir}/${build.dir}" />
+ <mkdir dir="${test.dir}/report" />
+ </target>
+
+ <target name="test-clean">
+ <delete dir="${test.dir}/${build.dir}"/>
+ <delete dir="${test.dir}/report"/>
+ </target>
+
+ <target name="test-compile" depends="test-init,dist">
+ <javac srcdir="${test.dir}/unit" classpathref="test.classpath" destdir="${test.dir}/${build.dir}"
+ target="1.5" source="1.5" debug="on" encoding="UTF-8">
+ <compilerarg value="-Xlint:deprecation"/>
+ <compilerarg value="-Xlint:unchecked"/>
+ </javac>
+ <javac srcdir="${test.dir}/functional" classpathref="test.classpath" destdir="${test.dir}/${build.dir}"
+ target="1.5" source="1.5" debug="on" encoding="UTF-8">
+ <compilerarg value="-Xlint:deprecation"/>
+ <compilerarg value="-Xlint:unchecked"/>
+ </javac>
+ </target>
+
+ <target name="test" depends="test-compile">
+ <junit printsummary="yes">
+ <syspropert