Package org.openstreetmap.josm.actions

Source Code of org.openstreetmap.josm.actions.PreferencesAction

// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.actions;

import static org.openstreetmap.josm.gui.help.HelpUtil.ht;
import static org.openstreetmap.josm.tools.I18n.tr;

import java.awt.event.ActionEvent;
import java.awt.event.KeyEvent;

import org.openstreetmap.josm.Main;
import org.openstreetmap.josm.gui.preferences.PreferenceDialog;
import org.openstreetmap.josm.gui.preferences.SubPreferenceSetting;
import org.openstreetmap.josm.gui.preferences.TabPreferenceSetting;
import org.openstreetmap.josm.tools.CheckParameterUtil;
import org.openstreetmap.josm.tools.Shortcut;
import org.openstreetmap.josm.tools.Utils;

/**
* Open the Preferences dialog.
*
* @author imi
*/
public class PreferencesAction extends JosmAction implements Runnable {

    private final Class<? extends TabPreferenceSetting> tab;
    private final Class<? extends SubPreferenceSetting> subTab;

    private PreferencesAction(String name, String icon, String tooltip,
                              Class<? extends TabPreferenceSetting> tab, Class<? extends SubPreferenceSetting> subTab) {
        super(name, icon, tooltip, null, false, "preference_" + Utils.<Class<?>>firstNonNull(tab, subTab).getName(), false);
        this.tab = tab;
        this.subTab = subTab;
    }

    /**
     * Returns a new {@code PreferenceAction} opening preferences dialog directly to the given tab, with default icon.
     * @param name The action name
     * @param tooltip The action tooltip
     * @param tab The preferences tab to select
     * @return The created action
     */
    public static PreferencesAction forPreferenceTab(String name, String tooltip, Class<? extends TabPreferenceSetting> tab) {
        return forPreferenceTab(name, tooltip, tab, "preference");
    }

    /**
     * Returns a new {@code PreferenceAction} opening preferences dialog directly to the given tab, with custom icon.
     * @param name The action name
     * @param tooltip The action tooltip
     * @param tab The preferences tab to select
     * @param icon The action icon
     * @return The created action
     * @since 6969
     */
    public static PreferencesAction forPreferenceTab(String name, String tooltip, Class<? extends TabPreferenceSetting> tab, String icon) {
        CheckParameterUtil.ensureParameterNotNull(tab);
        return new PreferencesAction(name, icon, tooltip, tab, null);
    }

    /**
     * Returns a new {@code PreferenceAction} opening preferences dialog directly to the given subtab, with default icon.
     * @param name The action name
     * @param tooltip The action tooltip
     * @param subTab The preferences subtab to select
     * @return The created action
     */
    public static PreferencesAction forPreferenceSubTab(String name, String tooltip, Class<? extends SubPreferenceSetting> subTab) {
        return forPreferenceSubTab(name, tooltip, subTab, "preference");
    }

    /**
     * Returns a new {@code PreferenceAction} opening preferences dialog directly to the given subtab, with custom icon.
     * @param name The action name
     * @param tooltip The action tooltip
     * @param subTab The preferences subtab to select
     * @param icon The action icon
     * @return The created action
     * @since 6969
     */
    public static PreferencesAction forPreferenceSubTab(String name, String tooltip, Class<? extends SubPreferenceSetting> subTab, String icon) {
        CheckParameterUtil.ensureParameterNotNull(subTab);
        return new PreferencesAction(name, icon, tooltip, null, subTab);
    }

    /**
     * Create the preference action with "Preferences" as label.
     */
    public PreferencesAction() {
        super(tr("Preferences..."), "preference", tr("Open a preferences dialog for global settings."),
                Shortcut.registerShortcut("system:preferences", tr("Preferences"), KeyEvent.VK_F12, Shortcut.DIRECT), true);
        putValue("help", ht("/Action/Preferences"));
        this.tab = null;
        this.subTab = null;
    }

    /**
     * Launch the preferences dialog.
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        run();
    }

    @Override
    public void run() {
        final PreferenceDialog p = new PreferenceDialog(Main.parent);
        if (tab != null) {
            p.selectPreferencesTabByClass(tab);
        } else if( subTab != null) {
            p.selectSubPreferencesTabByClass(subTab);
        }
        p.setVisible(true);
    }
}
TOP

Related Classes of org.openstreetmap.josm.actions.PreferencesAction

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.