Ticket #24420: 157.patch

File 157.patch, 21.5 KB (added by aharvey, 5 weeks ago)
  • new file resources/images/new_local.svg

    From d79a584fe8eb77e9feaaa9c45b374dd6d030db0b Mon Sep 17 00:00:00 2001
    From: Andrew Harvey <andrew@alantgeo.com.au>
    Date: Thu, 31 Jul 2025 13:21:49 +1000
    Subject: [PATCH 1/3] new local menu item
    
    ---
     resources/images/new_local.svg                | 380 ++++++++++++++++++
     .../josm/actions/NewLocalAction.java          |  35 ++
     2 files changed, 415 insertions(+)
     create mode 100644 resources/images/new_local.svg
     create mode 100644 src/org/openstreetmap/josm/actions/NewLocalAction.java
    
    diff --git a/resources/images/new_local.svg b/resources/images/new_local.svg
    new file mode 100644
    index 0000000000..2b75b63c16
    - +  
     1<?xml version="1.0" encoding="UTF-8" standalone="no"?>
     2<!-- Created with Inkscape (http://www.inkscape.org/) -->
     3
     4<svg
     5   inkscape:export-ydpi="30"
     6   inkscape:export-xdpi="30"
     7   inkscape:export-filename="/home/luca/Desktop/flare-16.png"
     8   sodipodi:docname="new_local.svg"
     9   inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
     10   sodipodi:version="0.32"
     11   id="svg249"
     12   height="48"
     13   width="48"
     14   version="1.0"
     15   inkscape:output_extension="org.inkscape.output.svg.inkscape"
     16   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
     17   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
     18   xmlns:xlink="http://www.w3.org/1999/xlink"
     19   xmlns="http://www.w3.org/2000/svg"
     20   xmlns:svg="http://www.w3.org/2000/svg"
     21   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
     22   xmlns:cc="http://creativecommons.org/ns#"
     23   xmlns:dc="http://purl.org/dc/elements/1.1/">
     24  <defs
     25     id="defs3">
     26    <linearGradient
     27       id="linearGradient2">
     28      <stop
     29         id="stop1"
     30         offset="0"
     31         style="stop-color:#979797;stop-opacity:1;" />
     32      <stop
     33         id="stop2"
     34         offset="1"
     35         style="stop-color:#424242;stop-opacity:1;" />
     36    </linearGradient>
     37    <linearGradient
     38       id="linearGradient2378">
     39      <stop
     40         style="stop-color:#ffffff;stop-opacity:1;"
     41         offset="0"
     42         id="stop2380" />
     43      <stop
     44         id="stop4146"
     45         offset="0.25"
     46         style="stop-color:#fefede;stop-opacity:0.91836733;" />
     47      <stop
     48         id="stop2386"
     49         offset="0.5"
     50         style="stop-color:#f5f328;stop-opacity:1;" />
     51      <stop
     52         style="stop-color:#f5f32d;stop-opacity:0.12234043;"
     53         offset="1"
     54         id="stop2382" />
     55    </linearGradient>
     56    <linearGradient
     57       inkscape:collect="always"
     58       id="linearGradient4790">
     59      <stop
     60         style="stop-color:#000000;stop-opacity:1;"
     61         offset="0"
     62         id="stop4792" />
     63      <stop
     64         style="stop-color:#000000;stop-opacity:0;"
     65         offset="1"
     66         id="stop4794" />
     67    </linearGradient>
     68    <linearGradient
     69       inkscape:collect="always"
     70       id="linearGradient2251">
     71      <stop
     72         style="stop-color:#ffffff;stop-opacity:1;"
     73         offset="0"
     74         id="stop2253" />
     75      <stop
     76         style="stop-color:#ffffff;stop-opacity:0;"
     77         offset="1"
     78         id="stop2255" />
     79    </linearGradient>
     80    <linearGradient
     81       inkscape:collect="always"
     82       xlink:href="#linearGradient2251"
     83       id="linearGradient8166"
     84       gradientUnits="userSpaceOnUse"
     85       gradientTransform="matrix(-3.277938e-2,-0.999463,0.999463,-3.277938e-2,-0.709646,45.06274)"
     86       x1="33.396004"
     87       y1="36.921333"
     88       x2="34.170048"
     89       y2="38.070381" />
     90    <linearGradient
     91       inkscape:collect="always"
     92       id="linearGradient4542">
     93      <stop
     94         style="stop-color:#000000;stop-opacity:1;"
     95         offset="0"
     96         id="stop4544" />
     97      <stop
     98         style="stop-color:#000000;stop-opacity:0;"
     99         offset="1"
     100         id="stop4546" />
     101    </linearGradient>
     102    <linearGradient
     103       id="linearGradient15662">
     104      <stop
     105         id="stop15664"
     106         offset="0.0000000"
     107         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
     108      <stop
     109         id="stop15666"
     110         offset="1.0000000"
     111         style="stop-color:#f8f8f8;stop-opacity:1.0000000;" />
     112    </linearGradient>
     113    <linearGradient
     114       id="linearGradient269">
     115      <stop
     116         id="stop270"
     117         offset="0.0000000"
     118         style="stop-color:#a3a3a3;stop-opacity:1.0000000;" />
     119      <stop
     120         id="stop271"
     121         offset="1"
     122         style="stop-color:#8a8a8a;stop-opacity:1;" />
     123    </linearGradient>
     124    <linearGradient
     125       id="linearGradient259">
     126      <stop
     127         id="stop260"
     128         offset="0.0000000"
     129         style="stop-color:#fafafa;stop-opacity:1.0000000;" />
     130      <stop
     131         id="stop261"
     132         offset="1.0000000"
     133         style="stop-color:#bbbbbb;stop-opacity:1.0000000;" />
     134    </linearGradient>
     135    <radialGradient
     136       inkscape:collect="always"
     137       xlink:href="#linearGradient269"
     138       id="radialGradient15656"
     139       gradientUnits="userSpaceOnUse"
     140       gradientTransform="matrix(0.968273,0,0,1.032767,3.353553,0.646447)"
     141       cx="8.824419"
     142       cy="3.7561285"
     143       fx="8.824419"
     144       fy="3.7561285"
     145       r="37.751713" />
     146    <radialGradient
     147       inkscape:collect="always"
     148       xlink:href="#linearGradient2"
     149       id="radialGradient15658"
     150       gradientUnits="userSpaceOnUse"
     151       gradientTransform="scale(0.960493,1.041132)"
     152       cx="33.966679"
     153       cy="35.736916"
     154       fx="33.966679"
     155       fy="35.736916"
     156       r="86.70845" />
     157    <radialGradient
     158       inkscape:collect="always"
     159       xlink:href="#linearGradient15662"
     160       id="radialGradient15668"
     161       gradientUnits="userSpaceOnUse"
     162       gradientTransform="matrix(0.968273,0,0,1.032767,3.353553,0.646447)"
     163       cx="8.1435566"
     164       cy="7.2678967"
     165       fx="8.1435566"
     166       fy="7.2678967"
     167       r="38.158695" />
     168    <radialGradient
     169       inkscape:collect="always"
     170       xlink:href="#linearGradient4542"
     171       id="radialGradient4548"
     172       cx="24.306795"
     173       cy="42.07798"
     174       fx="24.306795"
     175       fy="42.07798"
     176       r="15.821514"
     177       gradientTransform="matrix(1,0,0,0.284916,-6.340414e-16,30.08928)"
     178       gradientUnits="userSpaceOnUse" />
     179    <radialGradient
     180       inkscape:collect="always"
     181       xlink:href="#linearGradient269"
     182       id="radialGradient5350"
     183       gradientUnits="userSpaceOnUse"
     184       gradientTransform="matrix(0.331735,-2.3449e-17,2.501087e-17,0.353831,20.10526,9.5823)"
     185       cx="31.863327"
     186       cy="2.3667307"
     187       fx="31.863327"
     188       fy="2.3667307"
     189       r="37.751713" />
     190    <radialGradient
     191       inkscape:collect="always"
     192       xlink:href="#linearGradient259"
     193       id="radialGradient5352"
     194       gradientUnits="userSpaceOnUse"
     195       gradientTransform="matrix(0.148355,1.009137e-2,-1.104438e-2,0.162365,25.06011,12.81706)"
     196       cx="30.653816"
     197       cy="14.9373"
     198       fx="30.653816"
     199       fy="14.9373"
     200       r="86.70845" />
     201    <radialGradient
     202       inkscape:collect="always"
     203       xlink:href="#linearGradient4790"
     204       id="radialGradient4796"
     205       cx="37.030354"
     206       cy="12.98915"
     207       fx="37.030354"
     208       fy="12.98915"
     209       r="4.2929163"
     210       gradientTransform="matrix(1.744653,2.313551e-22,-1.663e-22,1.283833,-26.58256,-3.478359)"
     211       gradientUnits="userSpaceOnUse" />
     212    <radialGradient
     213       inkscape:collect="always"
     214       xlink:href="#linearGradient2378"
     215       id="radialGradient3271"
     216       cx="38.658855"
     217       cy="9.3411446"
     218       fx="38.658855"
     219       fy="9.3411446"
     220       r="8.341651"
     221       gradientUnits="userSpaceOnUse" />
     222  </defs>
     223  <sodipodi:namedview
     224     inkscape:window-y="17"
     225     inkscape:window-x="0"
     226     inkscape:window-height="1177"
     227     inkscape:window-width="1914"
     228     inkscape:document-units="px"
     229     inkscape:grid-bbox="true"
     230     showgrid="false"
     231     inkscape:current-layer="layer1"
     232     inkscape:cy="21.5"
     233     inkscape:cx="21"
     234     inkscape:zoom="4"
     235     inkscape:pageshadow="2"
     236     inkscape:pageopacity="0.0"
     237     borderopacity="0.3254902"
     238     bordercolor="#666666"
     239     pagecolor="#ffffff"
     240     id="base"
     241     inkscape:showpageshadow="false"
     242     showborder="true"
     243     inkscape:pagecheckerboard="0"
     244     inkscape:deskcolor="#d1d1d1"
     245     inkscape:window-maximized="0" />
     246  <metadata
     247     id="metadata4">
     248    <rdf:RDF>
     249      <cc:Work
     250         rdf:about="">
     251        <dc:format>image/svg+xml</dc:format>
     252        <dc:type
     253           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
     254        <dc:title>New Document</dc:title>
     255        <dc:subject>
     256          <rdf:Bag>
     257            <rdf:li>text</rdf:li>
     258            <rdf:li>plaintext</rdf:li>
     259            <rdf:li>regular</rdf:li>
     260            <rdf:li>document</rdf:li>
     261          </rdf:Bag>
     262        </dc:subject>
     263        <cc:license
     264           rdf:resource="http://creativecommons.org/licenses/GPL/2.0/" />
     265        <dc:creator>
     266          <cc:Agent>
     267            <dc:title>Jakub Steiner</dc:title>
     268          </cc:Agent>
     269        </dc:creator>
     270        <dc:source>http://jimmac.musichall.cz</dc:source>
     271        <dc:contributor>
     272          <cc:Agent>
     273            <dc:title>Luca Ferretti</dc:title>
     274          </cc:Agent>
     275        </dc:contributor>
     276      </cc:Work>
     277      <cc:License
     278         rdf:about="http://creativecommons.org/licenses/GPL/2.0/">
     279        <cc:permits
     280           rdf:resource="http://web.resource.org/cc/Reproduction" />
     281        <cc:permits
     282           rdf:resource="http://web.resource.org/cc/Distribution" />
     283        <cc:requires
     284           rdf:resource="http://web.resource.org/cc/Notice" />
     285        <cc:permits
     286           rdf:resource="http://web.resource.org/cc/DerivativeWorks" />
     287        <cc:requires
     288           rdf:resource="http://web.resource.org/cc/ShareAlike" />
     289        <cc:requires
     290           rdf:resource="http://web.resource.org/cc/SourceCode" />
     291      </cc:License>
     292    </rdf:RDF>
     293  </metadata>
     294  <g
     295     inkscape:groupmode="layer"
     296     id="layer6"
     297     inkscape:label="Shadow">
     298    <path
     299       sodipodi:type="arc"
     300       style="opacity:0.47252748;color:#000000;fill:url(#radialGradient4548);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
     301       id="path3667"
     302       sodipodi:cx="24.306795"
     303       sodipodi:cy="42.07798"
     304       sodipodi:rx="15.821514"
     305       sodipodi:ry="4.5078058"
     306       d="M 40.128309 42.07798 A 15.821514 4.5078058 0 1 1  8.485281,42.07798 A 15.821514 4.5078058 0 1 1  40.128309 42.07798 z"
     307       transform="matrix(1.173184,0,0,0.686275,-4.651498,14.2616)"
     308       inkscape:r_cx="true"
     309       inkscape:r_cy="true" />
     310  </g>
     311  <g
     312     style="display:inline"
     313     inkscape:groupmode="layer"
     314     inkscape:label="Base"
     315     id="layer1">
     316    <path
     317       style="color:#000000;fill:url(#radialGradient15658);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient15656);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
     318       d="M 7.7526014,3.6464462 L 31.199616,3.6308212 C 31.199616,3.6308212 41.478553,13.174533 41.478553,13.811106 L 41.478553,43.417892 C 41.478553,44.054465 40.966077,44.56694 40.329504,44.56694 L 7.7526014,44.56694 C 7.1160285,44.56694 6.6035528,44.054465 6.6035528,43.417892 L 6.6035528,4.7954948 C 6.6035528,4.1589219 7.1160285,3.6464462 7.7526014,3.6464462 z "
     319       id="rect15391"
     320       sodipodi:nodetypes="ccccccccc" />
     321    <path
     322       style="color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient15668);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
     323       d="M 7.8151023,4.5839462 L 32.691494,4.5839462 C 32.691494,4.5839462 40.44194,12.605373 40.44194,12.687946 L 40.44194,43.381282 C 40.44194,43.463855 40.375465,43.530331 40.292892,43.530331 L 7.8151023,43.530331 C 7.7325294,43.530331 7.6660538,43.463855 7.6660538,43.381282 L 7.6660538,4.7329948 C 7.6660538,4.6504219 7.7325294,4.5839462 7.8151023,4.5839462 z "
     324       id="rect15660"
     325       sodipodi:nodetypes="ccccccccc" />
     326  </g>
     327  <g
     328     inkscape:groupmode="layer"
     329     id="layer5"
     330     inkscape:label="Text"
     331     style="display:inline">
     332    <path
     333       inkscape:r_cy="true"
     334       inkscape:r_cx="true"
     335       style="opacity:0.35714285;color:#000000;fill:url(#radialGradient4796);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
     336       d="M 40.985189,13.861445 C 40.256827,12.514817 34.882221,10.130934 32.084635,9.3314083 C 32.254143,10.904354 31.961856,15.649439 31.961856,15.649439 C 34.024356,14.274439 40.204485,13.699331 40.985189,13.861445 z "
     337       id="path5348"
     338       sodipodi:nodetypes="cccc" />
     339    <path
     340       style="opacity:1;color:#000000;fill:url(#radialGradient5352);fill-opacity:1;fill-rule:nonzero;stroke:url(#radialGradient5350);stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible"
     341       d="M 41.410559,13.739267 C 41.423724,12.324125 35.058025,3.5320142 31.175441,3.6354934 C 32.148479,3.8684884 32.925796,9.803523 31.536076,12.616023 C 34.286076,12.616023 40.446694,11.881093 41.410559,13.739267 z "
     342       id="path2210"
     343       sodipodi:nodetypes="cccc"
     344       inkscape:r_cx="true"
     345       inkscape:r_cy="true" />
     346    <path
     347       sodipodi:nodetypes="cccc"
     348       id="path2247"
     349       d="M 39.121563,11.586207 C 38.393201,10.239579 34.963027,6.5166576 33.040441,5.2796316 C 33.279381,6.7054805 33.577496,8.9620596 32.961856,11.524439 C 32.961856,11.524439 38.340859,11.424093 39.121563,11.586207 z "
     350       style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient8166);stroke-width:1.00000024;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
     351       inkscape:r_cx="true"
     352       inkscape:r_cy="true" />
     353    <path
     354       sodipodi:type="arc"
     355       style="fill:url(#radialGradient3271);fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
     356       id="path2388"
     357       sodipodi:cx="38.658855"
     358       sodipodi:cy="9.3411446"
     359       sodipodi:rx="8.341651"
     360       sodipodi:ry="8.341651"
     361       d="M 47.000506 9.3411446 A 8.341651 8.341651 0 1 1  30.317204,9.3411446 A 8.341651 8.341651 0 1 1  47.000506 9.3411446 z"
     362       transform="matrix(1.14985,0,0,1.14985,-7.595328,0.490895)" />
     363    <path
     364       sodipodi:type="star"
     365       style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
     366       id="path1345"
     367       sodipodi:sides="5"
     368       sodipodi:cx="36.9375"
     369       sodipodi:cy="11.125"
     370       sodipodi:r1="8.755579"
     371       sodipodi:r2="5.0676599"
     372       sodipodi:arg1="0.52359878"
     373       sodipodi:arg2="1.1519173"
     374       inkscape:flatsided="false"
     375       inkscape:rounded="0.18352206"
     376       inkscape:randomized="0"
     377       d="M 44.520054,15.50279 C 44.012883,16.381236 39.925351,15.341967 38.998703,15.754538 C 38.072055,16.167108 36.109289,19.900142 35.117113,19.689249 C 34.124936,19.478355 33.850222,15.26973 33.171495,14.515926 C 32.492767,13.762123 28.335913,13.048993 28.229885,12.040207 C 28.123857,11.031421 32.041607,9.4696164 32.548778,8.5911701 C 33.055949,7.7127238 32.449637,3.5389508 33.376285,3.1263806 C 34.302933,2.7138103 36.998949,5.957187 37.991126,6.1680807 C 38.983302,6.3789743 42.765436,4.5125708 43.444163,5.2663741 C 44.122891,6.0201775 41.871371,9.5864995 41.977399,10.595285 C 42.083426,11.604071 45.027225,14.624343 44.520054,15.50279 z "
     378       transform="matrix(0.674116,0.299577,-0.299577,0.674116,15.46413,-7.192469)" />
     379  </g>
     380</svg>
  • new file src/org/openstreetmap/josm/actions/NewLocalAction.java

    diff --git a/src/org/openstreetmap/josm/actions/NewLocalAction.java b/src/org/openstreetmap/josm/actions/NewLocalAction.java
    new file mode 100644
    index 0000000000..4654394980
    - +  
     1// License: GPL. For details, see LICENSE file.
     2package org.openstreetmap.josm.actions;
     3
     4import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
     5import static org.openstreetmap.josm.tools.I18n.tr;
     6
     7import java.awt.event.ActionEvent;
     8import java.awt.event.KeyEvent;
     9
     10import org.openstreetmap.josm.data.osm.DataSet;
     11import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     12import org.openstreetmap.josm.tools.Shortcut;
     13
     14/**
     15 * Creates a blank new local OSM data layer.
     16 * @since 169
     17 */
     18public class NewLocalAction extends JosmAction {
     19
     20    /**
     21     * Constructs a {@code NewLocalAction}.
     22     */
     23    public NewLocalAction() {
     24        super(tr("New Local Layer"), "new", tr("Create a new local map layer."),
     25                Shortcut.registerShortcut("system:new_local", tr("File: {0}", tr("New Local Layer")), KeyEvent.VK_N, Shortcut.CTRL_SHIFT), true, false);
     26        setHelpId(ht("/Action/NewLocalLayer"));
     27    }
     28
     29    @Override
     30    public void actionPerformed(ActionEvent e) {
     31        final OsmDataLayer layer = new OsmDataLayer(new DataSet(), OsmDataLayer.createNewName(), null)
     32        layer.setUploadDiscouraged(true)
     33        getLayerManager().addLayer(layer);
     34    }
     35}
  • src/org/openstreetmap/josm/actions/NewLocalAction.java

    From b64c6be2b21bc4523837b404b646f7a89789b8b7 Mon Sep 17 00:00:00 2001
    From: Andrew Harvey <andrew@alantgeo.com.au>
    Date: Thu, 31 Jul 2025 14:37:11 +1000
    Subject: [PATCH 2/3] syntax fixes
    
    ---
     src/org/openstreetmap/josm/actions/NewLocalAction.java | 4 ++--
     1 file changed, 2 insertions(+), 2 deletions(-)
    
    diff --git a/src/org/openstreetmap/josm/actions/NewLocalAction.java b/src/org/openstreetmap/josm/actions/NewLocalAction.java
    index 4654394980..a444106c27 100644
    a b public NewLocalAction() {  
    2828
    2929    @Override
    3030    public void actionPerformed(ActionEvent e) {
    31         final OsmDataLayer layer = new OsmDataLayer(new DataSet(), OsmDataLayer.createNewName(), null)
    32         layer.setUploadDiscouraged(true)
     31        final OsmDataLayer layer = new OsmDataLayer(new DataSet(), OsmDataLayer.createNewName(), null);
     32        layer.setUploadDiscouraged(true);
    3333        getLayerManager().addLayer(layer);
    3434    }
    3535}
  • src/org/openstreetmap/josm/actions/NewLocalAction.java

    From 872f6092b75f587e77e121ddc18196630162bca0 Mon Sep 17 00:00:00 2001
    From: Andrew Harvey <andrew@alantgeo.com.au>
    Date: Thu, 31 Jul 2025 14:46:12 +1000
    Subject: [PATCH 3/3] add to menu
    
    ---
     src/org/openstreetmap/josm/actions/NewLocalAction.java | 2 +-
     src/org/openstreetmap/josm/gui/MainMenu.java           | 4 ++++
     2 files changed, 5 insertions(+), 1 deletion(-)
    
    diff --git a/src/org/openstreetmap/josm/actions/NewLocalAction.java b/src/org/openstreetmap/josm/actions/NewLocalAction.java
    index a444106c27..98dad2a392 100644
    a b public class NewLocalAction extends JosmAction {  
    2121     * Constructs a {@code NewLocalAction}.
    2222     */
    2323    public NewLocalAction() {
    24         super(tr("New Local Layer"), "new", tr("Create a new local map layer."),
     24        super(tr("New Local Layer"), "new_local", tr("Create a new local map layer."),
    2525                Shortcut.registerShortcut("system:new_local", tr("File: {0}", tr("New Local Layer")), KeyEvent.VK_N, Shortcut.CTRL_SHIFT), true, false);
    2626        setHelpId(ht("/Action/NewLocalLayer"));
    2727    }
  • src/org/openstreetmap/josm/gui/MainMenu.java

    diff --git a/src/org/openstreetmap/josm/gui/MainMenu.java b/src/org/openstreetmap/josm/gui/MainMenu.java
    index e8fbe10c84..3a089782ba 100644
    a b  
    7676import org.openstreetmap.josm.actions.MoveAction;
    7777import org.openstreetmap.josm.actions.MoveNodeAction;
    7878import org.openstreetmap.josm.actions.NewAction;
     79import org.openstreetmap.josm.actions.NewLocalAction;
    7980import org.openstreetmap.josm.actions.OpenFileAction;
    8081import org.openstreetmap.josm.actions.OpenLocationAction;
    8182import org.openstreetmap.josm.actions.OrthogonalizeAction;
    public enum WINDOW_MENU_GROUP {  
    167168    /* File menu */
    168169    /** File / New Layer **/
    169170    public final NewAction newAction = new NewAction();
     171    /** File / New Local Layer **/
     172    public final NewLocalAction newLocalAction = new NewLocalAction();
    170173    /** File / Open... **/
    171174    public final OpenFileAction openFile = new OpenFileAction();
    172175    /** File / Open Recent &gt; **/
    public void initialize() {  
    740743        gpsMenu.setVisible(false);
    741744
    742745        add(fileMenu, newAction);
     746        add(fileMenu, newLocalAction);
    743747        add(fileMenu, openFile);
    744748        fileMenu.add(recentlyOpened);
    745749        add(fileMenu, openLocation);