From 7f9dbef9271910199043b3ed26c5a0ca47471a7c Mon Sep 17 00:00:00 2001 From: samely Date: Thu, 5 Jan 2017 18:03:08 -0500 Subject: [PATCH 01/46] Removing unused imports and setting min JOSM version --- build.xml | 2 +- nbproject/private/private.xml | 4 ++++ .../josm/plugins/auto_tools/actions/MergeBuildingsAction.java | 3 --- .../josm/plugins/auto_tools/actions/SplittingTool.java | 1 - 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build.xml b/build.xml index e9ab7a0..1818a76 100644 --- a/build.xml +++ b/build.xml @@ -1,7 +1,7 @@ - + diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml index 09d5800..c174d48 100644 --- a/nbproject/private/private.xml +++ b/nbproject/private/private.xml @@ -3,7 +3,11 @@ + file:/home/samely/plugin/josm/plugins/auto-tools/build.xml + file:/home/samely/plugin/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java file:/home/samely/plugin/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java + file:/home/samely/plugin/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java + file:/home/samely/plugin/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java index fe444ea..ce10153 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java @@ -25,10 +25,7 @@ import org.openstreetmap.josm.data.osm.Tag; import org.openstreetmap.josm.data.osm.TagCollection; import org.openstreetmap.josm.data.osm.Way; -import org.openstreetmap.josm.gui.Notification; -import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog; import static org.openstreetmap.josm.gui.mappaint.mapcss.ExpressionFactory.Functions.tr; -import static org.openstreetmap.josm.tools.I18n.tr; import static org.openstreetmap.josm.tools.I18n.trn; import org.openstreetmap.josm.tools.Shortcut; diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index 367b09b..d9c19b6 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -37,7 +37,6 @@ import static org.openstreetmap.josm.tools.I18n.tr; import org.openstreetmap.josm.tools.ImageProvider; import org.openstreetmap.josm.tools.Pair; -import org.openstreetmap.josm.tools.Predicates; import org.openstreetmap.josm.tools.Shortcut; import org.openstreetmap.josm.tools.Utils; From 64e8ade335176699294f08079235f446ad04334b Mon Sep 17 00:00:00 2001 From: samely Date: Thu, 27 Apr 2017 11:18:55 -0500 Subject: [PATCH 02/46] Fixing NPE error --- nbproject/project.xml | 2 +- .../actions/MergeBuildingsAction.java | 148 +++++++++--------- .../auto_tools/actions/SplittingTool.java | 6 +- 3 files changed, 80 insertions(+), 76 deletions(-) diff --git a/nbproject/project.xml b/nbproject/project.xml index 32e9f74..32e5ae3 100644 --- a/nbproject/project.xml +++ b/nbproject/project.xml @@ -68,7 +68,7 @@ auxiliary.show.customizer.message= src - /home/samely/plugin/josm/core/dist/josm-custom.jar:../../dist/utilsplugin2.jar + ../../dist/utilsplugin2.jar:../../core/dist/josm-custom.jar 1.8 diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java index ce10153..2338eb9 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java @@ -42,93 +42,95 @@ public MergeBuildingsAction() { @Override public void actionPerformed(ActionEvent e) { - Relation rela = null; - - LinkedList ways = new LinkedList(Main.getLayerManager().getEditDataSet().getSelectedWays()); - if (ways.isEmpty() || ways.size() == 1) { - JOptionPane.showMessageDialog(null, "Select at least two ways"); - } else { - //Filtrar los Tags, y sacar un promerio de ellos - Map atrributes = new Hashtable(); - List areaList = new ArrayList<>(); - List bvList = new ArrayList<>(); - LinkedList sel = new LinkedList<>(); - - for (OsmPrimitive osm : ways) { - if (OsmPrimitive.getFilteredList(osm.getReferrers(), Relation.class).size() > 0) { - Relation relation = OsmPrimitive.getFilteredList(osm.getReferrers(), Relation.class).get(0); - Set keys = relation.getKeys().keySet(); - for (String key : keys) { - if (!atrributes.containsKey(key)) { - atrributes.put(key, relation.get(key)); - } else { - if (!atrributes.get(key).equals(relation.get(key))) { - String atrr = atrributes.get(key) + ";" + relation.get(key); - atrributes.put(key, atrr); + if (Main.getLayerManager().getEditDataSet() != null) { + Relation rela = null; + + LinkedList ways = new LinkedList(Main.getLayerManager().getEditDataSet().getSelectedWays()); + if (ways.isEmpty() || ways.size() == 1) { + JOptionPane.showMessageDialog(null, "Select at least two ways"); + } else { + //Filtrar los Tags, y sacar un promerio de ellos + Map atrributes = new Hashtable(); + List areaList = new ArrayList<>(); + List bvList = new ArrayList<>(); + LinkedList sel = new LinkedList<>(); + + for (OsmPrimitive osm : ways) { + if (OsmPrimitive.getFilteredList(osm.getReferrers(), Relation.class).size() > 0) { + Relation relation = OsmPrimitive.getFilteredList(osm.getReferrers(), Relation.class).get(0); + Set keys = relation.getKeys().keySet(); + for (String key : keys) { + if (!atrributes.containsKey(key)) { + atrributes.put(key, relation.get(key)); + } else { + if (!atrributes.get(key).equals(relation.get(key))) { + String atrr = atrributes.get(key) + ";" + relation.get(key); + atrributes.put(key, atrr); + } } } - } - areaList.add(findArea((Way) osm)); - bvList.add(relation.get("building")); - rela = relation; - sel.add(relation); - } else { - Set keys = osm.getKeys().keySet(); - - for (String key : keys) { - if (!atrributes.containsKey(key)) { - atrributes.put(key, osm.get(key)); - } else { - if (!atrributes.get(key).equals(osm.get(key))) { - String atrr = atrributes.get(key) + ";" + osm.get(key); - atrributes.put(key, atrr); + areaList.add(findArea((Way) osm)); + bvList.add(relation.get("building")); + rela = relation; + sel.add(relation); + } else { + Set keys = osm.getKeys().keySet(); + + for (String key : keys) { + if (!atrributes.containsKey(key)) { + atrributes.put(key, osm.get(key)); + } else { + if (!atrributes.get(key).equals(osm.get(key))) { + String atrr = atrributes.get(key) + ";" + osm.get(key); + atrributes.put(key, atrr); + } } } + areaList.add(findArea((Way) osm)); + bvList.add(osm.get("building")); } - areaList.add(findArea((Way) osm)); - bvList.add(osm.get("building")); } - } - atrributes.put("building", bvList.get(areaList.indexOf(Collections.max(areaList)))); - //Convertir a tag collections - TagCollection tagCollection = new TagCollection(); - for (Map.Entry entry : atrributes.entrySet()) { - //https://github.com/osmlab/labuildings/blob/master/IMPORTING.md - //lacounty:ain -> ALL - //lacount:bld_id -> ALL - //start_date -> None if multiple or the one option if there's only one - //height -> largest number - //ele -> largest number - //building:units -> none if different - Tag tag; - if ((entry.getKey().equals("start_date") || entry.getKey().equals("building:units")) && entry.getValue().contains(";")) { - tag = new Tag(entry.getKey(), null); - } else if ((entry.getKey().equals("height") || entry.getKey().equals("ele")) && entry.getValue().contains(";")) { - String[] stringArray = entry.getValue().split(";"); - Double max = Double.parseDouble(stringArray[0]); - for (int index = 1; index < stringArray.length; index++) { - Double h = Double.parseDouble(stringArray[index]); - if (h > max) { - max = h; + atrributes.put("building", bvList.get(areaList.indexOf(Collections.max(areaList)))); + //Convertir a tag collections + TagCollection tagCollection = new TagCollection(); + for (Map.Entry entry : atrributes.entrySet()) { + //https://github.com/osmlab/labuildings/blob/master/IMPORTING.md + //lacounty:ain -> ALL + //lacount:bld_id -> ALL + //start_date -> None if multiple or the one option if there's only one + //height -> largest number + //ele -> largest number + //building:units -> none if different + Tag tag; + if ((entry.getKey().equals("start_date") || entry.getKey().equals("building:units")) && entry.getValue().contains(";")) { + tag = new Tag(entry.getKey(), null); + } else if ((entry.getKey().equals("height") || entry.getKey().equals("ele")) && entry.getValue().contains(";")) { + String[] stringArray = entry.getValue().split(";"); + Double max = Double.parseDouble(stringArray[0]); + for (int index = 1; index < stringArray.length; index++) { + Double h = Double.parseDouble(stringArray[index]); + if (h > max) { + max = h; + } } + tag = new Tag(entry.getKey(), max.toString()); + } else { + tag = new Tag(entry.getKey(), entry.getValue()); } - tag = new Tag(entry.getKey(), max.toString()); - } else { - tag = new Tag(entry.getKey(), entry.getValue()); + tagCollection.add(tag); } - tagCollection.add(tag); - } - sel.addAll(ways); + sel.addAll(ways); - Main.main.undoRedo.add(new SequenceCommand(tr("revert tags"), MergeAllTags(rela, sel, tagCollection))); - JosmAction build = new JoinAreasAction(); - build.actionPerformed(e); + Main.main.undoRedo.add(new SequenceCommand(tr("revert tags"), MergeAllTags(rela, sel, tagCollection))); + JosmAction build = new JoinAreasAction(); + build.actionPerformed(e); + } } } - protected Command MergeAllTags(Relation relation, Collection selection, TagCollection tc) { - Collection selectiontemporal = new ArrayList<>(); + protected Command MergeAllTags(Relation relation, List selection, TagCollection tc) { + List selectiontemporal = new ArrayList<>(); Set selectionways = OsmPrimitive.getFilteredSet((List) selection, Way.class); List commands = new ArrayList(); diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index d9c19b6..cd78096 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -34,6 +34,7 @@ import org.openstreetmap.josm.gui.MapFrame; import org.openstreetmap.josm.gui.NavigatableComponent; import org.openstreetmap.josm.gui.Notification; +import org.openstreetmap.josm.gui.layer.OsmDataLayer; import static org.openstreetmap.josm.tools.I18n.tr; import org.openstreetmap.josm.tools.ImageProvider; import org.openstreetmap.josm.tools.Pair; @@ -54,7 +55,7 @@ public class SplittingTool extends MapMode { public SplittingTool(MapFrame mapFrame) { super(tr("Knife tool"), "iconknife", tr("Split way."), Shortcut.registerShortcut("mapmode:KnifeTool", tr("Mode:KnifeTool", tr("Split")), KeyEvent.VK_T, Shortcut.DIRECT), - mapFrame, ImageProvider.getCursor("crosshair", null)); + ImageProvider.getCursor("crosshair", null)); } @Override @@ -91,7 +92,7 @@ public void keyTyped(KeyEvent e) { @Override public void keyPressed(KeyEvent e) { - if (e.getKeyCode() == Main.map.mapMode.getShortcut().getAssignedKey()) { + if (e.getKeyCode() == Main.map.mapMode.getShortcut().getAssignedKey() && Main.getLayerManager().getEditLayer()!=null) { counter++; } } @@ -253,6 +254,7 @@ private static void adjustNode(Collection> segs, Node n) { n.setEastNorth(intersection); return; } + // fall through default: EastNorth p = n.getEastNorth(); seg = segs.iterator().next(); From 9406825db54aa5c6ebf3cb7d3ae5aa013e59c2e4 Mon Sep 17 00:00:00 2001 From: samely Date: Tue, 16 May 2017 16:55:31 -0500 Subject: [PATCH 03/46] Fixing bug combining buildings --- nbproject/private/private.xml | 9 ++++----- .../actions/MergeBuildingsAction.java | 6 ++++-- .../auto_tools/actions/ReplaceBuilding.java | 18 ++++++++++-------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml index c174d48..62fee78 100644 --- a/nbproject/private/private.xml +++ b/nbproject/private/private.xml @@ -3,11 +3,10 @@ - file:/home/samely/plugin/josm/plugins/auto-tools/build.xml - file:/home/samely/plugin/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java - file:/home/samely/plugin/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java - file:/home/samely/plugin/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java - file:/home/samely/plugin/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java + file:/home/samely/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java + file:/home/samely/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java + file:/home/samely/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java + file:/home/samely/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java index 2338eb9..b0b2ca4 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java @@ -91,7 +91,10 @@ public void actionPerformed(ActionEvent e) { bvList.add(osm.get("building")); } } - atrributes.put("building", bvList.get(areaList.indexOf(Collections.max(areaList)))); + if (bvList.get(areaList.indexOf(Collections.max(areaList))) != null) { + atrributes.put("building", bvList.get(areaList.indexOf(Collections.max(areaList)))); + } + //Convertir a tag collections TagCollection tagCollection = new TagCollection(); for (Map.Entry entry : atrributes.entrySet()) { @@ -135,7 +138,6 @@ protected Command MergeAllTags(Relation relation, List selection, List commands = new ArrayList(); if (relation != null) { - System.out.println("entra..."); for (OsmPrimitive op : selection) { if (op.getType().equals(OsmPrimitiveType.RELATION)) { selectiontemporal.add(op); diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java index d39b732..c29c494 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java @@ -133,10 +133,10 @@ protected static List getTagConflictResolutionCommands(OsmPrimitive sou String valTarget = target.getKeys().get("building"); if (valSource != null || valTarget != null) { - if (valSource.equals("yes") || valSource.equals(valTarget)) { + if (valSource != null && (valSource.equals("yes") || valSource.equals(valTarget))) { source.setKeys(getAttributes(source, valTarget)); target.setKeys(getAttributes(target, valTarget)); - } else if (valTarget.equals("yes")) { + } else if (valTarget != null && valTarget.equals("yes")) { source.setKeys(getAttributes(source, valSource)); target.setKeys(getAttributes(target, valSource)); } @@ -166,12 +166,14 @@ protected static List getTagConflictResolutionCommands(OsmPrimitive sou private static Map getAttributes(OsmPrimitive osm, String value) { Map atrributes = new Hashtable(); Set keys = osm.getKeys().keySet(); - for (String key : keys) { - if (!atrributes.containsKey(key)) { - if (key.equals("building")) { - atrributes.put(key, value); - } else { - atrributes.put(key, osm.get(key)); + if (!keys.isEmpty()) { + for (String key : keys) { + if (!atrributes.containsKey(key)) { + if (key.equals("building")) { + atrributes.put(key, value); + } else { + atrributes.put(key, osm.get(key)); + } } } } From eedb5e6d7b5e3603673eccfe3a01036820504a39 Mon Sep 17 00:00:00 2001 From: Ruben Lopez M Date: Fri, 3 Nov 2017 10:47:22 -0500 Subject: [PATCH 04/46] Create LICENSE.txt --- LICENSE.txt | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 LICENSE.txt diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..b38150f --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,7 @@ +Copyright © 2015-2017 Mapbox, Inc. +This code available under the terms of the BSD 2-Clause license. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. From 1d2d78e46bb0e9dc05d9e0da6633216852b7f99d Mon Sep 17 00:00:00 2001 From: Vincent Privat Date: Sun, 7 Jan 2018 01:26:09 +0100 Subject: [PATCH 05/46] fix #21 - Update to latest JOSM --- .classpath | 8 ++ .project | 17 +++ .settings/org.eclipse.jdt.core.prefs | 111 ++++++++++++++++++ build.xml | 7 +- .../josm/plugins/auto_tools/AutoTools.java | 20 ++-- .../actions/MergeBuildingsAction.java | 17 +-- .../auto_tools/actions/ReplaceBuilding.java | 19 +-- .../auto_tools/actions/SplittingTool.java | 65 +++++----- 8 files changed, 203 insertions(+), 61 deletions(-) create mode 100644 .classpath create mode 100644 .project create mode 100644 .settings/org.eclipse.jdt.core.prefs diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..2b0249c --- /dev/null +++ b/.classpath @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..7017b33 --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + JOSM-auto-tools + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 0000000..38d34cb --- /dev/null +++ b/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,111 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.annotation.inheritNullAnnotations=disabled +org.eclipse.jdt.core.compiler.annotation.missingNonNullByDefaultAnnotation=ignore +org.eclipse.jdt.core.compiler.annotation.nonnull=org.eclipse.jdt.annotation.NonNull +org.eclipse.jdt.core.compiler.annotation.nonnull.secondary= +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault=org.eclipse.jdt.annotation.NonNullByDefault +org.eclipse.jdt.core.compiler.annotation.nonnullbydefault.secondary= +org.eclipse.jdt.core.compiler.annotation.nullable=org.eclipse.jdt.annotation.Nullable +org.eclipse.jdt.core.compiler.annotation.nullable.secondary= +org.eclipse.jdt.core.compiler.annotation.nullanalysis=disabled +org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled +org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate +org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 +org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve +org.eclipse.jdt.core.compiler.compliance=1.8 +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.APILeak=warning +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=ignore +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.explicitlyClosedAutoCloseable=ignore +org.eclipse.jdt.core.compiler.problem.fallthroughCase=ignore +org.eclipse.jdt.core.compiler.problem.fatalOptionalError=disabled +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.includeNullInfoFromAsserts=disabled +org.eclipse.jdt.core.compiler.problem.incompatibleNonInheritedInterfaceMethod=warning +org.eclipse.jdt.core.compiler.problem.incompleteEnumSwitch=warning +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.missingDefaultCase=ignore +org.eclipse.jdt.core.compiler.problem.missingDeprecatedAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingEnumCaseDespiteDefault=disabled +org.eclipse.jdt.core.compiler.problem.missingHashCodeMethod=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotation=ignore +org.eclipse.jdt.core.compiler.problem.missingOverrideAnnotationForInterfaceMethodImplementation=enabled +org.eclipse.jdt.core.compiler.problem.missingSerialVersion=ignore +org.eclipse.jdt.core.compiler.problem.missingSynchronizedOnInheritedMethod=ignore +org.eclipse.jdt.core.compiler.problem.noEffectAssignment=warning +org.eclipse.jdt.core.compiler.problem.noImplicitStringConversion=warning +org.eclipse.jdt.core.compiler.problem.nonExternalizedStringLiteral=ignore +org.eclipse.jdt.core.compiler.problem.nonnullParameterAnnotationDropped=warning +org.eclipse.jdt.core.compiler.problem.nonnullTypeVariableFromLegacyInvocation=warning +org.eclipse.jdt.core.compiler.problem.nullAnnotationInferenceConflict=error +org.eclipse.jdt.core.compiler.problem.nullReference=warning +org.eclipse.jdt.core.compiler.problem.nullSpecViolation=error +org.eclipse.jdt.core.compiler.problem.nullUncheckedConversion=warning +org.eclipse.jdt.core.compiler.problem.overridingPackageDefaultMethod=warning +org.eclipse.jdt.core.compiler.problem.parameterAssignment=ignore +org.eclipse.jdt.core.compiler.problem.pessimisticNullAnalysisForFreeTypeVariables=warning +org.eclipse.jdt.core.compiler.problem.possibleAccidentalBooleanAssignment=ignore +org.eclipse.jdt.core.compiler.problem.potentialNullReference=ignore +org.eclipse.jdt.core.compiler.problem.potentiallyUnclosedCloseable=ignore +org.eclipse.jdt.core.compiler.problem.rawTypeReference=warning +org.eclipse.jdt.core.compiler.problem.redundantNullAnnotation=warning +org.eclipse.jdt.core.compiler.problem.redundantNullCheck=ignore +org.eclipse.jdt.core.compiler.problem.redundantSpecificationOfTypeArguments=ignore +org.eclipse.jdt.core.compiler.problem.redundantSuperinterface=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBePotentiallyStatic=ignore +org.eclipse.jdt.core.compiler.problem.reportMethodCanBeStatic=ignore +org.eclipse.jdt.core.compiler.problem.specialParameterHidingField=disabled +org.eclipse.jdt.core.compiler.problem.staticAccessReceiver=warning +org.eclipse.jdt.core.compiler.problem.suppressOptionalErrors=disabled +org.eclipse.jdt.core.compiler.problem.suppressWarnings=enabled +org.eclipse.jdt.core.compiler.problem.syntacticNullAnalysisForFields=disabled +org.eclipse.jdt.core.compiler.problem.syntheticAccessEmulation=ignore +org.eclipse.jdt.core.compiler.problem.terminalDeprecation=warning +org.eclipse.jdt.core.compiler.problem.typeParameterHiding=warning +org.eclipse.jdt.core.compiler.problem.unavoidableGenericTypeProblems=enabled +org.eclipse.jdt.core.compiler.problem.uncheckedTypeOperation=warning +org.eclipse.jdt.core.compiler.problem.unclosedCloseable=warning +org.eclipse.jdt.core.compiler.problem.undocumentedEmptyBlock=ignore +org.eclipse.jdt.core.compiler.problem.unhandledWarningToken=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentType=warning +org.eclipse.jdt.core.compiler.problem.unlikelyCollectionMethodArgumentTypeStrict=disabled +org.eclipse.jdt.core.compiler.problem.unlikelyEqualsArgumentType=info +org.eclipse.jdt.core.compiler.problem.unnecessaryElse=ignore +org.eclipse.jdt.core.compiler.problem.unnecessaryTypeCheck=ignore +org.eclipse.jdt.core.compiler.problem.unqualifiedFieldAccess=ignore +org.eclipse.jdt.core.compiler.problem.unusedDeclaredThrownException=ignore +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.unusedExceptionParameter=ignore +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.unusedObjectAllocation=ignore +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.unusedTypeParameter=ignore +org.eclipse.jdt.core.compiler.problem.unusedWarningToken=warning +org.eclipse.jdt.core.compiler.problem.varargsArgumentNeedCast=warning +org.eclipse.jdt.core.compiler.source=1.8 diff --git a/build.xml b/build.xml index 1818a76..43f0d2f 100644 --- a/build.xml +++ b/build.xml @@ -1,12 +1,12 @@ - - + + - + @@ -15,4 +15,3 @@ - diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java b/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java index 72e87a8..f341483 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java @@ -1,29 +1,33 @@ package org.openstreetmap.josm.plugins.auto_tools; +import static org.openstreetmap.josm.gui.mappaint.mapcss.ExpressionFactory.Functions.tr; + import java.awt.event.KeyEvent; -import javax.swing.*; -import org.openstreetmap.josm.Main; + +import javax.swing.JMenu; +import javax.swing.JMenuItem; +import javax.swing.JSeparator; + +import org.openstreetmap.josm.gui.MainApplication; import org.openstreetmap.josm.gui.help.HelpUtil; -import static org.openstreetmap.josm.gui.mappaint.mapcss.ExpressionFactory.Functions.tr; import org.openstreetmap.josm.plugins.Plugin; import org.openstreetmap.josm.plugins.PluginInformation; import org.openstreetmap.josm.plugins.auto_tools.actions.MergeBuildingsAction; -import org.openstreetmap.josm.plugins.auto_tools.actions.SplittingTool; import org.openstreetmap.josm.plugins.auto_tools.actions.ReplaceBuilding; +import org.openstreetmap.josm.plugins.auto_tools.actions.SplittingTool; public class AutoTools extends Plugin { public AutoTools(PluginInformation info) { super(info); - final JMenu loadTaskMenu = Main.main.menu.addMenu( + final JMenu loadTaskMenu = MainApplication.getMenu().addMenu( "Auto Tools", tr("Auto Tools"), KeyEvent.VK_K, - Main.main.menu.getDefaultMenuPos(), HelpUtil.ht("/Plugin/task") + MainApplication.getMenu().getDefaultMenuPos(), HelpUtil.ht("/Plugin/task") ); loadTaskMenu.add(new JMenuItem(new MergeBuildingsAction())); loadTaskMenu.add(new JSeparator()); - loadTaskMenu.add(new JMenuItem(new SplittingTool(Main.map))); + loadTaskMenu.add(new JMenuItem(new SplittingTool(MainApplication.getMap()))); loadTaskMenu.add(new JSeparator()); loadTaskMenu.add(new JMenuItem(new ReplaceBuilding())); - } } diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java index b0b2ca4..7bc77e8 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java @@ -1,16 +1,20 @@ package org.openstreetmap.josm.plugins.auto_tools.actions; +import static org.openstreetmap.josm.gui.mappaint.mapcss.ExpressionFactory.Functions.tr; +import static org.openstreetmap.josm.tools.I18n.trn; + import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.util.ArrayList; -import java.util.Collection; import java.util.Collections; import java.util.Hashtable; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; + import javax.swing.JOptionPane; + import org.openstreetmap.josm.Main; import org.openstreetmap.josm.actions.JoinAreasAction; import org.openstreetmap.josm.actions.JosmAction; @@ -25,8 +29,7 @@ import org.openstreetmap.josm.data.osm.Tag; import org.openstreetmap.josm.data.osm.TagCollection; import org.openstreetmap.josm.data.osm.Way; -import static org.openstreetmap.josm.gui.mappaint.mapcss.ExpressionFactory.Functions.tr; -import static org.openstreetmap.josm.tools.I18n.trn; +import org.openstreetmap.josm.gui.MainApplication; import org.openstreetmap.josm.tools.Shortcut; /** @@ -42,10 +45,10 @@ public MergeBuildingsAction() { @Override public void actionPerformed(ActionEvent e) { - if (Main.getLayerManager().getEditDataSet() != null) { + if (MainApplication.getLayerManager().getEditDataSet() != null) { Relation rela = null; - LinkedList ways = new LinkedList(Main.getLayerManager().getEditDataSet().getSelectedWays()); + LinkedList ways = new LinkedList(MainApplication.getLayerManager().getEditDataSet().getSelectedWays()); if (ways.isEmpty() || ways.size() == 1) { JOptionPane.showMessageDialog(null, "Select at least two ways"); } else { @@ -170,7 +173,6 @@ protected Command MergeAllTags(Relation relation, List selection, } protected Double findArea(Way w) { - double length = 0.0; Node lastN = null; double wayArea = 0.0; Double firstSegLength = null; @@ -184,9 +186,8 @@ protected Double findArea(Way w) { if (isCircle && Math.abs(firstSegLength - segLength) > 0.000001) { isCircle = false; } - length += segLength; wayArea += (calcX(n.getCoor()) * calcY(lastN.getCoor())) - - (calcY(n.getCoor()) * calcX(lastN.getCoor())); + - (calcY(n.getCoor()) * calcX(lastN.getCoor())); } lastN = n; } diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java index c29c494..9f5d10c 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java @@ -12,6 +12,7 @@ import org.openstreetmap.josm.Main; import org.openstreetmap.josm.actions.JosmAction; import org.openstreetmap.josm.data.osm.OsmPrimitive; +import org.openstreetmap.josm.gui.MainApplication; import org.openstreetmap.josm.gui.Notification; import org.openstreetmap.josm.tools.Shortcut; import java.util.Collection; @@ -33,7 +34,7 @@ import org.openstreetmap.josm.data.osm.RelationMember; import org.openstreetmap.josm.data.osm.TagCollection; import org.openstreetmap.josm.data.osm.Way; -import org.openstreetmap.josm.gui.DefaultNameFormatter; +import org.openstreetmap.josm.data.osm.DefaultNameFormatter; import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog; import static org.openstreetmap.josm.gui.mappaint.mapcss.ExpressionFactory.Functions.tr; import org.openstreetmap.josm.plugins.utilsplugin2.replacegeometry.*; @@ -52,11 +53,11 @@ public ReplaceBuilding() { @Override public void actionPerformed(ActionEvent e) { - if (Main.getLayerManager().getEditDataSet() == null) { + if (MainApplication.getLayerManager().getEditDataSet() == null) { return; } - List selection = new ArrayList<>(Main.getLayerManager().getEditDataSet().getSelected()); + List selection = new ArrayList<>(MainApplication.getLayerManager().getEditDataSet().getSelected()); if (selection.isEmpty()) { new Notification(tr("Select at least one building.")).setIcon(JOptionPane.WARNING_MESSAGE).show(); return; @@ -71,7 +72,7 @@ public void actionPerformed(ActionEvent e) { Set newWays = new HashSet<>(); if (selectedWays.size() == 1) { - newWays = addWaysIntersectingWaysRecursively(Main.getLayerManager().getEditDataSet().getWays(), selectedWays, newWays); + newWays = addWaysIntersectingWaysRecursively(MainApplication.getLayerManager().getEditDataSet().getWays(), selectedWays, newWays); if (newWays.size() > 2) { new Notification(tr("Select two buildings.")).setIcon(JOptionPane.WARNING_MESSAGE).show(); return; @@ -249,7 +250,7 @@ public static ReplaceGeometryCommand buildUpgradeNodeCommand(Node subjectNode, O commands.add(new DeleteCommand(subjectNode)); } - Main.getLayerManager().getEditDataSet().setSelected(referenceObject); + MainApplication.getLayerManager().getEditDataSet().setSelected(referenceObject); return new ReplaceGeometryCommand( tr("Replace geometry for node {0}", subjectNode.getDisplayName(DefaultNameFormatter.getInstance())), @@ -288,7 +289,7 @@ public static ReplaceGeometryCommand buildReplaceWayWithNewCommand(List sel public static ReplaceGeometryCommand buildReplaceWayCommand(Way subjectWay, Way referenceWay) { - Area a = Main.getLayerManager().getEditDataSet().getDataSourceArea(); + Area a = MainApplication.getLayerManager().getEditDataSet().getDataSourceArea(); if (!isInArea(subjectWay, a) || !isInArea(referenceWay, a)) { throw new ReplaceGeometryException(tr("The ways must be entirely within the downloaded area.")); } @@ -410,7 +411,7 @@ public static ReplaceGeometryCommand buildReplaceWayCommand(Way subjectWay, Way } // Remove geometry way from selection - Main.getLayerManager().getEditDataSet().clearSelection(referenceWay); + MainApplication.getLayerManager().getEditDataSet().clearSelection(referenceWay); // And delete old geometry way commands.add(new DeleteCommand(referenceWay)); @@ -524,10 +525,10 @@ public static Set addWaysIntersectingWaysRecursively(Collection allWay foundWays = newFoundWays; newWays.addAll(newFoundWays); level++; - if (c > Main.pref.getInteger("selection.maxfoundways.intersection", 500)) { + if (c > Main.pref.getInt("selection.maxfoundways.intersection", 500)) { new Notification(tr("Too many ways are added: {0}!" + c)).setIcon(JOptionPane.WARNING_MESSAGE).show(); } - } while (c > 0 && level < Main.pref.getInteger("selection.maxrecursion", 15)); + } while (c > 0 && level < Main.pref.getInt("selection.maxrecursion", 15)); return newWays; } diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index cd78096..daf8052 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -1,5 +1,7 @@ package org.openstreetmap.josm.plugins.auto_tools.actions; +import static org.openstreetmap.josm.tools.I18n.tr; + import java.awt.Point; import java.awt.event.KeyEvent; import java.awt.event.KeyListener; @@ -14,16 +16,16 @@ import java.util.List; import java.util.Map; import java.util.Set; + import javax.swing.JOptionPane; + import org.openstreetmap.josm.Main; -import org.openstreetmap.josm.actions.SplitWayAction.SplitWayResult; -import static org.openstreetmap.josm.actions.SplitWayAction.buildSplitChunks; -import static org.openstreetmap.josm.actions.SplitWayAction.splitWay; import org.openstreetmap.josm.actions.mapmode.MapMode; import org.openstreetmap.josm.command.AddCommand; import org.openstreetmap.josm.command.ChangeCommand; import org.openstreetmap.josm.command.Command; import org.openstreetmap.josm.command.SequenceCommand; +import org.openstreetmap.josm.command.SplitWayCommand; import org.openstreetmap.josm.data.coor.EastNorth; import org.openstreetmap.josm.data.osm.DataSet; import org.openstreetmap.josm.data.osm.Node; @@ -31,11 +33,10 @@ import org.openstreetmap.josm.data.osm.Relation; import org.openstreetmap.josm.data.osm.Way; import org.openstreetmap.josm.data.osm.WaySegment; +import org.openstreetmap.josm.gui.MainApplication; import org.openstreetmap.josm.gui.MapFrame; import org.openstreetmap.josm.gui.NavigatableComponent; import org.openstreetmap.josm.gui.Notification; -import org.openstreetmap.josm.gui.layer.OsmDataLayer; -import static org.openstreetmap.josm.tools.I18n.tr; import org.openstreetmap.josm.tools.ImageProvider; import org.openstreetmap.josm.tools.Pair; import org.openstreetmap.josm.tools.Shortcut; @@ -65,26 +66,26 @@ public void enterMode() { } super.enterMode(); toleranceMultiplier = 0.01 * NavigatableComponent.PROP_SNAP_DISTANCE.get(); - Main.map.mapView.addMouseListener(this); + MainApplication.getMap().mapView.addMouseListener(this); } @Override public void exitMode() { super.exitMode(); - Main.map.mapView.removeMouseListener(this); + MainApplication.getMap().mapView.removeMouseListener(this); } @Override public void mouseReleased(MouseEvent e) { - if (e.getButton() == MouseEvent.BUTTON3 || e.getButton() != MouseEvent.BUTTON1 || !Main.map.mapView.isActiveLayerDrawable()) { + if (e.getButton() == MouseEvent.BUTTON3 || e.getButton() != MouseEvent.BUTTON1 || !MainApplication.getMap().mapView.isActiveLayerDrawable()) { return; } // Focus to enable shortcuts - Main.map.mapView.requestFocus(); - Main.map.mapView.addKeyListener(new KeyListener() { + MainApplication.getMap().mapView.requestFocus(); + MainApplication.getMap().mapView.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { @@ -92,7 +93,7 @@ public void keyTyped(KeyEvent e) { @Override public void keyPressed(KeyEvent e) { - if (e.getKeyCode() == Main.map.mapMode.getShortcut().getAssignedKey() && Main.getLayerManager().getEditLayer()!=null) { + if (e.getKeyCode() == MainApplication.getMap().mapMode.getShortcut().getAssignedKey() && MainApplication.getLayerManager().getEditLayer()!=null) { counter++; } } @@ -100,7 +101,7 @@ public void keyPressed(KeyEvent e) { @Override public void keyReleased(KeyEvent e) { if (counter != 0) { - Main.map.selectMapMode(Main.map.mapModeSelect); + MainApplication.getMap().selectMapMode(MainApplication.getMap().mapModeSelect); counter = 0; } } @@ -111,7 +112,7 @@ public void keyReleased(KeyEvent e) { updateKeyModifiers(e); mousePos = e.getPoint(); - DataSet ds = Main.getLayerManager().getEditDataSet(); + DataSet ds = MainApplication.getLayerManager().getEditDataSet(); Collection cmds = new LinkedList<>(); Collection newSelection = new LinkedList<>(ds.getSelected()); @@ -121,24 +122,24 @@ public void keyReleased(KeyEvent e) { boolean newNode = false; Node n = null; - n = Main.map.mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable); + n = MainApplication.getMap().mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable); if (OsmPrimitive.getFilteredList(newSelection, Node.class).size() == 1 && OsmPrimitive.getFilteredList(newSelection, Way.class).isEmpty()) { newSelection.clear(); - Main.getLayerManager().getEditDataSet().setSelected(newSelection); + MainApplication.getLayerManager().getEditDataSet().setSelected(newSelection); } if (n != null) { if (!newSelection.isEmpty()) { SplitRoad(n, ds, newSelection); - Main.map.selectMapMode(Main.map.mapModeSelect); + MainApplication.getMap().selectMapMode(MainApplication.getMap().mapModeSelect); return; } } else { if (n != null) { // do not add new node if there is some node within snapping distance EastNorth foundPoint = n.getEastNorth(); - double tolerance = Main.map.mapView.getDist100Pixel() * toleranceMultiplier; + double tolerance = MainApplication.getMap().mapView.getDist100Pixel() * toleranceMultiplier; if (foundPoint.distance(foundPoint) > tolerance) { n = new Node(foundPoint); newNode = true; @@ -146,7 +147,7 @@ public void keyReleased(KeyEvent e) { } else { // n==null, no node found in clicked area - EastNorth mouseEN = Main.map.mapView.getEastNorth(e.getX(), e.getY()); + EastNorth mouseEN = MainApplication.getMap().mapView.getEastNorth(e.getX(), e.getY()); n = new Node(mouseEN); newNode = true; } @@ -162,10 +163,10 @@ public void keyReleased(KeyEvent e) { ); return; } - cmds.add(new AddCommand(n)); + cmds.add(new AddCommand(ds, n)); // Insert the node into all the nearby way segments - List wss = Main.map.mapView.getNearestWaySegments(Main.map.mapView.getPoint(n), OsmPrimitive::isSelectable); + List wss = MainApplication.getMap().mapView.getNearestWaySegments(MainApplication.getMap().mapView.getPoint(n), OsmPrimitive::isSelectable); insertNodeIntoAllNearbySegments(wss, n, newSelection, cmds, replacedWays, reuseWays); } @@ -174,11 +175,11 @@ public void keyReleased(KeyEvent e) { //Delete the created node if not in a way if (OsmPrimitive.getFilteredList(n.getReferrers(), Way.class).isEmpty()) { - Main.getLayerManager().getEditDataSet().removePrimitive(n.getPrimitiveId()); + MainApplication.getLayerManager().getEditDataSet().removePrimitive(n.getPrimitiveId()); } else { SplitRoad(n, ds, newSelection); - Main.map.selectMapMode(Main.map.mapModeSelect); + MainApplication.getMap().selectMapMode(MainApplication.getMap().mapModeSelect); } } @@ -250,7 +251,7 @@ private static void adjustNode(Collection> segs, Node n) { // only adjust to intersection if within snapToIntersectionThreshold pixel of mouse click; otherwise // fall through to default action. // (for semi-parallel lines, intersection might be miles away!) - if (Main.map.mapView.getPoint2D(n).distance(Main.map.mapView.getPoint2D(intersection)) < snapToIntersectionThreshold) { + if (MainApplication.getMap().mapView.getPoint2D(n).distance(MainApplication.getMap().mapView.getPoint2D(intersection)) < snapToIntersectionThreshold) { n.setEastNorth(intersection); return; } @@ -353,13 +354,13 @@ public void SplitRoad(Node node, DataSet ds, Collection newSelecti selectedWay = applicableWays.get(0); } - List> wayChunks = buildSplitChunks(selectedWay, selectedNodes); + List> wayChunks = SplitWayCommand.buildSplitChunks(selectedWay, selectedNodes); if (wayChunks != null) { List sel = new ArrayList(selectedWays.size() + selectedRelations.size()); sel.addAll(selectedWays); sel.addAll(selectedRelations); - SplitWayResult result = splitWay(Main.getLayerManager().getEditLayer(), selectedWay, wayChunks, sel); - Main.main.undoRedo.add(result.getCommand()); + SplitWayCommand result = SplitWayCommand.splitWay(selectedWay, wayChunks, sel); + Main.main.undoRedo.add(result); //Select the way to tag Way way2 = result.getNewWays().get(0); @@ -452,21 +453,21 @@ public static void selectTheWay(Way way, Way way2, Node n1, Node n2, Node common try { if ((ws1 > 2 && ws2 > 2) || (ws1 <= 2 && ws2 <= 2)) { if (way.getLength() > way2.getLength()) { - Main.getLayerManager().getEditDataSet().setSelected(way2); + MainApplication.getLayerManager().getEditDataSet().setSelected(way2); } else { - Main.getLayerManager().getEditDataSet().setSelected(way); + MainApplication.getLayerManager().getEditDataSet().setSelected(way); } } else if (ws1 > 2 && ws2 <= 2) { if (wsc > 2) { - Main.getLayerManager().getEditDataSet().setSelected(way2); + MainApplication.getLayerManager().getEditDataSet().setSelected(way2); } else { - Main.getLayerManager().getEditDataSet().setSelected(way); + MainApplication.getLayerManager().getEditDataSet().setSelected(way); } } else if (ws1 <= 2 && ws2 > 2) { if (wsc > 2) { - Main.getLayerManager().getEditDataSet().setSelected(way); + MainApplication.getLayerManager().getEditDataSet().setSelected(way); } else { - Main.getLayerManager().getEditDataSet().setSelected(way2); + MainApplication.getLayerManager().getEditDataSet().setSelected(way2); } } From 14cd3330818647bfd319f2097c0ee1e41f35e35c Mon Sep 17 00:00:00 2001 From: Vincent Privat Date: Sun, 28 Jan 2018 21:36:02 +0100 Subject: [PATCH 06/46] update svn:ignore From 5632c51671915d55bf6d6af68849adc09ee530c4 Mon Sep 17 00:00:00 2001 From: stoecker Date: Tue, 30 Jan 2018 18:58:10 +0100 Subject: [PATCH 07/46] see #josm15734 - fix parsing and I18n error --- src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java | 4 ++-- .../josm/plugins/auto_tools/actions/SplittingTool.java | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java b/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java index f341483..78e416a 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java @@ -20,8 +20,8 @@ public class AutoTools extends Plugin { public AutoTools(PluginInformation info) { super(info); - final JMenu loadTaskMenu = MainApplication.getMenu().addMenu( - "Auto Tools", tr("Auto Tools"), KeyEvent.VK_K, + final JMenu loadTaskMenu = MainApplication.getMenu() + .addMenu("Auto Tools", tr("Auto Tools"), KeyEvent.VK_K, MainApplication.getMenu().getDefaultMenuPos(), HelpUtil.ht("/Plugin/task") ); loadTaskMenu.add(new JMenuItem(new MergeBuildingsAction())); diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index daf8052..4fa0d25 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -55,7 +55,7 @@ public class SplittingTool extends MapMode { public SplittingTool(MapFrame mapFrame) { super(tr("Knife tool"), "iconknife", tr("Split way."), - Shortcut.registerShortcut("mapmode:KnifeTool", tr("Mode:KnifeTool", tr("Split")), KeyEvent.VK_T, Shortcut.DIRECT), + Shortcut.registerShortcut("mapmode:KnifeTool", tr("Mode: {0}", tr("Knife tool")), KeyEvent.VK_T, Shortcut.DIRECT), ImageProvider.getCursor("crosshair", null)); } From e08d55707111e97ee64df39f0eab5d9558fc9f2c Mon Sep 17 00:00:00 2001 From: Vincent Privat Date: Sun, 18 Feb 2018 17:34:37 +0100 Subject: [PATCH 08/46] fix https://josm.openstreetmap.de/ticket/15968 - avoid NoSuchElementException --- .../josm/plugins/auto_tools/actions/SplittingTool.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index 4fa0d25..c7b9db5 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -170,8 +170,10 @@ public void keyReleased(KeyEvent e) { insertNodeIntoAllNearbySegments(wss, n, newSelection, cmds, replacedWays, reuseWays); } - Command c = new SequenceCommand("Add node into way and connect", cmds); - Main.main.undoRedo.add(c); + if (!cmds.isEmpty()) { + Command c = new SequenceCommand("Add node into way and connect", cmds); + Main.main.undoRedo.add(c); + } //Delete the created node if not in a way if (OsmPrimitive.getFilteredList(n.getReferrers(), Way.class).isEmpty()) { From 4e508d1946029ccc2a7be0c9a06fcea760fd477c Mon Sep 17 00:00:00 2001 From: Vincent Privat Date: Sun, 18 Feb 2018 17:43:13 +0100 Subject: [PATCH 09/46] ignore javadoc folder --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 53a12e6..815afda 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,5 @@ ################### nbproject/ build/ -*.class \ No newline at end of file +*.class +/javadoc From 2f68fb4a78004a43568740d439d6823de32ba51c Mon Sep 17 00:00:00 2001 From: Vincent Privat Date: Sun, 18 Feb 2018 18:10:18 +0100 Subject: [PATCH 10/46] bump version --- build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.xml b/build.xml index 43f0d2f..fb2b50b 100644 --- a/build.xml +++ b/build.xml @@ -2,7 +2,7 @@ - + From 8a6d0d8fb48b4a2762d0ccb209828e82db58d446 Mon Sep 17 00:00:00 2001 From: stoecker Date: Sat, 24 Feb 2018 13:22:47 +0100 Subject: [PATCH 11/46] fix i18n --- .../josm/plugins/auto_tools/actions/ReplaceBuilding.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java index 9f5d10c..465c3da 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java @@ -77,7 +77,7 @@ public void actionPerformed(ActionEvent e) { new Notification(tr("Select two buildings.")).setIcon(JOptionPane.WARNING_MESSAGE).show(); return; } else if (newWays.size() < 2) { - new Notification(tr("There's no building to replace")).setIcon(JOptionPane.WARNING_MESSAGE).show(); + new Notification(tr("There is no building to replace")).setIcon(JOptionPane.WARNING_MESSAGE).show(); return; } selection.clear(); From f705d21c784b4f8ece2ab6fde45ce3db84813966 Mon Sep 17 00:00:00 2001 From: Vincent Privat Date: Tue, 24 Apr 2018 20:14:02 +0200 Subject: [PATCH 12/46] fix #15 - NPE --- build.xml | 2 +- .../auto_tools/actions/SplittingTool.java | 17 +++++++---------- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/build.xml b/build.xml index fb2b50b..b5d2370 100644 --- a/build.xml +++ b/build.xml @@ -2,7 +2,7 @@ - + diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index c7b9db5..e4648d4 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -3,8 +3,8 @@ import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.Point; +import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; import java.awt.event.MouseEvent; import java.util.ArrayList; import java.util.Collection; @@ -85,15 +85,11 @@ public void mouseReleased(MouseEvent e) { // Focus to enable shortcuts MainApplication.getMap().mapView.requestFocus(); - MainApplication.getMap().mapView.addKeyListener(new KeyListener() { - @Override - public void keyTyped(KeyEvent e) { - - } - + MainApplication.getMap().mapView.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { - if (e.getKeyCode() == MainApplication.getMap().mapMode.getShortcut().getAssignedKey() && MainApplication.getLayerManager().getEditLayer()!=null) { + if (MainApplication.getMap() != null && e.getKeyCode() == MainApplication.getMap().mapMode.getShortcut().getAssignedKey() + && MainApplication.getLayerManager().getEditLayer()!=null) { counter++; } } @@ -101,11 +97,12 @@ public void keyPressed(KeyEvent e) { @Override public void keyReleased(KeyEvent e) { if (counter != 0) { - MainApplication.getMap().selectMapMode(MainApplication.getMap().mapModeSelect); + if (MainApplication.getMap() != null) { + MainApplication.getMap().selectMapMode(MainApplication.getMap().mapModeSelect); + } counter = 0; } } - }); //Control key modifiers From b928f61b551d5c8ed42c7fe07195dba4a606d40a Mon Sep 17 00:00:00 2001 From: Vincent Privat Date: Sun, 17 Jun 2018 20:40:59 +0200 Subject: [PATCH 13/46] update to JOSM 13922 --- build.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index b5d2370..eb25931 100644 --- a/build.xml +++ b/build.xml @@ -1,8 +1,8 @@ - - + + From fe6d32c309f7797419b45b5925325ccddeaf0d7b Mon Sep 17 00:00:00 2001 From: Vincent Privat Date: Sat, 18 Aug 2018 03:26:44 +0200 Subject: [PATCH 14/46] update to JOSM 14153 --- build.xml | 2 +- .../actions/MergeBuildingsAction.java | 4 +- .../auto_tools/actions/ReplaceBuilding.java | 45 ++++++++++--------- .../auto_tools/actions/SplittingTool.java | 13 +++--- 4 files changed, 35 insertions(+), 29 deletions(-) diff --git a/build.xml b/build.xml index eb25931..46c6608 100644 --- a/build.xml +++ b/build.xml @@ -1,7 +1,7 @@ - + diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java index 7bc77e8..1292480 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java @@ -15,12 +15,12 @@ import javax.swing.JOptionPane; -import org.openstreetmap.josm.Main; import org.openstreetmap.josm.actions.JoinAreasAction; import org.openstreetmap.josm.actions.JosmAction; import org.openstreetmap.josm.command.ChangePropertyCommand; import org.openstreetmap.josm.command.Command; import org.openstreetmap.josm.command.SequenceCommand; +import org.openstreetmap.josm.data.UndoRedoHandler; import org.openstreetmap.josm.data.coor.LatLon; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.data.osm.OsmPrimitive; @@ -128,7 +128,7 @@ public void actionPerformed(ActionEvent e) { } sel.addAll(ways); - Main.main.undoRedo.add(new SequenceCommand(tr("revert tags"), MergeAllTags(rela, sel, tagCollection))); + UndoRedoHandler.getInstance().add(new SequenceCommand(tr("revert tags"), MergeAllTags(rela, sel, tagCollection))); JosmAction build = new JoinAreasAction(); build.actionPerformed(e); } diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java index 465c3da..fb4fba3 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java @@ -1,49 +1,54 @@ package org.openstreetmap.josm.plugins.auto_tools.actions; -import edu.princeton.cs.algs4.AssignmentProblem; +import static org.openstreetmap.josm.gui.mappaint.mapcss.ExpressionFactory.Functions.tr; +import static org.openstreetmap.josm.plugins.utilsplugin2.replacegeometry.ReplaceGeometryUtils.buildReplaceNodeWithNewCommand; + import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import java.awt.geom.Area; import java.util.AbstractMap; import java.util.ArrayList; import java.util.Arrays; -import java.util.List; -import javax.swing.JOptionPane; -import org.openstreetmap.josm.Main; -import org.openstreetmap.josm.actions.JosmAction; -import org.openstreetmap.josm.data.osm.OsmPrimitive; -import org.openstreetmap.josm.gui.MainApplication; -import org.openstreetmap.josm.gui.Notification; -import org.openstreetmap.josm.tools.Shortcut; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Hashtable; import java.util.LinkedList; +import java.util.List; import java.util.Map; import java.util.Set; + +import javax.swing.JOptionPane; + +import org.openstreetmap.josm.actions.JosmAction; import org.openstreetmap.josm.command.ChangeNodesCommand; import org.openstreetmap.josm.command.ChangePropertyCommand; import org.openstreetmap.josm.command.Command; import org.openstreetmap.josm.command.DeleteCommand; import org.openstreetmap.josm.command.MoveCommand; +import org.openstreetmap.josm.data.UndoRedoHandler; import org.openstreetmap.josm.data.coor.LatLon; +import org.openstreetmap.josm.data.osm.DefaultNameFormatter; import org.openstreetmap.josm.data.osm.Node; +import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.data.osm.Relation; import org.openstreetmap.josm.data.osm.RelationMember; import org.openstreetmap.josm.data.osm.TagCollection; import org.openstreetmap.josm.data.osm.Way; -import org.openstreetmap.josm.data.osm.DefaultNameFormatter; +import org.openstreetmap.josm.gui.MainApplication; +import org.openstreetmap.josm.gui.Notification; import org.openstreetmap.josm.gui.conflict.tags.CombinePrimitiveResolverDialog; -import static org.openstreetmap.josm.gui.mappaint.mapcss.ExpressionFactory.Functions.tr; -import org.openstreetmap.josm.plugins.utilsplugin2.replacegeometry.*; -import static org.openstreetmap.josm.plugins.utilsplugin2.replacegeometry.ReplaceGeometryUtils.*; +import org.openstreetmap.josm.plugins.utilsplugin2.replacegeometry.ReplaceGeometryCommand; +import org.openstreetmap.josm.plugins.utilsplugin2.replacegeometry.ReplaceGeometryException; +import org.openstreetmap.josm.spi.preferences.Config; import org.openstreetmap.josm.tools.Geometry; import org.openstreetmap.josm.tools.Pair; - +import org.openstreetmap.josm.tools.Shortcut; import org.openstreetmap.josm.tools.UserCancelException; +import edu.princeton.cs.algs4.AssignmentProblem; + public class ReplaceBuilding extends JosmAction { public ReplaceBuilding() { @@ -104,7 +109,7 @@ public void actionPerformed(ActionEvent e) { return; } - Main.main.undoRedo.add(replaceCommand); + UndoRedoHandler.getInstance().add(replaceCommand); } catch (IllegalArgumentException | ReplaceGeometryException ex) { new Notification(ex.getMessage()).setIcon(JOptionPane.WARNING_MESSAGE).show(); } @@ -325,7 +330,7 @@ public static ReplaceGeometryCommand buildReplaceWayCommand(Way subjectWay, Way } } - boolean useRobust = Main.pref.getBoolean("utilsplugin2.replace-geometry.robustAssignment", true); + boolean useRobust = Config.getPref().getBoolean("utilsplugin2.replace-geometry.robustAssignment", true); // Find new nodes that are closest to the old ones, remove matching old ones from the pool // Assign node moves with least overall distance moved @@ -342,7 +347,7 @@ public static ReplaceGeometryCommand buildReplaceWayCommand(Way subjectWay, Way } } - double maxDistance = Double.parseDouble(Main.pref.get("utilsplugin2.replace-geometry.max-distance", "1")); + double maxDistance = Double.parseDouble(Config.getPref().get("utilsplugin2.replace-geometry.max-distance", "1")); for (int i = 0; i < nLen; i++) { for (int j = 0; j < gLen; j++) { double d = nodePool.get(i).getCoor().distance(geometryPool.get(j).getCoor()); @@ -434,7 +439,7 @@ protected static Node findNearestNode(Node node, Collection nodes) { Node nearest = null; // TODO: use meters instead of degrees, but do it fast - double distance = Double.parseDouble(Main.pref.get("utilsplugin2.replace-geometry.max-distance", "1")); + double distance = Double.parseDouble(Config.getPref().get("utilsplugin2.replace-geometry.max-distance", "1")); LatLon coor = node.getCoor(); for (Node n : nodes) { @@ -525,10 +530,10 @@ public static Set addWaysIntersectingWaysRecursively(Collection allWay foundWays = newFoundWays; newWays.addAll(newFoundWays); level++; - if (c > Main.pref.getInt("selection.maxfoundways.intersection", 500)) { + if (c > Config.getPref().getInt("selection.maxfoundways.intersection", 500)) { new Notification(tr("Too many ways are added: {0}!" + c)).setIcon(JOptionPane.WARNING_MESSAGE).show(); } - } while (c > 0 && level < Main.pref.getInt("selection.maxrecursion", 15)); + } while (c > 0 && level < Config.getPref().getInt("selection.maxrecursion", 15)); return newWays; } diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index e4648d4..11e11ca 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -19,13 +19,13 @@ import javax.swing.JOptionPane; -import org.openstreetmap.josm.Main; import org.openstreetmap.josm.actions.mapmode.MapMode; import org.openstreetmap.josm.command.AddCommand; import org.openstreetmap.josm.command.ChangeCommand; import org.openstreetmap.josm.command.Command; import org.openstreetmap.josm.command.SequenceCommand; import org.openstreetmap.josm.command.SplitWayCommand; +import org.openstreetmap.josm.data.UndoRedoHandler; import org.openstreetmap.josm.data.coor.EastNorth; import org.openstreetmap.josm.data.osm.DataSet; import org.openstreetmap.josm.data.osm.Node; @@ -38,6 +38,7 @@ import org.openstreetmap.josm.gui.NavigatableComponent; import org.openstreetmap.josm.gui.Notification; import org.openstreetmap.josm.tools.ImageProvider; +import org.openstreetmap.josm.tools.Logging; import org.openstreetmap.josm.tools.Pair; import org.openstreetmap.josm.tools.Shortcut; import org.openstreetmap.josm.tools.Utils; @@ -153,7 +154,7 @@ public void keyReleased(KeyEvent e) { if (newNode) { if (n.getCoor().isOutSideWorld()) { JOptionPane.showMessageDialog( - Main.parent, + MainApplication.getMainFrame(), tr("Cannot add a node outside of the world."), tr("Warning"), JOptionPane.WARNING_MESSAGE @@ -169,7 +170,7 @@ public void keyReleased(KeyEvent e) { if (!cmds.isEmpty()) { Command c = new SequenceCommand("Add node into way and connect", cmds); - Main.main.undoRedo.add(c); + UndoRedoHandler.getInstance().add(c); } //Delete the created node if not in a way @@ -359,7 +360,7 @@ public void SplitRoad(Node node, DataSet ds, Collection newSelecti sel.addAll(selectedWays); sel.addAll(selectedRelations); SplitWayCommand result = SplitWayCommand.splitWay(selectedWay, wayChunks, sel); - Main.main.undoRedo.add(result); + UndoRedoHandler.getInstance().add(result); //Select the way to tag Way way2 = result.getNewWays().get(0); @@ -375,7 +376,7 @@ public void SplitRoad(Node node, DataSet ds, Collection newSelecti } } catch (Exception e) { - e.printStackTrace(); + Logging.error(e); } } @@ -471,7 +472,7 @@ public static void selectTheWay(Way way, Way way2, Node n1, Node n2, Node common } } catch (Exception e) { - e.printStackTrace(); + Logging.error(e); } } From 7065087256c07e035e0101136e07dbb9d124c406 Mon Sep 17 00:00:00 2001 From: Vincent Privat Date: Sun, 16 Sep 2018 18:16:24 +0200 Subject: [PATCH 15/46] update version --- build.xml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/build.xml b/build.xml index 46c6608..f006793 100644 --- a/build.xml +++ b/build.xml @@ -2,7 +2,7 @@ - + @@ -10,6 +10,12 @@ + + + + + + From 02bdf6d162a96cfff0a525d4c6ca503a8e6234cd Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Wed, 9 Jan 2019 21:06:49 +0100 Subject: [PATCH 16/46] Use I18n.tr --- src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java | 2 +- .../josm/plugins/auto_tools/actions/MergeBuildingsAction.java | 2 +- .../josm/plugins/auto_tools/actions/ReplaceBuilding.java | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java b/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java index 78e416a..a343782 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java @@ -1,6 +1,6 @@ package org.openstreetmap.josm.plugins.auto_tools; -import static org.openstreetmap.josm.gui.mappaint.mapcss.ExpressionFactory.Functions.tr; +import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.event.KeyEvent; diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java index 1292480..191c75c 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java @@ -1,6 +1,6 @@ package org.openstreetmap.josm.plugins.auto_tools.actions; -import static org.openstreetmap.josm.gui.mappaint.mapcss.ExpressionFactory.Functions.tr; +import static org.openstreetmap.josm.tools.I18n.tr; import static org.openstreetmap.josm.tools.I18n.trn; import java.awt.event.ActionEvent; diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java index fb4fba3..300bfcd 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java @@ -1,6 +1,6 @@ package org.openstreetmap.josm.plugins.auto_tools.actions; -import static org.openstreetmap.josm.gui.mappaint.mapcss.ExpressionFactory.Functions.tr; +import static org.openstreetmap.josm.tools.I18n.tr; import static org.openstreetmap.josm.plugins.utilsplugin2.replacegeometry.ReplaceGeometryUtils.buildReplaceNodeWithNewCommand; import java.awt.event.ActionEvent; From 9fce3396d2b585c3df9888f71dcf5969723bddd1 Mon Sep 17 00:00:00 2001 From: Vincent Privat Date: Tue, 9 Apr 2019 02:20:58 +0200 Subject: [PATCH 17/46] fix #josm17509 - NPE (patch by tsmock) --- .../josm/plugins/auto_tools/actions/SplittingTool.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index 11e11ca..8812a08 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -89,8 +89,9 @@ public void mouseReleased(MouseEvent e) { MainApplication.getMap().mapView.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { - if (MainApplication.getMap() != null && e.getKeyCode() == MainApplication.getMap().mapMode.getShortcut().getAssignedKey() - && MainApplication.getLayerManager().getEditLayer()!=null) { + if (MainApplication.getMap() != null && MainApplication.getMap().mapMode != null + && e.getKeyCode() == MainApplication.getMap().mapMode.getShortcut().getAssignedKey() + && MainApplication.getLayerManager().getEditLayer() != null) { counter++; } } From ff55037424079093aff0a6e6f726770bfe6c5c7d Mon Sep 17 00:00:00 2001 From: Taylor Smock Date: Tue, 9 Apr 2019 07:35:22 -0600 Subject: [PATCH 18/46] Replace deprecated methods with a non-deprecated method * OsmPrimitive.getFilteredSet -> Utils.filteredCollection with appropriate set constructor (ArrayList, HashSet, etc.) Signed-off-by: Taylor Smock --- .../actions/MergeBuildingsAction.java | 8 ++++--- .../auto_tools/actions/ReplaceBuilding.java | 7 +++--- .../auto_tools/actions/SplittingTool.java | 24 +++++++++---------- 3 files changed, 21 insertions(+), 18 deletions(-) diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java index 191c75c..8a1d95e 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java @@ -7,6 +7,7 @@ import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.Hashtable; import java.util.LinkedList; import java.util.List; @@ -31,6 +32,7 @@ import org.openstreetmap.josm.data.osm.Way; import org.openstreetmap.josm.gui.MainApplication; import org.openstreetmap.josm.tools.Shortcut; +import org.openstreetmap.josm.tools.Utils; /** * @@ -59,8 +61,8 @@ public void actionPerformed(ActionEvent e) { LinkedList sel = new LinkedList<>(); for (OsmPrimitive osm : ways) { - if (OsmPrimitive.getFilteredList(osm.getReferrers(), Relation.class).size() > 0) { - Relation relation = OsmPrimitive.getFilteredList(osm.getReferrers(), Relation.class).get(0); + if (Utils.filteredCollection(osm.getReferrers(), Relation.class).size() > 0) { + Relation relation = new ArrayList<>(Utils.filteredCollection(osm.getReferrers(), Relation.class)).get(0); Set keys = relation.getKeys().keySet(); for (String key : keys) { if (!atrributes.containsKey(key)) { @@ -137,7 +139,7 @@ public void actionPerformed(ActionEvent e) { protected Command MergeAllTags(Relation relation, List selection, TagCollection tc) { List selectiontemporal = new ArrayList<>(); - Set selectionways = OsmPrimitive.getFilteredSet((List) selection, Way.class); + Set selectionways = new HashSet<>(Utils.filteredCollection((List) selection, Way.class)); List commands = new ArrayList(); if (relation != null) { diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java index 300bfcd..09ddc56 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java @@ -46,6 +46,7 @@ import org.openstreetmap.josm.tools.Pair; import org.openstreetmap.josm.tools.Shortcut; import org.openstreetmap.josm.tools.UserCancelException; +import org.openstreetmap.josm.tools.Utils; import edu.princeton.cs.algs4.AssignmentProblem; @@ -68,12 +69,12 @@ public void actionPerformed(ActionEvent e) { return; } - if (!OsmPrimitive.getFilteredSet(selection, Node.class).isEmpty()) { + if (!Utils.filteredCollection(selection, Node.class).isEmpty()) { new Notification(tr("Select only buildings without nodes.")).setIcon(JOptionPane.WARNING_MESSAGE).show(); return; } - Set selectedWays = OsmPrimitive.getFilteredSet(selection, Way.class); + Set selectedWays = new HashSet<>(Utils.filteredCollection(selection, Way.class)); Set newWays = new HashSet<>(); if (selectedWays.size() == 1) { @@ -187,7 +188,7 @@ private static Map getAttributes(OsmPrimitive osm, String value) } public static ReplaceGeometryCommand buildUpgradeNodeCommand(Node subjectNode, OsmPrimitive referenceObject) { - if (!OsmPrimitive.getFilteredList(subjectNode.getReferrers(), Way.class).isEmpty()) { + if (!Utils.filteredCollection(subjectNode.getReferrers(), Way.class).isEmpty()) { throw new ReplaceGeometryException(tr("Node belongs to way(s), cannot replace.")); } diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index 8812a08..b44217c 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -123,7 +123,7 @@ public void keyReleased(KeyEvent e) { n = MainApplication.getMap().mapView.getNearestNode(mousePos, OsmPrimitive::isSelectable); - if (OsmPrimitive.getFilteredList(newSelection, Node.class).size() == 1 && OsmPrimitive.getFilteredList(newSelection, Way.class).isEmpty()) { + if (Utils.filteredCollection(newSelection, Node.class).size() == 1 && Utils.filteredCollection(newSelection, Way.class).isEmpty()) { newSelection.clear(); MainApplication.getLayerManager().getEditDataSet().setSelected(newSelection); } @@ -175,7 +175,7 @@ public void keyReleased(KeyEvent e) { } //Delete the created node if not in a way - if (OsmPrimitive.getFilteredList(n.getReferrers(), Way.class).isEmpty()) { + if (Utils.filteredCollection(n.getReferrers(), Way.class).isEmpty()) { MainApplication.getLayerManager().getEditDataSet().removePrimitive(n.getPrimitiveId()); } else { @@ -303,9 +303,9 @@ public void SplitRoad(Node node, DataSet ds, Collection newSelecti newSelection.add(way); - List selectedNodes = OsmPrimitive.getFilteredList(newSelection, Node.class); - List selectedWays = OsmPrimitive.getFilteredList(newSelection, Way.class); - List selectedRelations = OsmPrimitive.getFilteredList(newSelection, Relation.class); + List selectedNodes = new ArrayList<>(Utils.filteredCollection(newSelection, Node.class)); + List selectedWays = new ArrayList<>(Utils.filteredCollection(newSelection, Way.class)); + List selectedRelations = new ArrayList<>(Utils.filteredCollection(newSelection, Relation.class)); List applicableWays = getApplicableWays(selectedWays, selectedNodes); @@ -349,8 +349,8 @@ public void SplitRoad(Node node, DataSet ds, Collection newSelecti Way selectedWay = null; // Finally, applicableWays contains only one perfect way - if (selectionToSplit != null && selectionToSplit.size() == 1 && applicableWays.contains(OsmPrimitive.getFilteredList(selectionToSplit, Way.class).get(0))) { - selectedWay = OsmPrimitive.getFilteredList(selectionToSplit, Way.class).get(0); + if (selectionToSplit != null && selectionToSplit.size() == 1 && applicableWays.contains(new ArrayList<>(Utils.filteredCollection(selectionToSplit, Way.class)).get(0))) { + selectedWay = new ArrayList<>(Utils.filteredCollection(selectionToSplit, Way.class)).get(0); } else { selectedWay = applicableWays.get(0); } @@ -392,7 +392,7 @@ private List getApplicableWays(List selectedWays, List selectedN // Special case - one of the selected ways touches (not cross) way that we want to split if (selectedNodes.size() == 1) { Node n = selectedNodes.get(0); - List referedWays = OsmPrimitive.getFilteredList(n.getReferrers(), Way.class); + List referedWays = new ArrayList<>(Utils.filteredCollection(n.getReferrers(), Way.class)); Way inTheMiddle = null; boolean foundSelected = false; for (Way w : referedWays) { @@ -415,7 +415,7 @@ private List getApplicableWays(List selectedWays, List selectedN } // List of ways shared by all nodes - List result = new ArrayList(OsmPrimitive.getFilteredList(selectedNodes.get(0).getReferrers(), Way.class)); + List result = new ArrayList(Utils.filteredCollection(selectedNodes.get(0).getReferrers(), Way.class)); for (int i = 1; i < selectedNodes.size(); i++) { List ref = selectedNodes.get(i).getReferrers(); for (Iterator it = result.iterator(); it.hasNext();) { @@ -447,9 +447,9 @@ private List getApplicableWays(List selectedWays, List selectedN public static void selectTheWay(Way way, Way way2, Node n1, Node n2, Node common) { - int ws1 = OsmPrimitive.getFilteredList(n1.getReferrers(), Way.class).size(); - int ws2 = OsmPrimitive.getFilteredList(n2.getReferrers(), Way.class).size(); - int wsc = OsmPrimitive.getFilteredList(common.getReferrers(), Way.class).size(); + int ws1 = Utils.filteredCollection(n1.getReferrers(), Way.class).size(); + int ws2 = Utils.filteredCollection(n2.getReferrers(), Way.class).size(); + int wsc = Utils.filteredCollection(common.getReferrers(), Way.class).size(); try { if ((ws1 > 2 && ws2 > 2) || (ws1 <= 2 && ws2 <= 2)) { From ca5bf5d917b9dca0cc1daca04b5b523f8e62d613 Mon Sep 17 00:00:00 2001 From: Vincent Privat Date: Wed, 10 Apr 2019 01:03:03 +0200 Subject: [PATCH 19/46] update version --- build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.xml b/build.xml index f006793..80551ce 100644 --- a/build.xml +++ b/build.xml @@ -2,7 +2,7 @@ - + From 90febf0eb0810425ffb34c27aa76e9674a4a79f9 Mon Sep 17 00:00:00 2001 From: Taylor Smock Date: Thu, 11 Apr 2019 14:47:20 -0600 Subject: [PATCH 20/46] Fix an index out of bounds issue Signed-off-by: Taylor Smock --- .../josm/plugins/auto_tools/actions/SplittingTool.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index b44217c..db276a6 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -349,7 +349,8 @@ public void SplitRoad(Node node, DataSet ds, Collection newSelecti Way selectedWay = null; // Finally, applicableWays contains only one perfect way - if (selectionToSplit != null && selectionToSplit.size() == 1 && applicableWays.contains(new ArrayList<>(Utils.filteredCollection(selectionToSplit, Way.class)).get(0))) { + ArrayList list = new ArrayList<>(Utils.filteredCollection(selectionToSplit, Way.class)); + if (selectionToSplit != null && selectionToSplit.size() == 1 && list.size() > 1 && applicableWays.contains(list.get(0))) { selectedWay = new ArrayList<>(Utils.filteredCollection(selectionToSplit, Way.class)).get(0); } else { selectedWay = applicableWays.get(0); From fe7ba6bffe40d21a29f2e676185967af4371504c Mon Sep 17 00:00:00 2001 From: Simon Legner Date: Sun, 7 Jun 2020 14:24:54 +0200 Subject: [PATCH 21/46] Use Node.isOutSideWorld https://josm.openstreetmap.de/ticket/13538 --- build.xml | 2 +- .../josm/plugins/auto_tools/actions/SplittingTool.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build.xml b/build.xml index 80551ce..1e6c026 100644 --- a/build.xml +++ b/build.xml @@ -1,7 +1,7 @@ - + diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index b44217c..510e0ac 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -153,7 +153,7 @@ public void keyReleased(KeyEvent e) { } //Create new node if (newNode) { - if (n.getCoor().isOutSideWorld()) { + if (n.isOutSideWorld()) { JOptionPane.showMessageDialog( MainApplication.getMainFrame(), tr("Cannot add a node outside of the world."), From 1d9cd181fee82762f90854463babc8223c9d55f5 Mon Sep 17 00:00:00 2001 From: Taylor Smock Date: Mon, 17 May 2021 08:36:09 -0600 Subject: [PATCH 22/46] auto-tools: update for compatibility with JOSM r17896 Signed-off-by: Taylor Smock --- build.xml | 6 ++++-- .../plugins/auto_tools/actions/SplittingTool.java | 13 +++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/build.xml b/build.xml index 1e6c026..fa02788 100644 --- a/build.xml +++ b/build.xml @@ -1,8 +1,8 @@ - - + + @@ -14,6 +14,8 @@ + + diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index 510e0ac..aa147ef 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -28,6 +28,7 @@ import org.openstreetmap.josm.data.UndoRedoHandler; import org.openstreetmap.josm.data.coor.EastNorth; import org.openstreetmap.josm.data.osm.DataSet; +import org.openstreetmap.josm.data.osm.IWaySegment; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.data.osm.OsmPrimitive; import org.openstreetmap.josm.data.osm.Relation; @@ -185,17 +186,17 @@ public void keyReleased(KeyEvent e) { } private void insertNodeIntoAllNearbySegments(List wss, Node n, Collection newSelection, - Collection cmds, List replacedWays, List reuseWays) { + Collection cmds, List replacedWays, List reuseWays) { Map> insertPoints = new HashMap<>(); - for (WaySegment ws : wss) { + for (IWaySegment ws : wss) { List is; - if (insertPoints.containsKey(ws.way)) { - is = insertPoints.get(ws.way); + if (insertPoints.containsKey(ws.getWay())) { + is = insertPoints.get(ws.getWay()); } else { is = new ArrayList<>(); - insertPoints.put(ws.way, is); + insertPoints.put(ws.getWay(), is); } - is.add(ws.lowerIndex); + is.add(ws.getLowerIndex()); } Set> segSet = new HashSet<>(); From b99c91029b35a851b3946009661398330b148a8d Mon Sep 17 00:00:00 2001 From: Taylor Smock <45215054+tsmock@users.noreply.github.com> Date: Wed, 4 Aug 2021 11:50:26 -0600 Subject: [PATCH 23/46] SplittingTool: Use newer Optional method and check that the command is present (#27) Signed-off-by: Taylor Smock --- build.xml | 2 +- .../auto_tools/actions/SplittingTool.java | 40 ++++++++++--------- 2 files changed, 23 insertions(+), 19 deletions(-) diff --git a/build.xml b/build.xml index fa02788..465468e 100644 --- a/build.xml +++ b/build.xml @@ -2,7 +2,7 @@ - + diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java index 3f555af..58fe488 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java @@ -15,6 +15,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import javax.swing.JOptionPane; @@ -359,27 +360,30 @@ public void SplitRoad(Node node, DataSet ds, Collection newSelecti List> wayChunks = SplitWayCommand.buildSplitChunks(selectedWay, selectedNodes); if (wayChunks != null) { - List sel = new ArrayList(selectedWays.size() + selectedRelations.size()); + List sel = new ArrayList<>(selectedWays.size() + selectedRelations.size()); sel.addAll(selectedWays); sel.addAll(selectedRelations); - SplitWayCommand result = SplitWayCommand.splitWay(selectedWay, wayChunks, sel); - UndoRedoHandler.getInstance().add(result); - - //Select the way to tag - Way way2 = result.getNewWays().get(0); - try { - if (selectedWay.firstNode().equals(way2.firstNode())) { - selectTheWay(selectedWay, way2, selectedWay.lastNode(), way2.lastNode(), selectedWay.firstNode()); - } else if (selectedWay.firstNode().equals(way2.lastNode())) { - selectTheWay(selectedWay, way2, selectedWay.lastNode(), way2.firstNode(), selectedWay.firstNode()); - } else if (selectedWay.lastNode().equals(way2.firstNode())) { - selectTheWay(selectedWay, way2, selectedWay.firstNode(), way2.lastNode(), selectedWay.lastNode()); - } else if (selectedWay.lastNode().equals(way2.lastNode())) { - selectTheWay(selectedWay, way2, selectedWay.firstNode(), way2.firstNode(), selectedWay.lastNode()); - } + final Optional resultOptional = SplitWayCommand.splitWay(selectedWay, wayChunks, sel, SplitWayCommand.Strategy.keepLongestChunk(), SplitWayCommand.WhenRelationOrderUncertain.ASK_USER_FOR_CONSENT_TO_DOWNLOAD); + if (resultOptional.isPresent()) { + SplitWayCommand result = resultOptional.get(); + UndoRedoHandler.getInstance().add(result); + + //Select the way to tag + Way way2 = result.getNewWays().get(0); + try { + if (selectedWay.firstNode().equals(way2.firstNode())) { + selectTheWay(selectedWay, way2, selectedWay.lastNode(), way2.lastNode(), selectedWay.firstNode()); + } else if (selectedWay.firstNode().equals(way2.lastNode())) { + selectTheWay(selectedWay, way2, selectedWay.lastNode(), way2.firstNode(), selectedWay.firstNode()); + } else if (selectedWay.lastNode().equals(way2.firstNode())) { + selectTheWay(selectedWay, way2, selectedWay.firstNode(), way2.lastNode(), selectedWay.lastNode()); + } else if (selectedWay.lastNode().equals(way2.lastNode())) { + selectTheWay(selectedWay, way2, selectedWay.firstNode(), way2.firstNode(), selectedWay.lastNode()); + } - } catch (Exception e) { - Logging.error(e); + } catch (Exception e) { + Logging.error(e); + } } } From 43e775858e4441644a19de532089aa0b2ce20418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Sun, 4 Sep 2022 15:20:41 +0200 Subject: [PATCH 24/46] drop the non-numeric v from version number --- build.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.xml b/build.xml index 465468e..1941c61 100644 --- a/build.xml +++ b/build.xml @@ -2,7 +2,7 @@ - + From 4e0201d47342129c854fe4d56f43b897338f3c0c Mon Sep 17 00:00:00 2001 From: Taylor Smock Date: Tue, 22 Aug 2023 09:31:16 -0600 Subject: [PATCH 25/46] Use jakarta.json instead of javax.json Signed-off-by: Taylor Smock --- build.xml | 5 +- .../actions/MergeBuildingsAction.java | 53 +++++++++++-------- 2 files changed, 35 insertions(+), 23 deletions(-) diff --git a/build.xml b/build.xml index 1941c61..1a34841 100644 --- a/build.xml +++ b/build.xml @@ -1,8 +1,8 @@ - - + + @@ -15,6 +15,7 @@ + diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java index 8a1d95e..d7d10a2 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java @@ -22,6 +22,7 @@ import org.openstreetmap.josm.command.Command; import org.openstreetmap.josm.command.SequenceCommand; import org.openstreetmap.josm.data.UndoRedoHandler; +import org.openstreetmap.josm.data.coor.ILatLon; import org.openstreetmap.josm.data.coor.LatLon; import org.openstreetmap.josm.data.osm.Node; import org.openstreetmap.josm.data.osm.OsmPrimitive; @@ -50,18 +51,18 @@ public void actionPerformed(ActionEvent e) { if (MainApplication.getLayerManager().getEditDataSet() != null) { Relation rela = null; - LinkedList ways = new LinkedList(MainApplication.getLayerManager().getEditDataSet().getSelectedWays()); + LinkedList ways = new LinkedList<>(MainApplication.getLayerManager().getEditDataSet().getSelectedWays()); if (ways.isEmpty() || ways.size() == 1) { JOptionPane.showMessageDialog(null, "Select at least two ways"); } else { //Filtrar los Tags, y sacar un promerio de ellos - Map atrributes = new Hashtable(); + Map atrributes = new Hashtable<>(); List areaList = new ArrayList<>(); List bvList = new ArrayList<>(); LinkedList sel = new LinkedList<>(); - for (OsmPrimitive osm : ways) { - if (Utils.filteredCollection(osm.getReferrers(), Relation.class).size() > 0) { + for (Way osm : ways) { + if (!Utils.filteredCollection(osm.getReferrers(), Relation.class).isEmpty()) { Relation relation = new ArrayList<>(Utils.filteredCollection(osm.getReferrers(), Relation.class)).get(0); Set keys = relation.getKeys().keySet(); for (String key : keys) { @@ -75,7 +76,7 @@ public void actionPerformed(ActionEvent e) { } } - areaList.add(findArea((Way) osm)); + areaList.add(findArea(osm)); bvList.add(relation.get("building")); rela = relation; sel.add(relation); @@ -92,7 +93,7 @@ public void actionPerformed(ActionEvent e) { } } } - areaList.add(findArea((Way) osm)); + areaList.add(findArea(osm)); bvList.add(osm.get("building")); } } @@ -111,18 +112,18 @@ public void actionPerformed(ActionEvent e) { //ele -> largest number //building:units -> none if different Tag tag; - if ((entry.getKey().equals("start_date") || entry.getKey().equals("building:units")) && entry.getValue().contains(";")) { + if (("start_date".equals(entry.getKey()) || "building:units".equals(entry.getKey())) && entry.getValue().contains(";")) { tag = new Tag(entry.getKey(), null); - } else if ((entry.getKey().equals("height") || entry.getKey().equals("ele")) && entry.getValue().contains(";")) { + } else if (("height".equals(entry.getKey()) || "ele".equals(entry.getKey())) && entry.getValue().contains(";")) { String[] stringArray = entry.getValue().split(";"); - Double max = Double.parseDouble(stringArray[0]); + double max = Double.parseDouble(stringArray[0]); for (int index = 1; index < stringArray.length; index++) { - Double h = Double.parseDouble(stringArray[index]); + double h = Double.parseDouble(stringArray[index]); if (h > max) { max = h; } } - tag = new Tag(entry.getKey(), max.toString()); + tag = new Tag(entry.getKey(), Double.toString(max)); } else { tag = new Tag(entry.getKey(), entry.getValue()); } @@ -139,12 +140,12 @@ public void actionPerformed(ActionEvent e) { protected Command MergeAllTags(Relation relation, List selection, TagCollection tc) { List selectiontemporal = new ArrayList<>(); - Set selectionways = new HashSet<>(Utils.filteredCollection((List) selection, Way.class)); - List commands = new ArrayList(); + Set selectionways = new HashSet<>(Utils.filteredCollection(selection, Way.class)); + List commands = new ArrayList<>(); if (relation != null) { for (OsmPrimitive op : selection) { - if (op.getType().equals(OsmPrimitiveType.RELATION)) { + if (op.getType() == OsmPrimitiveType.RELATION) { selectiontemporal.add(op); selection.clear(); //selection.removeAll(selection); @@ -162,7 +163,7 @@ protected Command MergeAllTags(Relation relation, List selection, for (String key : tc.getKeys()) { String value = tc.getValues(key).iterator().next(); - value = value.equals("") ? null : value; + value = "".equals(value) ? null : value; commands.add(new ChangePropertyCommand(selection, key, value)); } @@ -180,16 +181,16 @@ protected Double findArea(Way w) { Double firstSegLength = null; boolean isCircle = true; for (Node n : w.getNodes()) { - if (lastN != null && lastN.getCoor() != null && n.getCoor() != null) { - final double segLength = lastN.getCoor().greatCircleDistance(n.getCoor()); + if (lastN != null && lastN.isLatLonKnown() && n.isLatLonKnown()) { + final double segLength = lastN.greatCircleDistance(n); if (firstSegLength == null) { firstSegLength = segLength; } if (isCircle && Math.abs(firstSegLength - segLength) > 0.000001) { isCircle = false; } - wayArea += (calcX(n.getCoor()) * calcY(lastN.getCoor())) - - (calcY(n.getCoor()) * calcX(lastN.getCoor())); + wayArea += (calcX(n) * calcY(lastN)) + - (calcY(n) * calcX(lastN)); } lastN = n; } @@ -202,11 +203,21 @@ protected Double findArea(Way w) { return wayArea; } + @Deprecated public static double calcX(LatLon p1) { - return p1.lat() * Math.PI * 6367000 / 180; + return calcX((ILatLon) p1); } + public static double calcX(ILatLon p1) { + return p1.lat() * Math.PI * 6_367_000 / 180; + } + + @Deprecated public static double calcY(LatLon p1) { - return p1.lon() * (Math.PI * 6367000 / 180) * Math.cos(p1.lat() * Math.PI / 180); + return calcY((ILatLon) p1); + } + + public static double calcY(ILatLon p1) { + return p1.lon() * (Math.PI * 6_367_000 / 180) * Math.cos(p1.lat() * Math.PI / 180); } } From 4cc904ef89a7075d51f4b5212e81d2f6cd49ec16 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Tue, 21 Jan 2025 23:24:22 +0100 Subject: [PATCH 26/46] set better helptext --- src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java b/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java index a343782..c6dd39f 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java @@ -22,7 +22,7 @@ public AutoTools(PluginInformation info) { super(info); final JMenu loadTaskMenu = MainApplication.getMenu() .addMenu("Auto Tools", tr("Auto Tools"), KeyEvent.VK_K, - MainApplication.getMenu().getDefaultMenuPos(), HelpUtil.ht("/Plugin/task") + MainApplication.getMenu().getDefaultMenuPos(), HelpUtil.ht("/Plugin/AutoTools") ); loadTaskMenu.add(new JMenuItem(new MergeBuildingsAction())); loadTaskMenu.add(new JSeparator()); From 64ba0d302d6fafb3cedeb481cc2f2698af082d7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Wed, 22 Jan 2025 10:32:43 +0100 Subject: [PATCH 27/46] I18n update --- data/ar.lang | Bin 0 -> 2571 bytes data/ast.lang | Bin 0 -> 1119 bytes data/be.lang | Bin 0 -> 2840 bytes data/bg.lang | Bin 0 -> 2813 bytes data/ca-valencia.lang | Bin 0 -> 1147 bytes data/ca.lang | Bin 0 -> 1149 bytes data/cs.lang | Bin 0 -> 1531 bytes data/cy.lang | Bin 0 -> 181 bytes data/da.lang | Bin 0 -> 1498 bytes data/de.lang | Bin 0 -> 1782 bytes data/el.lang | Bin 0 -> 803 bytes data/en.lang | Bin 0 -> 1396 bytes data/en_AU.lang | Bin 0 -> 72 bytes data/en_GB.lang | 1 + data/es.lang | Bin 0 -> 1700 bytes data/et.lang | Bin 0 -> 319 bytes data/fa.lang | Bin 0 -> 692 bytes data/fi.lang | Bin 0 -> 603 bytes data/fr.lang | Bin 0 -> 1908 bytes data/gl.lang | Bin 0 -> 717 bytes data/hu.lang | Bin 0 -> 1199 bytes data/id.lang | Bin 0 -> 1523 bytes data/is.lang | Bin 0 -> 303 bytes data/it.lang | Bin 0 -> 1896 bytes data/ja.lang | Bin 0 -> 1654 bytes data/km.lang | Bin 0 -> 728 bytes data/ko.lang | Bin 0 -> 765 bytes data/lt.lang | Bin 0 -> 669 bytes data/mr.lang | Bin 0 -> 483 bytes data/nb.lang | Bin 0 -> 1450 bytes data/nl.lang | Bin 0 -> 1685 bytes data/pl.lang | Bin 0 -> 1656 bytes data/pt.lang | Bin 0 -> 1741 bytes data/pt_BR.lang | Bin 0 -> 1624 bytes data/ru.lang | Bin 0 -> 2780 bytes data/sk.lang | Bin 0 -> 1150 bytes data/sr-latin.lang | Bin 0 -> 714 bytes data/sv.lang | Bin 0 -> 1356 bytes data/tr.lang | Bin 0 -> 377 bytes data/uk.lang | Bin 0 -> 2750 bytes data/zh_CN.lang | Bin 0 -> 954 bytes data/zh_TW.lang | Bin 0 -> 823 bytes 42 files changed, 1 insertion(+) create mode 100644 data/ar.lang create mode 100644 data/ast.lang create mode 100644 data/be.lang create mode 100644 data/bg.lang create mode 100644 data/ca-valencia.lang create mode 100644 data/ca.lang create mode 100644 data/cs.lang create mode 100644 data/cy.lang create mode 100644 data/da.lang create mode 100644 data/de.lang create mode 100644 data/el.lang create mode 100644 data/en.lang create mode 100644 data/en_AU.lang create mode 100644 data/en_GB.lang create mode 100644 data/es.lang create mode 100644 data/et.lang create mode 100644 data/fa.lang create mode 100644 data/fi.lang create mode 100644 data/fr.lang create mode 100644 data/gl.lang create mode 100644 data/hu.lang create mode 100644 data/id.lang create mode 100644 data/is.lang create mode 100644 data/it.lang create mode 100644 data/ja.lang create mode 100644 data/km.lang create mode 100644 data/ko.lang create mode 100644 data/lt.lang create mode 100644 data/mr.lang create mode 100644 data/nb.lang create mode 100644 data/nl.lang create mode 100644 data/pl.lang create mode 100644 data/pt.lang create mode 100644 data/pt_BR.lang create mode 100644 data/ru.lang create mode 100644 data/sk.lang create mode 100644 data/sr-latin.lang create mode 100644 data/sv.lang create mode 100644 data/tr.lang create mode 100644 data/uk.lang create mode 100644 data/zh_CN.lang create mode 100644 data/zh_TW.lang diff --git a/data/ar.lang b/data/ar.lang new file mode 100644 index 0000000000000000000000000000000000000000..9a4dd3447dd04280f4dab50dd5550c677eafd9e7 GIT binary patch literal 2571 zcmb7`zm6MK6vl6rf(D@|KolVcsvwjh(2)X4DrzJu3Q8m%08y;hGdpo;@(Nhl*`3&N zyw1j$Cpq_N!tXox&e-dC7pOdQ@A>{7$S*^}mu2M(5!NaA*tqsNylb*fTdgl5!r<->n7Dy+)ux;!3rq;Cit?jOPljB|EvrT_5!zW^=TWKc>P@{|Cf0g9x6Q;|92j~ zz0rdfg)&X>v^YrQPuy39bv7eXV;6s2l-rf9%Wy~BV#t}gTR{l|3-9U;Ix1T~Dt>$Td-&0>H+YL>%BoeGGCjla zaq`XyzHnQ;jHu%#l;erDWq9fs%sdL!3KG~K>Mdxj^~OoqKtLn3q%$Wn>CRI!9Q@W; zcXG<*Z2f_8fe8p|ddBet+XXn}=ChLQybQm1yk0G?^NHAE@-%)m(KnjH&Sjq|nc8bL z%h5GmXC@+D7tqH90`|BJU*ohtlJ*KJ@^t1p)iLvih!YFqg_-DGvEJ{fM?jXyx3^St z&KMmC3GES`@wz+rtgM3`*gp=RixCk)2p#O83~aq3rs$CdKg!0&yIsmSc}?iQF2k4o zb*iB+365C@B8#P|O~G|)z6>8c_k;9ZINvG&Z zDSDkdI2rwI*axDcVv`|RpVGl;Dys4_E5kQ^Lc}Y?`YpGWGc_hbv&z-6{CoM9;X7um zj!zRsa&BdluyPXQt`CU>sud@I>v)tt3*&7dmnZd-*f;M~T4r}rzb_5-+Dm4u2ge`1 zWLmv8mmti<6Yc6tDmt}G)!ksn7&Q4qurooGM4#~T?4n7)snxVYIM$cJY0hQHs0=?- zuk=wX6fyi(-f{E-uKxBG4MTzem#`Y(YEM zbXEF^C*d!g5`^yiQYZ+!ewFsZeS3U{*`*br>Qp_^b7}oxXFRrC$e8Shw@rrqN-}jM zR5FYb2>6%bD|IfFY(KhgGb-3edoTC^sgSnHerlkg6C=k`*U;WiB%XI(|a3K7+t zH@CuF?Lp1LnDK@WKKzB>SKCF89jh#~VdHD32i=i59?j5#4E>w2+@FgFb>yutr%|FTfc(MQh literal 0 HcmV?d00001 diff --git a/data/ast.lang b/data/ast.lang new file mode 100644 index 0000000000000000000000000000000000000000..6dbf35b8f73fbb47785454f98d10a848023e47bf GIT binary patch literal 1119 zcmZuw%Zd|06fFe7577Ocg|uR91VO}wFpJs9D1-9>a?^bi3%aY?dIU4##*N>RWfrrL z+0D}au<_i=bHETncjZ3LtBl!xUVO@qhAgcR_YxCFA)L6}W}0OQOs#a(XV>O>*JHk% zxg-O}@dni$Q`d>ZfVQe^LQ7-4lSl)jaa<>lQNd4hOnE{JrXlzS`_S6>Lq$KXB1PK| zo#>)RAANpDKVJPbZ_j-s=Ue=K%R+;MBu*M}#IzW%`B{7pxP^qHAc6^e1sb*C3m<64 z3m+yVvB|PzaNBfYR#i!~U`#lgDsQF0344}@GM5FA8}I15_+C=LM!bd~P2$>oIA`qa zKzY1T)f_F0etqte9eg)l&%N`L9YAb|5-3M*bxQB|fT8Zm=NIfiWaPgJgyZ{fMNKCgxN34pO9wT<=wc- zqA%HrkjGJPrJn|DM9aau$PFXa#~Hgq zG4jv-6ceyrVr|}^@17}H>~lILLA;h{(tHJ9oTlLQxT~sh6-2L4Y&guvl_vYwnPzS# zAuy0QJa4YwKDwa5xDDkR!uW}%Z-Laq7f4jH0M1)IJnrWGs2wr|RQo#BWA{>_rwbdiF?V+l%;O80v)km5Bw5_W#OBF=P9>Uul>VCl literal 0 HcmV?d00001 diff --git a/data/be.lang b/data/be.lang new file mode 100644 index 0000000000000000000000000000000000000000..be57dcd048fc4d5acc33ca8cabbab7aeb91c0f2b GIT binary patch literal 2840 zcmbW3&5j#Y5QQ&_V9PQ<1T?Ejq`1WbK^P9?MRR6eb&kPDHyZhd%d+MB1bvwLe591&?YVZ!?f zk4vqD`eyog-{$lY#=z_X^g$9^38%Mh;hB|v8T$!8 zQ@v88vc-FfpV>6_d`B-1!WZ^Otb_VY8$BYSf>S%v(;+cR@23j2M-w{~LRiw?srK3l z=f#GNNZyRCG<;}JSb#G9ln8Qc^FD?zY5#aEj`Xka$gi!fx zsv25ikOwg_aH<}|N25l-lD$W<1I<&wPs3N|Cy9OV!#X6&CL?9f=zOW{UHgl3>dHX$ zL6!vyfh@Wqr5QU~m-%ci+K)xFs>zt2`+szI;vLK+wr-Zg^cXqi2iQibO+gA_Dx-g-ounWT^KW&sxz6Xns#W5G~C(>bsZPb zMqeTc7N1DcY9z|1;m%g%x-%N0Q_NSe@^~HpO=ZJ^R$$ynxeGQ+xZv1#>?w(7Xw;FW zS&;?H-86h}zaZ;aT(A$v$tM{#9o*;slOH#xryR!^Ae3C5w3eH-jAsWnUjfHlX}G(> zovmx86s4`E{!F0~#ShT|^1Mvi@Q&?d?;W1|_SEJzJ!R|xjEkbE67oM^KNi)i$BK0? zbYr*_ba|75g($Wr&3dIPv{~`=VLqu({uj?}azG#fN;J=@wH@=&y{FQK(Yg9S&FGuE@?kO_AdG3O=2-hxL Hii3Xvep6gd literal 0 HcmV?d00001 diff --git a/data/bg.lang b/data/bg.lang new file mode 100644 index 0000000000000000000000000000000000000000..a873b0309f4f05c316ef39fe655d8d91b9efce73 GIT binary patch literal 2813 zcmb7`&2Ai35QVSu0%V;Cse=?Lfw-~60>wfQlm#qcpH+l}cmcKu#XnLKd%>V&0m_dO z@&xT3x2HYh8NWi^1&@(uFyE=$-R|+Ujk54h_r3SjsZ*!wc387Nt&H2YuwyIuTgN9h zw>q=h=5Z@-$IZCIQpFRC;hPWIzLDMk;oB^3**I=mVFv*GI1FHa4~5&Xzc`knkDyiA zYo7n<;EM3mFx&<7Gbj|9op`nj8v{wsnN9R|Vf%4cnU`_TP9VI1cpV-Rv&tZ`utWVL z1Qz^1j=-nnkQ79@seo$mgfS-)Fcn8Co1yHsP7zY)ORIP;@^EJWUxZTHiO(iz6Ts{6 z`Ty+q=`>u zo=gI;6%pEll0yf?G>)3L6FYE_Qi@BVg&ibCRkWFuC4nPp;dNYVD<$0SL>{iA69pUe zLHNkt!s$?iHnQK=e-FRdGgp{0#XTXZZqiGhou$1=F;7D}j&8O8T7CPD7SVLTB)v+8 z%3di6B`c5Yd;Ut2qjHI?(W1r?pi_h$Ndz1Nv0V<(l9+2pGT_wA4M+^$@{BhDN$uN% zoDX0UPJ8stA*N@8%DpnMwf@Ysh5Mix0h{~f?X_6 z0VV)dYnAF;4X9gnKvubz07(z3l!9)FXNiZ7(m+Z2X_=i}uZz0M<{tve1~R%7ahxW4 zq4}hn&pU-*t5Z|?Q}sPNZk(ESH*S&P9<=G|YLImL;uzsfA6R}}r+giX=@B2ZJd^cR zFl|d5+oGLlG4AH!p1o$LvS(ZS0kW*8N`0}O;a_`)L=&mP+>}yq>%NB0#y$9{yAs}6 zSzOL$LZO|ap~Z=_skp_|yj^iL#agWzfznOkWw~I|ikYu_CQFgeFf{DDr#yU3TKEC4 zd%yLDNwdjaB4P)mpT2Npu-Y%n8{w)w)03q2zg1{lqlV{=+ks4RuU`k)<@EGQxMgqT w9)GRw=r(c#OUnX6Q(cMS(@S^i!mNEK0j_YLgG<-Nt68 za_w25Fx~WCshiEbO6Jy2w=_s5w%}_uwG`!Ux+&^g%4sncr3It&NUB<)sU@!%y1s6fl)Nxl2x2Txbn^5i-Rko7Ui)M)1l(V$Tjr(xUlqGC> zu|)!EKL+(fLc>-mZeWL`070MC2d|&GvtxRsKY;h(Y234qhf0j?kk+PBTl3|`SNHrs zVJ5R8E$;Xd@NV0I;Q{y`ST@q7k)jC+51Zo99pw;g;FsfcZQ2X;bKhH5YI&%9jhpX= zc>gmLFxP&jvZZX?%d=3bu-re+UR8m_tqZE6XBB@{>ucP1lw*aWsBr<)=?EtqnOT_B z$1ckri)@fXPJT;XQ!5RDYoa5lQ z2FtyT1^v#|33tclo1@I*b2c5bA)AVWW*|I$3v^pvEQI|Zpgld8VzE+QnUS8jho@K= cTYBv2-2?aNbO677B2kZ4D!a#jy_4ep0CjqsB>(^b literal 0 HcmV?d00001 diff --git a/data/ca.lang b/data/ca.lang new file mode 100644 index 0000000000000000000000000000000000000000..304175c66c8738b11b9b8943aa038de04858d5af GIT binary patch literal 1149 zcmaJ>yKWRg5F8Ql0gyLHaLIW^h@3e%L|`ESU(mPPK94jzv!3Za84!uTgbWin@+a(n zVXEg|KFMN()6Q%^s=BJrx$SfEDbe(&(2z>;%OJ!Tvhtb6NHKLn7b!D!5~!c6r%3wIkpqbOG?SmqH#f$277CitzNC^GQgJldm3)2v;K&3DUMc zMH#`9Q39B*eNh1progo1B4AA&ceT1j#kAgpa=)x;D@na*Msk~SmR7lOpU;`Hgv~Iv zn1Hn(gZd$1VyhH4XosW#fvac{mHs2H|GTa%^E=Eu9A?(KiV zEX_z--0>s8yB!DA1K=lMnWh(p6hlZjY{+3c$|0EISL1YRxtEydezvUC@=)YfU3*bwi?VU=7opU|^0=H`)dY!K8`O-RRs413*SH(dF`^(fF5x;IVP!*R9wz9E z;|>*>jzdm^7iBH*)72O2D6!Q-U~V>&7w67td-+8M8YqyNH^lgtk}5I^X)6T zMr&&-Lt0o`*(9aTM`Qr~Y&QMMVs-(8Py7)jcGRTm5sAzG zfND=U?qRgQVCUk=-(q>}co$H&nnN^xU)#^u>+8R-@nhc~d1p0ua#M#3GGXdmYqw%W zwG%B?8msN8_0-YfjCU?vX-Q3MOBF8kz`kA!JzvgyPtE*VR@{*vg(4;9eb{Znj#iS zktKWg7{sLhj$S@~#lHPDQbpgwmMTjd(Yb*h#m`qOGKub~T^Lsq68!P3wO!ch74<_Y zS|=#p=+j03Nt#b2UdYb*t)QMDDKEn`O5(W{V!)1g1xyjtHEo!BgQe%ff>0~Nu3%4& zld^!2czWezW7Y87niV--&wE@fGr+_?>>O=*4Xj~;J(VxmC+lbwVBelBsf0L*{KGqn z3;QU|ztzPT_-Bx%#X+c=4}KCI_3YE%d#fM?SE6g|{8uKLx`E@SY{a$?SFnaES;LiDG~gsU_P1uG&uG%o*hug4*sLr$xk_KPJv1$&hH zFCu{f{aqDyN^F6vb7C8v&XE6niV*PI)aWo#8LnI&Fkw(K%XkX1Wyep`7-e|*_>Ovo zu{J=13l3*M+POYzuneb+(^2~hCp8>^QL)fQ^8_MHx?qnZjDfUAuonQe)r}I)z@;9b zIpP-W$D@I(WWl~zC*d*@ppH4GJNDuiVO)x1dXOkRGa|d3o{*T#_}Z*6(c?UY z9bO=WSZs03A`w8B7Qp_S{p5eQR(KL+eT(K;P7CV8BQ3`Yn-6ZQ9Qf4S>!%I$($L(G) dC@()R-=1$X^9GmI^=JMEvqR9KF%wM_(Gy;HD|7$= literal 0 HcmV?d00001 diff --git a/data/da.lang b/data/da.lang new file mode 100644 index 0000000000000000000000000000000000000000..39af9f17f41b954c85bd67e02438389062e07199 GIT binary patch literal 1498 zcmaJ>%W4!s6fLq6ArKM-!31wsK1fen@**xtA?tYmLM(!f5rKR z?B~Pcxz&$MRNQsfebl+129cIpZoscm9kX zhnRGF*CnX85^i)dvF6pTl#C^v=<;g0ursEHOVYM6u4HQ}rdjY)%MC8rKhcg%jdGM+ z2qfY}v$?Ai%}aK4;RCfC@X4-F+haOsAc-lk1pw~^?f;^MdUWEOsX-#0PUvpNr>n=N znfZ`7@JhnT834pOa0zGz!F*q=!gApvXM~t%9uwwFzT`cchB?^7FZx8ZWZQ=dwSMAE zI|`uIzZeTfU3oy?UVm3FKjq26#pUuQphe49&-uk3)dNk#+=Y4%)oexJ2uV~T`9cVe zWT@0hPjzIsM?Pn`>zpJy)IJ0TyA^xD4W>|spL+@kJ+cdeV)ur68dw4d3ZH2!=eLR8%+`PrU2ouz5Tfu`P zLs|Hk?eC=u)X+W|mqt^IrczX>SJJC*&=EDzZ>TY4!f5(}oUb~C3-#=1ys$?M)$LFe zb<-d&D1V;w6^g_XvDUWNDRErU@=~|lHy@gbI~cd2W{Og_(tB7h*EYmNt4jJPU0{hRZfD3?gQ~+p)rRhdQcOOJb%<=$20~L^F~Wh8uHxEsdO1dCPQ{J%d_-<@=AZmeO) zYgWkEZEz~viW#sW9NkP*-Hre4(r^KkT@!8T8`GKqw2oYtNAz#ON~pSmX&Hfn`r91+ z&MRjEocjbGmu%qx@`avPJjG|~lRJEVeAX4wAJUsAZ`HHJ5tUr^?_Ho(q*KB5*zRR? z(pk_<*37FglC$A(@v{_`YAi^k()s3fNF2N+A*%(%v#<%KR zvTJjZroVVZ%OBSFMLVQxC_8e|da=fD+gwYF`Vr*ujY9V48t+T{W~tWC=MK zGcYa=9Sqzj${t(H;$9L2?U%e1h#^xy9f7jxb6mlVY(}=TF$__J+6#1&MrdR?Q%|L* z_4834vB-R42?m8%K<~N9VMvfN^)6wFi&ZQc=JnVW+AVgkfehUlPF$-&0s(|ukC%t9 zM0W-DN-t#RDvf0O7)UulR2cSKy2(BIg? zlyVCH>x3cULWTsn9vyosO+L;$YGK{ed6E-2Nw5AwMGwQ}c(h0Pz>h53G~UzG{T-|1 zM9?(hi3%~ayW1s)#o*k6hjqxf6h(9ZCvQf>R47w>zel<@IP()9>1=^fV@0Dye_Muh zg1%KB&2V6_s_L@~U3%Og*Wb?T0qlnl_tfXId!uAhOy1&3f3amA&R(+LQx8`7oe}48 P!!6sOJ_XXPZ?^vcqmY%S literal 0 HcmV?d00001 diff --git a/data/el.lang b/data/el.lang new file mode 100644 index 0000000000000000000000000000000000000000..d116c0e498c8c0fe4bfd4976970aa86cf1ea23f9 GIT binary patch literal 803 zcmah{!AiqG5MBHU!P9#3Wby1Dc-MZP})A+}3Qny`QH=9B81 zO`4jDm_v4F_wAcEZ^oGByTL0QDvMJ3@bbtYkrA9lh15!)Ctim5Ld?IbZwiS};uGEy zUC2lx8CY&2LQ2A)dOP;89^)M;UoK?Ge@akxY40x{TF@0LZ=Ls4{x zyNpiIA(fRY*IE}D%Y@im%a_QWx15^RA>XHTT8=(%EtEme++o&*l!$4+Z(L=1daXet zl?>V)5(h^!HZQb?n}ROaO4X;XK|OPe*`b;yl^(a6H25QxPD)Z&-C^H%{2FsAaP)(s z>9RI;!9fbahB`a4LfCYN+`D;WgI(=(n3PjBrFBlg%Rj?eVML zp4|}jvX8Fndi?6^QkzFZ4s;%ZP3n>SECPmU&ov90m5q@JwLzj1H%ls{CP+7px0 z*-R-*417|@wx{4}8l1zINonAuc8|69A(L)f(&R(S6o#CPd|y!RnC2ncwo#9(V_c@9 z$QJQ~M;-sOH0r@|a1-O1PL60@__G_Q#`PiQ8^)uLS5xMeTQZqrNkP^)lj$NvieWOO zOpbFG+I<=lNKir$%dws|YV)%<7hF15cfX*eL;CgRx7z(G-A&jA&=Vqaz1T~y_i4IB zP&;eXk5kJ!F(tM<&0q!ydI16B%FFv^wjFxN6@PKhN{xJ2$xl=@=!zi~|ae zi$=ZwR;d9$U;{h3!DiD3yO;&PDrLfG4G46CN3F}T&yCutqh19qSjya_$LIevOZ8%X zI$D?1kzhTPt!i6oXy!1>)FEIHu0@i3V>uL9!i#Wznz5cM_m6nqPhPk&v%iBWbx=}B14J{Ncu7)I`#N+t!@jv!G0DIbKD-d ztqTD(b6ee|zp|;SPkAQA9fHD&BUiyg_b3cYiQDpcU#dIbb@Ujnx)=EpyeR8gy1w2} iTc;4GOdSfBL$!VDAZ@5^R3+v<$|f6IWf6$YUiJa^_)CuI;#tbw|ef~q~r=$|9Z7CyJEEqL{v3`jmbbY7p(!g(pFUc@sr@l^trCVPhlBLHs>^8R4)mtZ0!v>fih&;j6_TR@x2|fK zVQb(;6g0RkxegeUiGEjhLLi^Z) z2~_nNGWBv0A#$7Lsev2;h|oSRWa`-<=Cr`UkgWYm0%jy#Z6S6UoFy5q&2-2ac`6I2I@*cVc5$&t|MH0w5c zkz49!=~-4*$jMLP+DvU8v?%*NwyZ;MNcDYBhH7@be|upAvCS`wRovdyb!1z_E}(9( zE>T^N8q#l0)M|E6|8<-o>mM>T`n|+Dn+b-rim|8)#=168(jiH!=Bc`~3-D|E2Y}`Q*JMm)e3WSFs3igp3GC;!H*UdBY%Z=#XZ*aUyfpco zlXDVdUeTM?CvgPCpok!>SRyz?7Ka*OS0AOqjrT&ud*_i`Q@UQ5-4OPJ!x!?|j3-;9 zWz0e-Y-4yERpCBT#s-Ae(%5dfVn!u7; ulEQSqI8--fcOUeI6fz2I`ykR2% literal 0 HcmV?d00001 diff --git a/data/fa.lang b/data/fa.lang new file mode 100644 index 0000000000000000000000000000000000000000..82f6ccada619fffd6a1024c02e8cf6efb7cc6310 GIT binary patch literal 692 zcma)4J5Izf5Va_gXz5mRjYLGvEmoX^6RZ#*ZJaG~08W6jQ6MCw;U+Ul$3>R+JV6_( zB}Ec@-n`G)ZY5DF>GAHgkT{iI-gPJKxaXF$=T4&L+|l6idX}CLET(eY`>|y&`q&{2 z5Yl_iv2GKr@c1o+$KbLmPN8UlSkl^S4ee34h(fx4EC zOA}_tNi3X2m^`wZ$R#x32-&(6$Y7a!WLC&9Q{|EPOSha&MF4+N+f>THxSvu362XA1 zLG!8nenKflzV=!mM3~*O00L6{Q3x`mc4N!j+QI>@^RX=9zhDdilZFixsclLY0umfr zGKaBe?*3nt$j6uwWEeDfz0oa#)d-df6*OUZ;CXO}%=lp&%kw=)1f)X&7wT|0bE`4H R7DRX-pny|JqqXf*VvS|f1~$TR=ym8#!%?kbx15P(z1pzQqxoEYmE+U9 z6(Z%3`A{--66GdHw-25d<`C3+6FDnR4sPhXtP8}2V@uSMr*o4mef>=8h@&-7b7@(v zUpv>KDDYYm_DVEK?#TQRJ&>asJow)KrkLx?R8`15Y{%XBWWKK1Lu%-Kc1_+m8y(t{ zyKq+sNk@WJP+GLAq>faR2o)06oM!cw%RZnAO=2yc;ob!oJfZbMI|2@fBw08V&c|lx zYvj{z_;$D`6DdtnLTE-+c`DW~Of&S{B1!4vgcf@j*(mY(AOJ23I*X0z@_(|v+|n_y brdU;{(?xaj!i@2ct-!EB-g9;PA4=5^cI4Xq literal 0 HcmV?d00001 diff --git a/data/fr.lang b/data/fr.lang new file mode 100644 index 0000000000000000000000000000000000000000..719b11d2d13a1078a004f198e15185748fb46f1a GIT binary patch literal 1908 zcma)7&5ImG6fbfVaxghbKwdOT7M3BP2U$;>^%9sMBt{Ut)O0^*ORB3n^)c+O2)TRo zqBqe?CjUm`KazhW{$5pg&rEg?!W^cnU%ijt$7^->+nkJzq;v9}PUdCisOW~nle6XN zDjVAxw~p%58gaUJ>x7fXHuQXq+uI&p;l8jY}2{N zH6W5B!gNY(T;gLAl1wboQhYx+qNrtcyMQeaCe~Sf@Kh3=&@YdERZo{Z!lwIPhhzkw z;V(hcXXg1-OCz>nq5AI`3|qdUIBYF9g0QRP)C|NICMFO` ztp@gJcBLbR#t)Ih7R+!eT>890vtwZiSPxq-Fa*OGB?M##voDr<=8_x)#4%B?qvYta zO{Vwua_t>}+7VqEfBWi>3LW}`W~M2G(mlaIi29&3L{)Vr@Xdm`DQuir;y#&#Rdu}@ z{!T^;RrLkX9o3yV=JE7eJ$Swc;}x6;K^x$P;pQ9*b#y&SUzjd;m@{AOBI81Rc^I0V zxVorV{5I!|6osBLC~kdxcshu3FAfACV8I!j%bGyO%1608jkeb!^5PWTzy*3OHV_qI z$#lb;4vH%VSg3zcc_bD#nM4x~2GkpGf@rMbNBXh|9spyZ^}#^IQVa%@O;nA?PP+zA z#e3qZx}M~@QvNbS-1wD^JbBegpBfw&N@`!=>uiZk;}eW!HWF50$3HW?M&EKYdGHGU zAoOI1ZF8;zoCaqdJ+TE(x+Gn&z(BJ=q_25+_1hUti|t};WjS)TwZa@zJT3eASU~9D zZoz2g83r6t1uA%W&$>7~$TY@+D@lP56a-bz7V5!w09nwV0Ek{dlFtNCFKdtPtJ|j= z#=48K^r`M^=g@PtXXjhZI0lUbGr=>{6E2hs>Sk)!g6XcYt9w`wKW4)VHrmXz zKkTgTojsNVCz+;p__NTc!PE{QR$Bqq85 z@>8TW8r$imjl~MeVMAk+dHU5bAK~}AKa1w;>wK$;Q!cv*2pbYlDVANEuFYC|-~P9& zje{^(#0l%A_A-vkpxX_5fx(=J0u8+4o<%$N=9)(8?HmZyQaQZ^r2tjm`d%K{2FWJ` z?%8Laxu#mxJNKi8ZprD9RWbw)>+-jSeqq}f1%73MaA=&wX3C1y_yVd4W1ljPhoF_J z!PvPES1pVOZnU5)4QVP{JApT2&199#;pZWf&b`0VX5*+J!Jt+$Y%ku}lNm*Wt3N^> zo`XC4G_#6(5osoCj6jLafW5l=`zP-C_hsW2JS1GZ^G5}>p0*a4BHLTyS={-fg8l<{ CD*-eB literal 0 HcmV?d00001 diff --git a/data/hu.lang b/data/hu.lang new file mode 100644 index 0000000000000000000000000000000000000000..eee960c523a1c03723dcfbd42b2a84a158a98d52 GIT binary patch literal 1199 zcmaJ=v5wO~5M9wB3PeXa9fuTr)KH~>261$B6q9()S?_usc{h=65d{Sm)qR4?6jz`~ zDNwrAeb@2U&XIr+DI(ju^X9!bZ4C zpQf~6G%>Baq9$!iAEhI)Y10KEj-&%<^mCoI;D(!hmyb{&VM0<}<@>ikX0u~4Tf?^D zxaLAVdI$aop6cOy;J>2JFTbes>A;iLtz&z}=6Oh4OP6V1RTFZ9mbpjcjfJG!>q0F7 z)LAjKPQ7LCW9~hcGl+1bL7?vl#Dhd_GIcIFz|5%qj2(faV9{cscj21k9 zt~jUD9^#bx_67k&O2-`?7_|mT3aj#{+vy3V9=p$2%)r>y!2>KSY(lhW7$U5RZZ1}NBgrS9$?sHZu1^K{b~fdp+Wh~`uI&&e;f CedR9z literal 0 HcmV?d00001 diff --git a/data/id.lang b/data/id.lang new file mode 100644 index 0000000000000000000000000000000000000000..817137ada232ecf78523467a3a5dd640fac52eab GIT binary patch literal 1523 zcma)6OKTKC5bj)aFc2?-mx>YbkZc4|Ft?l{Y9weN=Nh}6sZ7s(|{o zv)M&K7ItT+tE%gJRIPrm@KG7@ zMm}7qN4xK&8wZz8K3^GYDrp4qfjvn8N-s0AkXl`$6t$7VNy1R4vMmaCW^qd%wbFMg;uALnYg22_E()@Tsc(KlY6)$GKdP`JmLmdu3GZ`tuk zqgZLkGsvD3N_(uC#`L9uqhb$&(c(^I#V(Qt1RT|7001W?y@EDQz5kR6rz#eFE{+9h zv_ZzfNUjy7a!#iQg5^gpruBTs z3-z!>Zl@o-gN{8x*b&S$3w4{LvIua4^s+1L+D3&JEjcame!31!YUWYNfOBD}zfiBY zY&2%{#WNMmn=AkqL*s_-*hWVfzA^R-_3EE_s15ZXUdk>>`A*Lrt6#U1HH%f&mfS*v z6@V+2(BGR5tlm?3ZMW9gp&NNLY;3q zYT#&(OMx>sXnjcRCUn;}iIAP&RQxf25eiw_1#3ka|xC$atg zpHi<_Y}kRTN@FLTa|l{`ltyk2C7FT@IOc|IMF?!EF34tY@o-ObYP?IgIujQNRtI~7&?Vxs^I4dM^MTp>1HChStAd{Hp&x6s!nuEi zQ0Um1m z_zK4AJ$qdA;yauw^~0raH|#WREtBaxlM1db)XUL?w2TWw>NAV^uIJ|P7saHLN5g1e z{;(y>Ehi)1_z6R-paWZLl5`7fa!h_nIkDyazQhf-jt~D*G;L?OHkEpG>1_fC>~PBt zz9x9};5XlB%jxjxoIbqzQ@yz^7zQQH)K_a5*eJ>q z{La2321-1(C_&HXL30@mqDibC&0MDOdAc59rWO)!z4SZ?%d2NIs|I5*H`$DKb#gRE zZ~a`pOYrCRnph@^EA`~)I?wRn7v3?*##sHK-&e|jg*a3+uv3`+Ht2#Lq8sE9dJUaI z7cq{b3=)T-82e1VQfDjMPx^S5Ov}J|k*x?&+ZtI$-Bs$%s`N6|Cz6vGYzMi$fjs)D zY9LV{b&ULo>&7ogb-pbmL1T6pk)5cizq3dIX~*%w`sxB3Oc-G~O@p5+Bf) zr}`Zj0$HWF(R-_5(G6i3g2u7|F+)Wl=hxNrA;m}|gSr_tz`q}2YZr@h0K2Th#R9X5 zZfYI4#sF06*>w;7D4@H|s!zXXgG~cQ`d0xMWh`K5XSgCB*XTgtl2C8F^`V_FXm%pg z3DP3k{|~C~x(r0`rkp~6uB6a5g*j6vYiV8-1OB&L&hm7@rR$D(l`Z#N-M_%zaAnTb z3+-H%w*gzah2HTrfds(_RN&2fCp+fz=X>hO%GF*RF|(6JfBo3pQxCQHf_p4+-j%3w Lh7~rP8Oih?PgfFA6rVON+qWqe9n*#9WNkX_TeWJ{s*lmCKZpAsk{}48fCPyq2TWv8^C)IG zpQP30&B&*)-+RLhL!hnz@4NT+?_SFq{k<6UN?tL;WUEGrsm*eY44=fi#|)KUy|)z9I;4WJDW^pRo!-rNBD7A$?Hkz zd$!E9Vmg+Y>gYJ}TohDx%RAjv82~~-lPSjp97U#tKmGyBA3n@iv5(I_TW`m(2@{$u zS}Yo%|Thw-dgT{??!Th2Tysj>Pd#RsLY@)4B*kiXASB=(lCKzdlbtBb~!Y3g{ z!{Gq(j;b_y$1k)V-rm5n-g&tzRf7h0U`AK1BvtAJK0~S?r8@Vq#aMJ+Q18<~L=$7} zf$jC=|Lc*b-B2>EYOgaa!G>8DqRpE-+NeB?+ln-6spVt0hV{Dz)8DAX+W#<%h)*1u zDzogcTxXeNu?I`s3^5_Z5%k#2d>d*Q#GqWqnwz)NX`R|Vzjz{gi0wr5<_Eo9w{!tv zBH*SPiB+|8s`A*{!mxsHcut-!re9P*v@#vNLKKmbWz%Y`ork z-#;X1-F(HeV!0yQg!WJWQ!j`bUgI8&Yc0%xJT}XO8H^d-B|pRC5QxGUtU%q&wT8|( za=55v7DuCFps%aBnZE3ygVBc6nt(b(_UOh}w019pQ*Z7<*p+Nt?s*&l9J>W9nQDB~ sr-Rl^*3HZN*PW(XPg~Z_%{}W8N(Yx`#y&@b#;rfW2~7_!x1g={54hMXyZ`_I literal 0 HcmV?d00001 diff --git a/data/km.lang b/data/km.lang new file mode 100644 index 0000000000000000000000000000000000000000..daffb2a1f1245c7925c347519294962aed0b528a GIT binary patch literal 728 zcmb_aQA)!=6kN~Xzjy&b&*UWpQPx5%v{0>$QBrviJVX@~FX0Ksi`3akc1Z~SnU7?5 zGduHU-V33B&SB56H`wMUE@7{*9jwy2<{|t6b`PHsro%ht+$qmq3iS$2Tk zW27r7GkDh0ak3i>XAAp;y(ImM|IlYG#qCHzKB!MMHfJVrj>2v{2S+NF46X1@&a0;l dVZT2JXX+_ua}9eEg2TW&rAMBv@i1zTegP3D!!`f_ literal 0 HcmV?d00001 diff --git a/data/ko.lang b/data/ko.lang new file mode 100644 index 0000000000000000000000000000000000000000..e193bb743ba7351cad9b104afe3f5b7a73011468 GIT binary patch literal 765 zcmb7?%}T>S6oto)8<*}}-KBzvpa_Z!-@&~vB0{x830kpY#>SFJ#rRW+5N%o`)EAn2 z@(g+>ZEXczn9UHFbMAM~8Kp+w26S$_nmG0C`yHAM;s=j?pYH~QzHie?VcG;QAT(<@ z?(vDoC-KTyUY>LO^vD|B+_|B4T9|-4=`wM>g4gUXyIq@A1Vjds z3_yJD4x1hpfkBiJjF!>3%%H=O6Rs1!2?<9DTAkl**M`eDFhqJ$mRcfIJ&~c6O$`VK z&dK%~0;pC6{eOxdX{fy-(85O0?V=hLCZxhV^HWC%i2GVde}x?d?*bSqxe?$&e#|jU zFctmI#CVjo#KM=clOd9#;&Yp737^k2;o2LUOv>B-;lLMhSy*~C?oB{#w}((bzY!*C zr8dh+!=hT5L?`XLJrNwD`7FdD_^i(NiOti`&l%lpvgvL@4TTkGz+f@cacZ3EVh9w!Wly`^OND}h}*>1P?=wKzO zay9AFKrOu~43L)=KS^~5U}0iV1{yUuxlk}Vm1+m`jG~_$6E6C_(SQ!ydFRPQi$ugcMa#AEDLcuU5VScPx9P#N(@qk TDDKChansZ|aW{@HSkC1SW-I_< literal 0 HcmV?d00001 diff --git a/data/mr.lang b/data/mr.lang new file mode 100644 index 0000000000000000000000000000000000000000..35a6482fbe164ba5f47856f1e9fc123fe428714c GIT binary patch literal 483 zcmZvZOA5k35JdX~dISTm4X(YK2yrDSE=3R*5i2GLeh?JhDBh%R5^H*l4k1|tQd3?1 zrXtetbQE{Z#)`9MiDISMBytj-id<1ht2)9U8umvG5l-qVjyA)XxnjwTtKy|Nn7ZUU zmbV4x<~W(obqTG7Svjz&&8_W>C>|*Fb{Z+|9T+ZNqLI>+<2S`Z0iR0k;S4=~F6^4A zANlGewZYWe$?G7@GWlhb?wb?KFodo7{!v^tQ*4P5+|@v8HCZxCU}dflQn1CUAo~;H T^05213wK=Hl_+*1WhwFj7xEnD literal 0 HcmV?d00001 diff --git a/data/nb.lang b/data/nb.lang new file mode 100644 index 0000000000000000000000000000000000000000..5265e4e84792aa2e2d8574411909db8bdf2a4ac9 GIT binary patch literal 1450 zcmaJ>O=}cE5N&c2!5}%9AW0~agC3H>tHDboF+x@amE3!o%4}zPx|i?G&erDovws?^Js+p%qBDSc2RkEJeL#a+ztNPEIb^!T{N=a}D{2xpcb72;CkjoZr^ki3K`(LVa@Ogqk7oCR`Rs2432>8@Q5fLPdHaLJ#i@QfaeFX;g=+_Ae zGK8^4@g5`0;Z;GGvP#`qzh#;6jmB@;z0;$AcaYk`vuxc5UZ|1I)x_$J2IUqN z+SR^ySk85bY}Go{8f&Z#{;}bM?AO;T>e0wFxnU>o!4Om%cb{`uQ4hsr0-grbm}KT^ J?cWm)e*jWC4y6D9 literal 0 HcmV?d00001 diff --git a/data/nl.lang b/data/nl.lang new file mode 100644 index 0000000000000000000000000000000000000000..d3008ba499f5044882784edec00f3bbec6fe581b GIT binary patch literal 1685 zcmaJ>%We}f6t%iUyo7kD;vu&Z5}-2b8o?rJQ5S6`1Xa6$jiEz8bE{6WkN;GC8*&@>SG72@#_iyKg&7M15{p8V&s5D)i8ujicPai~h`QQnKE zdn0M9Iy4a=GUes#(`}LlacBgXV~SEKAC;4BR5i0>QVbS+x~>K5isCrnz_u~~9JFmn zli%R-O=l;Psp2yYowm?_o=}K8I}11DKDFY;e$ZX}Mth1mU=%u`89Q0sq+1$Pmd|y8xUs=z@GVh!u+bkO_FU0!3 z`f4i$x8sbK$}Y#e968614n5BT<~yP1@mLOBJ-D{Yts_urYiDE2jlXQ;^>mi!qptwt zt`#-Ewt2REEzy2%Ocv2lj|1`);vK3lpP+P_EoV*4bA;L8QLn6K_jvNjGZqM5h|Pbc zGgl4i`a#rmM(zYwq>P`)V6S-ms(`}%SPb^aN*O>xHjr?sF_k60cmN5FecDib5l*DD z8lJ@Ah~W+E0ITB+`-VRyo(gPCPo*TA!LYh-GaRlDF!(Yw=KX|~;PH={8`5FsT~Nq^ zvz9d4nzVz~-Y?YcXC@mkuo1tuEteQpYqCz|Iq6Aa(WN0@{2kIa(hJF!gnFhFMw)qe z{7P3WC3N7_EAOs9<$$5wqEGVTIp9Mb$UAaOUt8x^;s yGFWGoZj`d*FE3Zboexe;CP>8tl(-gmuN<^1;$DKx0d-?5i+z0}?*DZ*CI1IZ6k?tL literal 0 HcmV?d00001 diff --git a/data/pl.lang b/data/pl.lang new file mode 100644 index 0000000000000000000000000000000000000000..06be5be36ef646db2e6fcdb949fe0aceb23838fd GIT binary patch literal 1656 zcmah}J&WB&6diCCFgURTAqh4&CgqC~lPc~EDN;E0LKc>|2#loRdGs+Oq!EKAxOwE^ zDv);Z&)C-8N`K3nbLVNi>s^O5Dn|F?+;h*l7w<0KiLaiF&K_Ia43FuBY_(ecqI@hT zqiXRB|7)e2ieMBO*@yYG3|dl$*R8DPeWA!xZ-dwKK1^O3J(8O`>!;!+b-m3S)t;Yu z@#vXW)Y|2(kyP4J&acVOr(xM~tsrUJBeg(#THbgqoy^38D=9$^Zr*nqX}xM>QR)Bx zfA7dHJ0J{)acWIZpNOw-JnFWyy&L)GuSb1Qb#IGcjipAn+L3mu=YCW+l3L|#IniJn zT^dzwXk6Z6Xy$>39o!I9wMJ#)(`Sh=aEH;Q_~f{s^2hY&53j`cCm3HXJFwa)Q~@jK zXtdstxuh!aLJY>v#P26lu2mnXQl**qF?c>DJvhWO0=#+3Wk7Z*4fC(B#RhQQ_0n_t zR#{BbV{MuE?O3j~%GkV8gCnn1W9xbER7=L7GdhMjPkHk zZ_9d&bs*V;#xn8aAqDP@E}SABKXm73%PzKuL>$5g+2ZSZIiSx!Pa#nD?+2^CG77|s zSr~HE-=Q|RBJc*QFK-I%Eq~eQ&6rcc$}%;a;~_J)*lO<$6)&e;q88sBb_f7jaERtM zAJZ5=9T2tSpn(aJ?fJ3{8pbH(va7Av1sL-Xeq^Xc@(^H4wVs!>^zr&s;_qWt(0cI> zw@cx)u^u{GuC`2!Z(x6%jv+X7E%;2Oh52Mu9{0VcE*-UrJiPaLiiUW!xwLsE?*ELd ziK`Uy$x#Wptmh(LlW)ZB=Ys8XQB}|{0Cp{|NeDL+{GriPzTbzbw+LNjW-;jkG=g1T-KY3 literal 0 HcmV?d00001 diff --git a/data/pt.lang b/data/pt.lang new file mode 100644 index 0000000000000000000000000000000000000000..65e713f9a9e1e7fd55eb0e2039ec5ab1459b11bd GIT binary patch literal 1741 zcma)6%W4!s6fJ@-1VNFAxDc)iF$3DDAV_f2XtEIFh~p2`bl)Tuy1Uw{>LEn3@Jlqf z2wBWZ{DS_kjHjv}(|I5+yYHj!J&(IMTbzjpapm+EtuwnZsixK`S1GfZs-1eCC@o%Z zu`x2|!bwXKsd;_uRDzFE8cA}$N~IyrsWf_;agIQu^Qy4o#mD-WruvjhZEZcDaYiy# z=vknk%BiS-(~d@uR1*qP9f>EGOKd+A8O~&VQvYEq*8ejx68GQge5(AD-0fs3W%>|{ zQ6Exysg3i^F)@OdQa_C;Q@L{NqpEOhx@62=pE`{luzzKp#!ia(AVCkTL@`wsk9SEH zPi1T)acxT`Qry@^&4l!BxyM;M)Yd(Fh1_`eAzHXHkgGZ>XOtsS+p`pwH2#ZWr#=$Mg zEYy^?{Uh;eY<;<3uGJM#ZXcD0{(MMCoiJg}7E%xTj>M0+Wz7rnyd;|9up;a@7}eh& zVyC`V>~B`#o3}pl+FxD~TF1oA3WktPGM}QLcUN0hpU9l*pSGFI4jPOi5yzbu;iMU! zV(UOEMu5#-xSRfF03Dzr3GQVaJhq86hIge`_9%F`F;%xluLcZk`wJ+(Z=(Cqy{&i} zqWiq=x_V=^eyo2#9sc##BtYzM$^|>(&obP#=ouMp;biCiB~O7?>aV`SE*%u%pgk1V wW5`U4I|jgjTv)9mWwBTht1(c@fE8TZN5tK${@N9BD+t%8Hit;uzVO5T1(2nrx&QzG literal 0 HcmV?d00001 diff --git a/data/pt_BR.lang b/data/pt_BR.lang new file mode 100644 index 0000000000000000000000000000000000000000..b36fb87a996b39c1ea5ec19fb3d332f8547b7038 GIT binary patch literal 1624 zcmaJ>O^Xys5KV+Vco5f*gLpCgSa4ys5CmNoJTx+%)DdNWKy+11PfBHGZAMiyC>{j= z$lyWdFemXB)cop+OxZtuCA38@0 ze|@EnGZViZ8qOqvx}4^%1jMLQ7^1odFUQY`#$)P|>Ugr0mbme?PZ1a5_?7k(0yK%b zmZS7sxm)E%ml`1*=Gyyy@R_o-JboF!iMqT03P8#YrgFERrZD$WXt(kE;|UTfA>wm9 zW^o~{#aTh*2M8$0vOrBh&)lE8hc&*Vz}5%fiyh;Utr#>`+7HsFCbendnX+G`oRoKH zP>#43#$)?RfxVLY&>?l@u5Jjmi2Gc#yZ8dQKj{5~5AM;_qU2s;EyVZrS6X^|?0_`O zTj-Izrf58AQswGbDI?f2%JfsJPT{xt~6q1T=%CYp1slcjIC0WT9UrX^c0 z6Ofn|lF(i*?>QHNUcH{QKpCYLh&u!dL)-fA8IPusJpd}m5cV~H6`$#a&K+A>sx?g4tM9xnyyY-$R!ciQ0Lkl zmHTCb0ecvbLyumX1Yy@GX!{QscM@UD%~z-rtRcW|ZlawFapfro9}f`RFTJ_1a<6Aa z(aCn)58Q4!0e)+EGNg)8H$i`!U_1A|a}62upqM2QDr zq@HT4+~Ym9`>^#Hcg04<6Hpl?K=cC+WNa#!T3`IMxB3sgb<4$53B}-;vnhdj5v!%k zUf@+xN&{ksIVR2gyBU1Mo0K!BtGq>a+{Gfo2M%+<&x(Km4^jT=4N;a*Mlcx}|Is-* zW*U#Olua;ae+YUjM`bdN%`T6}4Tvc&UAft3_isOI zGov&9OlC%l_Hu5paK6d5MjJzCH!FAd#o%p^V~n*dSWNQS(rsAFin;B6nk~I1cPXQD s?3qkGFZA^Eg1bBeXDv#?IN725dFwzgxT~dW13(k(MZZk$+W9m68w>eroB#j- literal 0 HcmV?d00001 diff --git a/data/ru.lang b/data/ru.lang new file mode 100644 index 0000000000000000000000000000000000000000..e1ee28eea5c65dd30cfba74e360242f1e132f9e9 GIT binary patch literal 2780 zcmbW3Pm3H?6vZC|-0Ds=sO3UTz%E><=%68zO%|>M!JQzA1pjQrl?XFEOh)aH)*&Dw z#*j}?-I+>P|IJsp@0<7y;_uv7Q&rua9@Ncrch$T1-E;1_=T3Ouez9@v+sYPJ@LAb} z&zn}oVR&`-yS-~4y#MKUH@^Dp#y4Ml8{RnQp#5eAxl3DGk&*nApG!}Fv>6qTt&9gY zqlhx&&oUmwe%z0TDW30x*D`zLwXW;|b>5CYrNiS46a#-ZC%tZ~tjhfB%vJ(OqCq^$ zD4?{dGTWFl)9|s~=jAciQXioix2^0UrSvl!5z~*i6t%JurH^giVjD)&K)Or zEBG{_6{F+F#BZ9ZQ(kXr%Mx zFGZnrsA^Ab9*1g9VW;s|iiIuu50?mw!z)e{NTZ^D$zvXG*#y~?wn(W#>c_~{MC9Qq zSfbW&F}}bap8YZE=|bwpuIxQ#Hdp z+_4ihI&y4|G4slo@vzAiZ%gKzEe?{=4$9sNlxngc+gcK$*!{Lz2~oRX5`RXu8z+Mr-Do#ssxH}kXBk#wmv zpVA>hhAvG#Imbz*^>D;N&KR`jQP0W)2$ffkp{wJ?U{f|c!-50eOP2JmM5w%TPnTNNw!oXkHj4o1_+)*4bik%sc z$nE-8oH%khx+V@tf>*6YWtXH+1X$Bq+U#;3UfIg@#0y_!j-*;SB9ov-cZ8jXukAi> zX7Lc$F2$QHJJFF0I|&ac>yAmn&9uGRs@F3VXJsR+Jbc-yTKO4am~M1(=Jt9_8z@8) zbDfVf8KL9gsSkscs!_6O&*d^wn;HYi!-t!f0gVxAMVYc}n+Y^EjhEMTa{g^69ZS(5 z`e=0z)ih{3&66*-JF9J>tkGx2_a#dZcp~|14MIhwi!)kt3?054`F?g>>tbU`Sw&Lq z3lHn+ioBR&UD!^%QW-Thc;%pZ_?)d&d#W^DgVJcYt&`ZD90OtQ*BjS(3N1gy&W$A-l$-q%)Ey=58?kArZ}PKa%`xA(MO`J_y`Bi^bJ-g%R+W$;&d+!RXReFWug?LN*vd&^tUvw{rX8@=b zCPUF@8J-1=q|c7=0jBVh*y{1)3*jOnmo{`+@?*B8pm8F+aL!9B!b|79hQbTFS^k?g Vwn~ymRyM{`pZtQX7k9lP<3HoCPyhe` literal 0 HcmV?d00001 diff --git a/data/sk.lang b/data/sk.lang new file mode 100644 index 0000000000000000000000000000000000000000..53c44ef5f660310eedf71e45d9124d1eecb916c5 GIT binary patch literal 1150 zcmZ`&J#Q015M7B1QA5k5KnjsLr9^amR1{GNC`fdBcSF3s+nwWf_k@l33H}Yp1w{&1 zNfjw>*8W{#=FSF!$Vs;DR@u_^WDC*)L4q2_9%3j}K{f$uP60~G&%JZ`aSX+1~o z2eq*#fC<>9MPbsi2W5olgG*OnF{Fz!W^hcATQVuHVS=TjG8W^_!su;@7JvsQf@@#E zx5Mx1@D-KN=+JW00)4>!w6IS{;I@<@pE6yi$E_}fN~S&^x8&2(j-Z?7*aqy8Vt+f1 zpbEq!0lyj_A~Wfr)IsNIF+&(gMR3$HYk`a4dGdyDbdDmNA@MA&p_r*RCs@n08k`Xf zu(1xNp?Z3jF5JHin||`ZTIq_!9U;u)K0fNH8y;fUJof6b1HAxycNGluM5Ei!yZ7m8 zJ=b1*>C!bzAYu_4Pn-kMpRptqEzL@-QP@A*&A^hiT5gK-rJG6+GWFzCjswT4&xPFZ zEKmm=F)XoHYMQBoPaSc;-(@%}4X#&u!nG}RPFFisGxg&&tE)MZO}gxelkm5=OxRln zq1@{+brQ&d4-N!8a3D;ct^y}n*O(Km=Zx$_N0w=|gEMJ4;)yGx*DDAFY`822HZ_m3 z1U&&7BE>A&@mmZsbtnX-n8_i6nbYgJ!Ad>+&v`Yyv-}qfI>+n) literal 0 HcmV?d00001 diff --git a/data/sr-latin.lang b/data/sr-latin.lang new file mode 100644 index 0000000000000000000000000000000000000000..c8ec1db361cae15aa10b7832ddb271970590346f GIT binary patch literal 714 zcmb7Bu};G<5Vgbx14UxzU?~WwIlh7#!Dg0Na1_W>RAi_p{5gBnS;Wdp7!H8zNrBA=DFPiy zO3;w#?gDH@wa@+q6rwZIi%)j?F55xyN*s;JMY0EY>%X_{!gc2TuAd@G zeE~zDP*%K{yLl?yw#T5;U{CaSz$IpS3tA6j=msLHTPHAajEfz{zN*J#tYbXumIcMGXZw%+LgJvo zvAP=;g-XsIF0JzjxHMV@AcqA9#}A)#U2CUNlIUpvt{Bi199cuF)qyx2Ql3hm_qzgJ KD@^DgQ50Wu)CX4p literal 0 HcmV?d00001 diff --git a/data/sv.lang b/data/sv.lang new file mode 100644 index 0000000000000000000000000000000000000000..d64d5bdc67776a9887ab26af4f650feab7c52da6 GIT binary patch literal 1356 zcmah}O=}cE5N*5&9&+#t4+^Cqs3e1U5d;sB6%Uad4CLOM>CAMtr+Vn=9kNJndiGE3 z{ssTQ{IK|{=VLcfa1YCLcUAR!uU@rM>G$z)8GWUrZ5EnZ6Bcn*(0TVekdBeci*D^| zP0>0>mC32q>};W_4u0-TrQXj>q@vpdvK&pyaoxH=L`pGC>~mU1&8cSFt%J)AXX@#Z z=03-Srd!9TDHsPFo=y1AX^(vGh;4f?KsHg``-+Rr2m1c@O6?!xRzXk-lO~34eYSYz z!|Q!o+`czcC#PU}K>#~MYHEB%=F&FN1PyMK>!|0tL5M#qC6ZU$U=e2FLof?yVSHs` zuOqrWpw#DnF_lh@5Lt!ki@#2j&=V1f zc{aw_s`f!B<%Z^~qF{UkwKp7p>UY%RUXIFg6NTy!sh$k``jTSXZN`06p#Eg8gWm3@ zu1ot($kf9=;#S_?3>r;3X6p2K*`fvm-ZHe>ZJV`~XYyt)xy!n~(YFKWTu6H$kEo6! zd8XdYuqB^5;bDS@3p4b@@-kZDZi9yGV991?Cnd0!%9GJ8HM**HvHv*fT?TuJd1Rc- z(8XrUqXYun1f7yFsg(wR5ncn3aSs3EAT%%*hD^=~C80_hvdP!;ZUaU`t34oQYBr#d z6;<5^2Bve%3||4VWh#v;F|w9Z!AOiNbe@YNd=*g8#7w=Esg^WkF=l!4N*eHymii@O zWs=8F}oi9A_m5QFDxxTf3)=b1fFf{47-K z#vac+zxP?G?{#`Jz1x6Lr#O!(T7(C7pm9BqsDZRlAVWjPmWS#`wCvlDztz9<^)0O* zdk-B=8#aI;MQ0E=R~B?Hf;L4#g9DruyMEey4U3_gD|LCdD20D>G~^nz&s?TME4_u* zdF*oFI%lUevQ+B4817_(E}LgBSR}B*AUKaE#n8Ik+u@$W90Z|3U$AY>SMYN2 jdZG^R1G*G5^7cR-=PMx3nmhztEx+b7Ugjy!?(Kg9C;f|3 literal 0 HcmV?d00001 diff --git a/data/uk.lang b/data/uk.lang new file mode 100644 index 0000000000000000000000000000000000000000..eb3a981bcef7f39411fd84b136c1eeabab6c0c82 GIT binary patch literal 2750 zcmbW3ON(4p6on5296A;iJtATnl54;R7;w;Ybs(8LRS|lijzp;HBAqB@l}UDV)-QNB;Umx5$IQa6b zo8dV0!XkFVGEC!PnEKFcP^A4Zvb9lXdAI1W|4VMWqQ(gQKi zzYq7_7vXW}D^`ahma!2#p1M~AR>`M^VRyq=xSvr_-9Y8i!T_rgg{txU5DexqQ|EN^WZ%Q7{|kQ$MKwI<9wUV4_xjHeZr$;R*;#>O>5Qq&yB zHEN~#TpFkj@@XoV8gQnX;`gbaatb+;hs-?}9#O>DJs(bZKgQX@e|zIQ_euB_8=6TE zEeV0aYx(um4h_YftCX|Y`~Bp+*753h-bl0A4kewCdLkNlN_!Py^~THictsd7vB-$dF)Qx**od z+z*hZ0888dFNnYoWEb5Ryp1hC#o zQM?9*Y8csATek)ie-(O-U=3E{KP1@8+?&ZCm2f4Il;AsXWbPHl2>B4B)J+R58=Dpg z_G9=3x5>4rWh^PRhFeG#=Q)c?mEGo2?l^Bg)4i@(=H8CvPY9vZ4eHkl1N@DPd)Q97DJNa^|^qK98vnB0uFJ_+~-xT zX|IY6OF1ciN{S^R=mBG&5EP0$HNAvX!jdK!oebJam}nEE!EE!BPl3$6m9N^Kly+;X z3azPtW;g#Ce#6;J818&~m{w1W%BI$(y2X}~QG!Jq7)m;o)YQIab}pnH$@VKb1=ea) zd0=9w_4q8M*19Aps9l!Hx}PEjJHcgI+mKwF2JbS}{&`{rRQZJ2O$q61?gdRaE20<< z0~>JK?jws?>GY z)sN}inb{{lA-%KLC^ng=VdkED&YXKj({R0$Mi=rOnA|~j@)=4s7T!V_2(N;d2h1cWTt=hjJC^vI($@JVY4GK3bnoGXR1`KV<`3GmcwgP z1c`21IAa!^$%Ti^@nspzKg*fLqJ_BV@Wxp5bSPGZeM7MpJE3Rz#9u*ydl&V$c|+C0^h{zedg=T?}A%|vI(v&=TnGo)-dE|QIq)r z;!&2ur>GTirI0s;qQG!iRE5SI!Rv}d!HX5UE06j!$lk47-r4eeKh|@2AdL|WDyWe= z1*#Ld2c=@4H+7UtRm^w)zdwXh_vvyAEOq6`W@vAps-CrY1LhgzhGeATJcj58W7@~JX!~DEr`uJiY zlr5UpR_#|9oXPt%O+~d%Y$sK`nWOHw!B}wp7dLA-O$q=v%TTGW)!@+MOE+#^LCc^F zp|6|QAJG;T*|;4-&w^|R#lvLC{DO=kYy(yR*VoMV)D!mju&r2=FN8^_>0<0Z(6_;; wgNwOK+*oB*rFc0@Ypz>% literal 0 HcmV?d00001 diff --git a/data/zh_TW.lang b/data/zh_TW.lang new file mode 100644 index 0000000000000000000000000000000000000000..399d6287a30d25487672dc9a8a13f21bf0b1a89c GIT binary patch literal 823 zcmZ`%Pj3=Y5Px1gk(e}+s7)GfBuz|Aym>LktDiy-rit-lJT)ed7TjIBxL{=suq`4> zrC41`HLUKUAI3NDy*=>}>a0U4Mdh@-nfd*h->{4}2C!3yaSuvkc4P71G;ZF1aPQ&s zjVBvVA3tN)7i)LGaYfXH=(`Fm#@KBUR`m7+ynezPz;{IGs=6(r9{8?m7Qq`z_ZyVo zL8+$#o<#e<_!e7H#g06w6IAln(}jR#|9(qbvrsj~u~@-YAB1O5Tkzok%XjlXTO!1%|+PE1?y``A;br5oWQUq zLN2>)qF2^oinJy@4t|rmpmexg&x13d;?l6@HVQjm*0ujaTmkbXSR-Ei}yB6l+f!>06R0?xVe#5La#j$*PRio~Q&G$JggOzZz_gsP2Z z@Cq*UK7yg44+^sNQ#vh#J}ahoBRz}I@gvQMe~_lD%n==hG^?=NnX8$`cGB>Zy?xj- zC{Wxhp Date: Thu, 30 Jan 2025 05:04:03 -0700 Subject: [PATCH 28/46] Add pom and github workflow for auto releases Signed-off-by: Taylor Smock --- .github/workflows/ant.yml | 62 ++++++++++++++++++++++++++++ build.xml | 3 +- nbproject/private/private.xml | 12 ------ nbproject/project.xml | 76 ----------------------------------- pom.xml | 57 ++++++++++++++++++++++++++ 5 files changed, 120 insertions(+), 90 deletions(-) create mode 100644 .github/workflows/ant.yml delete mode 100644 nbproject/private/private.xml delete mode 100644 nbproject/project.xml create mode 100644 pom.xml diff --git a/.github/workflows/ant.yml b/.github/workflows/ant.yml new file mode 100644 index 0000000..39b38ec --- /dev/null +++ b/.github/workflows/ant.yml @@ -0,0 +1,62 @@ +name: Java CI + +on: + push: + branches: + - master + - $default-branch + - $protected-branches + pull_request: + branches: + - master + - $default-branch + workflow_dispatch: + +permissions: + id-token: write + attestations: write + contents: write + packages: write + checks: write + +jobs: + check-release-needed: + runs-on: ubuntu-latest + outputs: + release_needed: ${{ steps.create_release_needed.outputs.release_needed }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: ${{ (github.repository == 'JOSM/auto-tools' && github.ref_type == 'branch' && github.ref_name == 'master' && github.event_name != 'schedule' && github.event_name != 'pull_request') && '0' || '1' }} + + - name: Set release needed + id: create_release_needed + run: | + last_tag=$(git describe --tags --abbrev=0 --always) + release_needed="false" + for file in $(git diff ${last_tag}..HEAD --name-only); do + if [[ $file = "src/"* ]] || [[ $file = "data/*" ]] || [[ $file = "lib/*" ]] || [[ $file = "resources/*" ]] || [[ $file = "images/*" ]]; then + release_needed="true" + break + fi + done + echo "release_needed=$release_needed" >> $GITHUB_OUTPUT + + call-workflow: + needs: check-release-needed + strategy: + matrix: + josm-revision: ["", "r19044"] + uses: JOSM/JOSMPluginAction/.github/workflows/ant.yml@v3 + with: + josm-revision: ${{ matrix.josm-revision }} + perform-revision-tagging: ${{ github.repository == 'JOSM/auto-tools' && github.ref_type == 'branch' && github.ref_name == 'master' && github.event_name != 'schedule' && github.event_name != 'pull_request' && matrix.josm-revision == 'r19044' }} + plugin-jar-name: "continuosDownload" + secrets: inherit + permissions: + attestations: write + checks: write + contents: write + deployments: write + id-token: write diff --git a/build.xml b/build.xml index 1a34841..703ea63 100644 --- a/build.xml +++ b/build.xml @@ -2,7 +2,6 @@ - @@ -16,7 +15,7 @@ - + diff --git a/nbproject/private/private.xml b/nbproject/private/private.xml deleted file mode 100644 index 62fee78..0000000 --- a/nbproject/private/private.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - file:/home/samely/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java - file:/home/samely/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/AutoTools.java - file:/home/samely/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/actions/SplittingTool.java - file:/home/samely/josm/plugins/auto-tools/src/org/openstreetmap/josm/plugins/auto_tools/actions/ReplaceBuilding.java - - - diff --git a/nbproject/project.xml b/nbproject/project.xml deleted file mode 100644 index 32e5ae3..0000000 --- a/nbproject/project.xml +++ /dev/null @@ -1,76 +0,0 @@ - - - org.netbeans.modules.ant.freeform - - - auto_tools - - - - auto_tools - - - - - . - UTF-8 - - - - java - src - UTF-8 - - - - - compile - - - clean - - - runjosm - - - test - - - clean - compile - - - - - - - src - - - build.xml - - - - - - - - - - - - - - - src - ../../dist/utilsplugin2.jar:../../core/dist/josm-custom.jar - 1.8 - - - - diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..96c4505 --- /dev/null +++ b/pom.xml @@ -0,0 +1,57 @@ + + 4.0.0 + + org.openstreetmap.josm.plugins + plugin-root + SNAPSHOT + + auto-tools + + ${plugin.link} + + + Rub21 + + + samely + + + + src + 19044 + Rub21,samely + org.openstreetmap.josm.plugins.auto_tools.AutoTools + Automatic tools to help on common issues + https://github.com/JOSM/auto-tools + true + images/wrench.png + utilsplugin2 + + + + org.openstreetmap.josm.plugins + utilsplugin2 + SNAPSHOT + provided + + + + + + org.apache.maven.plugins + maven-jar-plugin + + + + ${plugin.link} + ${plugin.icon} + ${plugin.canloadatruntime} + ${plugin.requires} + + + + + + + From 0076fa56451023d7e0bc2867eb623c5d63e76b56 Mon Sep 17 00:00:00 2001 From: Taylor Smock Date: Thu, 30 Jan 2025 05:10:28 -0700 Subject: [PATCH 29/46] Drop jar name from GH workflow Signed-off-by: Taylor Smock --- .github/workflows/ant.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ant.yml b/.github/workflows/ant.yml index 39b38ec..c14f1cc 100644 --- a/.github/workflows/ant.yml +++ b/.github/workflows/ant.yml @@ -52,7 +52,6 @@ jobs: with: josm-revision: ${{ matrix.josm-revision }} perform-revision-tagging: ${{ github.repository == 'JOSM/auto-tools' && github.ref_type == 'branch' && github.ref_name == 'master' && github.event_name != 'schedule' && github.event_name != 'pull_request' && matrix.josm-revision == 'r19044' }} - plugin-jar-name: "continuosDownload" secrets: inherit permissions: attestations: write From 73e39da9b61f0b0e50e099781220fea582a88c28 Mon Sep 17 00:00:00 2001 From: Taylor Smock Date: Thu, 30 Jan 2025 05:33:05 -0700 Subject: [PATCH 30/46] Set the custom name for the jar file Signed-off-by: Taylor Smock --- .github/workflows/ant.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ant.yml b/.github/workflows/ant.yml index c14f1cc..237725a 100644 --- a/.github/workflows/ant.yml +++ b/.github/workflows/ant.yml @@ -52,6 +52,7 @@ jobs: with: josm-revision: ${{ matrix.josm-revision }} perform-revision-tagging: ${{ github.repository == 'JOSM/auto-tools' && github.ref_type == 'branch' && github.ref_name == 'master' && github.event_name != 'schedule' && github.event_name != 'pull_request' && matrix.josm-revision == 'r19044' }} + plugin-jar-name: "auto_tools" secrets: inherit permissions: attestations: write From 1d6148cf473a70ff49e07e8fa1307eb20dae44c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Mon, 3 Feb 2025 15:59:27 +0100 Subject: [PATCH 31/46] I18n update --- data/sv.lang | Bin 1356 -> 1594 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/sv.lang b/data/sv.lang index d64d5bdc67776a9887ab26af4f650feab7c52da6..e8fbe98d784ba50dee02a52728a3d092774c2147 100644 GIT binary patch delta 265 zcmX@ZwTs7@f!ndPB)=@RD7&OGok0SLW997Qm{ggbo|l-CTErlQEaO^Ke0WJoi4#P2 zBHPw_G4K4`q|Ch3qC^EBM+Jm7B^2?@+=Bd~5}=}#R3tTlZilxODdZkrnwOraP+Cw> zlv6sa67$LqFUbQs3MiGGlUS6hkjoE}QOGPV rIlLq%C$&Ux``P? delta 27 ccmdnRbB2qJ0SqQOZ)F8DHn%Z$voJCM087IJ`v3p{ From 87c61685c685e23c7a59f9781d6174f90e06b602 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Wed, 12 Feb 2025 10:41:43 +0100 Subject: [PATCH 32/46] I18n update --- data/cy.lang | Bin 181 -> 195 bytes data/en_AU.lang | Bin 72 -> 72 bytes data/ko.lang | Bin 765 -> 943 bytes data/pt_BR.lang | Bin 1624 -> 1640 bytes 4 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/cy.lang b/data/cy.lang index 6014129ea769d5fcc02ef88ec2494f7d2da50322..53063070c40dda036d4fb3df0fc0e519d894e80f 100644 GIT binary patch delta 28 jcmdnWc$jfQH$R_CW^sN>PNri@YGzJi%EU(LiOcx_mYoWc delta 37 lcmX@ixRr52_r!JV6F0EJ5kCWaP)21^X-WzM!~g#b3;-E74cY(z diff --git a/data/en_AU.lang b/data/en_AU.lang index 2c35beaa6df9154e8a74bb8f1fd4d797e6c7c011..1e8d1e3b51c29f6429a79847196061bd4d1ec7a5 100644 GIT binary patch literal 72 PcmezW??2`6|G$3#HH$}; literal 72 dcmZQz0D=Gi{{I6rpad!pRR&cpNacSZ0Ra185a<8^ diff --git a/data/ko.lang b/data/ko.lang index e193bb743ba7351cad9b104afe3f5b7a73011468..e45f7d94455fdc2172baa98fc6a21cbac65aaaf7 100644 GIT binary patch delta 273 zcmaiu%?g506ohpVK0yRga+Yn1R&68bC3>0^FX2K+QR@<3Fe=;x{dj{GK9T3#M+h=( zSJZ50=9_smPKG}jo29hMoZ+DW^ennc6{kQh2U;&kc-kL7nC^@rW-dli2zsljcubB> zNrBr0%9~#SwSL&u+w*UZR%t}3O)H5@1}d&P=LAT|7esIpXVt3j^ bgR0r9ck8F}oyE-i%$gW<{2#D>y1C&^9Cx_jX3hn|W&#-n49%V4BVd0D56d A3IG5A diff --git a/data/pt_BR.lang b/data/pt_BR.lang index b36fb87a996b39c1ea5ec19fb3d332f8547b7038..8e13f35584c9daf4ca2cdc8a0260c473623e6c6e 100644 GIT binary patch delta 113 zcmcb?^MYr>EymQ1x8E}gDFl}$6_;d|lx7wwq^4x19bP;6Hj@lv>gFFzOw3L~MX6<} sMJ1^~xsuGn($tc~;{X4d7(^TulJj#CixjF2YT+^rqS!#}JB01cZes{jB1 delta 97 zcmaFCbAxBXEk@Ukx8E}g$_JMw6_;d|lx7wwxTa*LWlp}sB*W;s`6m+-voUW`YFTPg mNotWoNn(2O|Nl%3{EiCA`8kP23e^U+AVCHJG=a&sY}x=FyduN^ From c59715447d2d18afab8f42ce4185421680453972 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Mon, 17 Feb 2025 17:11:13 +0100 Subject: [PATCH 33/46] drop primitive text, use JOSM i18n instead --- .../josm/plugins/auto_tools/actions/MergeBuildingsAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java index d7d10a2..1512868 100644 --- a/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java +++ b/src/org/openstreetmap/josm/plugins/auto_tools/actions/MergeBuildingsAction.java @@ -169,7 +169,7 @@ protected Command MergeAllTags(Relation relation, List selection, if (!commands.isEmpty()) { String title1 = trn("Pasting {0} tag", "Pasting {0} tags", tc.getKeys().size(), tc.getKeys().size()); - String title2 = trn("to {0} primitive", "to {0} primitives", selection.size(), selection.size()); + String title2 = trn("to {0} object", "to {0} objects", selection.size(), selection.size()); return new SequenceCommand(title1 + " " + title2, commands); } return null; From 5a6ef0f8dff5be85ccec665ae4ba8cd972ba734b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Wed, 19 Feb 2025 11:50:01 +0100 Subject: [PATCH 34/46] I18n update --- data/ar.lang | Bin 2571 -> 2532 bytes data/ast.lang | Bin 1119 -> 1146 bytes data/be.lang | Bin 2840 -> 2831 bytes data/bg.lang | Bin 2813 -> 2801 bytes data/ca-valencia.lang | Bin 1147 -> 1178 bytes data/ca.lang | Bin 1149 -> 1180 bytes data/cs.lang | Bin 1531 -> 1503 bytes data/da.lang | Bin 1498 -> 1494 bytes data/de.lang | Bin 1782 -> 1779 bytes data/el.lang | Bin 803 -> 869 bytes data/en.lang | Bin 1396 -> 1390 bytes data/es.lang | Bin 1700 -> 1694 bytes data/et.lang | Bin 319 -> 349 bytes data/fa.lang | Bin 692 -> 722 bytes data/fi.lang | Bin 603 -> 633 bytes data/fr.lang | Bin 1908 -> 1896 bytes data/gl.lang | Bin 717 -> 716 bytes data/hu.lang | Bin 1199 -> 1231 bytes data/id.lang | Bin 1523 -> 1523 bytes data/it.lang | Bin 1896 -> 1888 bytes data/ja.lang | Bin 1654 -> 1686 bytes data/km.lang | Bin 728 -> 768 bytes data/ko.lang | Bin 943 -> 935 bytes data/lt.lang | Bin 669 -> 720 bytes data/mr.lang | Bin 483 -> 540 bytes data/nb.lang | Bin 1450 -> 1446 bytes data/nl.lang | Bin 1685 -> 1679 bytes data/pl.lang | Bin 1656 -> 1648 bytes data/pt.lang | Bin 1741 -> 1737 bytes data/pt_BR.lang | Bin 1640 -> 1647 bytes data/ru.lang | Bin 2780 -> 2768 bytes data/sk.lang | Bin 1150 -> 1200 bytes data/sr-latin.lang | Bin 714 -> 763 bytes data/sv.lang | Bin 1594 -> 1588 bytes data/tr.lang | Bin 377 -> 403 bytes data/uk.lang | Bin 2750 -> 2734 bytes data/zh_CN.lang | Bin 954 -> 973 bytes data/zh_TW.lang | Bin 823 -> 842 bytes 38 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/ar.lang b/data/ar.lang index 9a4dd3447dd04280f4dab50dd5550c677eafd9e7..dae48f847d3c233d434fc83d73ccb070181e42c9 100644 GIT binary patch delta 135 zcmeAcc_O?am9t*xX3Nb6g_|ummMh%Yd9&@t)*Blc#K2-OuENcZ8_RF3y|JD_5JmiE i*UdHtVX#oOK`li0aZg$;R$)JQoLg8iyP|aGP%9RY# e*ww7M*>$sxK@z*<@*Ard5SFT=*@}=sl>h+8erFB< diff --git a/data/ast.lang b/data/ast.lang index 6dbf35b8f73fbb47785454f98d10a848023e47bf..c67d15a7a04b02fbeaa7b24911a303035d4a818b 100644 GIT binary patch delta 36 jcmcc5@rz?a9E%JS19zfAwLz^yeno0YDFY9JlV1z~(iIDu delta 9 Qcmeyxai3#D919}@02ERJ{Qv*} diff --git a/data/be.lang b/data/be.lang index be57dcd048fc4d5acc33ca8cabbab7aeb91c0f2b..27a6a4a6d763ff14c2022845be1e69058ded6cdf 100644 GIT binary patch delta 79 ycmbOs)-Sf<1ed$W#b$+SgIa|P8!l{o)G+hH)(g8XHZh1{6TPs3K?1w@#d!c@Lo6Hs delta 88 zcmeAdn<2L01XqCg#b$+SgIa|P`!6`cZVlAufH<3%f3MUD%^gZBVOlVc&&~7q$Wgni#~f3SZa&08y_X1ONa4 delta 67 ycmew;`d4(rAuem_3%f3MUD%^gZBVOlVgJR33p+0Cxv=A66Oi7-Ad5%x!VUl;(K+01_?&)&Kwi diff --git a/data/ca.lang b/data/ca.lang index 304175c66c8738b11b9b8943aa038de04858d5af..680194bc50fe2c9584d185d4e4d956517485e1a5 100644 GIT binary patch delta 40 kcmey%F^6+Q4T}O318<^2wLz^yeo|Iya!D!!9}2e^0RE8-)c^nh delta 9 QcmbQk`Ilou4GSX!01{RL+yDRo diff --git a/data/cs.lang b/data/cs.lang index c98bfb8d433207353d679548c79272afc1a022d6..54575ee3002df384b610ed536ba61ee342a46492 100644 GIT binary patch delta 57 mcmey(eV=>7I#xrzlzfG1gIb0Bq^#8Jl2QhK6#mim7y5>xUHuT>~0Dof2~z%G$p$smQHBRK=4C;RAn E0L>dCTmS$7 diff --git a/data/da.lang b/data/da.lang index 39af9f17f41b954c85bd67e02438389062e07199..470b8f8c90aed7a74ff8a344b3bda1e46414cdd6 100644 GIT binary patch delta 41 kcmcb`eT{p=R#rv6lFS^1YJ*yZ{G_bZ>=Fh6RDNm^05JwS5rx&4F`Yy<%0 C+AMnj delta 9 QcmaFLwwP^$5;G$M01)B=YXATM diff --git a/data/en.lang b/data/en.lang index 61a05f0f060aadcf0f8780964552f1710e72ec6d..1b87a555137a7ab7141fcabb5cdbceba008f69da 100644 GIT binary patch delta 38 icmeyu^^R*p0IM8tNxnk0L9If5QdVkm2?HMrw-^8d`VA}q delta 44 lcmaFI^@VFg0IP~XNxnk0L9IeTQD$ytNoH9pgCM#{F#u$=5BvZC diff --git a/data/es.lang b/data/es.lang index 01d622d6dfecba6bb0081aaeebcb9ccbbb21c353..da45f605738aec7936cb7b8812bf60274c1f8d32 100644 GIT binary patch delta 36 hcmZ3&JCAom6PpZAqC&MntwMfMR%%H;11~bK7y#5m3)KJs delta 42 kcmbQoyM%W`6Ppr$qC&MntwKRjW^QIlW?4Ri0GdEC04-b&p#T5? diff --git a/data/et.lang b/data/et.lang index 74654a95734251d8fde60791736f444a44467822..a8e453f82f09163619f2ffd7146098f3ac04794e 100644 GIT binary patch delta 39 hcmdnbbeCy^9iu!G18=oKtwMfMR%&)hW=<*^7Xb4949x%l delta 9 Qcmcc1w4Z5%9U~(H01=P^kpKVy diff --git a/data/fa.lang b/data/fa.lang index 82f6ccada619fffd6a1024c02e8cf6efb7cc6310..c8eaa604f96daea849c86e460746e79b163b9031 100644 GIT binary patch delta 39 icmdnOdWm(zW+r(i2HqPhZni5_8`LV?*mAoEjSB!oQW2*B delta 9 Qcmcb_x`lPaW+p}k021K>_W%F@ diff --git a/data/fi.lang b/data/fi.lang index 700adc3a5c3e3630b2bdd686eabc4469aa9546e3..e483a6a478596f5a316d84e154348fe8c4211360 100644 GIT binary patch delta 39 hcmcc3@{?sl6q7s?18=oKtwMfMR%&)hW@a857XSb%4Ke@# delta 9 Qcmey#a+_sC6cZx@02AK=>Hq)$ diff --git a/data/fr.lang b/data/fr.lang index 719b11d2d13a1078a004f198e15185748fb46f1a..83c1f60f7775d14ee99dea873cce8816d3ddd096 100644 GIT binary patch delta 36 hcmeyu_kwSO54#M{;ROoS2DJ+LNm;2S47|v^VgUPj4PpQQ delta 48 ncmaFC_l0kR54(m?S!z+SLbXAyLP1exZe~elSt^4trdTlmuqqM0 diff --git a/data/gl.lang b/data/gl.lang index 3317b73fa1e1f6b91a4d39e25ddd8767a1de5a11..9f90080713a7a17f2e94418340b05c91bd95cd99 100644 GIT binary patch delta 41 ocmX@hdWLnwY9>X##C(PPq>9w!l6-|~gIWfG#Qb8IKru)J05YBqegFUf delta 42 kcmX@ZdX{y=Y9=NAM1^XDT7`n5%-qb9%(8q20W^VP06r}b4FCWD diff --git a/data/hu.lang b/data/hu.lang index eee960c523a1c03723dcfbd42b2a84a158a98d52..508c8a9bef353690b62baa776bf3a7551b786487 100644 GIT binary patch delta 41 icmZ3_d7g8_Iu=DH2EJ;8T7~?itkmq1(%hm%bUpwcunsB! delta 9 QcmX@lxt?>wIu=F-020jt^Z)<= diff --git a/data/id.lang b/data/id.lang index 817137ada232ecf78523467a3a5dd640fac52eab..81cba9470cd63b103ef30a63e8480e46d8416120 100644 GIT binary patch delta 23 ecmey&{h52i6ITAxypqyvg=&LZh5V$f)NBBFLJ3a* delta 23 ecmey&{h52i6ITB0RE27TT7`n5%-qb9%rpRWvQ_(;huoup0?qhli{C>AbT)}x7uI+u0B941Bv01?sx#{d8T diff --git a/data/mr.lang b/data/mr.lang index 35a6482fbe164ba5f47856f1e9fc123fe428714c..6fb848ac8934c735534e9ec4f5663a57de89d863 100644 GIT binary patch delta 66 zcmaFNJcnh&BStGG2FYrJT7?Howmw+0*AH0LlUY DiyJ0$ delta 9 QcmbQk@|bzUBSuCB021i~8vp3jgrta!e5bb37H# delta 67 qcmeys^MhxDEt|DaO1?t1L9IeTW@=G+eo0hsHZcG()fhnl diff --git a/data/pt.lang b/data/pt.lang index 65e713f9a9e1e7fd55eb0e2039ec5ab1459b11bd..c7b9886095c1567f543c0bff16a24df5f2401137 100644 GIT binary patch delta 38 icmX@hdy;p@YBnYQg2bXkg=&LZh5V$f)RKG#0W^VP072Fcs>AEryzzsK?Ok2sS+tsIfS;NTIkiskkJwr1bFG zl*GwBEHUDV#R@~Kq)Dtg7GO0B$@#f(Cj*Vw3O>9z zUm-EMD782_HLoNw1!!1GYHnh2CYTBK&ui9DCH{iMqC|yigIb0Bq^#7EdGIsS1f2#hMCbnUhyCDlsNcKEo)o=_9o@3bM1|!1T!qryM4;;v^%#_WOEXIni$R=X1)vuaa}^R( pGLtj&^Ab}g|6mQ(5GqJ4N>r#es8uK^%FN9y$t=rf5XKZM1^_CrXb%7Y diff --git a/data/ru.lang b/data/ru.lang index e1ee28eea5c65dd30cfba74e360242f1e132f9e9..6819281c1c3a66a333500f6a02596e1f0b1a6eab 100644 GIT binary patch delta 76 ycmca3dO>tU50{JZg-r_82DJ(o_FdR`vFpOt3%f2hF^FOjys&{m9GmdI3!4BEH7im8 delta 88 zcmca0dPj6a4_AQrg-r_82DJ(o_Frtcu;ap>3p*}00qIQ)k~kzTY+#VaCAIIuCIF5h BG?4%R diff --git a/data/sk.lang b/data/sk.lang index 53c44ef5f660310eedf71e45d9124d1eecb916c5..ba41c1803593b9a03115248cdeecb9e531624224 100644 GIT binary patch delta 59 ocmeyzv4L|#EsHTT1Aj`sLbXAyLVi+KYIaF}83P}RKq-a-077>YzyJUM delta 9 QcmdnM`Hy2mEej(90237g@&Et; diff --git a/data/sr-latin.lang b/data/sr-latin.lang index c8ec1db361cae15aa10b7832ddb271970590346f..c8e405629cf20957386e9f6c9db112b6b6cfb96a 100644 GIT binary patch delta 58 pcmX@b`kQsbNhTv^2EM#Rg=&LZh5V$f)a=9(RDMY!13#*KA^ delta 95 zcmZ1{x=(aNI#;;Vg)J9$U+h63!3BN1= D1IjoY diff --git a/data/zh_CN.lang b/data/zh_CN.lang index 04a64660f24d1605b4c30f899e25d95957b36a77..5b2ccfe2acc8cd282d8680b90daa6bdf712b4067 100644 GIT binary patch delta 28 mcmV+%0OS9<2h9htxdRjd01@SgupoOdeIVqxs^zb_=&_-svJH9w delta 9 QcmX@hzKeasPG&|10237h0{{R3 diff --git a/data/zh_TW.lang b/data/zh_TW.lang index 399d6287a30d25487672dc9a8a13f21bf0b1a89c..b935931a92a2c0362973c2786e8a42a3751cd9e7 100644 GIT binary patch delta 28 kcmdnac8YC-8M6o@gW%JS4GPr;wF*xgx}SHhe6o8R0F<%}fB*mh delta 9 QcmX@bww-N*88agT01(RpcmMzZ From 5c3b5fb24e7419888b5916b9246235b74e42dc6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Wed, 26 Feb 2025 11:41:27 +0100 Subject: [PATCH 35/46] I18n update --- data/de.lang | Bin 1779 -> 1772 bytes data/en_CA.lang | 1 + data/nb.lang | Bin 1446 -> 1502 bytes 3 files changed, 1 insertion(+) create mode 100644 data/en_CA.lang diff --git a/data/de.lang b/data/de.lang index 9a66a3f8c5eee5d6415975df77f2bb836f100c5e..a1e262200a49cfdc02dfc981ffbe74d2d5b46d90 100644 GIT binary patch delta 25 hcmey&`-XSJ2^PlM$tPJ{*-~>-b5rv+OS9f!1OSPb3BdpW delta 32 ocmaFE`b5n~p II;F4z0N!vCr2qf` delta 12 Tcmcb|y^MQ;BO}AcsuWfL9T)@w From 4d2a0e12cd4ba08e1a2ffc5d19a8f4c9505bd72c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Wed, 5 Mar 2025 09:34:37 +0100 Subject: [PATCH 36/46] I18n update --- data/eo.lang | Bin 0 -> 642 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/eo.lang diff --git a/data/eo.lang b/data/eo.lang new file mode 100644 index 0000000000000000000000000000000000000000..48a73777b561b28ac8c5ec9133956d14f9a54ab1 GIT binary patch literal 642 zcmZ`$yH3O~5VWqKLQq1v71eRNn(id%fa3UqMP8y!9Bek}RKcD$wTU7=U-vVQH^Z?^0(3U~slqY5e;7b|g` ziB~#(9&~Dv6S>YVm>i(j?ucI>*nJ)dofVtATLdg(gSrhlDux+<$kGm$Teb|BI?Z#_ zdohaXfx7m}td(xM4IQ&$^1WlU6R-qI&`Pe74iR||(LVuJ7$W)J`h=^o#1S!wf9~EG zqSCNaTbeKhH7(597}pZi%i3b(Y!K}=O(@Yb1p&3@mzU{fwk@$FogOsUdH&I+r4YrK o{eEH2HZF4w+I}s~3rLeDE9U&4LcTC3svxz>W1cKGr$6ucH`kfiF8}}l literal 0 HcmV?d00001 From bb2b72bc2e674038328e7baf5f078cff5d9b0bf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Wed, 12 Mar 2025 12:52:47 +0100 Subject: [PATCH 37/46] I18n update --- data/eo.lang | Bin 642 -> 1597 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/eo.lang b/data/eo.lang index 48a73777b561b28ac8c5ec9133956d14f9a54ab1..a920959b356a67e2e5d0cd72f4946f505efe1c80 100644 GIT binary patch literal 1597 zcmaJ>%T5$Q6s@o@F;R&tS>Z(yHGvMgWH$;61F}GVpvEbN>aItpx@uy^xK=-cPhjaE z4Bv(4RyUb$6jq(C`#$H~D^^EWm(g1pWl5imFU9)uf&ceD9*rvRni!H?{DJ-TE&B*I zL|uMPQdJXG zAS20oH}Qp7ho2f7_Ul!qppA^abmIB__Cl;3dOOxAa5SR+WKL}MEZU;osL`Xl<+cAM z)hfV(nzh2mXzTNEXB<(XQx(zsHl?|A5mOmW4e}Z3I+H8J!_y$$;x~X1k51I$0y*~R z`|c0%?ijHoYZ;<)84a5G(!VL+Zj<}p=!K9UyqkHGNEuZ{P06Jkzw`#f4r|}dZJtS3-S3#l0;V$ zR4MMy{})|erb!#P0|y75Gkzd|na)CpvJksSck|bJu!wqcuxjpUq6i5X+F?Z5w$B|5 z6p7v%X=NAj6E!%tlUq*STTUNkPa)@W*6ubh7PN*7P=|b4h$*njj)VG&a{=tSrAFT1 zEzrar(Zfb0l#D2@4v^n>jg%OOFG*HoOxQt%2{0u3R_5v=@nVw<3gf;yzQLo%eAZ)c z1TDTTerbvT2^&kyba$)zH;4(q&S9AwEE(=$M$bWCWTn$8V6S<^!Rqi!zfztBu;A#m zd~BT}j$^Q_dCrc$_Dte6-;E9NU^G)9dhs+US!rBYg=3^3K6ib+BA$)R)Fg=w0}Qw` ZH&(HBhoM{%PtZ8K`f delta 106 zcmdnX)5OZb00k2}HQAxe$wrLs!VC;NL8(XPX6EKwDO4NOf}|#^GkFL?)gY+J6PdTL gg1M75SWOvAC&#h6ax*ZnIhLgsmE;3;J!Opm0Efd8pa1{> From 50bc3a9cdf51825f4edfba9b06d707046d3eff7c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Thu, 27 Mar 2025 08:11:34 +0100 Subject: [PATCH 38/46] I18n update --- data/el.lang | Bin 869 -> 3242 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/el.lang b/data/el.lang index e66c6ade8ebc6812b5956512c6faf40480fb2477..7ec4ac8a910e8ec3a788c06b37ef49f3e772b039 100644 GIT binary patch literal 3242 zcmb`J&x#yX6vl7z41(as3PCgwi-5bqg+UO+EEOa#;MTne)7@#?hKUeR0&x*RvU0kc znwhfG-P5TzIQ2;J_nli+UDef-iQ*!ezID$%f4=jb@7{3Bo|NPAQF&sQmX(hzOYFCD zVCRW`)h|CAn*fvpm6n!D?%#iT!O$g3Rk`!#DOTrrX3W%VRr`3Oj{x%kpRb0cO=qe3ldVIS^!*Hlq)PU0889;qw5~5q%Zp^o|66 zaYQpY$oRBj<1rp+r;Ixu(r|l^=yX#fFj2EGU+Hjo*PeODTHHKJez^Bz_}-p-%Q*uP zJR&vBp&Ce3w7U=mX*(3cZ2l2Q4DZ~92-tKP7uhBlNVc8_CV^GvTwbK%FY-NRa{~;o zRFm>$KIN|y2iB6&I03g~T0Eenm=lKp;Y@AU52XQ?c$pCwqG?c^sg>U?8wcET0LqNY zspm&y&cS!8uZ)5wHcP`(dn%L2;wl#YThl;HA21Twc&7UM*!iRl>bx@z-4Av-F9UEv5dvo98W`ER|c1@07}G9ZH%EamF6H@VtPmvkETRPDl@ zi=>v}&YL_)pLcrtX^%^)4@KBOjtPchp4S`O)Y66`LIP8k&IJIP||R} zcL>QnfdpMc4fa$l5=xEGLXcq^KIpqR6zMkFtAWsUl-E@6Oh`ElFGNt$bw<5ZF7b+5 zqzNmeVgHeWwRZVbR@F!wsW$nz@u{$yN-~T?ookG2(Jq>jzmv?gO?+6R;Ox)=s!CIK z1LiG^ninxx(^{8F1dRjdZ3d>{p*`QvrV6FcO(-p{2&L&*unE!~@9B+qz&dX1#IO-5 z-LNwfb1)kv31S=b8IC0WQYkBQbAN3q06Rjw2AADTl-C$hA*m@%HD0!8eUDd z`=%VK#c6#*wUqV7z50o!sLXWtea44=%eu~DqvurVRA|JZ-$}Yq6NQ9$S|I*hS@p^O zf!N9(1vTPP-+V9*Uqjf`!CIB?CmUJc?IkCjahC@-)9|(FbtIhhX5Bcdr<#oH7Uk7Y-QGN) wUcbH>KCFaRv!h3uo(tSjJKGs&P?75mE2lTZ`|3_~vTM84%C9pkt~1E~0RuH}fB*mh delta 89 zcmZ1_`IL==0SYEDMsUN}Kzgz~vlKg&KiQ7ehZjkXfnoCxwj4&d*2&e}#Vic}|1(Xt L<58My&QlBk!cGjZ From 218e7fb6399f9a3fcb61b84d864628a4066f3364 Mon Sep 17 00:00:00 2001 From: Taylor Smock Date: Sat, 29 Mar 2025 11:14:33 -0600 Subject: [PATCH 39/46] See #23716: Update SNAPSHOT to 1.0-SNAPSHOT for plugin versions --- pom.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 96c4505..1b7ff8b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.openstreetmap.josm.plugins plugin-root - SNAPSHOT + 1.0-SNAPSHOT auto-tools @@ -32,7 +32,7 @@ org.openstreetmap.josm.plugins utilsplugin2 - SNAPSHOT + 1.0-SNAPSHOT provided From 0b26d5c074d5ebc1200531eb1e252899f3d205ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Thu, 1 May 2025 13:56:23 +0200 Subject: [PATCH 40/46] I18n update --- data/fo.lang | Bin 0 -> 1436 bytes data/fr.lang | Bin 1896 -> 1902 bytes data/is.lang | Bin 303 -> 381 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/fo.lang diff --git a/data/fo.lang b/data/fo.lang new file mode 100644 index 0000000000000000000000000000000000000000..df3dca1a3fb8f397384e0ea9a24dbd5d69aee584 GIT binary patch literal 1436 zcmZ`(&1)1f6c0VAR1nmPU+`KG6xz{~hvKCLrO;vzt$Xv3VKcMoWHL)8Gq8xDC;yJU zcq9(u3r`>t)W%B!aBW`bXzM;c#YR-R)6@EBu8q;nbRJ!onlhSHi zinj+xVQTtbyNWzU$!kN>(}>GsNxcpy)Jto0+0`_5O>R`()#Bx@w3c*LX)>xTk0ez# z%sh48OIu8wrjgRMwwZW*HQDmbl3H2k;VhhpCpWe-@$f*_(zeRe-WKHvt#o2-v8=5v zOy`+MyD;&{k9W;cX%J5x0 zO{{I9ZR;r<(-80PO4nJ?fz(YI$87k;>ZbW6ED+36C zU;qH4yl@sViFJjt?*V+?kS-Ie+{%^nSH+aGlsO)Gz$5=1yt8YXNzYPe;={)<>y?8_ z8hJJgCP88^`CfQf@d4;T8;q_5z$gKX#+hMs4_peDASa_%Pm+ p1@;?eK+#&cN}r!EiTiuHMiw9g=RVc1EiQ?>948*i5ikAE;~%VjBq;y@ literal 0 HcmV?d00001 diff --git a/data/fr.lang b/data/fr.lang index 83c1f60f7775d14ee99dea873cce8816d3ddd096..fe38bfff25b1fe73e32f5a105c6d75a285ed181e 100644 GIT binary patch delta 29 lcmaFC_l|GFTQ)}Z$?w>txgRymOe`rW%1kOPnasx?1pvLK3)cVu delta 23 fcmaFI_kwT3TQ)|;$?w>tSyL5C64NJ(utxy^Z=nb% diff --git a/data/is.lang b/data/is.lang index 69c8ba6496e1d2cc36b080c58f13dd4cb7de62fa..7543e5f07888f81e430c8064b2e2ad6accc909f5 100644 GIT binary patch delta 89 zcmZ3_^p|NuzQ3Q};az2^MTvPSnF?izISQ#o3aQ!InF<+)m!+2|Bp%+Nke6SQs8Eub pqmZ4GpO%-ImtL%(tB{(Po|%`Ykdb$IS4k;QOA$yjP-J4kegIc%Bpv_& delta 11 Scmey%w4P}~J|n}#eft3$vIM^X From 6c6bb6f51550f68aba6651481fdd24aaf573332b Mon Sep 17 00:00:00 2001 From: Taylor Smock Date: Thu, 8 May 2025 09:49:57 -0400 Subject: [PATCH 41/46] Correct artifactId Signed-off-by: Taylor Smock --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1b7ff8b..d350de1 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ plugin-root 1.0-SNAPSHOT - auto-tools + auto_tools ${plugin.link} From 442ec0a218b0966f6f49a83bf90b2ea04a308db8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Fri, 11 Jul 2025 10:20:44 +0200 Subject: [PATCH 42/46] I18n update --- data/id.lang | Bin 1523 -> 1481 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/id.lang b/data/id.lang index 81cba9470cd63b103ef30a63e8480e46d8416120..3a06b0e503ea734e3c90046a0b65f02e0e08ddca 100644 GIT binary patch delta 568 zcmZ9J!AiqG5QZCRLFmzgD53+ssMG}!tcMShB=Tg4Ce_=`^8e z_2v(~`Ta#Ont!YxWXk4JLE_K~7*T}U5=f=F;5GhVsiZP7Y82IBu(5SK@k>i5SwK?c zG$uTprz(bO8f=niU7k@&F_dT>L};jl8R`g7V(q2iI>D6RNVMGHVreo&;rg zU=6}ZbqICYybnDZXUct!Fj}PQr81SVQbJcyn7mMi!(%2_Uto&N%BWG!kjDG&L!z!7 zrqryc!Ttr9DCuyK8Do?xbXK&E#?^Cse^ruW1F@*y+r8kX`fTrP`vdoDxybz;{8zmi Rc6Qeq;>Ah*hp28l?g!fY%l!ZV delta 623 zcmZXS&1w`u6otEWvdL^*DRJY40Z|!<3l$7*+zDb3jkrE-6+PGb>9T$ZgM`_+kw7N> zC~kZO-@#3u!58rMG#R6AdQo-i-0z&*Kc>H?XV326Jz@nz3IUm%_HYdrNa-e4{NAQ&YxJv4l;${-S>L?dG-f zx_;b$y1us({T`=`4& Date: Sun, 21 Dec 2025 17:46:56 +0100 Subject: [PATCH 43/46] I18n update --- data/el.lang | Bin 3242 -> 3234 bytes data/is.lang | Bin 381 -> 456 bytes data/zh_CN.lang | Bin 973 -> 1312 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/el.lang b/data/el.lang index 7ec4ac8a910e8ec3a788c06b37ef49f3e772b039..8a8f938a56a8b3be2acf2807c221e3bdbb63464f 100644 GIT binary patch delta 58 zcmZ1_xkz$@B{O5rWGiN6_RZ%T&uu)nXLAN~4zrZ}xhdy%0=esff?LlwpWCi*4krJJ HZ3im=ACn%H delta 58 zcmZ1^xk_?_B{O5eWGiOn$xpfXH)k+sFv}^Qn{saFxsB)6pKm<3^?dWW?F#3%fCaVy M1@>=##kPYL0Q-R+AOHXW diff --git a/data/is.lang b/data/is.lang index 7543e5f07888f81e430c8064b2e2ad6accc909f5..f627413556021df01fdcc35d2f12cc018e4baf72 100644 GIT binary patch delta 85 zcmey%bb@(9HKQ*RgMiQBwYix^3e^U+3c0C8*_jMNXd+pqxjim>8(6OelyUv9TZ;8#|@-A>aY5Ol(~cSax;64YHDzM1HeCvOpkV zXP3Vx@F|!(GgQ=eP8?&Pn>**+d%kVv-D*3x61Ue;nEBK( zsM?c`chxH>nRwO`s&u+5ZRaoat&9C4vs;j#07A@8Z{7!+W>tz|q_d|5)Vdg%)QBg} zkKnZc-ZZ)w6%n5>oI|cdt?Zs^JlupsP*6Y}3vR=^OeNXS-N-6=?qMWj)F+h@(Ffp{ zF>=5ilbXuMFn0*cEa$_s4wN+E7|FkDN8lEla re!6?t^R*M7cdmTV(DQ8if)`y)&zp8`e!x`B2-L8JMF&W}WibW-Hn%5b From 24e9fcd6f2432cd7e692cbcdae51773143a9e2f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Sat, 31 Jan 2026 12:57:20 +0100 Subject: [PATCH 44/46] I18n update --- data/lo.lang | Bin 0 -> 3477 bytes data/lv.lang | Bin 0 -> 1413 bytes data/nn.lang | Bin 0 -> 1424 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 data/lo.lang create mode 100644 data/lv.lang create mode 100644 data/nn.lang diff --git a/data/lo.lang b/data/lo.lang new file mode 100644 index 0000000000000000000000000000000000000000..7988ebc71bb4f9cfbbc68d41d1f9f1c95b50a051 GIT binary patch literal 3477 zcmbuB&uSDw5XO67Kp#Ma4I(J$kdudihLCGcxhUQgMFJs;e@-Hr7~CY_ZKK3QArT2i z4Ebx49=-Y;{TSZjud2JJXLe^0*2~Z{Q(g7dS6@}Px#sd$&dxh~DNS%V7&LJ}5m<^37Rd0wfQ{Vz6o+iAl~rXx&m1XvMG_ zgLvG0oKv$!_2EBmID4WSaZee@mVhj9NVQnwgy$FeCDC|Y%*^%Xh`oHZAK#z8^K|Or zOuN``Zv5Bw%$!p|a79XBP1R^mjG5u4pIXKJm=_en!=CK;t=|BCs3xS#0yRSCzEa}F ziGfsHjklv>DI0DugLt0sgfRsJ+(DpO3Z`TSMt60~x|W$(ohxk(Qta-y{I#>*ah)6b zMk)=Kx4LoDzh-7gq1AR6L`hEOj8rrK$a19peE5Z#kKN|AvKp1Pr9O#Hx@*q<(AQ2B z2LKQU8T(X_4k?01Q)!YS^kL;~JspLd{%9UMO5d^C>}dqpJPNXG2v|iIi56Xu?ncnI z&`I2Pp?;|gFgxKF$^;z2m_7A*Nkw1{+AD1I#6uLgqxjptB0Av;8^V(eftI!Y=(dxY zrOBc@iXIj)sDly%y6{Qw{|rSJg9TAd6V*{Zl1(hBbTN_H3L+dwT&bxUw0(b5{BllJ zt&3+Ic2!W5gF2}vUVV<%`KU`El zzo-o12h}xpcV@n-fQuO(%pS~t*&i>Qor?$n)o(W(XxQEICKcCtYP z)S$sezC)0|Tazvvgz9GIwsOFog1q#X7*j<^f?Q7P2A?4zw)nVg#|fPb>#KSN8!~6Z z-9ykxi8-#s8n_S&2=;hdS$Gx9o}RYMg#<=+5~3rgrN7JsyOuexl9TJ4{~3ZHC_4W5 EFA5o)3IG5A literal 0 HcmV?d00001 diff --git a/data/lv.lang b/data/lv.lang new file mode 100644 index 0000000000000000000000000000000000000000..1839785a76472aec2a27d1174f31ea856de1a1ea GIT binary patch literal 1413 zcmaJ>O=}cE5bdi-gdm6^f-Q)NFc}0dl9L-xfw+VSp1kyA+NI{Jhw1JGM{=0ouz$ed zasPtk)bqRI>z+=s>%rShS9QI5uU<8KI4lGrnUXq2k-@u#y{W~s`l zS!njcpNEv=b2oHLl1Mv=VfJCO)Kn?ql_1`V%B}O>t&HWRYTbIFG%tiTZYXT6G&`8f zrRaD|5+xgDcrE)yWjQcft8rfoTS=X={V7pUKVfrW49QEk&IG#qPcUV>vo;n#n{l@) zaba)si0W2#M#Rv!)81GxU7-CMEOQAOXh%0B7e)iO#Gg^?~3@9Hcqg1n5w>m9N0( zsul$K;&h?(13+N@`XOU8)ONVyWw0S@e>Rmhe3}?s$;*+nV!;EF^ z_>1(kQ0S}!v>(o0JaR~QjYaMnFZul&W8nt0f(5{Z+E#|(>mTrSGEuy9+mwXT;Uk66 s8xI!N6Z*Lj<3lV-fX#fBK literal 0 HcmV?d00001 diff --git a/data/nn.lang b/data/nn.lang new file mode 100644 index 0000000000000000000000000000000000000000..836877719b453946988df525a18035cbe24a23a8 GIT binary patch literal 1424 zcmaJ>J#Q015M8ALL?Tgu5TBC5N9-t778Bp@35cE0w_doycx4`(0#mW8dV~NuZO%gM3js>q?|OzG}8j>qFc+$DeU`R|R0VQ9`<^D}%UB zQhVrQ)8G6mk*RvF%9Fi{)+jE5+>U=}z)&Yy9f+OeLiPNA&=0fWx1u7qcRFO*Y z03B>*j=roZBoyzp(41ygN89>(QF?b3O==O>=!HEp^^$BVCw`KQ+US#ix)s$m zZ_mGkD6|z}Z=L(0*UUUPL*q?qR*|j)GxI3fx$0~)Ybg4`!yz-z)t3vJ-&)gr>7;4E zJq@^?b88F}AZF%t3^JXEgzTVK!=aL(<8wu(ff$`&-?oL+2%rPPZ%RggManb%rR zKP3&i+fr}QSP|jnIb4-Tm;!h)7Q0PgCxrT#v|g`{8(llZ{W!yVxg<_kF~(!PClG8q zP!rbDU?R1i#zHL8kkRV&)-`|*i`8Lov8w7zk>I^RY5_b~#x}?HCJ2C*nYTcp7#nQA zaz+!eH73)!exD18ynrP$G=^P=Ffq24RbP;y3-b#R7>!|-5UySIvJOF; z=VPQYlz|IHuz6F42L^PlJNF|%)#oGz_TClxZ?U>yY+vpnf_8Z3?v!{^N?ei&C_vZNzJ}3l# literal 0 HcmV?d00001 From 9587c2581e549f4a6da312fa71ae42931278777e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Tue, 17 Feb 2026 20:21:48 +0100 Subject: [PATCH 45/46] I18n update --- data/ja.lang | Bin 1686 -> 1734 bytes data/ko.lang | Bin 935 -> 938 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/data/ja.lang b/data/ja.lang index 5cf153296bda5ddf0aed5452fe9606fd7187be2a..671a27fa48da1ef42ea5be031fd9fa3bd093e448 100644 GIT binary patch delta 68 zcmbQndyIDjE3=IBK)?Tbmy@u71|B8>nJ(5St4C-t{FI delta 20 acmX@cJB@b(D>Ea*W<_RiAT_y(%>@8A83eTe diff --git a/data/ko.lang b/data/ko.lang index 49f7d89d3bf2d528b034975c37a86cbd53e7ee55..93d30970b4782a5fbeb544b2059673501b11c354 100644 GIT binary patch delta 44 zcmV+{0Mq}c2dW3KZUP@e?1Z50gPrY_oFMC`i0hP;>xz^h?3T3amZTu+xVW>50v!Pl CHy6bK delta 41 xcmZ3*zMOqS9+Qm2o0bJ{o9DirI!EEnf(dWtHYmKAw&nG-B?>_C&Am*ri~zpU6=whd From 351d23426d47aec25793779aa035facbac599f0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dirk=20St=C3=B6cker?= Date: Sat, 28 Mar 2026 20:25:55 +0100 Subject: [PATCH 46/46] I18n update --- data/zh_CN.lang | Bin 1312 -> 1332 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/data/zh_CN.lang b/data/zh_CN.lang index 89582e7b54592316479aba557392b560c730a8b0..ee5371aeae96fd9363c865a58c3c9fdb2f0d1e4a 100644 GIT binary patch delta 136 zcmZ3$wS{W~KQp7(WC3Q;%xBXVJlj0=`IHq;cJ)2$ZhP9%rtqj?3J@tg-7xFfoK-Iy zI-l%V`(*d-Cwr&9=xTc2wDWO86N3Rz`02V?&u6tj#GdTveX_R~XarQ@_VrKqwE$&- eT3=4z0@9&1IgnX&az8U0^Ru}NH_u@1U<3eHw@?!R delta 107 zcmdnOwSa2_KQp8KWC3Q;fG0b8Uo`K1K4ry|U42hG+MjlAQqWa+x?$F{IjdeabUs}- z>qS@7^QN7T8=4r@Ap*~5wLrvxTA$8Y@nrYzCwr&9*uMVhzLqCDx+ZrrD=