Ticket #15802: circular_building_tool_4.patch
| File circular_building_tool_4.patch, 22.8 KB (added by , 8 years ago) |
|---|
-
new file 2001
From 8ebbfdf7a5abe0d152d45bb10c439a1293944e58 Mon Sep 17 00:00:00 2001 From: Clarisse Abalos <samantha.abalos@digitalglobe.com> Date: Mon, 22 Jan 2018 17:03:48 -0500 Subject: [PATCH] 90 squash commits --- buildings_tools/images/cursor/modifier/silo.png | Bin 0 -> 594 bytes buildings_tools/src/buildings_tools/Building.java | 136 ++++++++++++++++++--- .../src/buildings_tools/BuildingCircleAction.java | 27 ++++ .../buildings_tools/BuildingRectangleAction.java | 27 ++++ .../src/buildings_tools/BuildingSizeDialog.java | 24 +++- .../src/buildings_tools/BuildingsToolsPlugin.java | 3 + .../src/buildings_tools/DrawBuildingAction.java | 46 +++++-- .../src/buildings_tools/ToolSettings.java | 26 ++++ 8 files changed, 257 insertions(+), 32 deletions(-) create mode 100644 buildings_tools/images/cursor/modifier/silo.png create mode 100644 buildings_tools/src/buildings_tools/BuildingCircleAction.java create mode 100644 buildings_tools/src/buildings_tools/BuildingRectangleAction.java diff --git a/buildings_tools/images/cursor/modifier/silo.png b/buildings_tools/images/cursor/modifier/silo.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac6200e68f75e41e2adf07053e33f500283c158 GIT binary patch literal 594 zcmV-Y0<HatP)<h;3K|Lk000e1NJLTq000pH000pP1^@s7Olo&*00004XF*Lt006O% z3;baP00006VoOIv00000008+zyMF)x010qNS#tmY3ljhU3ljkVnw%H_000McNliru z;sFd1BmsNno>l+=0nbT9K~y-)tyH^?+CUUNGwg0`*=tNl<d_x=6j%xcMe+w!NKm^; zL%|pD4@CI{A|W~`B5H)_s1iXMDufWiLfX{?K~Uty+%&tZtXW5!$LZ$YbIyItXn-I( zoz4|P!7R(NIp=|}VHl<mf(*lW1ppiXG);Ta@At2DU4I$wIG@iqLI?tYGXQWL=Q5kk z9`1cO=L}CmsZ{cZ!{K$MQaSz_zi-#FEL#Y{*XuP!qftMT$=D|(0PuYuoO47X5j^Uo zs_I^rWk`}ljYh*$6lIUU!Q0VjB#7t$;LS<4-EPxnvmqe_wOTDY=_8#^V>}*vx~}8m z;=(&25D}Wq<_-WDW9-p!N2AeYu=E2$wOZYW5@cD1ZQIWPAdyI%<9{Fy;6pN*`~=`V zfaiZAmh1KU7sqj~dcEFmu~>L?i(0Mr8GsxVoCO1>X{IDedR-_KZiEn#!C*kDs$#WT z9pdqL-ZagW>$+b<H+K6-P%IYF?RL+n(<u~1`BpBMF_}z|%jIq~O~Y^3{vg3Q^7;Ia zr_3K}LPXeZxAe~@%jMF)JA0mY4E->IH^UhFm`bG#*LBG-4Dvkh7>mUsj4`&`?J%3o g)<pCU!1p`RPr2N%D=;mnzW@LL07*qoM6N<$g2~(a9{>OV -
buildings_tools/src/buildings_tools/Building.java
literal 0 HcmV?d00001 diff --git a/buildings_tools/src/buildings_tools/Building.java b/buildings_tools/src/buildings_tools/Building.java index 939db54..eff21d1 100644
a b import static org.openstreetmap.josm.tools.I18n.tr; 8 8 import java.awt.Graphics2D; 9 9 import java.awt.Point; 10 10 import java.awt.geom.GeneralPath; 11 import java.util.ArrayList; 12 import java.util.Arrays; 11 13 import java.util.Collection; 14 import java.util.Collections; 15 import java.util.Comparator; 12 16 import java.util.LinkedList; 13 17 import java.util.List; 14 18 import java.util.Map.Entry; … … import java.util.Map.Entry; 16 20 import javax.swing.JOptionPane; 17 21 18 22 import org.openstreetmap.josm.Main; 23 import org.openstreetmap.josm.actions.CreateCircleAction; 19 24 import org.openstreetmap.josm.command.AddCommand; 20 25 import org.openstreetmap.josm.command.ChangeCommand; 21 26 import org.openstreetmap.josm.command.Command; … … class Building { 70 75 } 71 76 72 77 public boolean isRectDrawing() { 73 return drawingAngle != null && ToolSettings.getWidth() == 0 && ToolSettings.getLenStep() == 0; 78 return drawingAngle != null && ToolSettings.getWidth() == 0 && ToolSettings.getLenStep() == 0 79 && ToolSettings.Shape.RECTANGLE.equals(ToolSettings.getShape()); 74 80 } 75 81 76 82 public Double getDrawingAngle() { … … class Building { 130 136 return; 131 137 final EastNorth p1 = en[0]; 132 138 en[1] = new EastNorth(p1.east() + Math.sin(heading) * len * meter, p1.north() + Math.cos(heading) * len * meter); 133 en[2] = new EastNorth(p1.east() + Math.sin(heading) * len * meter + Math.cos(heading) * width * meter, 134 p1.north() + Math.cos(heading) * len * meter - Math.sin(heading) * width * meter); 135 en[3] = new EastNorth(p1.east() + Math.cos(heading) * width * meter, 136 p1.north() - Math.sin(heading) * width * meter); 139 if (ToolSettings.Shape.RECTANGLE.equals(ToolSettings.getShape())) { 140 en[2] = new EastNorth(p1.east() + Math.sin(heading) * len * meter + Math.cos(heading) * width * meter, 141 p1.north() + Math.cos(heading) * len * meter - Math.sin(heading) * width * meter); 142 en[3] = new EastNorth(p1.east() + Math.cos(heading) * width * meter, 143 p1.north() - Math.sin(heading) * width * meter); 144 } 137 145 } 138 146 139 147 public void setLengthWidth(double length, double width) { … … class Building { 172 180 } 173 181 } 174 182 183 public void setPlaceCircle(EastNorth p2, double width, boolean ignoreConstraints) { 184 if (en[0] == null) 185 throw new IllegalStateException("setPlace() called without the base point"); 186 this.heading = en[0].heading(p2); 187 if (!ignoreConstraints) 188 this.heading = angleSnap.snapAngle(this.heading); 189 this.len = width; 190 191 updatePos(); 192 } 193 175 194 public void setPlaceRect(EastNorth p2) { 176 195 if (en[0] == null) 177 196 throw new IllegalStateException("SetPlaceRect() called without the base point"); … … class Building { 198 217 GeneralPath b = new GeneralPath(); 199 218 Point pp1 = mv.getPoint(eastNorth2latlon(en[0])); 200 219 Point pp2 = mv.getPoint(eastNorth2latlon(en[1])); 201 Point pp3 = mv.getPoint(eastNorth2latlon(en[2]));202 Point pp4 = mv.getPoint(eastNorth2latlon(en[3]));203 204 220 b.moveTo(pp1.x, pp1.y); 205 221 b.lineTo(pp2.x, pp2.y); 206 b.lineTo(pp3.x, pp3.y); 207 b.lineTo(pp4.x, pp4.y); 222 if(ToolSettings.Shape.RECTANGLE.equals(ToolSettings.getShape())){ 223 Point pp3 = mv.getPoint(eastNorth2latlon(en[2])); 224 Point pp4 = mv.getPoint(eastNorth2latlon(en[3])); 225 b.lineTo(pp3.x, pp3.y); 226 b.lineTo(pp4.x, pp4.y); 227 } 208 228 b.lineTo(pp1.x, pp1.y); 209 229 g.draw(b); 210 230 } … … class Building { 233 253 */ 234 254 private Node getAddressNode() { 235 255 BBox bbox = new BBox(eastNorth2latlon(en[0]), eastNorth2latlon(en[1])); 236 bbox.add(eastNorth2latlon(en[2])); 237 bbox.add(eastNorth2latlon(en[3])); 256 if (ToolSettings.Shape.RECTANGLE.equals(ToolSettings.getShape())) { 257 bbox.add(eastNorth2latlon(en[2])); 258 bbox.add(eastNorth2latlon(en[3])); 259 } 238 260 List<Node> nodes = new LinkedList<>(); 239 261 nodesloop: 240 262 for (Node n : MainApplication.getLayerManager().getEditDataSet().searchNodes(bbox)) { … … class Building { 265 287 return nodes.get(0); 266 288 } 267 289 268 public Way create() { 290 public Way createCircle() { 291 DataSet ds = MainApplication.getLayerManager().getEditDataSet(); 292 Collection<OsmPrimitive> selectedPrimitives = ds.getAllSelected(); 293 ds.clearSelection(); 294 295 if (len == 0) 296 return null; 297 final boolean[] created = new boolean[2]; 298 final Node[] nodes = new Node[2]; 299 for (int i = 0; i < 2; i++) { 300 301 Node n = findNode(en[i]); 302 if (n == null) { 303 nodes[i] = new Node(eastNorth2latlon(en[i])); 304 created[i] = true; 305 } else { 306 nodes[i] = n; 307 created[i] = false; 308 } 309 if (nodes[i].getCoor().isOutSideWorld()) { 310 JOptionPane.showMessageDialog(Main.parent, 311 tr("Cannot place building outside of the world.")); 312 return null; 313 } 314 } 315 Way w = new Way(); 316 w.addNode(nodes[0]); 317 w.addNode(nodes[1]); 318 319 Collection<Command> addNodesCmd = new LinkedList<>(); 320 321 for (int i = 0; i < 2; i++) { 322 if (created[i]) { 323 AddCommand addNode = new AddCommand(ds, nodes[i]); 324 addNodesCmd.add(addNode); 325 } 326 } 327 328 if (addNodesCmd.size() > 0) { 329 Command addNodes = new SequenceCommand(tr("Add nodes for building"), addNodesCmd); 330 Main.main.undoRedo.add(addNodes); 331 } 332 333 // Nodes must be selected for create circle action 334 for (int i = 0; i < 2; i++) { 335 if (created[i]) { 336 ds.addSelected(nodes[i]); 337 } 338 } 339 340 CreateCircleAction action = new CreateCircleAction(); 341 action.setEnabled(true); 342 action.actionPerformed(null); 343 344 ds.clearSelection(); 345 ds.addSelected(selectedPrimitives); 346 347 // get the way with the smallest id with the assumption that it is 348 // newest way created by CreateCirclAction 349 List<Way> ways = new ArrayList(ds.getWays()); 350 Collections.sort(ways); 351 w = ways.get(0); 352 353 addAddress(w); 354 355 return w; 356 } 357 358 public Way createRectangle() { 269 359 if (len == 0) 270 360 return null; 271 361 final boolean[] created = new boolean[4]; … … class Building { 306 396 } 307 397 cmds.add(new AddCommand(ds, w)); 308 398 399 addAddress(w); 400 401 Command c = new SequenceCommand(tr("Create building"), cmds); 402 Main.main.undoRedo.add(c); 403 return w; 404 } 405 406 private void addAddress(Way w) { 309 407 if (ToolSettings.PROP_USE_ADDR_NODE.get()) { 408 310 409 Node addrNode = getAddressNode(); 311 410 if (addrNode != null) { 411 Collection<Command> addressCmds = new LinkedList<>(); 412 312 413 for (Entry<String, String> entry : addrNode.getKeys().entrySet()) { 313 414 w.put(entry.getKey(), entry.getValue()); 314 415 } … … class Building { 322 423 rnew.addMember(i, new RelationMember(member.getRole(), w)); 323 424 } 324 425 } 325 cmds.add(new ChangeCommand(r, rnew));426 addressCmds.add(new ChangeCommand(r, rnew)); 326 427 } 327 cmds.add(new DeleteCommand(addrNode)); 428 addressCmds.add(new DeleteCommand(addrNode)); 429 Command c = new SequenceCommand(tr("Add address for building"), addressCmds); 430 Main.main.undoRedo.add(c); 328 431 } 329 432 } 330 Command c = new SequenceCommand(tr("Create building"), cmds);331 Main.main.undoRedo.add(c);332 return w;333 433 } 334 434 } -
new file uildings_tools/src/buildings_tools/BuildingCircleAction.java
diff --git a/buildings_tools/src/buildings_tools/BuildingCircleAction.java b/buildings_tools/src/buildings_tools/BuildingCircleAction.java new file mode 100644 index 0000000..2216890
- + 1 // License: GPL. For details, see LICENSE file. 2 package buildings_tools; 3 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 6 import java.awt.event.ActionEvent; 7 import java.awt.event.KeyEvent; 8 9 import org.openstreetmap.josm.actions.JosmAction; 10 import org.openstreetmap.josm.tools.Shortcut; 11 12 @SuppressWarnings("serial") 13 public class BuildingCircleAction extends JosmAction { 14 15 public BuildingCircleAction() { 16 super(tr("Set building shape to circle"), "mapmode/building", tr("Set buildings shape to circle"), 17 Shortcut.registerShortcut("buildings_tools:circle", 18 tr("Data: {0}", tr("Set buildings shape to circle")), 19 KeyEvent.VK_Z, Shortcut.ALT), 20 true); 21 } 22 23 @Override 24 public void actionPerformed(ActionEvent arg0) { 25 ToolSettings.saveShape(ToolSettings.Shape.CIRCLE); 26 } 27 } -
new file uildings_tools/src/buildings_tools/BuildingRectangleAction.java
diff --git a/buildings_tools/src/buildings_tools/BuildingRectangleAction.java b/buildings_tools/src/buildings_tools/BuildingRectangleAction.java new file mode 100644 index 0000000..aa23f4a
- + 1 // License: GPL. For details, see LICENSE file. 2 package buildings_tools; 3 4 import static org.openstreetmap.josm.tools.I18n.tr; 5 6 import java.awt.event.ActionEvent; 7 import java.awt.event.KeyEvent; 8 9 import org.openstreetmap.josm.actions.JosmAction; 10 import org.openstreetmap.josm.tools.Shortcut; 11 12 @SuppressWarnings("serial") 13 public class BuildingRectangleAction extends JosmAction { 14 15 public BuildingRectangleAction() { 16 super(tr("Set building shape to rectangle"), "mapmode/building", tr("Set buildings shape to rectangle"), 17 Shortcut.registerShortcut("buildings_tools:rectangle", 18 tr("Data: {0}", tr("Set buildings shape to rectangle")), 19 KeyEvent.VK_R, Shortcut.ALT), 20 true); 21 } 22 23 @Override 24 public void actionPerformed(ActionEvent arg0) { 25 ToolSettings.saveShape(ToolSettings.Shape.RECTANGLE); 26 } 27 } -
buildings_tools/src/buildings_tools/BuildingSizeDialog.java
diff --git a/buildings_tools/src/buildings_tools/BuildingSizeDialog.java b/buildings_tools/src/buildings_tools/BuildingSizeDialog.java index 9d70038..b6ddb09 100644
a b import static org.openstreetmap.josm.tools.I18n.tr; 5 5 6 6 import java.awt.event.ActionEvent; 7 7 import java.awt.event.ActionListener; 8 import java.awt.event.KeyEvent; 8 9 import java.text.NumberFormat; 9 10 import java.text.ParseException; 10 11 12 import javax.swing.ButtonGroup; 11 13 import javax.swing.JButton; 12 14 import javax.swing.JCheckBox; 13 15 import javax.swing.JFormattedTextField; 16 import javax.swing.JRadioButton; 14 17 15 18 import org.openstreetmap.josm.tools.GBC; 19 import org.openstreetmap.josm.tools.Shortcut; 16 20 17 21 @SuppressWarnings("serial") 18 22 public class BuildingSizeDialog extends MyDialog { … … public class BuildingSizeDialog extends MyDialog { 21 25 private final JCheckBox caddr = new JCheckBox(tr("Use Address dialog")); 22 26 private final JCheckBox cAutoSelect = new JCheckBox(tr("Auto-select building")); 23 27 private final JCheckBox cAddrNode = new JCheckBox(tr("Use address nodes under buildings")); 28 private final JRadioButton circleRadio = new JRadioButton(tr("Circle")); 29 private final JRadioButton rectangleRadio = new JRadioButton(tr("Rectangle")); 24 30 25 31 public BuildingSizeDialog() { 26 super(tr("Set buildings size "));32 super(tr("Set buildings size and shape")); 27 33 28 addLabelled(tr("Buildings width:"), twidth); 34 ButtonGroup shapeGroup = new ButtonGroup(); 35 shapeGroup.add(circleRadio); 36 shapeGroup.add(rectangleRadio); 37 circleRadio.setSelected(ToolSettings.Shape.CIRCLE.equals(ToolSettings.getShape())); 38 rectangleRadio.setSelected(ToolSettings.Shape.RECTANGLE.equals(ToolSettings.getShape())); 39 40 panel.add(rectangleRadio, GBC.eol().fill(GBC.HORIZONTAL)); 41 panel.add(circleRadio, GBC.eol().fill(GBC.HORIZONTAL)); 42 43 addLabelled(tr("Buildings width/diameter:"), twidth); 29 44 addLabelled(tr("Length step:"), tlenstep); 30 45 panel.add(caddr, GBC.eol().fill(GBC.HORIZONTAL)); 31 46 panel.add(cAutoSelect, GBC.eol().fill(GBC.HORIZONTAL)); … … public class BuildingSizeDialog extends MyDialog { 74 89 } 75 90 76 91 public final void saveSettings() { 92 if (circleRadio.isSelected()) { 93 ToolSettings.saveShape(ToolSettings.Shape.CIRCLE); 94 } else if (rectangleRadio.isSelected()) { 95 ToolSettings.saveShape(ToolSettings.Shape.RECTANGLE); 96 } 77 97 ToolSettings.setSizes(width(), lenstep()); 78 98 ToolSettings.setAddrDialog(useAddr()); 79 99 ToolSettings.setAutoSelect(cAutoSelect.isSelected()); -
buildings_tools/src/buildings_tools/BuildingsToolsPlugin.java
diff --git a/buildings_tools/src/buildings_tools/BuildingsToolsPlugin.java b/buildings_tools/src/buildings_tools/BuildingsToolsPlugin.java index d74056f..1b62ceb 100644
a b public class BuildingsToolsPlugin extends Plugin { 29 29 super(info); 30 30 JMenu dataMenu = MainApplication.getMenu().dataMenu; 31 31 MainMenu.add(dataMenu, new BuildingSizeAction()); 32 MainMenu.add(dataMenu, new BuildingCircleAction()); 33 MainMenu.add(dataMenu, new BuildingRectangleAction()); 32 34 MainMenu.add(dataMenu, new MergeAddrPointsAction()); 35 33 36 } 34 37 35 38 @Override -
buildings_tools/src/buildings_tools/DrawBuildingAction.java
diff --git a/buildings_tools/src/buildings_tools/DrawBuildingAction.java b/buildings_tools/src/buildings_tools/DrawBuildingAction.java index 31ba318..8099276 100644
a b import java.awt.event.KeyEvent; 17 17 import java.awt.event.MouseEvent; 18 18 import java.awt.geom.GeneralPath; 19 19 import java.awt.image.BufferedImage; 20 import java.util.Arrays; 20 21 import java.util.Collection; 21 22 import java.util.LinkedList; 22 23 import java.util.Map.Entry; … … public class DrawBuildingAction extends MapMode implements MapViewPaintable, Sel 77 78 78 79 private static Cursor getCursor() { 79 80 try { 80 return ImageProvider.getCursor("crosshair", "building"); 81 if (ToolSettings.Shape.CIRCLE.equals(ToolSettings.getShape())) { 82 return ImageProvider.getCursor("crosshair", "silo"); 83 }else{ 84 return ImageProvider.getCursor("crosshair", "building"); 85 } 81 86 } catch (Exception e) { 82 87 Logging.error(e); 83 88 } … … public class DrawBuildingAction extends MapMode implements MapViewPaintable, Sel 190 195 191 196 cancelDrawing(); 192 197 } 198 193 199 } 194 200 195 201 @Override … … public class DrawBuildingAction extends MapMode implements MapViewPaintable, Sel 211 217 } 212 218 213 219 private boolean isRectDrawing() { 214 return building.isRectDrawing() && (!shift || ToolSettings.isBBMode()); 220 return building.isRectDrawing() && (!shift || ToolSettings.isBBMode()) 221 && ToolSettings.Shape.RECTANGLE.equals(ToolSettings.getShape()); 215 222 } 216 223 217 224 private Mode modeDrawing() { 218 225 EastNorth p = getEastNorth(); 219 226 if (isRectDrawing()) { 220 building.setPlaceRect(p); 221 return shift ? Mode.DrawingAngFix : Mode.None; 227 building.setPlaceRect(p); 228 return shift ? Mode.DrawingAngFix : Mode.None; 229 } else if (ToolSettings.Shape.CIRCLE.equals(ToolSettings.getShape())) { 230 if (ToolSettings.getWidth() != 0) { 231 building.setPlaceCircle(p, ToolSettings.getWidth(), shift); 232 } else { 233 building.setPlace(p, ToolSettings.getWidth(), ToolSettings.getLenStep(), shift); 234 } 235 MainApplication.getMap().statusLine.setDist(building.getLength()); 236 this.nextMode = Mode.None; 237 return this.nextMode; 222 238 } else { 223 239 building.setPlace(p, ToolSettings.getWidth(), ToolSettings.getLenStep(), shift); 224 240 MainApplication.getMap().statusLine.setDist(building.getLength()); … … public class DrawBuildingAction extends MapMode implements MapViewPaintable, Sel 247 263 nextMode = Mode.None; 248 264 return; 249 265 } 250 251 266 if (mode == Mode.Drawing) { 252 267 nextMode = modeDrawing(); 253 268 } else if (mode == Mode.DrawingWidth) { … … public class DrawBuildingAction extends MapMode implements MapViewPaintable, Sel 277 292 private void drawingStart(MouseEvent e) { 278 293 mousePos = e.getPoint(); 279 294 drawStartPos = mousePos; 280 281 Node n = MainApplication.getMap().mapView.getNearestNode(mousePos, OsmPrimitive::isUsable); 282 if (n == null) { 295 if (ToolSettings.Shape.CIRCLE.equals(ToolSettings.getShape())) { 283 296 building.setBase(latlon2eastNorth(MainApplication.getMap().mapView.getLatLon(mousePos.x, mousePos.y))); 284 297 } else { 285 building.setBase(n); 298 Node n = MainApplication.getMap().mapView.getNearestNode(mousePos, OsmPrimitive::isUsable); 299 if (n == null) { 300 building.setBase(latlon2eastNorth(MainApplication.getMap().mapView.getLatLon(mousePos.x, mousePos.y))); 301 } else { 302 building.setBase(n); 303 } 286 304 } 287 305 mode = Mode.Drawing; 288 306 updateStatusLine(); … … public class DrawBuildingAction extends MapMode implements MapViewPaintable, Sel 300 318 301 319 private void drawingFinish() { 302 320 if (building.getLength() != 0) { 303 Way w = building.create(); 321 Way w; 322 if (ToolSettings.Shape.CIRCLE.equals(ToolSettings.getShape())) { 323 w = building.createCircle(); 324 } else { 325 w = building.createRectangle(); 326 } 304 327 if (w != null) { 305 328 if (!alt || ToolSettings.isUsingAddr()) 306 329 for (Entry<String, String> kv : ToolSettings.getTags().entrySet()) { … … public class DrawBuildingAction extends MapMode implements MapViewPaintable, Sel 371 394 if (customCursor != null && (!ctrl || isRectDrawing())) 372 395 setCursor(customCursor); 373 396 else 374 setCursor( cursorCrosshair);397 setCursor(getCursor()); 375 398 } 376 399 377 400 } … … public class DrawBuildingAction extends MapMode implements MapViewPaintable, Sel 421 444 break; 422 445 } 423 446 } 424 425 447 building.addAngleSnap(nodes.toArray(new Node[0])); 426 448 for (Way w : ways) { 427 449 building.addAngleSnap(w); -
buildings_tools/src/buildings_tools/ToolSettings.java
diff --git a/buildings_tools/src/buildings_tools/ToolSettings.java b/buildings_tools/src/buildings_tools/ToolSettings.java index 2e14b4b..07c461a 100644
a b public final class ToolSettings { 21 21 } 22 22 23 23 public static final BooleanProperty PROP_USE_ADDR_NODE = new BooleanProperty("buildings_tools.addrNode", false); 24 25 public enum Shape { 26 CIRCLE, RECTANGLE 27 } 28 29 private static Shape shape = loadShape(); 24 30 private static double width = 0; 25 31 private static double lenstep = 0; 26 32 private static boolean useAddr; 27 33 private static final Map<String, String> TAGS = new HashMap<>(); 28 34 private static boolean autoSelect; 29 35 36 public static Shape getShape() { 37 loadShape(); 38 return shape; 39 } 40 30 41 public static void setAddrDialog(boolean _useAddr) { 31 42 useAddr = _useAddr; 32 43 } … … public final class ToolSettings { 77 88 } 78 89 } 79 90 91 public static void saveShape(Shape shape) { 92 Main.pref.put("buildings_tool.shape", shape.name()); 93 } 94 95 private static Shape loadShape() { 96 String shape = Main.pref.get("buildings_tool.shape"); 97 if (ToolSettings.Shape.CIRCLE.name().equals(shape)) { 98 ToolSettings.shape = Shape.CIRCLE; 99 return Shape.CIRCLE; 100 } else { 101 ToolSettings.shape = Shape.RECTANGLE; 102 return (Shape.RECTANGLE); 103 } 104 } 105 80 106 public static void setBBMode(boolean bbmode) { 81 107 Main.pref.putBoolean("buildings_tools.bbmode", bbmode); 82 108 }
