// License: GPL. For details, see LICENSE file.
package org.openstreetmap.josm.gui.preferences;
import java.awt.Component;
/**
* Preference settings, that display a top level tab.
*
* This preference setting's addGui method is called after the user clicked the tab.
*/
public interface TabPreferenceSetting extends PreferenceSetting {
/**
* Called during preferences dialog initialization to display the preferences tab with the returned icon.
* @return The icon name in the preferences folder.
*/
String getIconName();
/**
* Called during preferences tab initialization to display its title.
* @return The title of this preferences tab.
*/
String getTitle();
/**
* Called during preferences dialog initialization to display the preferences tab with the returned tooltip.
* @return The tooltip of this preferences tab.
*/
String getTooltip();
/**
* Called during preferences tab initialization to display a description in one sentence for this tab.
* Will be displayed in italic under the title.
* @return The description of this preferences tab.
*/
String getDescription();
/**
* Adds a new sub preference settings tab with the given title and component.
* @param sub The new sub preference settings.
* @param title The tab title.
* @param component The tab component.
* @since 5631
*/
void addSubTab(SubPreferenceSetting sub, String title, Component component);
/**
* Adds a new sub preference settings tab with the given title, component and tooltip.
* @param sub The new sub preference settings.
* @param title The tab title.
* @param component The tab component.
* @param tip The tab tooltip.
* @since 5631
*/
void addSubTab(SubPreferenceSetting sub, String title, Component component, String tip);
/**
* Registers a sub preference settings to an existing tab component.
* @param sub The new sub preference settings.
* @param component The component for which a tab already exists.
* @since 5631
*/
void registerSubTab(SubPreferenceSetting sub, Component component);
/**
* Returns the tab component related to the specified sub preference settings
* @param sub The requested sub preference settings.
* @return The component related to the specified sub preference settings, or null.
* @since 5631
*/
Component getSubTab(SubPreferenceSetting sub);
/**
* Selects the specified sub preference settings, if applicable. Not all Tab preference settings need to implement this.
* @param subPref The sub preference settings to be selected.
* @return true if the specified preference settings have been selected, false otherwise.
* @since 5631
*/
boolean selectSubTab(SubPreferenceSetting subPref);
}