Suche bestimmte Funktion in SourceCode

Guten Abend,

zuerst nochmals vielen Dank für die Hilfe in diesem Post

http://forum.openstreetmap.org/viewtopic.php?id=23053

Ich suche eine bestimmte Codepassage in der festgestellt wird, ob ein way beendet wird, entweder per Doppelclick im Zeichenmodus auf den selben Node oder durch das Schließen eines Kreises/Area auf einen bereits vorhandenen Node im way.

Ich weiß, es gibt die Codepassagen, aber ich kann sie nicht mehr finden.

Ich habe ant inzwischen zum laufen gebracht, dank Eurer Hilfe im obigen Post und mein erstes josm-custom.jar kompiliert, bin mächtig stolz. :smiley:
Subversion habe ich mir auch besorgt, läuft einwandfrei, aber eben finde ich den Code nicht mehr, ich hatte ihn schon. :frowning:

Wer kann mir da bitte helfen, sitze nun seit fast 2 Stunden und gebe für´s erst Mal auf, hoffe auf Hilfe.

Danke im voraus, bisher habe ich immer kompetente Antworten erhalten.

Hallo,

wie wär’s denn mit org.openstreetmap.josm.actions.mapmode.DrawAction, dort steht was von


        if(e.getClickCount() > 1 && mousePos != null && mousePos.equals(oldMouse
Pos)) {
            // A double click equals "user clicked last node again, finish way"
            // Change draw tool only if mouse position is nearly the same, as
            // otherwise fast clicks will count as a double click
            finishDrawing();
            return;
        }


Morgen,

ich habe es wieder zusammengefunden :smiley:

Einmal wird, wie von couchmapper genannt, org.openstreetmap.josm.actions.mapmode.DrawAction benötigt, siehe Zeile 595 ff, hier wird beim zeichnen überprüft, ob der Weg beendet wird:

 // Connected to a node that's already in the way
              if(way.containsNode(n)) {
                  wayIsFinished = true;
                  selection.clear();
              }

Jetzt brauche ich noch die Überprüfung, ob es eine Area ist, gefunden in org.openstreetmap.josm.data.osm.Way, siehe Zeile 497 ff

    /**
     * Determines if this way denotes an area (closed way with at least three distinct nodes).
     * @return {@code true} if this way is closed and contains at least three distinct nodes
     * @see #isClosed
     * @since 5490
     */
    public boolean isArea() {
        if (this.nodes.length >= 4 && isClosed()) {
            Node distinctNode = null;
            for (int i=1; i<nodes.length-1; i++) {
                if (distinctNode == null && nodes[i] != nodes[0]) {
                    distinctNode = nodes[i];
                } else if (distinctNode != null && nodes[i] != nodes[0] && nodes[i] != distinctNode) {
                    return true;
                }
            }
        }
        return false;
    }

Wunderbar, jetzt kann ich weitermachen.

Schönen Feiertag und schönes Wochenende