Changeset 2473 in josm


Ignore:
Timestamp:
Nov 18, 2009 8:14:00 PM (3 years ago)
Author:
Gubaer
Message:

fixed #3943: Keep keyboard focus on Add button

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/dialogs/PropertiesDialog.java

    r2445 r2473  
    1 // License: GPL. See LICENSE file for details. 
    21 
    32package org.openstreetmap.josm.gui.dialogs; 
    43 
    5 import static org.openstreetmap.josm.tools.I18n.marktr; 
    64import static org.openstreetmap.josm.tools.I18n.tr; 
    75import static org.openstreetmap.josm.tools.I18n.trn; 
     
    365363        selectionChanged(sel); // update table 
    366364        Main.parent.repaint(); // repaint all - drawing could have been changed 
     365 
     366        btnAdd.requestFocusInWindow(); 
    367367    } 
    368368 
     
    558558 
    559559        JPanel buttonPanel = new JPanel(new GridLayout(1,3)); 
    560         ActionListener buttonAction = new ActionListener(){ 
    561             public void actionPerformed(ActionEvent e) { 
    562                 int row = membershipTable.getSelectedRow(); 
    563                 if (e.getActionCommand().equals("Add")) { 
    564                     add(); 
    565                 } else if(row >= 0) 
    566                 { 
    567                     if (e.getActionCommand().equals("Edit")) { 
    568                         membershipEdit(row); 
    569                     } 
    570                 } 
    571                 else 
    572                 { 
    573                     int sel = propertyTable.getSelectedRow(); 
    574                     // Although we might edit/delete the wrong tag here, chances are still better 
    575                     // than just displaying an error message (which always "fails"). 
    576                     if (e.getActionCommand().equals("Edit")) { 
    577                         propertyEdit(sel >= 0 ? sel : 0); 
    578                     } 
    579                 } 
    580             } 
    581         }; 
    582  
    583         Shortcut s = Shortcut.registerShortcut("properties:add", tr("Add Properties"), KeyEvent.VK_B, 
     560 
     561        AddAction addAction = new AddAction(); 
     562        Shortcut.registerShortcut("properties:add", tr("Add Properties"), KeyEvent.VK_B, 
    584563                Shortcut.GROUP_MNEMONIC); 
    585         this.btnAdd = new SideButton(marktr("Add"),"add","Properties", 
    586                 tr("Add a new key/value pair to all objects"), s, buttonAction); 
     564        this.btnAdd = new SideButton(addAction); 
     565        btnAdd.setFocusable(true); 
    587566        buttonPanel.add(this.btnAdd); 
    588  
    589         s = Shortcut.registerShortcut("properties:edit", tr("Edit Properties"), KeyEvent.VK_I, 
    590                 Shortcut.GROUP_MNEMONIC); 
    591         this.btnEdit = new SideButton(marktr("Edit"),"edit","Properties", 
    592                 tr("Edit the value of the selected key for all objects"), s, buttonAction); 
     567        btnAdd.getInputMap(JComponent.WHEN_FOCUSED).put(KeyStroke.getKeyStroke(KeyEvent.VK_ENTER, 0), "onEnter"); 
     568        btnAdd.getActionMap().put("onEnter", addAction); 
     569 
     570        EditAction editAction = new EditAction(); 
     571        membershipTable.getSelectionModel().addListSelectionListener(editAction); 
     572        this.btnEdit = new SideButton(editAction); 
    593573        buttonPanel.add(this.btnEdit); 
    594574 
     
    895875    } 
    896876 
     877 
     878    class AddAction extends AbstractAction { 
     879        public AddAction() { 
     880            putValue(NAME, tr("Add")); 
     881            putValue(SHORT_DESCRIPTION, tr("Add a new key/value pair to all objects")); 
     882            putValue(SMALL_ICON, ImageProvider.get("dialogs", "add")); 
     883        } 
     884 
     885        public void actionPerformed(ActionEvent e) { 
     886            add(); 
     887        } 
     888    } 
     889 
     890    class EditAction extends AbstractAction implements ListSelectionListener { 
     891        public EditAction() { 
     892            putValue(NAME, tr("Edit")); 
     893            putValue(SHORT_DESCRIPTION, tr("Edit the value of the selected key for all objects")); 
     894            putValue(SMALL_ICON, ImageProvider.get("dialogs", "edit")); 
     895            updateEnabledState(); 
     896        } 
     897 
     898        public void actionPerformed(ActionEvent e) { 
     899            if (!isEnabled()) 
     900                return; 
     901            int row = membershipTable.getSelectedRow(); 
     902            if (e.getActionCommand().equals("Edit")) { 
     903                propertyEdit(row >= 0 ? row : 0); 
     904            } 
     905        } 
     906 
     907        protected void updateEnabledState() { 
     908            setEnabled(membershipTable.getSelectedRowCount() == 1); 
     909        } 
     910 
     911        public void valueChanged(ListSelectionEvent e) { 
     912            updateEnabledState(); 
     913        } 
     914    } 
    897915} 
Note: See TracChangeset for help on using the changeset viewer.