Ignore:
Timestamp:
2009-08-31T12:33:32+02:00 (15 years ago)
Author:
Gubaer
Message:

Improved handling of toggle dialogs

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

Legend:

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

    r2017 r2021  
    164164     */
    165165    public void setVisibleDialogs() {
    166         for (Component c : toggleDialogs.getComponents()) {
    167             if (c instanceof ToggleDialog) {
    168                 ToggleDialog td = (ToggleDialog)c;
    169                 if (Main.pref.getBoolean(td.getPreferencePrefix()+".visible")) {
    170                     td.showDialog();
    171                 }
     166        toggleDialogs.removeAll();
     167        for (ToggleDialog dialog: allDialogs) {
     168            dialog.setVisible(false);
     169            toggleDialogs.add(dialog);
     170            dialog.setParent(toggleDialogs);
     171            if (Main.pref.getBoolean(dialog.getPreferencePrefix()+".visible")) {
     172                dialog.showDialog();
     173            } else {
     174                dialog.hideDialog();
    172175            }
    173176        }
     
    180183    public IconToggleButton addToggleDialog(ToggleDialog dlg) {
    181184        IconToggleButton button = new IconToggleButton(dlg.getToggleAction());
    182         dlg.setParent(toggleDialogs);
    183185        toolBarToggle.add(button);
    184         toggleDialogs.add(dlg);
    185186        allDialogs.add(dlg);
    186187        return button;
  • trunk/src/org/openstreetmap/josm/gui/dialogs/ToggleDialog.java

    r2010 r2021  
    66import java.awt.Component;
    77import java.awt.Dimension;
    8 import java.awt.EventQueue;
    98import java.awt.GridBagLayout;
    109import java.awt.Image;
     
    152151
    153152        docked = Main.pref.getBoolean(preferencePrefix+".docked", true);
    154         if (!docked) {
    155             EventQueue.invokeLater(new Runnable(){
    156                 public void run() {
    157                     detach();
    158                 }
    159             });
    160         }
    161153        collapsed = Main.pref.getBoolean(preferencePrefix+".minimized", false);
    162         if (collapsed) {
    163             EventQueue.invokeLater(new Runnable(){
    164                 public void run() {
    165                     collapse();
    166                 }
    167             });
    168         }
    169154    }
    170155
     
    203188     */
    204189    protected int getDialogPosition() {
     190        if (parent == null) return -1;
    205191        for (int i=0; i< parent.getComponentCount(); i++) {
    206192            String name = parent.getComponent(i).getName();
     
    218204    protected void dock() {
    219205        detachedDialog = null;
     206        if (parent == null) return;
    220207
    221208        // check whether the toggle dialog view contains a placeholder
     
    225212        if (idx > -1) {
    226213            parent.remove(idx);
    227             parent.add(ToggleDialog.this,idx);
     214            if (idx >= parent.getComponentCount()) {
     215                parent.add(ToggleDialog.this);
     216            } else {
     217                parent.add(ToggleDialog.this,idx);
     218            }
    228219        } else {
    229220            parent.add(ToggleDialog.this);
    230221        }
     222        parent.validate();
    231223
    232224        if(Main.pref.getBoolean(preferencePrefix+".visible")) {
     
    281273     */
    282274    public void hideDialog() {
    283         if (!isShowing) return;
    284275        if (detachedDialog != null) {
    285276            detachedDialog.setVisible(false);
     
    289280        setVisible(false);
    290281        isShowing = false;
     282        Main.pref.put(preferencePrefix+".visible", false);
    291283        refreshToggleDialogsView();
    292284        toggleAction.putValue("selected", false);
     
    304296     */
    305297    public void showDialog() {
    306         if (isShowing) return;
    307298        if (!docked) {
    308299            detach();
    309         } else if (!collapsed) {
    310             expand();
    311             setVisible(true);
    312             refreshToggleDialogsView();
    313300        } else {
    314             setVisible(true);
    315             refreshToggleDialogsView();
     301            dock();
     302            if (!collapsed) {
     303                expand();
     304                setVisible(true);
     305                refreshToggleDialogsView();
     306            } else {
     307                setVisible(true);
     308                refreshToggleDialogsView();
     309            }
    316310        }
    317311        isShowing = true;
     312        // toggling the selected value in order to enforce PropertyChangeEvents
     313        //
     314        toggleAction.putValue("selected", false);
    318315        toggleAction.putValue("selected", true);
     316        Main.pref.put(preferencePrefix+".visible", true);
    319317    }
    320318
     
    349347        if (detachedDialog != null) {
    350348            detachedDialog.setVisible(false);
     349            detachedDialog.removeAll();
     350            detachedDialog.dispose();
    351351        }
    352352    }
     
    494494            } else {
    495495                pack();
     496
    496497            }
    497498            setTitle(titleBar.getTitle());
Note: See TracChangeset for help on using the changeset viewer.