Ticket #6883: delete_multiple_properties.diff

File delete_multiple_properties.diff, 4.1 KB (added by joshdoe, 14 years ago)

allow deletion of multiple properties or tags

  • src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java

    diff --git a/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java b/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
    index 3976441..13c4d22 100644
    a b import org.openstreetmap.josm.tools.Utils;  
    127127 */
    128128public class PropertiesDialog extends ToggleDialog implements SelectionChangedListener, MapView.EditLayerChangeListener, DataSetListenerAdapter.Listener {
    129129    /**
    130      * Watches for double clicks and from editing or new property, depending on the
    131      * location, the click was.
     130     * Watches for mouse clicks
    132131     * @author imi
    133132     */
    134     public class DblClickWatch extends MouseAdapter {
     133    public class MouseClickWatch extends MouseAdapter {
    135134        @Override public void mouseClicked(MouseEvent e) {
    136135            if (e.getClickCount() < 2)
    137136            {
     137                // single click, clear selection in other table not clicked in
    138138                if (e.getSource() == propertyTable) {
    139139                    membershipTable.clearSelection();
    140140                } else if (e.getSource() == membershipTable) {
    141141                    propertyTable.clearSelection();
    142142                }
    143143            }
     144            // double click, edit or add property
    144145            else if (e.getSource() == propertyTable)
    145146            {
    146147                int row = propertyTable.rowAtPoint(e.getPoint());
    public class PropertiesDialog extends ToggleDialog implements SelectionChangedLi  
    646647        propertyMenu.add(helpAction);
    647648
    648649        propertyData.setColumnIdentifiers(new String[]{tr("Key"),tr("Value")});
    649         propertyTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
     650        propertyTable.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    650651        propertyTable.getTableHeader().setReorderingAllowed(false);
    651652        propertyTable.addMouseListener(new PopupMenuLauncher() {
    652653            @Override
    public class PropertiesDialog extends ToggleDialog implements SelectionChangedLi  
    832833                this.btnAdd, this.btnEdit, this.btnDel
    833834        }));
    834835
    835         DblClickWatch dblClickWatch = new DblClickWatch();
    836         propertyTable.addMouseListener(dblClickWatch);
    837         membershipTable.addMouseListener(dblClickWatch);
    838         scrollPane.addMouseListener(dblClickWatch);
     836        MouseClickWatch mouseClickWatch = new MouseClickWatch();
     837        propertyTable.addMouseListener(mouseClickWatch);
     838        membershipTable.addMouseListener(mouseClickWatch);
     839        scrollPane.addMouseListener(mouseClickWatch);
    839840
    840841        selectSth.setPreferredSize(scrollPane.getSize());
    841842        presets.setSize(scrollPane.getSize());
    public class PropertiesDialog extends ToggleDialog implements SelectionChangedLi  
    10961097
    10971098        @Override
    10981099        public void actionPerformed(ActionEvent e) {
    1099             if (propertyTable.getSelectedRowCount() >0 ) {
    1100                 int row = propertyTable.getSelectedRow();
    1101                 deleteProperty(row);
     1100            if (propertyTable.getSelectedRowCount() > 0) {
     1101                int[] rows = propertyTable.getSelectedRows();
     1102                for (int i = rows.length - 1; i >= 0; i--) {
     1103                    deleteProperty(rows[i]);
     1104                }
    11021105            } else if (membershipTable.getSelectedRowCount() > 0) {
    11031106                int row = membershipTable.getSelectedRow();
    11041107                deleteFromRelation(row);
    public class PropertiesDialog extends ToggleDialog implements SelectionChangedLi  
    11081111        @Override
    11091112        protected void updateEnabledState() {
    11101113            setEnabled(
    1111                     (propertyTable != null && propertyTable.getSelectedRowCount() == 1)
    1112                     ^ (membershipTable != null && membershipTable.getSelectedRowCount() == 1)
     1114                    (propertyTable != null && propertyTable.getSelectedRowCount() >= 1)
     1115                    || (membershipTable != null && membershipTable.getSelectedRowCount() == 1)
    11131116                    );
    11141117        }
    11151118