Changeset 23815 in osm for applications/editors


Ignore:
Timestamp:
2010-10-24T19:15:57+02:00 (14 years ago)
Author:
oliverw
Message:

Implemented basic action framework for address edits.

File:
1 edited

Legend:

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

    r23814 r23815  
    1414package org.openstreetmap.josm.plugins.addressEdit.gui;
    1515
     16import static org.openstreetmap.josm.tools.I18n.tr;
     17
    1618import java.awt.BorderLayout;
    1719import java.awt.Dimension;
     20import java.awt.FlowLayout;
    1821import java.awt.GridLayout;
    1922import java.awt.HeadlessException;
    2023import java.awt.event.ActionEvent;
    2124import java.awt.event.ActionListener;
    22 import static org.openstreetmap.josm.tools.I18n.tr;
     25
    2326import javax.swing.JButton;
    2427import javax.swing.JFrame;
     
    2932import javax.swing.JSplitPane;
    3033import javax.swing.JTree;
     34import javax.swing.event.TreeSelectionEvent;
     35import javax.swing.event.TreeSelectionListener;
     36import javax.swing.tree.DefaultMutableTreeNode;
    3137import javax.swing.tree.DefaultTreeModel;
     38import javax.swing.tree.TreeNode;
    3239
    33 public class AddressEditDialog extends JFrame implements ActionListener {
     40public class AddressEditDialog extends JFrame implements ActionListener, TreeSelectionListener {
     41        private static final String CANCEL_COMMAND = "Cancel";
     42        private static final String OK_COMMAND = "Ok";
    3443        /**
    3544         *
     
    4049        private JTree incompleteTree;
    4150        private JTree streetsTree;
     51        private DefaultMutableTreeNode selStreet;
     52        private DefaultMutableTreeNode selUnrAddr;
     53        private DefaultMutableTreeNode selIncAddr;
     54       
     55        private AssignAddressToStreetAction resolveAction = new AssignAddressToStreetAction();
     56       
     57        private AbstractAddressEditAction[] actions = new AbstractAddressEditAction[] {
     58                resolveAction   
     59        };
    4260       
    4361        /**
     
    5775                        JPanel streetPanel = new JPanel(new BorderLayout());
    5876                        streetsTree = new JTree(new DefaultTreeModel(model.getStreetsTree()));
     77                        streetsTree.addTreeSelectionListener(this);
    5978                        JScrollPane scroll1 = new JScrollPane(streetsTree);
    6079                        streetPanel.add(scroll1, BorderLayout.CENTER);
     
    6483                        JPanel unresolvedPanel = new JPanel(new BorderLayout());               
    6584                        unresolvedTree = new JTree(new DefaultTreeModel(model.getUnresolvedAddressesTree()));
     85                        unresolvedTree.addTreeSelectionListener(this);
    6686                        JScrollPane scroll2 = new JScrollPane(unresolvedTree);
    6787                        unresolvedPanel.add(scroll2, BorderLayout.CENTER);
     
    6989                        unresolvedPanel.setMinimumSize(new Dimension(300, 200));
    7090                       
     91                        JPanel unresolvedButtons = new JPanel(new FlowLayout());
     92                        JButton assign = new JButton(resolveAction);
     93                        unresolvedButtons.add(assign);
     94                        unresolvedPanel.add(unresolvedButtons, BorderLayout.SOUTH);
     95                       
    7196                        JPanel incompletePanel = new JPanel(new BorderLayout());
    7297                        incompleteTree = new JTree(new DefaultTreeModel(model.getIncompleteAddressesTree()));
     98                        incompleteTree.addTreeSelectionListener(this);
    7399                        JScrollPane scroll3 = new JScrollPane(incompleteTree);
    74100                        incompletePanel.add(scroll3, BorderLayout.CENTER);
     
    85111               
    86112                JPanel buttonPanel = new JPanel(new GridLayout(1,10));
    87                 JButton ok = new JButton("Ok");
     113                JButton ok = new JButton(OK_COMMAND);
    88114                ok.addActionListener(this);
    89                 JButton cancel = new JButton("Cancel");
     115                JButton cancel = new JButton(CANCEL_COMMAND);
    90116                cancel.addActionListener(this);
    91117               
     
    117143        @Override
    118144        public void actionPerformed(ActionEvent e) {
     145                if (OK_COMMAND.equals(e.getActionCommand())) {
     146                        this.setVisible(false);
     147                }
    119148               
     149                // TODO: Check, if there is some kind of undo; otherwise this button is not necessary
     150                if (CANCEL_COMMAND.equals(e.getActionCommand())) {
     151                        this.setVisible(false);
     152                }
     153        }
     154
     155        @Override
     156        public void valueChanged(TreeSelectionEvent event) {
     157                // Updates the selection
     158                if (event.getSource() == streetsTree) {
     159                        selStreet = (DefaultMutableTreeNode) streetsTree.getLastSelectedPathComponent();
     160                }
     161               
     162                if (event.getSource() == unresolvedTree) {
     163                        selUnrAddr = (DefaultMutableTreeNode) unresolvedTree.getLastSelectedPathComponent();
     164                }
     165               
     166                if (event.getSource() == incompleteTree) {
     167                        selIncAddr = (DefaultMutableTreeNode) incompleteTree.getLastSelectedPathComponent();
     168                }
     169               
     170                AddressSelectionEvent ev = new AddressSelectionEvent(event.getSource(),
     171                                selStreet, selUnrAddr, selIncAddr);             
     172                for (AbstractAddressEditAction action : actions) {
     173                        action.updateEnabledState(ev);
     174                }
    120175        }
    121176}
Note: See TracChangeset for help on using the changeset viewer.