Changeset 5646 in josm for trunk/src/org/openstreetmap


Ignore:
Timestamp:
2012-12-29T16:07:47+01:00 (12 years ago)
Author:
Don-vip
Message:

see #8024, fix #8012 - Remember position of add/edit tags dialog

Location:
trunk/src/org/openstreetmap/josm/gui
Files:
2 edited

Legend:

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

    r5638 r5646  
    447447    }
    448448
     449    protected final void rememberWindowGeometry(WindowGeometry geometry) {
     450        if (geometry != null) {
     451            geometry.remember(rememberSizePref);
     452        }
     453    }
     454   
     455    protected final WindowGeometry initWindowGeometry() {
     456        return new WindowGeometry(rememberSizePref, defaultWindowGeometry);
     457    }
     458
    449459    /**
    450460     * Override setVisible to be able to save the window geometry if required
     
    459469        if(rememberSizePref.length() != 0 && defaultWindowGeometry != null) {
    460470            if(visible) {
    461                 new WindowGeometry(rememberSizePref,
    462                         defaultWindowGeometry).applySafe(this);
     471                initWindowGeometry().applySafe(this);
    463472            } else if (isShowing()) { // should fix #6438, #6981, #8295
    464                 new WindowGeometry(this).remember(rememberSizePref);
     473                rememberWindowGeometry(new WindowGeometry(this));
    465474            }
    466475        }
     
    473482
    474483    /**
    475      * Call this if you want the dialog to remember the size set by the user.
     484     * Call this if you want the dialog to remember the geometry (size and position) set by the user.
    476485     * Set the pref to <code>null</code> or to an empty string to disable again.
    477486     * By default, it's disabled.
  • trunk/src/org/openstreetmap/josm/gui/dialogs/properties/TagEditHelper.java

    r5645 r5646  
    88import java.awt.Component;
    99import java.awt.Cursor;
     10import java.awt.Dimension;
    1011import java.awt.FlowLayout;
    1112import java.awt.Font;
     
    2425import java.awt.event.MouseEvent;
    2526import java.awt.image.BufferedImage;
    26 import java.security.KeyStore;
    2727import java.util.ArrayList;
    2828import java.util.Arrays;
     
    3737import java.util.Map;
    3838import java.util.Vector;
     39
    3940import javax.swing.AbstractAction;
    4041import javax.swing.Action;
     
    5051import javax.swing.table.DefaultTableModel;
    5152import javax.swing.text.JTextComponent;
     53
    5254import org.openstreetmap.josm.Main;
    5355import org.openstreetmap.josm.actions.JosmAction;
     
    6769import org.openstreetmap.josm.tools.GBC;
    6870import org.openstreetmap.josm.tools.Shortcut;
     71import org.openstreetmap.josm.tools.WindowGeometry;
    6972
    7073/**
     
    206209   
    207210       
    208     public class EditTagDialog extends ExtendedDialog {
    209         AutoCompletingComboBox keys;
    210         AutoCompletingComboBox values;
     211    public class EditTagDialog extends AbstractTagsDialog {
    211212        String oldValue;
    212213        String key;
     
    257258            this.m = map;
    258259           
    259             // TODO : How to remember position, allowing autosizing?
    260             // setRememberWindowGeometry(getClass().getName() + ".geometry",
    261             //    WindowGeometry.centerInWindow(Main.parent, new Dimension(270, 180)));
    262             //setRememberWindowGeometry(getClass().getName() + ".geometry",
    263             //        WindowGeometry.centerInWindow(Main.parent, new Dimension(270, 180)));
    264            
    265260            JPanel mainPanel = new JPanel(new BorderLayout());
    266261                   
     
    315310            //    @Override public void selectInitialValue() {
    316311            Clipboard sysSel = Toolkit.getDefaultToolkit().getSystemSelection();
    317                 if(sysSel != null) {
    318                     Transferable old = sysSel.getContents(null);
    319                     values.requestFocusInWindow();
    320                     values.getEditor().selectAll();
    321                     sysSel.setContents(old, null);
    322                 } else {
    323                     values.requestFocusInWindow();
    324                     values.getEditor().selectAll();
    325                 }
    326         }
    327        
    328            /**
     312            if(sysSel != null) {
     313                Transferable old = sysSel.getContents(null);
     314                values.requestFocusInWindow();
     315                values.getEditor().selectAll();
     316                sysSel.setContents(old, null);
     317            } else {
     318                values.requestFocusInWindow();
     319                values.getEditor().selectAll();
     320            }
     321        }
     322       
     323        /**
    329324         * Edit tags of multiple selected objects according to selected ComboBox values
    330325         * If value == "", tag will be deleted
     
    399394        }
    400395    }
    401    
    402     class AddTagsDialog extends ExtendedDialog {
     396
     397    abstract class AbstractTagsDialog extends ExtendedDialog {
    403398        AutoCompletingComboBox keys;
    404399        AutoCompletingComboBox values;
     400       
     401        public AbstractTagsDialog(Component parent, String title, String[] buttonTexts) {
     402            super(parent, title, buttonTexts);
     403        }
     404
     405        @Override
     406        public void setupDialog() {
     407            setResizable(false);
     408            super.setupDialog();
     409           
     410            setRememberWindowGeometry(getClass().getName() + ".geometry",
     411                WindowGeometry.centerInWindow(Main.parent, getSize()));
     412        }
     413
     414        @Override
     415        public void setVisible(boolean visible) {
     416            // Do not want dialog to be resizable, but its size may increase each time because of the recently added tags
     417            // So need to modify the stored geometry (size part only) in order to use the automatic positioning mechanism
     418            if (visible) {
     419                WindowGeometry geometry = initWindowGeometry();
     420                Dimension storedSize = geometry.getSize();
     421                if (!storedSize.equals(getSize())) {
     422                    storedSize.setSize(getSize());
     423                    rememberWindowGeometry(geometry);
     424                }
     425            }
     426            super.setVisible(visible);
     427        }
     428    }
     429
     430    class AddTagsDialog extends AbstractTagsDialog {
    405431        List<JosmAction> recentTagsActions = new ArrayList<JosmAction>();
    406432       
     
    412438            setButtonIcons(new String[] {"ok","cancel"});
    413439            setCancelButton(2);
    414            
    415             // TODO : How to remember position, allowing autosizing?
    416             // setRememberWindowGeometry(getClass().getName() + ".geometry",
    417             //    WindowGeometry.centerInWindow(Main.parent, new Dimension(270, 180)));
    418440           
    419441            JPanel mainPanel = new JPanel(new GridBagLayout());
     
    486508            setContent(mainPanel, false);
    487509           
    488             // TODO: Is it correct place for thois code - was in
     510            // TODO: Is it correct place for this code - was in
    489511            //  new JOptionPane(p, JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION) {
    490512            //    @Override public void selectInitialValue() {
    491513            Clipboard sysSel = Toolkit.getDefaultToolkit().getSystemSelection();
    492                 if(sysSel != null) {
    493                     Transferable old = sysSel.getContents(null);
    494                     values.requestFocusInWindow();
    495                     values.getEditor().selectAll();
    496                     sysSel.setContents(old, null);
    497                 } else {
    498                     values.requestFocusInWindow();
    499                     values.getEditor().selectAll();
    500                 }
    501                
    502            
     514            if(sysSel != null) {
     515                Transferable old = sysSel.getContents(null);
     516                values.requestFocusInWindow();
     517                values.getEditor().selectAll();
     518                sysSel.setContents(old, null);
     519            } else {
     520                values.requestFocusInWindow();
     521                values.getEditor().selectAll();
     522            }
    503523        }
    504524
Note: See TracChangeset for help on using the changeset viewer.