Class AbstractOptions

java.lang.Object
ghidra.framework.options.AbstractOptions
All Implemented Interfaces:
Options
Direct Known Subclasses:
FileOptions, ToolOptions

public abstract class AbstractOptions extends Object implements Options
  • Field Details

  • Constructor Details

    • AbstractOptions

      protected AbstractOptions(String name)
  • Method Details

    • createRegisteredOption

      protected abstract Option createRegisteredOption(String optionName, OptionType type, String description, HelpLocation help, Object defaultValue, PropertyEditor editor)
    • createUnregisteredOption

      protected abstract Option createUnregisteredOption(String optionName, OptionType type, Object defaultValue)
    • notifyOptionChanged

      protected abstract boolean notifyOptionChanged(String optionName, Object oldValue, Object newValue)
    • registerOptionsEditor

      public void registerOptionsEditor(String categoryPath, Supplier<OptionsEditor> editorSupplier)
    • getOptionsEditor

      public OptionsEditor getOptionsEditor(String categoryPath)
    • dispose

      public void dispose()
    • getName

      public String getName()
      Description copied from interface: Options
      Get the name of this options object.
      Specified by:
      getName in interface Options
      Returns:
      String
    • setName

      public void setName(String newName)
      Sets the name for this Options object. Used when updating old options names to new names.
      Parameters:
      newName - the new name for this options object.
    • registerOption

      public void registerOption(String optionName, Object defaultValue, HelpLocation help, String description)
      Description copied from interface: Options
      Registers an option with a description, help location, and a default value without specifying the option type. This form requires that the default value not be null so that the option type can be inferred from the default value.

      Note, this method should not be used for colors and font as doing so will result in those colors and fonts becoming disconnected to the current theme. Instead use Options.registerThemeColorBinding(String, String, HelpLocation, String) or Options.registerThemeFontBinding(String, String, HelpLocation, String).

      Specified by:
      registerOption in interface Options
      Parameters:
      optionName - the name of the option being registered.
      defaultValue - the defaultValue for the option. The default value must not be null so that the OptionType can be determined. If the default value should be null, use Options.registerOption(String, OptionType, Object, HelpLocation, String)
      help - the HelpLocation for this option.
      description - a description of the option.
    • registerOption

      public void registerOption(String optionName, OptionType type, Object defaultValue, HelpLocation help, String description)
      Description copied from interface: Options
      Registers an option with a description, help location, and a optional default value. With an optional default value, an OptionType must be passed as it is otherwise derived from the default value.

      Note, this method should not be used for colors and font as doing so will result in those colors and fonts becoming disconnected to the current theme. Instead use Options.registerThemeColorBinding(String, String, HelpLocation, String) or Options.registerThemeFontBinding(String, String, HelpLocation, String).

      Specified by:
      registerOption in interface Options
      Parameters:
      optionName - the name of the option being registered.
      type - the OptionType for this options.
      defaultValue - the defaultValue for the option. In this version of the method, the default value may be null.
      help - the HelpLocation for this option.
      description - a description of the option.
    • registerOption

      public void registerOption(String optionName, OptionType type, Object defaultValue, HelpLocation help, String description, Supplier<PropertyEditor> editorSupplier)
      Description copied from interface: Options
      Registers an option with a description, help location, and a optional default value. With an optional default value, an OptionType must be passed as it is otherwise derived from the default value.

      Note, this method should not be used for colors and font as doing so will result in those colors and fonts becoming disconnected to the current theme. Instead use Options.registerThemeColorBinding(String, String, HelpLocation, String) or Options.registerThemeFontBinding(String, String, HelpLocation, String).

      Note: we use a supplier of a custom editor, instead of a custom editor, to avoid creating PropertyEditors until needed. This allows us to use the same API in both GUI mode and headless mode. If GUI property editors are created in headless mode, exceptions may be thrown. This API will not use the supplier when in headless mode, this avoiding the creation of GUI components. For this to work correctly, clients using custom property editors must defer construction of the editor until the supplier is called.

      Specified by:
      registerOption in interface Options
      Parameters:
      optionName - the name of the option being registered.
      type - the OptionType for this options.
      defaultValue - the defaultValue for the option. In this version of the method, the default value may be null.
      help - the HelpLocation for this option.
      description - a description of the option.
      editorSupplier - an optional supplier of a custom editor for this property. Note if the option is a custom option, then the property editor can't be null;
    • registerThemeColorBinding

      public void registerThemeColorBinding(String optionName, String colorId, HelpLocation help, String description)
      Description copied from interface: Options
      Register/binds the option to a theme color id. Changing the option's color via the options Gui will result in directly changing the theme color of the given color id.
      Specified by:
      registerThemeColorBinding in interface Options
      Parameters:
      optionName - the name of the color option
      colorId - the theme color id whose color value is changed when the option's color is changed
      help - the HelpLocation for this option
      description - a description of the option
    • registerThemeFontBinding

      public void registerThemeFontBinding(String optionName, String fontId, HelpLocation help, String description)
      Description copied from interface: Options
      Register/binds the option to a theme font id. Changing the option's font via the options Gui will result in directly changing the theme color of the given font id.
      Specified by:
      registerThemeFontBinding in interface Options
      Parameters:
      optionName - the name of the font option
      fontId - the theme color id whose color value is changed when the option's color is changed
      help - the HelpLocation for this option
      description - a description of the option
    • removeOption

      public void removeOption(String optionName)
      Description copied from interface: Options
      Remove the option name.
      Specified by:
      removeOption in interface Options
      Parameters:
      optionName - name of option to remove
    • getOptionNames

      public List<String> getOptionNames()
      Description copied from interface: Options
      Get the list of option names. This method will return the names (paths) of all options contained in this options object or below. For example, if the options has ("aaa", "bbb", "ccc.ddd"), all three will be returned. the Options.getLeafOptionNames() method will return only the "aaa" and "bbb" names.
      Specified by:
      getOptionNames in interface Options
      Returns:
      the list of all option names(paths) under this options.
    • getObject

      public Object getObject(String optionName, Object defaultValue)
      Description copied from interface: Options
      Get the object value; called when the options dialog is being populated.
      Specified by:
      getObject in interface Options
      Parameters:
      optionName - option name
      defaultValue - default value
      Returns:
      object with the given option name; if no option was found, return default value (this value is not stored in the option maps)
    • getOption

      public Option getOption(String optionName, OptionType type, Object defaultValue)
    • putObject

      public void putObject(String optionName, Object newValue)
      Description copied from interface: Options
      Put the object value. If the option exists, the type must match the type of the existing object.
      Specified by:
      putObject in interface Options
      Parameters:
      optionName - the option name
      newValue - the option value
    • putObject

      public void putObject(String optionName, Object newValue, OptionType type)
    • getType

      public OptionType getType(String optionName)
      Description copied from interface: Options
      Returns the OptionType of the given option.
      Specified by:
      getType in interface Options
      Parameters:
      optionName - the name of the option for which to get the type.
      Returns:
      the OptionType of option with the given name.
    • getBoolean

      public boolean getBoolean(String optionName, boolean defaultValue)
      Description copied from interface: Options
      Get the boolean value for the given option name.
      Specified by:
      getBoolean in interface Options
      Parameters:
      optionName - option name
      defaultValue - value that is stored and returned if there is no option with the given name.
      Returns:
      boolean option value
    • getByteArray

      public byte[] getByteArray(String optionName, byte[] defaultValue)
      Description copied from interface: Options
      Get the byte array for the given option name.
      Specified by:
      getByteArray in interface Options
      Parameters:
      optionName - option name
      defaultValue - value that is stored and returned if there is no option with the given name
      Returns:
      byte[] byte array value
    • getInt

      public int getInt(String optionName, int defaultValue)
      Description copied from interface: Options
      Get the int value for the given option name.
      Specified by:
      getInt in interface Options
      Parameters:
      optionName - option name
      defaultValue - value that is stored and returned if there is no option with the given name
      Returns:
      int option value
    • getDouble

      public double getDouble(String optionName, double defaultValue)
      Description copied from interface: Options
      Get the double value for the given option name.
      Specified by:
      getDouble in interface Options
      Parameters:
      optionName - option name
      defaultValue - value that is stored and returned if there is no option with the given name
      Returns:
      double value for the option
    • getFloat

      public float getFloat(String optionName, float defaultValue)
      Description copied from interface: Options
      Get the float value for the given option name.
      Specified by:
      getFloat in interface Options
      Parameters:
      optionName - option name
      defaultValue - value that is stored and returned if there is no option with the given name
      Returns:
      float value for the option
    • getLong

      public long getLong(String optionName, long defaultValue)
      Description copied from interface: Options
      Get the long value for the given option name.
      Specified by:
      getLong in interface Options
      Parameters:
      optionName - option name
      defaultValue - value that is stored and returned if there is no option with the given name
      Returns:
      long value for the option
    • getCustomOption

      public CustomOption getCustomOption(String optionName, CustomOption defaultValue)
      Description copied from interface: Options
      Get the custom option value for the given option name.
      Specified by:
      getCustomOption in interface Options
      Parameters:
      optionName - option name
      defaultValue - value that is stored and returned if there is no option with the given name
      Returns:
      WrappedOption value for the option
    • getColor

      public Color getColor(String optionName, Color defaultValue)
      Description copied from interface: Options
      Get the Color for the given option name.
      Specified by:
      getColor in interface Options
      Parameters:
      optionName - option name
      defaultValue - value that is stored and returned if there is no option with the given name
      Returns:
      Color option
    • getFile

      public File getFile(String optionName, File defaultValue)
      Description copied from interface: Options
      Get the File for the given option name.
      Specified by:
      getFile in interface Options
      Parameters:
      optionName - option name
      defaultValue - value that is stored and returned if there is no option with the given name
      Returns:
      File option
    • getFont

      public Font getFont(String optionName, Font defaultValue)
      Description copied from interface: Options
      Get the Font for the given option name.
      Specified by:
      getFont in interface Options
      Parameters:
      optionName - option name
      defaultValue - value that is stored and returned if there is no option with the given name
      Returns:
      Font option
    • getDate

      public Date getDate(String optionName, Date defaultValue)
      Description copied from interface: Options
      Get the Date for the given option name.
      Specified by:
      getDate in interface Options
      Parameters:
      optionName - the property name
      defaultValue - the default date that is stored and returned if there is no option with the given name
      Returns:
      the Date for the option
    • getKeyStroke

      public KeyStroke getKeyStroke(String optionName, KeyStroke defaultValue)
      Description copied from interface: Options
      Get the KeyStroke for the given action name.
      Specified by:
      getKeyStroke in interface Options
      Parameters:
      optionName - the option name
      defaultValue - value that is stored and returned if there is no option with the given name
      Returns:
      KeyStroke option
    • getActionTrigger

      public ActionTrigger getActionTrigger(String optionName, ActionTrigger defaultValue)
      Description copied from interface: Options
      Get the ActionTrigger for the given full action name.
      Specified by:
      getActionTrigger in interface Options
      Parameters:
      optionName - the action name
      defaultValue - value that is stored and returned if there is no option with the given name
      Returns:
      the action trigger
    • getString

      public String getString(String optionName, String defaultValue)
      Description copied from interface: Options
      Get the string value for the given option name.
      Specified by:
      getString in interface Options
      Parameters:
      optionName - option name
      defaultValue - value that is stored and returned if there is no option with the given name
      Returns:
      String value for the option
    • getEnum

      public <T extends Enum<T>> T getEnum(String optionName, T defaultValue)
      Description copied from interface: Options
      Get the Enum value for the given option name.
      Specified by:
      getEnum in interface Options
      Parameters:
      optionName - option name
      defaultValue - default value that is stored and returned if there is no option with the given name
      Returns:
      Enum value for the option
    • setLong

      public void setLong(String optionName, long value)
      Description copied from interface: Options
      Sets the long value for the option.
      Specified by:
      setLong in interface Options
      Parameters:
      optionName - name of the option
      value - value of the option
    • setBoolean

      public void setBoolean(String optionName, boolean value)
      Description copied from interface: Options
      Sets the boolean value for the option.
      Specified by:
      setBoolean in interface Options
      Parameters:
      optionName - name of the option
      value - value of the option
    • setInt

      public void setInt(String optionName, int value)
      Description copied from interface: Options
      Sets the int value for the option.
      Specified by:
      setInt in interface Options
      Parameters:
      optionName - name of the option
      value - value of the option
    • setDouble

      public void setDouble(String optionName, double value)
      Description copied from interface: Options
      Sets the double value for the option.
      Specified by:
      setDouble in interface Options
      Parameters:
      optionName - name of the option
      value - value of the option
    • setFloat

      public void setFloat(String optionName, float value)
      Description copied from interface: Options
      Sets the float value for the option.
      Specified by:
      setFloat in interface Options
      Parameters:
      optionName - name of the option
      value - value of the option
    • setCustomOption

      public void setCustomOption(String optionName, CustomOption value)
      Description copied from interface: Options
      Sets the Custom option value for the option.
      Specified by:
      setCustomOption in interface Options
      Parameters:
      optionName - name of the option
      value - the value
    • setByteArray

      public void setByteArray(String optionName, byte[] value)
      Description copied from interface: Options
      Sets the byte[] value for the given option name.
      Specified by:
      setByteArray in interface Options
      Parameters:
      optionName - the name of the option on which to save bytes.
      value - the value
    • setFile

      public void setFile(String optionName, File value)
      Description copied from interface: Options
      Sets the File value for the option.
      Specified by:
      setFile in interface Options
      Parameters:
      optionName - name of the option
      value - the value
    • setColor

      public void setColor(String optionName, Color value)
      Description copied from interface: Options
      Sets the Color value for the option
      Specified by:
      setColor in interface Options
      Parameters:
      optionName - name of the option
      value - Color to set
    • setFont

      public void setFont(String optionName, Font value)
      Description copied from interface: Options
      Sets the Font value for the option
      Specified by:
      setFont in interface Options
      Parameters:
      optionName - name of the option
      value - Font to set
    • setDate

      public void setDate(String optionName, Date value)
      Description copied from interface: Options
      Sets the Date value for the option.
      Specified by:
      setDate in interface Options
      Parameters:
      optionName - name of the option
      value - the Date to set
    • setKeyStroke

      public void setKeyStroke(String optionName, KeyStroke value)
      Description copied from interface: Options
      Sets the KeyStroke value for the option
      Specified by:
      setKeyStroke in interface Options
      Parameters:
      optionName - name of the option
      value - KeyStroke to set
    • setActionTrigger

      public void setActionTrigger(String optionName, ActionTrigger value)
      Description copied from interface: Options
      Sets the action trigger value for the option
      Specified by:
      setActionTrigger in interface Options
      Parameters:
      optionName - name of the option
      value - action trigger to set
    • setString

      public void setString(String optionName, String value)
      Description copied from interface: Options
      Set the String value for the option.
      Specified by:
      setString in interface Options
      Parameters:
      optionName - name of the option
      value - value of the option
    • setEnum

      public <T extends Enum<T>> void setEnum(String optionName, T value)
      Description copied from interface: Options
      Set the Enum value for the option.
      Specified by:
      setEnum in interface Options
      Parameters:
      optionName - name of the option
      value - Enum value of the option
    • getDefaultValue

      public Object getDefaultValue(String optionName)
      Description copied from interface: Options
      Returns the default value for the given option.
      Specified by:
      getDefaultValue in interface Options
      Parameters:
      optionName - the name of the option for which to retrieve the default value.
      Returns:
      the default value for the given option.
    • getPropertyEditor

      public PropertyEditor getPropertyEditor(String optionName)
      Description copied from interface: Options
      Get the property editor for the option with the given name. Note: This method must be called from the swing thread.
      Specified by:
      getPropertyEditor in interface Options
      Parameters:
      optionName - the option name
      Returns:
      either the PropertyEditor that was registered for this option or a default editor for the property type if one can be found; otherwise null.
    • getRegisteredPropertyEditor

      public PropertyEditor getRegisteredPropertyEditor(String optionName)
      Description copied from interface: Options
      Get the property editor that was registered for the specific option with the given name. Unlike the getPropertyEditor() method, this method does not have to be called from the swing thread
      Specified by:
      getRegisteredPropertyEditor in interface Options
      Parameters:
      optionName - the option name
      Returns:
      the PropertyEditor that was registered for this option.
    • contains

      public boolean contains(String optionName)
      Description copied from interface: Options
      Return true if a option exists with the given name.
      Specified by:
      contains in interface Options
      Parameters:
      optionName - option name
      Returns:
      true if there exists an option with the given name
    • getDescription

      public String getDescription(String optionName)
      Description copied from interface: Options
      Get the description for the given option name.
      Specified by:
      getDescription in interface Options
      Parameters:
      optionName - name of the option
      Returns:
      null if the description or option name does not exist
    • getHelpLocation

      public HelpLocation getHelpLocation(String optionName)
      Description copied from interface: Options
      Get the location for where help can be found for the option with the given name.
      Specified by:
      getHelpLocation in interface Options
      Parameters:
      optionName - name of the option
      Returns:
      null if the help location was not set on the option
    • isRegistered

      public boolean isRegistered(String optionName)
      Description copied from interface: Options
      Returns true if the specified option has been registered. Only registered names are saved.
      Specified by:
      isRegistered in interface Options
      Parameters:
      optionName - the option name
      Returns:
      true if registered
    • isDefaultValue

      public boolean isDefaultValue(String optionName)
      Description copied from interface: Options
      Returns true if the option with the given name's current value is the default value.
      Specified by:
      isDefaultValue in interface Options
      Parameters:
      optionName - the name of the option.
      Returns:
      true if the options has its current value equal to its default value.
    • restoreDefaultValues

      public void restoreDefaultValues()
      Description copied from interface: Options
      Restores all options contained herein to their default values.
      Specified by:
      restoreDefaultValues in interface Options
      See Also:
    • restoreDefaultValue

      public void restoreDefaultValue(String optionName)
      Description copied from interface: Options
      Restores the option denoted by the given name to its default value.
      Specified by:
      restoreDefaultValue in interface Options
      Parameters:
      optionName - The name of the option to restore
      See Also:
    • getChildOptions

      public List<Options> getChildOptions()
      Description copied from interface: Options
      Returns a list of Options objects that are nested one level down from this Options object.
      Specified by:
      getChildOptions in interface Options
      Returns:
      a list of Options objects that are nested one level down from this Options object.
    • getOptions

      public Options getOptions(String path)
      Description copied from interface: Options
      Returns a Options object that is a sub-options of this options.

      Note: the option path can have Options.DELIMITER characters which will be used to create a hierarchy with each element in the path resulting in sub-option of the previous path element.

      Specified by:
      getOptions in interface Options
      Parameters:
      path - the path for the sub-options object
      Returns:
      an Options object that is a sub-options of this options
    • setOptionsHelpLocation

      public void setOptionsHelpLocation(HelpLocation helpLocation)
      Description copied from interface: Options
      Set the location for where help can be found for this entire options object.
      Specified by:
      setOptionsHelpLocation in interface Options
      Parameters:
      helpLocation - location for help on the option
    • getOptionsHelpLocation

      public HelpLocation getOptionsHelpLocation()
      Description copied from interface: Options
      Returns the HelpLocation for this entire Options object.
      Specified by:
      getOptionsHelpLocation in interface Options
      Returns:
      the HelpLocation for this entire Options object.
    • registerOptionsEditor

      public void registerOptionsEditor(Supplier<OptionsEditor> editor)
      Description copied from interface: Options
      Register the options editor that will handle the editing for all the options or a sub-group of options.

      Note: we use a supplier of a custom editor, instead of a custom editor, to avoid creating PropertyEditors until needed. This allows us to use the same API in both GUI mode and headless mode. If GUI property editors are created in headless mode, exceptions may be thrown. This API will not use the supplier when in headless mode, this avoiding the creation of GUI components. For this to work correctly, clients using custom property editors must defer construction of the editor until the supplier is called.

      Specified by:
      registerOptionsEditor in interface Options
      Parameters:
      editor - a supplier for the custom editor panel to be used to edit the options or sub-group of options.
    • getOptionsEditor

      public OptionsEditor getOptionsEditor()
      Description copied from interface: Options
      Get the editor that will handle editing all the values in this options or sub group of options.
      Specified by:
      getOptionsEditor in interface Options
      Returns:
      null if no options editor was registered
    • createAlias

      public void createAlias(String aliasName, Options options, String optionsName)
      Description copied from interface: Options
      Create an alias in this options for an existing option in some other options object.
      Specified by:
      createAlias in interface Options
      Parameters:
      aliasName - the name within this options object that will actually refer to some other options object.
      options - the options object that has the actual option.
      optionsName - the name within the given options object of the actual option.
    • isAlias

      public boolean isAlias(String aliasName)
      Description copied from interface: Options
      Returns
      Specified by:
      isAlias in interface Options
      Parameters:
      aliasName - the name of the alias.
      Returns:
      a Options object that is a sub-options of this options.
    • setCategoryHelpLocation

      public void setCategoryHelpLocation(String categoryPath, HelpLocation helpLocation)
    • getCategoryHelpLocation

      public HelpLocation getCategoryHelpLocation(String categoryPath)
    • getID

      public String getID(String optionName)
      Description copied from interface: Options
      Returns a unique id for option in this options with the given name. This will be the full path name to the root options object.
      Specified by:
      getID in interface Options
      Parameters:
      optionName - the name of the option for which to get an ID;
      Returns:
      the unique ID for the given option.
    • getValueAsString

      public String getValueAsString(String optionName)
      Description copied from interface: Options
      Returns the value as a string for the given option.
      Specified by:
      getValueAsString in interface Options
      Parameters:
      optionName - the name of the option for which to retrieve the value as a string
      Returns:
      the value as a string for the given option.
    • getDefaultValueAsString

      public String getDefaultValueAsString(String optionName)
      Description copied from interface: Options
      Returns the default value as a string for the given option.
      Specified by:
      getDefaultValueAsString in interface Options
      Parameters:
      optionName - the name of the option for which to retrieve the default value as a string
      Returns:
      the default value as a string for the given option.
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • getLeafOptionNames

      public List<String> getLeafOptionNames()
      Description copied from interface: Options
      Returns a list of option names that immediately fall under this options. For example, if this options object had the following options named ("a", "b", "c.d"), only "a" and "b" would be returned. The "c.d" leaf option name could be returned by getOptions("c").getLeafOptionNames()
      Specified by:
      getLeafOptionNames in interface Options
      Returns:
      the list of the names of the options that are immediate children of this options object.
    • findPropertyEditor

      public static PropertyEditor findPropertyEditor(Class<?> originalValueClass)