Changeset 2745 in josm


Ignore:
Timestamp:
Jan 6, 2010 8:34:54 PM (3 years ago)
Author:
Gubaer
Message:

Partial commit due to #4137. Comment to follow in another commit.

Location:
trunk/src/org/openstreetmap/josm/gui/preferences
Files:
10 added
2 deleted
15 edited
1 copied

Legend:

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

    r2512 r2745  
    4646    protected JTextField txtFilter; 
    4747 
    48     public void addGui(final PreferenceDialog gui) { 
     48    public void addGui(final PreferenceTabbedPane gui) { 
    4949        JPanel p = gui.createPreferenceTab("advanced", tr("Advanced Preferences"), 
    5050                tr("Setting Preference entries directly. Use with caution!"), false); 
     
    215215    } 
    216216 
    217     private void editPreference(final PreferenceDialog gui, final JTable list) { 
     217    private void editPreference(final PreferenceTabbedPane gui, final JTable list) { 
    218218        if (list.getSelectedRowCount() != 1) { 
    219219            JOptionPane.showMessageDialog( 
     
    240240    } 
    241241 
    242     private void removePreference(final PreferenceDialog gui, final JTable list) { 
     242    private void removePreference(final PreferenceTabbedPane gui, final JTable list) { 
    243243        if (list.getSelectedRowCount() == 0) { 
    244244            JOptionPane.showMessageDialog( 
     
    256256    } 
    257257 
    258     private void addPreference(final PreferenceDialog gui) { 
     258    private void addPreference(final PreferenceTabbedPane gui) { 
    259259        JPanel p = new JPanel(new GridBagLayout()); 
    260260        p.add(new JLabel(tr("Key")), GBC.std().insets(0,0,5,0)); 
  • trunk/src/org/openstreetmap/josm/gui/preferences/AudioPreference.java

    r1742 r2745  
    4848    private JTextField audioCalibration = new JTextField(8); 
    4949 
    50     public void addGui(PreferenceDialog gui) { 
     50    public void addGui(PreferenceTabbedPane gui) { 
    5151        // audioMenuVisible 
    5252        audioMenuVisible.setSelected(! Main.pref.getBoolean("audio.menuinvisible")); 
  • trunk/src/org/openstreetmap/josm/gui/preferences/ColorPreference.java

    r2675 r2745  
    146146    } 
    147147 
    148     public void addGui(final PreferenceDialog gui) { 
     148    public void addGui(final PreferenceTabbedPane gui) { 
    149149        fixColorPrefixes(); 
    150150        setColorModel(Main.pref.getAllColors()); 
  • trunk/src/org/openstreetmap/josm/gui/preferences/DrawingPreference.java

    r2105 r2745  
    6060    private JCheckBox useAntialiasing = new JCheckBox(tr("Smooth map graphics (antialiasing)")); 
    6161 
    62     public void addGui(PreferenceDialog gui) { 
     62    public void addGui(PreferenceTabbedPane gui) { 
    6363        gui.display.setPreferredSize(new Dimension(400,600)); 
    6464        JPanel panel = new JPanel(new GridBagLayout()); 
  • trunk/src/org/openstreetmap/josm/gui/preferences/LafPreference.java

    r2428 r2745  
    4242    private JCheckBox modeless = new JCheckBox(tr("Modeless working (Potlatch style)")); 
    4343 
    44     public void addGui(PreferenceDialog gui) { 
     44    public void addGui(PreferenceTabbedPane gui) { 
    4545        lafCombo = new JComboBox(UIManager.getInstalledLookAndFeels()); 
    4646 
  • trunk/src/org/openstreetmap/josm/gui/preferences/LanguagePreference.java

    r2711 r2745  
    4848    private boolean translationsLoaded = false; 
    4949 
    50     public void addGui(final PreferenceDialog gui) { 
     50    public void addGui(final PreferenceTabbedPane gui) { 
    5151        model = new LanguageComboBoxModel(); 
    5252        langCombo = new JComboBox(model); 
  • trunk/src/org/openstreetmap/josm/gui/preferences/MapPaintPreference.java

    r2400 r2745  
    3232    } 
    3333 
    34     public void addGui(final PreferenceDialog gui) { 
     34    public void addGui(final PreferenceTabbedPane gui) { 
    3535        enableDefault = new JCheckBox(tr("Enable built-in defaults"), 
    3636                Main.pref.getBoolean("mappaint.style.enable-defaults", true)); 
  • trunk/src/org/openstreetmap/josm/gui/preferences/PluginPreference.java

    r2152 r2745  
    4040    private JPanel plugin; 
    4141    private JPanel pluginPanel = new NoHorizontalScrollPanel(new GridBagLayout()); 
    42     private PreferenceDialog gui; 
     42    private PreferenceTabbedPane gui; 
    4343    private JScrollPane pluginPane; 
    4444    private PluginSelection selection = new PluginSelection(); 
    4545    private JTextField txtFilter; 
    4646 
    47     public void addGui(final PreferenceDialog gui) { 
     47    public void addGui(final PreferenceTabbedPane gui) { 
    4848        this.gui = gui; 
    4949        plugin = gui.createPreferenceTab("plugin", tr("Plugins"), tr("Configure available plugins."), false); 
  • trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceDialog.java

    r2641 r2745  
    1 // License: GPL. Copyright 2007 by Immanuel Scholz and others 
     1// License: GPL. For details, see LICENSE file. 
    22package org.openstreetmap.josm.gui.preferences; 
    33 
    44import static org.openstreetmap.josm.tools.I18n.tr; 
    55 
    6 import java.awt.Font; 
    7 import java.awt.GridBagLayout; 
    8 import java.awt.ScrollPane; 
    9 import java.awt.event.MouseWheelEvent; 
    10 import java.awt.event.MouseWheelListener; 
    11 import java.util.ArrayList; 
    12 import java.util.Collection; 
    13 import java.util.Iterator; 
    14 import java.util.LinkedList; 
    15 import java.util.List; 
    16 import java.util.logging.Logger; 
     6import java.awt.BorderLayout; 
     7import java.awt.Component; 
     8import java.awt.Container; 
     9import java.awt.Dimension; 
     10import java.awt.FlowLayout; 
     11import java.awt.event.ActionEvent; 
     12import java.awt.event.KeyEvent; 
     13import java.awt.event.WindowAdapter; 
     14import java.awt.event.WindowEvent; 
    1715 
     16import javax.swing.AbstractAction; 
    1817import javax.swing.BorderFactory; 
    1918import javax.swing.JComponent; 
    20 import javax.swing.JLabel; 
     19import javax.swing.JDialog; 
    2120import javax.swing.JOptionPane; 
    2221import javax.swing.JPanel; 
    23 import javax.swing.JScrollPane; 
    24 import javax.swing.JTabbedPane; 
     22import javax.swing.KeyStroke; 
    2523 
    26 import org.openstreetmap.josm.Main; 
    27 import org.openstreetmap.josm.plugins.PluginHandler; 
    28 import org.openstreetmap.josm.tools.BugReportExceptionHandler; 
    29 import org.openstreetmap.josm.tools.GBC; 
    30 import org.openstreetmap.josm.tools.I18n; 
     24import org.openstreetmap.josm.gui.SideButton; 
     25import org.openstreetmap.josm.gui.help.ContextSensitiveHelpAction; 
     26import org.openstreetmap.josm.gui.help.HelpUtil; 
    3127import org.openstreetmap.josm.tools.ImageProvider; 
     28import org.openstreetmap.josm.tools.WindowGeometry; 
    3229 
    33 /** 
    34  * The preference settings. 
    35  * 
    36  * @author imi 
    37  */ 
    38 public class PreferenceDialog extends JTabbedPane implements MouseWheelListener { 
    39     static private final Logger logger = Logger.getLogger(PreferenceDialog.class.getName()); 
     30public class PreferenceDialog extends JDialog { 
    4031 
    41     private final static Collection<PreferenceSettingFactory> settingsFactory = new LinkedList<PreferenceSettingFactory>(); 
    42     private final List<PreferenceSetting> settings = new ArrayList<PreferenceSetting>(); 
     32    private PreferenceTabbedPane tpPreferences; 
     33    private boolean canceled; 
    4334 
    44     // some common tabs 
    45     public final JPanel display = createPreferenceTab("display", tr("Display Settings"), tr("Various settings that influence the visual representation of the whole program.")); 
    46     public final JPanel connection = createPreferenceTab("connection", I18n.tr("Connection Settings"), I18n.tr("Connection Settings for the OSM server."),false); 
    47     public final JPanel map = createPreferenceTab("map", I18n.tr("Map Settings"), I18n.tr("Settings for the map projection and data interpretation.")); 
    48     public final JPanel audio = createPreferenceTab("audio", I18n.tr("Audio Settings"), I18n.tr("Settings for the audio player and audio markers.")); 
    49  
    50     public final javax.swing.JTabbedPane displaycontent = new javax.swing.JTabbedPane(); 
    51     public final javax.swing.JTabbedPane mapcontent = new javax.swing.JTabbedPane(); 
    52  
    53     /** 
    54      * Construct a JPanel for the preference settings. Layout is GridBagLayout 
    55      * and a centered title label and the description are added. The panel 
    56      * will be shown inside a {@link ScrollPane} 
    57      * @param icon The name of the icon. 
    58      * @param title The title of this preference tab. 
    59      * @param desc A description in one sentence for this tab. Will be displayed 
    60      *      italic under the title. 
    61      * @return The created panel ready to add other controls. 
    62      */ 
    63     public JPanel createPreferenceTab(String icon, String title, String desc) { 
    64         return createPreferenceTab(icon, title, desc, false); 
     35    protected JPanel buildActionPanel() { 
     36        JPanel pnl = new JPanel(new FlowLayout(FlowLayout.CENTER)); 
     37        pnl.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); 
     38        pnl.add(new SideButton(new OKAction())); 
     39        pnl.add(new SideButton(new CancelAction())); 
     40        pnl.add(new SideButton(new ContextSensitiveHelpAction(HelpUtil.ht("/Action/Preferences")))); 
     41        return pnl; 
    6542    } 
    6643 
    67     /** 
    68      * Construct a JPanel for the preference settings. Layout is GridBagLayout 
    69      * and a centered title label and the description are added. 
    70      * @param icon The name of the icon. 
    71      * @param title The title of this preference tab. 
    72      * @param desc A description in one sentence for this tab. Will be displayed 
    73      *      italic under the title. 
    74      * @param inScrollPane if <code>true</code> the added tab will show scroll bars 
    75      *        if the panel content is larger than the available space 
    76      * @return The created panel ready to add other controls. 
    77      */ 
    78     public JPanel createPreferenceTab(String icon, String title, String desc, boolean inScrollPane) { 
    79         JPanel p = new JPanel(new GridBagLayout()); 
    80         p.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); 
    81         p.add(new JLabel(title), GBC.eol().anchor(GBC.CENTER).insets(0,5,0,10)); 
     44    protected void build() { 
     45        Container c = getContentPane(); 
     46        c.setLayout(new BorderLayout()); 
     47        c.add(tpPreferences = new PreferenceTabbedPane(), BorderLayout.CENTER); 
     48        tpPreferences.buildGui(); 
     49        tpPreferences.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); 
     50        c.add(buildActionPanel(), BorderLayout.SOUTH); 
    8251 
    83         JLabel descLabel = new JLabel("<html>"+desc+"</html>"); 
    84         descLabel.setFont(descLabel.getFont().deriveFont(Font.ITALIC)); 
    85         p.add(descLabel, GBC.eol().insets(5,0,5,20).fill(GBC.HORIZONTAL)); 
     52        addWindowListener(new WindowEventHandler()); 
    8653 
    87         JComponent tab = p; 
    88         if (inScrollPane) { 
    89             JScrollPane sp = new JScrollPane(p); 
    90             tab = sp; 
    91         } 
    92         addTab(null, ImageProvider.get("preferences", icon), tab); 
    93         setToolTipTextAt(getTabCount()-1, "<html>"+desc+"</html>"); 
    94         return p; 
     54        getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT).put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "cancel"); 
     55        getRootPane().getActionMap().put("cancel", new CancelAction()); 
     56        HelpUtil.setHelpContext(getRootPane(), HelpUtil.ht("/Action/Preferences")); 
    9557    } 
    9658 
    97     public void ok() { 
    98         boolean requiresRestart = false; 
    99         for (PreferenceSetting setting : settings) 
    100         { 
    101             if(setting.ok()) { 
    102                 requiresRestart = true; 
    103             } 
    104         } 
    105         if (requiresRestart) { 
    106             JOptionPane.showMessageDialog( 
    107                     Main.parent, 
    108                     tr("You have to restart JOSM for some settings to take effect."), 
    109                     tr("Warning"), 
    110                     JOptionPane.WARNING_MESSAGE 
    111             ); 
    112         } 
    113         Main.parent.repaint(); 
     59    public PreferenceDialog(Component parent) { 
     60        super(JOptionPane.getFrameForComponent(parent), tr("Preferences"), true /* modal */); 
     61        build(); 
    11462    } 
    11563 
    116     /** 
    117      * If the dialog is closed with Ok, the preferences will be stored to the preferences- 
    118      * file, otherwise no change of the file happens. 
    119      */ 
    120     public PreferenceDialog() { 
    121         super(JTabbedPane.LEFT, JTabbedPane.SCROLL_TAB_LAYOUT); 
     64    public boolean isCanceled() { 
     65        return canceled; 
     66    } 
    12267 
    123         super.addMouseWheelListener(this); 
     68    protected void setCanceled(boolean canceled) { 
     69        this.canceled = canceled; 
     70    } 
    12471 
    125         for (PreferenceSettingFactory factory:settingsFactory) { 
    126             // logger.info("creating settings: " + factory); 
    127             PreferenceSetting setting = factory.createPreferenceSetting(); 
    128             if (setting != null) { 
    129                 settings.add(factory.createPreferenceSetting()); 
    130             } 
     72    @Override 
     73    public void setVisible(boolean visible) { 
     74        if (visible) { 
     75            new WindowGeometry( 
     76                    getClass().getName() + ".geometry", 
     77                    WindowGeometry.centerInWindow( 
     78                            getParent(), 
     79                            new Dimension(600,800) 
     80                    ) 
     81            ).apply(this); 
     82        } else if (!visible && isShowing()){ 
     83            new WindowGeometry(this).remember(getClass().getName() + ".geometry"); 
     84        } 
     85        super.setVisible(visible); 
     86    } 
     87 
     88    class CancelAction extends AbstractAction { 
     89        public CancelAction() { 
     90            putValue(NAME, tr("Cancel")); 
     91            putValue(SMALL_ICON, ImageProvider.get("cancel")); 
     92            putValue(SHORT_DESCRIPTION, tr("Close the prefereces dialog and discard preference updates")); 
    13193        } 
    13294 
    133         display.add(displaycontent, GBC.eol().fill(GBC.BOTH)); 
    134         map.add(mapcontent, GBC.eol().fill(GBC.BOTH)); 
    135         for (Iterator<PreferenceSetting> it = settings.iterator(); it.hasNext();) { 
    136             try { 
    137                 PreferenceSetting settings = it.next(); 
    138                 //logger.info("adding gui: " + settings); 
    139                 settings.addGui(this); 
    140             } catch (SecurityException e) { 
    141                 it.remove(); 
    142             } catch (Throwable e) { 
    143                 /* allow to change most settings even if e.g. a plugin fails */ 
    144                 BugReportExceptionHandler.handleException(e); 
    145             } 
     95        public void cancel() { 
     96            setCanceled(true); 
     97            setVisible(false); 
     98        } 
     99 
     100        public void actionPerformed(ActionEvent evt) { 
     101            cancel(); 
    146102        } 
    147103    } 
    148104 
    149     public List<PreferenceSetting> getSettings() { 
    150         return settings; 
     105    class OKAction extends AbstractAction { 
     106        public OKAction() { 
     107            putValue(NAME, tr("OK")); 
     108            putValue(SMALL_ICON, ImageProvider.get("ok")); 
     109            putValue(SHORT_DESCRIPTION, tr("Save the preferences and close the dialog")); 
     110        } 
     111 
     112        public void actionPerformed(ActionEvent evt) { 
     113            tpPreferences.savePreferences(); 
     114            setCanceled(false); 
     115            setVisible(false); 
     116        } 
    151117    } 
    152118 
    153     @SuppressWarnings("unchecked") 
    154     public <T>  T getSetting(Class<? extends T> clazz) { 
    155         for (PreferenceSetting setting:settings) { 
    156             if (clazz.isAssignableFrom(setting.getClass())) 
    157                 return (T)setting; 
     119    class WindowEventHandler extends WindowAdapter { 
     120        @Override 
     121        public void windowClosing(WindowEvent arg0) { 
     122            new CancelAction().cancel(); 
    158123        } 
    159         return null; 
    160     } 
    161  
    162     static { 
    163         // order is important! 
    164         settingsFactory.add(new DrawingPreference.Factory()); 
    165         settingsFactory.add(new ColorPreference.Factory()); 
    166         settingsFactory.add(new LafPreference.Factory()); 
    167         settingsFactory.add(new LanguagePreference.Factory()); 
    168         settingsFactory.add(new ServerAccessPreference.Factory()); 
    169         settingsFactory.add(new FilePreferences.Factory()); 
    170         settingsFactory.add(new ProxyPreferences.Factory()); 
    171         settingsFactory.add(new ProjectionPreference.Factory()); 
    172         settingsFactory.add(new MapPaintPreference.Factory()); 
    173         settingsFactory.add(new TaggingPresetPreference.Factory()); 
    174         settingsFactory.add(new PluginPreference.Factory()); 
    175         settingsFactory.add(Main.toolbar); 
    176         settingsFactory.add(new AudioPreference.Factory()); 
    177         settingsFactory.add(new ShortcutPreference.Factory()); 
    178  
    179         PluginHandler.getPreferenceSetting(settingsFactory); 
    180  
    181         // always the last: advanced tab 
    182         settingsFactory.add(new AdvancedPreference.Factory()); 
    183     } 
    184  
    185     /** 
    186      * This mouse wheel listener reacts when a scroll is carried out over the 
    187      * tab strip and scrolls one tab/down or up, selecting it immediately. 
    188      */ 
    189     public void mouseWheelMoved(MouseWheelEvent wev) { 
    190         // Ensure the cursor is over the tab strip 
    191         if(super.indexAtLocation(wev.getPoint().x, wev.getPoint().y) < 0) 
    192             return; 
    193  
    194         // Get currently selected tab 
    195         int newTab = super.getSelectedIndex() + wev.getWheelRotation(); 
    196  
    197         // Ensure the new tab index is sound 
    198         newTab = newTab < 0 ? 0 : newTab; 
    199         newTab = newTab >= super.getTabCount() ? super.getTabCount() - 1 : newTab; 
    200  
    201         // select new tab 
    202         super.setSelectedIndex(newTab); 
    203124    } 
    204125} 
  • trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceSetting.java

    r2512 r2745  
    77     * the current preferences. 
    88     */ 
    9     void addGui(PreferenceDialog gui); 
     9    void addGui(PreferenceTabbedPane gui); 
    1010 
    1111    /** 
  • trunk/src/org/openstreetmap/josm/gui/preferences/PreferenceTabbedPane.java

    r2741 r2745  
    3636 * @author imi 
    3737 */ 
    38 public class PreferenceDialog extends JTabbedPane implements MouseWheelListener { 
    39     static private final Logger logger = Logger.getLogger(PreferenceDialog.class.getName()); 
     38public class PreferenceTabbedPane extends JTabbedPane implements MouseWheelListener { 
     39    static private final Logger logger = Logger.getLogger(PreferenceTabbedPane.class.getName()); 
    4040 
    4141    private final static Collection<PreferenceSettingFactory> settingsFactory = new LinkedList<PreferenceSettingFactory>(); 
     
    7979        JPanel p = new JPanel(new GridBagLayout()); 
    8080        p.setBorder(BorderFactory.createEmptyBorder(5,5,5,5)); 
    81         p.add(new JLabel(title), GBC.eol().anchor(GBC.CENTER).insets(0,5,0,10)); 
     81        p.add(new JLabel(title), GBC.eol().insets(0,5,0,10).anchor(GBC.NORTHWEST)); 
    8282 
    8383        JLabel descLabel = new JLabel("<html>"+desc+"</html>"); 
     
    9595    } 
    9696 
    97     public void ok() { 
     97    public void savePreferences() { 
    9898        boolean requiresRestart = false; 
    9999        for (PreferenceSetting setting : settings) 
     
    118118     * file, otherwise no change of the file happens. 
    119119     */ 
    120     public PreferenceDialog() { 
     120    public PreferenceTabbedPane() { 
    121121        super(JTabbedPane.LEFT, JTabbedPane.SCROLL_TAB_LAYOUT); 
    122  
    123122        super.addMouseWheelListener(this); 
    124  
     123    } 
     124 
     125    public void buildGui() { 
    125126        for (PreferenceSettingFactory factory:settingsFactory) { 
    126127            // logger.info("creating settings: " + factory); 
     
    167168        settingsFactory.add(new LanguagePreference.Factory()); 
    168169        settingsFactory.add(new ServerAccessPreference.Factory()); 
    169         settingsFactory.add(new FilePreferences.Factory()); 
    170         settingsFactory.add(new ProxyPreferences.Factory()); 
    171170        settingsFactory.add(new ProjectionPreference.Factory()); 
    172171        settingsFactory.add(new MapPaintPreference.Factory()); 
  • trunk/src/org/openstreetmap/josm/gui/preferences/ProjectionPreference.java

    r2516 r2745  
    6565    static private GBC projSubPrefPanelGBC = GBC.eol().fill(GBC.BOTH).insets(20,5,5,5); 
    6666 
    67     public void addGui(PreferenceDialog gui) { 
     67    public void addGui(PreferenceTabbedPane gui) { 
    6868        setupProjectionCombo(); 
    6969 
  • trunk/src/org/openstreetmap/josm/gui/preferences/ServerAccessPreference.java

    r2650 r2745  
    44import static org.openstreetmap.josm.tools.I18n.tr; 
    55 
    6 import java.awt.Font; 
    7 import java.net.PasswordAuthentication; 
    8 import java.net.Authenticator.RequestorType; 
     6import java.awt.BorderLayout; 
     7import java.awt.GridBagConstraints; 
     8import java.awt.GridBagLayout; 
     9import java.awt.Insets; 
    910 
    10 import javax.swing.JLabel; 
    11 import javax.swing.JPasswordField; 
    12 import javax.swing.JTextField; 
     11import javax.swing.JPanel; 
     12import javax.swing.JScrollPane; 
     13import javax.swing.JTabbedPane; 
    1314 
    14 import org.openstreetmap.josm.Main; 
    15 import org.openstreetmap.josm.io.auth.CredentialsManager; 
    16 import org.openstreetmap.josm.io.auth.CredentialsManagerException; 
    17 import org.openstreetmap.josm.io.auth.CredentialsManagerFactory; 
    18 import org.openstreetmap.josm.tools.GBC; 
    19  
     15import org.openstreetmap.josm.gui.help.HelpUtil; 
     16import org.openstreetmap.josm.gui.preferences.server.AuthenticationPreferencesPanel; 
     17import org.openstreetmap.josm.gui.preferences.server.BackupPreferencesPanel; 
     18import org.openstreetmap.josm.gui.preferences.server.OsmApiUrlInputPanel; 
     19import org.openstreetmap.josm.gui.preferences.server.ProxyPreferencesPanel; 
     20import org.openstreetmap.josm.gui.widgets.VerticallyScrollablePanel; 
    2021public class ServerAccessPreference implements PreferenceSetting { 
    2122 
     
    2627    } 
    2728 
     29    private OsmApiUrlInputPanel pnlApiUrlPreferences; 
     30 
     31    private JTabbedPane tpServerPreferences; 
     32    /** indicates whether to use the default OSM URL or not */ 
     33    /** panel for configuring authentication preferences */ 
     34    private AuthenticationPreferencesPanel pnlAuthPreferences; 
     35    /** panel for configuring proxy preferences */ 
     36    private ProxyPreferencesPanel pnlProxyPreferences; 
     37    /** panel for backup preferences */ 
     38    private BackupPreferencesPanel pnlBackupPreferences; 
     39 
    2840    /** 
    29      * Editfield for the Base url to the REST API from OSM. 
     41     * Embeds a vertically scrollable panel in a {@see JScrollPane} 
     42     * @param panel the panel 
     43     * @return the scroll pane 
    3044     */ 
    31     final private JTextField osmDataServerURL = new JTextField(20); 
    32     /** 
    33      * Editfield for the username to the OSM account. 
    34      */ 
    35     final private JTextField osmDataUsername = new JTextField(20); 
    36     /** 
    37      * Passwordfield for the userpassword of the REST API. 
    38      */ 
    39     final private JPasswordField osmDataPassword = new JPasswordField(20); 
    40  
    41     public void addGui(PreferenceDialog gui) { 
    42         CredentialsManager cm = CredentialsManagerFactory.getCredentialManager(); 
    43         String oldServerURL = Main.pref.get("osm-server.url", "http://api.openstreetmap.org/api"); 
    44         String oldUsername; 
    45         String oldPassword; 
    46         try { 
    47             PasswordAuthentication credentials =  cm.lookup(RequestorType.SERVER); 
    48             oldUsername = (credentials == null || credentials.getUserName() == null) ? "" : credentials.getUserName(); 
    49             oldPassword = (credentials == null || credentials.getPassword() == null) ? "" : String.valueOf(credentials.getPassword()); 
    50         } catch(CredentialsManagerException e) { 
    51             e.printStackTrace(); 
    52             oldUsername = ""; 
    53             oldPassword = ""; 
    54         } 
    55  
    56         osmDataServerURL.setText(oldServerURL); 
    57         osmDataUsername.setText(oldUsername); 
    58         osmDataPassword.setText(oldPassword); 
    59         osmDataServerURL.setToolTipText(tr("The base URL for the OSM server (REST API)")); 
    60         osmDataUsername.setToolTipText(tr("Login name (e-mail) to the OSM account.")); 
    61         osmDataPassword.setToolTipText(tr("Login password to the OSM account. Leave blank to not store any password.")); 
    62  
    63         gui.connection.add(new JLabel(tr("Base Server URL")), GBC.std()); 
    64         gui.connection.add(osmDataServerURL, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5)); 
    65         gui.connection.add(new JLabel(tr("OSM username (e-mail)")), GBC.std()); 
    66         gui.connection.add(osmDataUsername, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,5)); 
    67         gui.connection.add(new JLabel(tr("OSM password")), GBC.std()); 
    68         gui.connection.add(osmDataPassword, GBC.eol().fill(GBC.HORIZONTAL).insets(5,0,0,0)); 
    69         JLabel warning = new JLabel(tr("<html>" + 
    70                 "WARNING: The password is stored in plain text in the preferences file.<br>" + 
    71                 "The password is transferred in plain text to the server, encoded in the URL.<br>" + 
    72         "<b>Do not use a valuable Password.</b></html>")); 
    73         warning.setFont(warning.getFont().deriveFont(Font.ITALIC)); 
    74         gui.connection.add(warning, GBC.eop().fill(GBC.HORIZONTAL)); 
     45    protected JScrollPane wrapVerticallyScrollablePanel(VerticallyScrollablePanel panel) { 
     46        JScrollPane sp = new JScrollPane(panel); 
     47        sp.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); 
     48        sp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED); 
     49        return sp; 
    7550    } 
    7651 
     52    /** 
     53     * Builds the tabbed pane with the server preferences 
     54     *  
     55     * @return 
     56     */ 
     57    protected JPanel buildTabbedServerPreferences() { 
     58        JPanel pnl = new JPanel(new BorderLayout()); 
     59 
     60        tpServerPreferences = new JTabbedPane(); 
     61        pnlAuthPreferences = new AuthenticationPreferencesPanel(); 
     62        tpServerPreferences.add(wrapVerticallyScrollablePanel(pnlAuthPreferences)); 
     63        pnlProxyPreferences = new ProxyPreferencesPanel(); 
     64        tpServerPreferences.add(wrapVerticallyScrollablePanel(pnlProxyPreferences)); 
     65        pnlBackupPreferences = new BackupPreferencesPanel(); 
     66        tpServerPreferences.add(wrapVerticallyScrollablePanel(pnlBackupPreferences)); 
     67 
     68        tpServerPreferences.setTitleAt(0, tr("Authentication")); 
     69        tpServerPreferences.setTitleAt(1, tr("Proxy settings")); 
     70        tpServerPreferences.setTitleAt(2, tr("File backup")); 
     71        tpServerPreferences.setToolTipTextAt(0, tr("Configure your identity and how to authenticate at the OSM server")); 
     72        tpServerPreferences.setToolTipTextAt(1, tr("Configure whether to use a proxy server")); 
     73        tpServerPreferences.setToolTipTextAt(2, tr("Configure whether to create backup files")); 
     74 
     75        pnl.add(tpServerPreferences, BorderLayout.CENTER); 
     76        return pnl; 
     77    } 
     78 
     79    /** 
     80     * Builds the panel for entering the server access preferences 
     81     *  
     82     * @return 
     83     */ 
     84    protected JPanel buildContentPanel() { 
     85        JPanel pnl = new JPanel(new GridBagLayout()); 
     86        GridBagConstraints gc = new GridBagConstraints(); 
     87 
     88        // the checkbox for the default UL 
     89        gc.fill = GridBagConstraints.HORIZONTAL; 
     90        gc.anchor = GridBagConstraints.NORTHWEST; 
     91        gc.weightx = 1.0; 
     92        gc.insets = new Insets(0,0,0,0); 
     93        pnl.add(pnlApiUrlPreferences = new OsmApiUrlInputPanel(), gc); 
     94 
     95        // the remaining access properties 
     96        gc.gridy = 1; 
     97        gc.fill = GridBagConstraints.BOTH; 
     98        gc.weightx = 1.0; 
     99        gc.weighty = 1.0; 
     100        gc.insets = new Insets(10,0,3,3); 
     101        pnl.add(buildTabbedServerPreferences(), gc); 
     102 
     103        // let the AuthPreferencesPanel know when the API URL changes 
     104        // 
     105        pnlApiUrlPreferences.addPropertyChangeListener(pnlAuthPreferences); 
     106 
     107        HelpUtil.setHelpContext(pnl, HelpUtil.ht("/Preferences/Connection")); 
     108        return pnl; 
     109    } 
     110 
     111    public void addGui(PreferenceTabbedPane gui) { 
     112        GridBagConstraints gc = new GridBagConstraints(); 
     113        gc.fill = GridBagConstraints.BOTH; 
     114        gc.weightx = 1.0; 
     115        gc.weighty = 1.0; 
     116        gc.anchor = GridBagConstraints.NORTHWEST; 
     117        gui.connection.add(buildContentPanel(), gc); 
     118 
     119        initFromPreferences(); 
     120    } 
     121 
     122    /** 
     123     * Initializes the configuration panel with values from the preferences 
     124     */ 
     125    public void initFromPreferences() { 
     126        pnlApiUrlPreferences.initFromPreferences(); 
     127        pnlAuthPreferences.initFromPreferences(); 
     128        pnlProxyPreferences.initFromPreferences(); 
     129        pnlBackupPreferences.initFromPreferences(); 
     130    } 
     131 
     132    /** 
     133     * Saves the values to the preferences 
     134     */ 
    77135    public boolean ok() { 
    78         CredentialsManager cm = CredentialsManagerFactory.getCredentialManager(); 
    79         Main.pref.put("osm-server.url", osmDataServerURL.getText()); 
    80         try { 
    81             cm.store(RequestorType.SERVER, new PasswordAuthentication( 
    82                     osmDataUsername.getText(), 
    83                     osmDataPassword.getPassword() 
    84             )); 
    85         } catch(CredentialsManagerException e) { 
    86             // FIXME: Message dialog with an error message? 
    87             e.printStackTrace(); 
    88         } 
     136        pnlApiUrlPreferences.saveToPreferences(); 
     137        pnlAuthPreferences.saveToPreferences(); 
     138        pnlProxyPreferences.saveToPreferences(); 
     139        pnlBackupPreferences.saveToPreferences(); 
    89140        return false; 
    90141    } 
  • trunk/src/org/openstreetmap/josm/gui/preferences/ShortcutPreference.java

    r1742 r2745  
    2020    } 
    2121 
    22     public void addGui(PreferenceDialog gui) { 
     22    public void addGui(PreferenceTabbedPane gui) { 
    2323        // icon source: http://www.iconfinder.net/index.php?q=key&page=icondetails&iconid=8553&size=128&q=key&s12=on&s16=on&s22=on&s32=on&s48=on&s64=on&s128=on 
    2424        // icon licence: GPL 
  • trunk/src/org/openstreetmap/josm/gui/preferences/TaggingPresetPreference.java

    r2400 r2745  
    3636    private JCheckBox enableDefault; 
    3737 
    38     public void addGui(final PreferenceDialog gui) { 
     38    public void addGui(final PreferenceTabbedPane gui) { 
    3939        sortMenu = new JCheckBox(tr("Sort presets menu"), 
    4040                Main.pref.getBoolean("taggingpreset.sortmenu", false)); 
  • trunk/src/org/openstreetmap/josm/gui/preferences/ToolbarPreferences.java

    r2512 r2745  
    172172        } 
    173173 
    174         public void addGui(PreferenceDialog gui) { 
     174        public void addGui(PreferenceTabbedPane gui) { 
    175175            actionsTree.setCellRenderer(new DefaultTreeCellRenderer() { 
    176176                @Override 
Note: See TracChangeset for help on using the changeset viewer.