// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.plugins.utilsplugin2; import javax.swing.JMenu; import javax.swing.JMenuItem; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.actions.search.SearchCompiler; import org.openstreetmap.josm.gui.MainMenu; import org.openstreetmap.josm.gui.MapFrame; import org.openstreetmap.josm.gui.preferences.PreferenceSetting; import org.openstreetmap.josm.plugins.Plugin; import org.openstreetmap.josm.plugins.PluginInformation; import org.openstreetmap.josm.plugins.utilsplugin2.actions.AddIntersectionsAction; import org.openstreetmap.josm.plugins.utilsplugin2.actions.AlignWayNodesAction; import org.openstreetmap.josm.plugins.utilsplugin2.actions.CopyTagsAction; import org.openstreetmap.josm.plugins.utilsplugin2.actions.ExtractPointAction; import org.openstreetmap.josm.plugins.utilsplugin2.actions.PasteRelationsAction; import org.openstreetmap.josm.plugins.utilsplugin2.actions.SplitObjectAction; import org.openstreetmap.josm.plugins.utilsplugin2.actions.SplitOnIntersectionsAction; import org.openstreetmap.josm.plugins.utilsplugin2.actions.SymmetryAction; import org.openstreetmap.josm.plugins.utilsplugin2.actions.TagBufferAction; import org.openstreetmap.josm.plugins.utilsplugin2.actions.TagSourceAction; import org.openstreetmap.josm.plugins.utilsplugin2.actions.UnGlueRelationAction; import org.openstreetmap.josm.plugins.utilsplugin2.curves.CurveAction; import org.openstreetmap.josm.plugins.utilsplugin2.customurl.ChooseURLAction; import org.openstreetmap.josm.plugins.utilsplugin2.customurl.OpenPageAction; import org.openstreetmap.josm.plugins.utilsplugin2.customurl.UtilsPluginPreferences; import org.openstreetmap.josm.plugins.utilsplugin2.latlon.LatLonAction; import org.openstreetmap.josm.plugins.utilsplugin2.multitagger.MultiTagAction; import org.openstreetmap.josm.plugins.utilsplugin2.replacegeometry.ReplaceGeometryAction; import org.openstreetmap.josm.plugins.utilsplugin2.replacegeometry.ReplaceMembershipAction; import org.openstreetmap.josm.plugins.utilsplugin2.search.UtilsSimpleMatchFactory; import org.openstreetmap.josm.plugins.utilsplugin2.search.UtilsUnaryMatchFactory; import org.openstreetmap.josm.plugins.utilsplugin2.selection.AdjacentNodesAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.AdjacentWaysAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.ConnectedWaysAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.IntersectedWaysAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.IntersectedWaysRecursiveAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.MiddleNodesAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.SelectAllInsideAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.SelectBoundaryAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.SelectHighwayAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.SelectModNodesAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.SelectModWaysAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.SelectWayNodesAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.UndoSelectionAction; import org.openstreetmap.josm.plugins.utilsplugin2.selection.UnselectNodesAction; public class UtilsPlugin2 extends Plugin { private static UtilsPlugin2 instance; JMenuItem copyTags; JMenuItem unglueRelation; JMenuItem symmetry; JMenuItem addIntersections; JMenuItem splitObject; JMenuItem selectWayNodes; JMenuItem adjNodes; JMenuItem unsNodes; JMenuItem midNodes; JMenuItem adjWays; JMenuItem adjWaysAll; JMenuItem intWays; JMenuItem intWaysR; JMenuItem allInside; JMenuItem undoSelection; JMenuItem extractPoint; JMenuItem wiki; JMenuItem latlon; JMenuItem multiTag; JMenuItem replaceGeometry; JMenuItem replaceMembership; JMenuItem tagBuffer; JMenuItem sourceTag; JMenuItem pasteRelations; JMenuItem alignWayNodes; JMenuItem splitOnIntersections; JMenuItem selModifiedNodes; JMenuItem selModifiedWays; JMenuItem selectHighway; JMenuItem selectAreaBoundary; JMenuItem selectURL; JMenuItem drawArc; public UtilsPlugin2(PluginInformation info) { super(info); instance = this; JMenu editMenu = Main.main.menu.editMenu; JMenu toolsMenu = Main.main.menu.moreToolsMenu; JMenu dataMenu = Main.main.menu.dataMenu; JMenu selectionMenu = Main.main.menu.selectionMenu; copyTags = MainMenu.addAfter(editMenu, new CopyTagsAction(), false, Main.main.menu.copy); addIntersections = MainMenu.add(toolsMenu, new AddIntersectionsAction()); splitObject = MainMenu.add(toolsMenu, new SplitObjectAction()); alignWayNodes = MainMenu.add(toolsMenu, new AlignWayNodesAction()); symmetry = MainMenu.add(toolsMenu, new SymmetryAction()); splitOnIntersections = MainMenu.add(toolsMenu, new SplitOnIntersectionsAction()); unglueRelation = MainMenu.add(toolsMenu, new UnGlueRelationAction()); toolsMenu.addSeparator(); replaceGeometry = MainMenu.add(toolsMenu, new ReplaceGeometryAction()); replaceMembership = MainMenu.add(toolsMenu, new ReplaceMembershipAction()); extractPoint = MainMenu.add(toolsMenu, new ExtractPointAction()); tagBuffer = MainMenu.add(toolsMenu, new TagBufferAction()); sourceTag = MainMenu.add(toolsMenu, new TagSourceAction()); pasteRelations = MainMenu.add(toolsMenu, new PasteRelationsAction()); wiki = MainMenu.add(dataMenu, new OpenPageAction()); latlon = MainMenu.add(toolsMenu, new LatLonAction()); drawArc = MainMenu.add(toolsMenu, new CurveAction()); selectionMenu.addSeparator(); selectWayNodes = MainMenu.add(selectionMenu, new SelectWayNodesAction()); adjNodes = MainMenu.add(selectionMenu, new AdjacentNodesAction()); unsNodes = MainMenu.add(selectionMenu, new UnselectNodesAction()); midNodes = MainMenu.add(selectionMenu, new MiddleNodesAction()); adjWays = MainMenu.add(selectionMenu, new AdjacentWaysAction()); adjWaysAll = MainMenu.add(selectionMenu, new ConnectedWaysAction()); intWays = MainMenu.add(selectionMenu, new IntersectedWaysAction()); intWaysR = MainMenu.add(selectionMenu, new IntersectedWaysRecursiveAction()); allInside = MainMenu.add(selectionMenu, new SelectAllInsideAction()); selModifiedNodes = MainMenu.add(selectionMenu, new SelectModNodesAction()); selModifiedWays = MainMenu.add(selectionMenu, new SelectModWaysAction()); undoSelection = MainMenu.add(selectionMenu, new UndoSelectionAction()); selectHighway = MainMenu.add(selectionMenu, new SelectHighwayAction()); selectAreaBoundary = MainMenu.add(selectionMenu, new SelectBoundaryAction()); selectURL = MainMenu.add(dataMenu, new ChooseURLAction()); multiTag = MainMenu.add(dataMenu, new MultiTagAction()); // register search operators SearchCompiler.addMatchFactory(new UtilsUnaryMatchFactory()); SearchCompiler.addMatchFactory(new UtilsSimpleMatchFactory()); } @Override public void mapFrameInitialized(MapFrame oldFrame, MapFrame newFrame) { boolean enabled = newFrame != null; enabled = false; unglueRelation.setEnabled(enabled); addIntersections.setEnabled(enabled); splitObject.setEnabled(enabled); replaceGeometry.setEnabled(enabled); replaceMembership.setEnabled(enabled); tagBuffer.setEnabled(enabled); sourceTag.setEnabled(enabled); pasteRelations.setEnabled(enabled); alignWayNodes.setEnabled(enabled); splitOnIntersections.setEnabled(enabled); wiki.setEnabled(enabled); selectWayNodes.setEnabled(enabled); adjNodes.setEnabled(enabled); unsNodes.setEnabled(enabled); midNodes.setEnabled(enabled); adjWays.setEnabled(enabled); adjWaysAll.setEnabled(enabled); intWays.setEnabled(enabled); intWaysR.setEnabled(enabled); selModifiedNodes.setEnabled(enabled); selModifiedWays.setEnabled(enabled); undoSelection.setEnabled(enabled); selectURL.setEnabled(enabled); allInside.setEnabled(enabled); drawArc.setEnabled(enabled); multiTag.setEnabled(enabled); } @Override public PreferenceSetting getPreferenceSetting() { return new UtilsPluginPreferences(); } public static final UtilsPlugin2 getInstance() { return instance; } }