Ticket #8311: 8311.diff

File 8311.diff, 4.9 KB (added by Don-vip, 13 years ago)
  • core/src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java

     
    22package org.openstreetmap.josm.gui.dialogs.properties;
    33
    44import static org.openstreetmap.josm.tools.I18n.tr;
    5 import static org.openstreetmap.josm.tools.I18n.trn;
    65
    76import java.awt.Component;
    87import java.awt.Container;
     
    130129            {
    131130                int row = propertyTable.rowAtPoint(e.getPoint());
    132131                if (row > -1) {
    133                     editHelper.editProperty(row);
     132                    boolean focusOnKey = (propertyTable.columnAtPoint(e.getPoint()) == 0);
     133                    editHelper.editProperty(row, focusOnKey);
    134134                } else {
    135135                    editHelper.addProperty();
    136136                    btnAdd.requestFocusInWindow();
     
    875875                return;
    876876            if (propertyTable.getSelectedRowCount() == 1) {
    877877                int row = propertyTable.getSelectedRow();
    878                 editHelper.editProperty(row);
     878                editHelper.editProperty(row, false);
    879879            } else if (membershipTable.getSelectedRowCount() == 1) {
    880880                int row = membershipTable.getSelectedRow();
    881881                editMembership(row);
  • core/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java

     
    2323import java.awt.event.KeyEvent;
    2424import java.awt.event.MouseAdapter;
    2525import java.awt.event.MouseEvent;
     26import java.awt.event.WindowAdapter;
     27import java.awt.event.WindowEvent;
    2628import java.awt.image.BufferedImage;
    2729import java.util.ArrayList;
    2830import java.util.Arrays;
     
    137139    /**
    138140    * Edit the value in the properties table row
    139141    * @param row The row of the table from which the value is edited.
     142     * @param focusOnKey Determines if the initial focus should be set on key instead of value
     143     * @since 5653
    140144    */
    141     public void editProperty(final int row) {
     145    public void editProperty(final int row, boolean focusOnKey) {
    142146        changedKey = null;
    143147        sel = Main.main.getCurrentDataSet().getSelected();
    144148        if (sel.isEmpty()) return;
     
    147151        objKey=key;
    148152       
    149153        final EditTagDialog editDialog = new EditTagDialog(key, row,
    150                 (Map<String, Integer>) propertyData.getValueAt(row, 1));
     154                (Map<String, Integer>) propertyData.getValueAt(row, 1), focusOnKey);
    151155        editDialog.showDialog();
    152156        if (editDialog.getValue() !=1 ) return;
    153157        editDialog.performTagEdit();
     
    209213   
    210214       
    211215    public class EditTagDialog extends AbstractTagsDialog {
    212         String oldValue;
    213         String key;
    214         Map<String, Integer> m;
    215         int row;
     216        final String key;
     217        final Map<String, Integer> m;
     218        final int row;
    216219
    217220        Comparator<AutoCompletionListItem> usedValuesAwareComparator = new Comparator<AutoCompletionListItem>() {
    218221                @Override
     
    248251                }
    249252            };
    250253       
    251         private EditTagDialog(String key, int row, Map<String, Integer> map) {
     254        private EditTagDialog(String key, int row, Map<String, Integer> map, final boolean initialFocusOnKey) {
    252255            super(Main.parent, trn("Change value?", "Change values?", map.size()), new String[] {tr("OK"),tr("Cancel")});
    253256            setButtonIcons(new String[] {"ok","cancel"});
    254257            setCancelButton(2);
     
    305308           
    306309            setContent(mainPanel, false);
    307310           
    308             // TODO: Is it correct place for thois code - was in
     311            // TODO: Is it correct place for this code - was in
    309312            //  new JOptionPane(p, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION) {
    310313            //    @Override public void selectInitialValue() {
    311314            Clipboard sysSel = Toolkit.getDefaultToolkit().getSystemSelection();
     
    318321                values.requestFocusInWindow();
    319322                values.getEditor().selectAll();
    320323            }
     324           
     325            addWindowListener(new WindowAdapter() {
     326                @Override
     327                public void windowOpened(WindowEvent e) {
     328                    if (initialFocusOnKey) {
     329                        keys.requestFocusInWindow();
     330                    } else {
     331                        values.requestFocusInWindow();
     332                    }
     333                }
     334            });
    321335        }
    322336       
    323337        /**