Skip to content

Commit

Permalink
added Action for AddressDialog
Browse files Browse the repository at this point in the history
  • Loading branch information
r00tat committed Aug 4, 2014
1 parent 5a48a61 commit d79c2f8
Show file tree
Hide file tree
Showing 4 changed files with 133 additions and 18 deletions.
24 changes: 21 additions & 3 deletions src/org/openstreetmap/josm/plugins/areaselector/AddressDialog.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,18 @@
import java.awt.Component;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.util.Collection;
import java.util.LinkedList;

import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;

import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.data.osm.Way;
import org.openstreetmap.josm.command.ChangeCommand;
import org.openstreetmap.josm.command.Command;
import org.openstreetmap.josm.command.SequenceCommand;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
import org.openstreetmap.josm.gui.ExtendedDialog;
import org.openstreetmap.josm.tools.GBC;

Expand All @@ -37,7 +42,7 @@ public class AddressDialog extends ExtendedDialog {

protected final JPanel panel = new JPanel(new GridBagLayout());

protected Way way;
protected OsmPrimitive way;

protected final void addLabelled(String str, Component c) {
JLabel label = new JLabel(str);
Expand All @@ -48,7 +53,7 @@ protected final void addLabelled(String str, Component c) {



public AddressDialog(Way way) {
public AddressDialog(OsmPrimitive way) {
super(Main.parent, tr("Building address"), BUTTON_TEXTS, true);

this.way=way;
Expand Down Expand Up @@ -132,4 +137,17 @@ public final String getHouseNum() {
public final String getStreetName() {
return streetNameField.getText();
}

public OsmPrimitive showAndSave(){
this.showDialog();
if (this.getValue() == 1){
this.saveValues();
Collection<Command> cmds = new LinkedList<Command>();
cmds.add(new ChangeCommand(way, way));
Command c = new SequenceCommand(tr("updated building info"), cmds);
Main.main.undoRedo.add(c);
Main.main.getCurrentDataSet().setSelected(way);
}
return way;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
/*
* Created on Aug 3, 2014
* Author: Paul Woelfel
* Email: [email protected]
*/
package org.openstreetmap.josm.plugins.areaselector;

import static org.openstreetmap.josm.tools.I18n.tr;

import java.awt.Cursor;
import java.awt.Point;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.List;

import org.apache.log4j.Logger;
import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.actions.mapmode.MapMode;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
import org.openstreetmap.josm.gui.MapFrame;
import org.openstreetmap.josm.gui.MapView;
import org.openstreetmap.josm.tools.ImageProvider;
import org.openstreetmap.josm.tools.Predicate;
import org.openstreetmap.josm.tools.Shortcut;

/**
* @author Paul Woelfel ([email protected])
*/
public class AddressDialogAction extends MapMode implements MouseListener {

public static Logger log = Logger.getLogger(AddressDialogAction.class);

/**
*
*/
private static final long serialVersionUID = 2633172251746257372L;

public static final String PLUGIN_NAME = "areaselector";

public AddressDialogAction(MapFrame mapFrame) {
super(tr("Tag Element"), "areaselector", tr("Select an item to tag."), Shortcut.registerShortcut("tools:tagbuilding",
tr("Tools: {0}", tr("Tag Building")), KeyEvent.VK_B, Shortcut.ALT_CTRL), mapFrame, getCursor());
}

private static Cursor getCursor() {
return ImageProvider.getCursor("crosshair", "areaselector");
}

/*
* (non-Javadoc)
*
* @see org.openstreetmap.josm.actions.mapmode.MapMode#mouseClicked(java.awt.event.MouseEvent)
*/
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);

try {
showAddressDialogFor(e.getPoint());
} catch (Throwable th) {
log.warn("show Address Dialog failed", th);
}
}

public void showAddressDialogFor(Point point) {
MapView mapView = Main.map.mapView;

Predicate<OsmPrimitive> predicate = new Predicate<OsmPrimitive>() {

@Override
public boolean evaluate(OsmPrimitive object) {
return true;
}
};
List<OsmPrimitive> elements = mapView.getNearestNodesOrWays(point, predicate);

OsmPrimitive element = null;
if (elements.size() > 0) {
element = elements.get(0);
log.info("Found object " + element);
new AddressDialog(element).showAndSave();

} else {
log.info("Found no objects");
}
}

@Override
public void enterMode() {
if (!isEnabled()) {
return;
}
super.enterMode();
Main.map.mapView.setCursor(getCursor());
Main.map.mapView.addMouseListener(this);
}

@Override
public void exitMode() {
super.exitMode();
Main.map.mapView.removeMouseListener(this);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,14 @@
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.data.osm.Node;
import org.openstreetmap.josm.data.osm.OsmPrimitive;
import org.openstreetmap.josm.data.osm.Way;
import org.openstreetmap.josm.gui.MapFrame;
import org.openstreetmap.josm.gui.MapView;
import org.openstreetmap.josm.gui.layer.Layer;
import org.openstreetmap.josm.plugins.tracer2.ConnectWays;
import org.openstreetmap.josm.tools.ImageProvider;
import org.openstreetmap.josm.tools.Shortcut;

Expand Down Expand Up @@ -182,19 +181,8 @@ public void createArea() {

}

public Way showAddressDialog(Way way) {

AddressDialog dialog = new AddressDialog(way);
dialog.showDialog();
if (dialog.getValue() == 1){
dialog.saveValues();
Collection<Command> cmds = new LinkedList<Command>();
cmds.add(new ChangeCommand(way, way));
Command c = new SequenceCommand(tr("updated building info"), cmds);
Main.main.undoRedo.add(c);
Main.main.getCurrentDataSet().setSelected(way);
}
return way;
public OsmPrimitive showAddressDialog(Way way) {
return new AddressDialog(way).showAndSave();
}

public Way createWayFromPolygon(MapView mapView, Polygon polygon) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,8 @@ public class AreaSelectorPlugin extends Plugin{

AreaSelectorAction areaSelectorAction;

AddressDialogAction addressDialogAction;

public AreaSelectorPlugin(PluginInformation info) {
super(info);

Expand All @@ -35,6 +37,8 @@ public AreaSelectorPlugin(PluginInformation info) {
areaSelectorAction=new AreaSelectorAction(Main.map);
MainMenu.add(Main.main.menu.moreToolsMenu, areaSelectorAction);

addressDialogAction=new AddressDialogAction(Main.map);
MainMenu.add(Main.main.menu.moreToolsMenu, addressDialogAction);
}

/**
Expand Down

0 comments on commit d79c2f8

Please sign in to comment.