Ignore:
Timestamp:
2014-08-31T02:46:33+02:00 (10 years ago)
Author:
donvip
Message:

[josm_terracer] fix #josm10443 - possibility to change building value + add warnings

Location:
applications/editors/josm/plugins/terracer/src/terracer
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/terracer/src/terracer/HouseNumberInputDialog.java

    r30612 r30613  
    3838import org.openstreetmap.josm.tools.GBC;
    3939
    40 
    4140/**
    4241 * The HouseNumberInputDialog is the layout of the house number input logic.
    43  * Created with the Eclipse Visual Editor.
    4442 *
    4543 *  This dialog is concerned with the layout, all logic goes into the
     
    4745 *
    4846 * @author casualwalker
    49  *
    5047 */
    5148public class HouseNumberInputDialog extends ExtendedDialog {
     
    207204                inputPanel.add(new JLabel(tr("Street name: ")+"\""+streetName+"\""), GBC.eol().insets(3,3,0,0));
    208205            }
    209             if (buildingType == null) {
    210                 inputPanel.add(buildingLabel, GBC.std().insets(3,3,0,0));
    211                 inputPanel.add(getBuilding(), GBC.eol().insets(5,3,0,0));
    212             } else {
    213                 inputPanel.add(new JLabel(tr("Building: ")+"\""+buildingType+"\""), GBC.eol().insets(3,3,0,0));
    214             }
     206            inputPanel.add(buildingLabel, GBC.std().insets(3,3,0,0));
     207            inputPanel.add(getBuilding(), GBC.eol().insets(5,3,0,0));
    215208            inputPanel.add(handleRelationCheckBox, GBC.eol().insets(3,3,0,0));
    216209            inputPanel.add(deleteOutlineCheckBox, GBC.eol().insets(3,3,0,0));
    217210           
    218             if (numbers.isVisible())
    219             {
     211            if (numbers.isVisible()) {
    220212                loLabel.setVisible(false);
    221213                lo.setVisible(false);
     
    237229     * Overrides the default actions. Will not close the window when upload trace is clicked
    238230     */
    239     @Override protected void buttonAction(int buttonIndex, final ActionEvent evt) {
    240         //String a = evt.getActionCommand();
     231    @Override
     232    protected void buttonAction(int buttonIndex, final ActionEvent evt) {
    241233        this.inputHandler.actionPerformed(evt);
    242234    }
     
    309301            streetComboBox.setEditable(true);
    310302            streetComboBox.setSelectedItem(null);
    311 
    312303        }
    313304        return streetComboBox;
     
    327318            buildingComboBox.setPossibleACItems(values);
    328319            buildingComboBox.setEditable(true);
    329             buildingComboBox.setSelectedItem("yes");
    330 
     320            if (buildingType != null && !buildingType.isEmpty()) {
     321                buildingComboBox.setSelectedItem(buildingType);
     322            } else {
     323                buildingComboBox.setSelectedItem("yes");
     324            }
    331325        }
    332326        return buildingComboBox;
     
    361355                interpolation.select(tr("Even/Odd"));
    362356            }
    363             //return (dialog.interpolation.getSelectedItem().equals(tr("All"))) ? 1 : 2;
    364357        }
    365358        return interpolation;
  • applications/editors/josm/plugins/terracer/src/terracer/HouseNumberInputHandler.java

    r30612 r30613  
    394394     */
    395395    public String buildingType() {
    396         if (buildingType != null)
    397             return buildingType;
    398 
    399396        return getItemText(dialog.buildingComboBox);
    400397    }
  • applications/editors/josm/plugins/terracer/src/terracer/TerracerAction.java

    r30612 r30613  
    9797    }
    9898   
     99    private static final class InvalidUserInputException extends Exception {
     100        InvalidUserInputException(String message) {
     101            super(message);
     102        }
     103    }
     104
    99105    /**
    100106     * Checks that the selection is OK. If not, displays error message. If so
     
    110116        Node init = null;
    111117
    112         class InvalidUserInputException extends Exception {
    113             /*InvalidUserInputException(String message) {
    114                 super(message);
    115             }*/
    116 
    117             InvalidUserInputException() {
    118                 super();
    119             }
    120         }
    121 
    122118        try {
    123119            if (sel.size() == 1) {
     
    125121
    126122                if (!(prim instanceof Way))
    127                     throw new InvalidUserInputException();
     123                    throw new InvalidUserInputException(prim+" is not a way");
    128124
    129125                outline = (Way) prim;
     
    136132                        if (outline != null)
    137133                            // already have a building
    138                             throw new InvalidUserInputException();
     134                            throw new InvalidUserInputException("already have a building");
    139135                        outline = way;
    140136                    } else if (way.hasKey("highway")) {
    141137                        if (street != null)
    142138                            // already have a street
    143                             throw new InvalidUserInputException();
     139                            throw new InvalidUserInputException("already have a street");
    144140                        street = way;
    145 
    146                         if ((streetname = street.get("name")) == null)
    147                             throw new InvalidUserInputException();
     141                        streetname = street.get("name");
     142                        if (streetname == null)
     143                            throw new InvalidUserInputException("street does not have any name");
    148144                    } else
    149                         throw new InvalidUserInputException();
     145                        throw new InvalidUserInputException(way+" is neither a building nor a highway");
    150146                }
    151147
    152148                if (outline == null)
    153                     throw new InvalidUserInputException();
     149                    throw new InvalidUserInputException("no outline way found");
    154150
    155151                List<Node> nodes = OsmPrimitive.getFilteredList(sel, Node.class);
     
    160156                    Node node = nit.next();
    161157                    if (node.hasKey("addr:housenumber")) {
    162                         String nodesstreetname = node.get("addr:street");
     158                        String nodesStreetName = node.get("addr:street");
    163159                        // if a node has a street name if must be equal
    164160                        // to the one of the other address nodes
    165                         if (nodesstreetname != null) {
     161                        if (nodesStreetName != null) {
    166162                            if (streetname == null)
    167                                 streetname = nodesstreetname;
    168                             else if (!nodesstreetname.equals(streetname))
    169                                 throw new InvalidUserInputException();
     163                                streetname = nodesStreetName;
     164                            else if (!nodesStreetName.equals(streetname))
     165                                throw new InvalidUserInputException("addr:street does not match street name");
    170166                        }
    171167
     
    176172                        // the number direction right.
    177173                        if (!outline.containsNode(node) || init != null)
    178                             throw new InvalidUserInputException();
     174                            throw new InvalidUserInputException("node problem");
    179175                        init = node;
    180176                    }
     
    185181
    186182            if (outline == null || !outline.isClosed() || outline.getNodesCount() < 5)
    187                 throw new InvalidUserInputException();
     183                throw new InvalidUserInputException("wrong or missing outline");
     184       
    188185        } catch (InvalidUserInputException ex) {
     186            Main.warn("Terracer: "+ex.getMessage());
    189187            new ExtendedDialog(Main.parent, tr("Invalid selection"), new String[] {"OK"})
    190188                .setButtonIcons(new String[] {"ok"}).setIcon(JOptionPane.INFORMATION_MESSAGE)
     
    211209            if (associatedStreets.size() > 1) {
    212210                // TODO: Deal with multiple associated Streets
    213                 System.out.println("Terracer warning: Found "+associatedStreets.size()+" associatedStreet relations. Considering the first one only.");
     211                Main.warn("Terracer: Found "+associatedStreets.size()+" associatedStreet relations. Considering the first one only.");
    214212            }
    215213        }
     
    233231            String title = trn("Change {0} object", "Change {0} objects", sel.size(), sel.size());
    234232            // show input dialog.
    235             new HouseNumberInputHandler(this, outline, init, street, streetname, null,
     233            new HouseNumberInputHandler(this, outline, init, street, streetname, outline.get("building"),
    236234                    associatedStreet, housenumbers, title);
    237235        }
     
    522520            numberAdded = houseNum.hasKey("addr:housenumber");
    523521        }
    524         if (!outline.hasKey("building") && !buildingAdded) {
     522        if (!buildingAdded && buildingValue != null && !buildingValue.isEmpty()) {
    525523            this.commands.add(new ChangePropertyCommand(outline, "building", buildingValue));
    526524        }
Note: See TracChangeset for help on using the changeset viewer.