Changeset 23829 in osm for applications/editors/josm


Ignore:
Timestamp:
2010-10-25T22:18:31+02:00 (14 years ago)
Author:
oliverw
Message:
  • Renamed AddressVisitor.java to AddressEditContainer.java
  • Added table model for streets
Location:
applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit
Files:
6 added
1 deleted
4 edited

Legend:

Unmodified
Added
Removed
  • applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressEditAction.java

    r23814 r23829  
    88import java.util.Collection;
    99
    10 import org.openstreetmap.josm.Main;
    1110import org.openstreetmap.josm.actions.JosmAction;
    1211import org.openstreetmap.josm.data.SelectionChangedListener;
    13 import org.openstreetmap.josm.data.osm.DataSet;
    1412import org.openstreetmap.josm.data.osm.OsmPrimitive;
    15 import org.openstreetmap.josm.gui.progress.PleaseWaitProgressMonitor;
    1613import org.openstreetmap.josm.gui.progress.ProgressMonitor.CancelListener;
    1714import org.openstreetmap.josm.plugins.addressEdit.gui.AddressEditDialog;
     
    2825        private AddressEditModel addressModel;
    2926        private boolean isCanceled = false;
     27        private AddressEditContainer addressEditContainer;
    3028
    3129        public AddressEditAction() {
     
    3735                                                | InputEvent.SHIFT_DOWN_MASK), false);
    3836                setEnabled(false);
    39                 DataSet.addSelectionListener(this);
     37               
    4038        }
    4139
     
    4947        @Override
    5048        public void actionPerformed(ActionEvent arg0) {
    51                 collectAddressesAndStreets(Main.main.getCurrentDataSet()
    52                                 .allPrimitives());
    53 
    54                 if (addressModel != null) {
    55                         AddressEditDialog dlg = new AddressEditDialog(addressModel);
    56                         dlg.setVisible(true);
     49                addressEditContainer = new AddressEditContainer();
     50                if (addressEditContainer != null) {
     51                        addressEditContainer.attachToDataSet();
     52                        try {
     53                                AddressEditDialog dlg = new AddressEditDialog(addressEditContainer);
     54                                dlg.setVisible(true);
     55                        } finally {
     56                                addressEditContainer.detachFromDataSet();
     57                        }
    5758                }
    5859        }
     
    6364                        return;
    6465
    65                 final AddressVisitor addrVisitor = new AddressVisitor();
    66 
    67                 //final PleaseWaitProgressMonitor monitor = new PleaseWaitProgressMonitor(tr("Prepare OSM data..."));
    68                 // int ticks = osmData.size();
    69 
    70 
    71 
    72                 try {
    73                         for (OsmPrimitive osm : osmData) {
    74                                 osm.visit(addrVisitor);
    75 
    76                                 if (isCanceled) {
    77                                         addrVisitor.clearData(); // free visitor data
    78                                         return;
    79                                 }
    80                         }
    81                         //monitor.worked(1);
    82 
    83                         // generateTagCode(addrVisitor);
    84                         //monitor.setCustomText(tr("Resolving addresses..."));
    85                         addrVisitor.resolveAddresses();
    86                         //monitor.worked(1);
    87 
    88 
    89                 } finally {
    90                         //monitor.close();
    91                 }
    92 
    93                 addressModel = new AddressEditModel(
    94                                 addrVisitor.getStreetList(),
    95                                 addrVisitor.getUnresolvedItems());
     66               
    9667        }
    9768
     
    10980        /* ----------------------------------------- */
    11081
    111         private void generateTagCode(AddressVisitor addrVisitor) {
     82        private void generateTagCode(AddressEditContainer addrVisitor) {
    11283                /* This code is abused to generate tag utility code */
    11384                for (String tag : addrVisitor.getTags()) {
  • applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/AddressNode.java

    r23816 r23829  
    112112                cc = this.getCountry().compareTo(other.getCountry());
    113113                if ( cc  == 0) {
    114                         cc = this.getState().compareTo(other.getState());
    115                        
     114                        cc = this.getState().compareTo(other.getState());                       
    116115                        if (cc  == 0) {
    117                                 cc = this.getCity().compareTo(other.getCity());
    118                                
     116                                cc = this.getCity().compareTo(other.getCity());                         
    119117                                if (cc  == 0) {
    120                                         cc = this.getStreet().compareTo(other.getStreet());
    121                                        
     118                                        cc = this.getStreet().compareTo(other.getStreet());                                     
    122119                                        if (cc  == 0) {
    123120                                                cc = this.getHouseNumber().compareTo(other.getHouseNumber());
     
    128125               
    129126                return cc;
     127        }
     128       
     129        /**
     130         * Applies the street name from the specified street node.
     131         * @param node
     132         */
     133        public void assignStreet(StreetNode node) {
     134                if (node == null || !node.hasName()) return;
     135               
     136                if (!node.getName().equals(getStreet())) {
     137                        setStreetName(node.getName());
     138                        node.addAddress(this);
     139                }
     140        }
     141       
     142        /**
     143         * Sets the street name of the address node.
     144         * @param streetName
     145         */
     146        public void setStreetName(String streetName) {
     147                if (streetName != null && streetName.length() == 0) return;
     148               
     149                this.osmObject.put(TagUtils.ADDR_STREET_TAG, streetName);
     150        }
     151       
     152        /**
     153         * Sets the state of the address node.
     154         * @param state
     155         */
     156        public void setState(String state) {
     157                if (state != null && state.length() == 0) return;
     158               
     159                this.osmObject.put(TagUtils.ADDR_STATE_TAG, state);
     160        }
     161       
     162        /**
     163         * Sets the country of the address node.
     164         * @param country
     165         */
     166        public void setCountry(String country) {
     167                if (country != null && country.length() == 0) return;
     168               
     169                this.osmObject.put(TagUtils.ADDR_COUNTRY_TAG, country);
     170        }
     171       
     172        /**
     173         * Sets the post code of the address node.
     174         * @param postCode
     175         */
     176        public void setPostCode(String postCode) {
     177                if (postCode != null && postCode.length() == 0) return;
     178               
     179                this.osmObject.put(TagUtils.ADDR_POSTCODE_TAG, postCode);
    130180        }
    131181
  • applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/StreetNode.java

    r23816 r23829  
    1616import java.util.ArrayList;
    1717import java.util.Collections;
     18import java.util.HashMap;
     19import java.util.HashSet;
    1820import java.util.List;
    1921
     
    8183        }
    8284       
     85        /**
     86         * Gets the number of addresses associated with this street.
     87         * @return
     88         */
     89        public int getNumberOfAddresses() {
     90                if (addresses == null) return 0;
     91               
     92                return addresses.size();
     93        }
     94       
     95        /**
     96         * Gets the number of street segments of this street.
     97         * @return
     98         */
     99        public int getNumberOfSegments() {
     100                if (children == null) return 0;
     101               
     102                int sc = 0;
     103                for (INodeEntity node : children) {
     104                        if (node instanceof StreetSegmentNode) {
     105                                sc++;
     106                        }
     107                }
     108                return sc;
     109        }
     110       
     111        /**
     112         * Gets the road type(s) of this street. If the street has different types,
     113         * they are separated by comma.
     114         * @return
     115         */
     116        public String getType() {
     117                List<String> types = new ArrayList<String>();
     118               
     119                for (INodeEntity seg : getChildren()) {
     120                        OsmPrimitive osmPrim = seg.getOsmObject();
     121                        if (TagUtils.hasHighwayTag(osmPrim)) {
     122                                String val = osmPrim.get(TagUtils.HIGHWAY_TAG);
     123                                if (!types.contains(val)) {
     124                                        types.add(val);
     125                                }
     126                        }
     127                }
     128               
     129                StringBuffer sb = new StringBuffer(20);
     130                for (String string : types) {
     131                        if (sb.length() > 0) {
     132                                sb.append(", ");
     133                        }
     134                        sb.append(string);
     135                       
     136                }
     137                return sb.toString();
     138        }
     139       
     140        /* (non-Javadoc)
     141         * @see org.openstreetmap.josm.plugins.addressEdit.NodeEntityBase#toString()
     142         */
    83143        @Override
    84144        public String toString() {
  • applications/editors/josm/plugins/AddressEdit/src/org/openstreetmap/josm/plugins/addressEdit/gui/AddressEditDialog.java

    r23816 r23829  
    3131import javax.swing.JSeparator;
    3232import javax.swing.JSplitPane;
     33import javax.swing.JTable;
    3334import javax.swing.JTree;
     35import javax.swing.ListSelectionModel;
     36import javax.swing.event.ListSelectionEvent;
     37import javax.swing.event.ListSelectionListener;
    3438import javax.swing.event.TreeSelectionEvent;
    3539import javax.swing.event.TreeSelectionListener;
     40import javax.swing.table.DefaultTableModel;
    3641import javax.swing.tree.DefaultMutableTreeNode;
    3742import javax.swing.tree.DefaultTreeModel;
    38 import javax.swing.tree.TreeSelectionModel;
    3943
    40 public class AddressEditDialog extends JFrame implements ActionListener, TreeSelectionListener {
     44import org.openstreetmap.josm.Main;
     45import org.openstreetmap.josm.data.osm.event.AbstractDatasetChangedEvent;
     46import org.openstreetmap.josm.data.osm.event.DataChangedEvent;
     47import org.openstreetmap.josm.data.osm.event.DataSetListener;
     48import org.openstreetmap.josm.data.osm.event.NodeMovedEvent;
     49import org.openstreetmap.josm.data.osm.event.PrimitivesAddedEvent;
     50import org.openstreetmap.josm.data.osm.event.PrimitivesRemovedEvent;
     51import org.openstreetmap.josm.data.osm.event.RelationMembersChangedEvent;
     52import org.openstreetmap.josm.data.osm.event.TagsChangedEvent;
     53import org.openstreetmap.josm.data.osm.event.WayNodesChangedEvent;
     54import org.openstreetmap.josm.plugins.addressEdit.AddressEditContainer;
     55
     56public class AddressEditDialog extends JFrame implements ActionListener, TreeSelectionListener, ListSelectionListener {
    4157        private static final String CANCEL_COMMAND = "Cancel";
    4258        private static final String OK_COMMAND = "Ok";
     
    4561         */
    4662        private static final long serialVersionUID = 6251676464816335631L;
    47         private AddressEditModel model;
     63        private AddressEditContainer model;
    4864        private JTree unresolvedTree;
    4965        private JTree incompleteTree;
    50         private JTree streetsTree;
     66        private JTable streetList;
    5167        private DefaultMutableTreeNode selStreet;
    5268        private DefaultMutableTreeNode selUnrAddr;
     
    6379         * @throws HeadlessException
    6480         */
    65         public AddressEditDialog(AddressEditModel model) throws HeadlessException  {
     81        public AddressEditDialog(AddressEditContainer addressEditContainer) throws HeadlessException  {
    6682                super(tr("Edit Addresses"));
    6783       
    68                 this.model = model;
     84                this.model = addressEditContainer;
    6985                setLayout(new BorderLayout());
    7086                setSize(800,600);
    7187                // TODO: Center on screen
    7288                setLocation(100, 100);
    73 
     89               
    7490                // TODO: Proper init, if model is null
    75                 if (model != null) {
     91                if (addressEditContainer != null) {
    7692                        JPanel streetPanel = new JPanel(new BorderLayout());
    77                         streetsTree = new JTree(new DefaultTreeModel(model.getStreetsTree()));
     93                        /*
     94                        streetsTree = new JTree(new DefaultTreeModel(addressEditContainer.getStreetsTree()));
    7895                        streetsTree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION);
    7996                        streetsTree.addTreeSelectionListener(this);
    8097                        streetsTree.setCellRenderer(new StreetTreeCellRenderer());
     98                        */
     99                        streetList = new JTable(new StreetTableModel(model));
     100                        streetList.getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
    81101                       
    82                         JScrollPane scroll1 = new JScrollPane(streetsTree);
     102                        JScrollPane scroll1 = new JScrollPane(streetList);
    83103                        streetPanel.add(scroll1, BorderLayout.CENTER);
    84104                        streetPanel.add(new JLabel("Unresolved Addresses"), BorderLayout.NORTH);
    85                         streetPanel.setMinimumSize(new Dimension(300, 400));
     105                        streetPanel.setMinimumSize(new Dimension(350, 400));
    86106                       
    87107                        JPanel unresolvedPanel = new JPanel(new BorderLayout());               
    88                         unresolvedTree = new JTree(new DefaultTreeModel(model.getUnresolvedAddressesTree()));
     108                        unresolvedTree = new JTree(new DefaultTreeModel(new DefaultMutableTreeNode()));
    89109                        unresolvedTree.addTreeSelectionListener(this);
    90110                       
     
    92112                        unresolvedPanel.add(scroll2, BorderLayout.CENTER);
    93113                        unresolvedPanel.add(new JLabel("Unresolved Addresses"), BorderLayout.NORTH);
    94                         unresolvedPanel.setMinimumSize(new Dimension(300, 200));
     114                        unresolvedPanel.setMinimumSize(new Dimension(350, 200));
    95115                       
    96116                        JPanel unresolvedButtons = new JPanel(new FlowLayout());
     
    100120                       
    101121                        JPanel incompletePanel = new JPanel(new BorderLayout());
    102                         incompleteTree = new JTree(new DefaultTreeModel(model.getIncompleteAddressesTree()));
     122                        incompleteTree = new JTree(new DefaultTreeModel(new DefaultMutableTreeNode()));
    103123                        incompleteTree.addTreeSelectionListener(this);
    104124                        JScrollPane scroll3 = new JScrollPane(incompleteTree);
    105125                        incompletePanel.add(scroll3, BorderLayout.CENTER);
    106126                        incompletePanel.add(new JLabel("Incomplete Addresses"), BorderLayout.NORTH);
    107                         incompletePanel.setMinimumSize(new Dimension(300, 200));
     127                        incompletePanel.setMinimumSize(new Dimension(350, 200));
    108128                       
    109129                        JSplitPane addrSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, unresolvedPanel, incompletePanel);
     
    112132                        this.getContentPane().add(pane, BorderLayout.CENTER);
    113133                } else {
     134                        streetList = new JTable(new DefaultTableModel());
    114135                        this.getContentPane().add(new JLabel(tr("(No data)")), BorderLayout.CENTER);
    115136                }
     
    131152        }
    132153
    133         public AddressEditModel getModel() {
    134                 return model;
    135         }
    136 
    137         public void setModel(AddressEditModel model) {
    138                 if (this.model != model) {
    139                         this.model = model;
    140                         if (model != null) {
    141                                 streetsTree.setModel(new DefaultTreeModel(model.getStreetsTree()));
    142                                 unresolvedTree.setModel(new DefaultTreeModel(model.getUnresolvedAddressesTree()));
    143                                 incompleteTree.setModel(new DefaultTreeModel(model.getIncompleteAddressesTree()));
    144                         }
    145                 }
    146         }
    147 
    148154        @Override
    149155        public void actionPerformed(ActionEvent e) {
     
    161167        public void valueChanged(TreeSelectionEvent event) {
    162168                // Updates the selection
    163                 if (event.getSource() == streetsTree) {
    164                         selStreet = (DefaultMutableTreeNode) streetsTree.getLastSelectedPathComponent();
     169                if (event.getSource() == streetList) {
     170                        int selStr = streetList.getSelectedRow();
     171                         
    165172                }
    166173               
    167                 if (event.getSource() == unresolvedTree) {
    168                         selUnrAddr = (DefaultMutableTreeNode) unresolvedTree.getLastSelectedPathComponent();
    169                 }
    170                
    171                 if (event.getSource() == incompleteTree) {
    172                         selIncAddr = (DefaultMutableTreeNode) incompleteTree.getLastSelectedPathComponent();
    173                 }
    174                
     174                /*
    175175                AddressSelectionEvent ev = new AddressSelectionEvent(event.getSource(),
    176176                                selStreet, selUnrAddr, selIncAddr);             
    177177                for (AbstractAddressEditAction action : actions) {
    178178                        action.updateEnabledState(ev);
    179                 }
     179                }*/
    180180        }
     181
     182        @Override
     183        public void valueChanged(ListSelectionEvent e) {
     184                // TODO Auto-generated method stub
     185               
     186        }
     187
    181188}
Note: See TracChangeset for help on using the changeset viewer.