Package com.mucommander.conf

Source Code of com.mucommander.conf.MuPreferences

/*
* This file is part of muCommander, http://www.mucommander.com
* Copyright (C) 2002-2012 Maxence Bernard
*
* muCommander is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* muCommander is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program.  If not, see <http://www.gnu.org/licenses/>.
*/

package com.mucommander.conf;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;

import com.mucommander.RuntimeConstants;
import com.mucommander.commons.conf.Configuration;
import com.mucommander.commons.conf.ConfigurationException;
import com.mucommander.commons.conf.ConfigurationListener;
import com.mucommander.commons.conf.ValueList;
import com.mucommander.commons.runtime.JavaVersion;
import com.mucommander.commons.runtime.OsFamily;
import com.mucommander.ui.icon.FileIcons;

/**
* muCommander specific wrapper for the <code>com.mucommander.conf</code> API which is used to save 'static' configurations.
* 'static' configurations refer to properties that can be changed from the preferences dialog only.
* those properties do not change often.
*
* @author Nicolas Rinaudo, Maxence Bernard, Arik Hadas
*/
public class MuPreferences implements MuPreferencesAPI {

  // - Misc. variables -----------------------------------------------------
  // -----------------------------------------------------------------------
  /** Whether or not to automatically check for updates on startup. */
  public static final String  CHECK_FOR_UPDATE                  = "check_for_updates_on_startup";
  /** Default automated update behavior. */
  public static final boolean DEFAULT_CHECK_FOR_UPDATE          = true;
  /** Description of the format dates should be displayed with. */
  public static final String  DATE_FORMAT                       = "date_format";
  /** Default date format. */
  public static final String  DEFAULT_DATE_FORMAT               = "MM/dd/yy";
  /** Character used to separate years, months and days in a date. */
  public static final String  DATE_SEPARATOR                    = "date_separator";
  /** Default date separator. */
  public static final String  DEFAULT_DATE_SEPARATOR            = "/";
  /** Description of the format timestamps should be displayed with.*/
  public static final String  TIME_FORMAT                       = "time_format";
  /** Default time format. */
  public static final String  DEFAULT_TIME_FORMAT               = "hh:mm a";
  /** Language muCommander should use when looking for text.. */
  public static final String  LANGUAGE                          = "language";
  /** Whether or not to display compact file sizes. */
  public static final String  DISPLAY_COMPACT_FILE_SIZE         = "display_compact_file_size";
  /** Default file size display behavior. */
  public static final boolean DEFAULT_DISPLAY_COMPACT_FILE_SIZE = true;
  /** Whether or not to ask the user for confirmation before quitting muCommander. */
  public static final String  CONFIRM_ON_QUIT                   = "quit_confirmation";
  /** Default quitting behavior. */
  public static final boolean DEFAULT_CONFIRM_ON_QUIT           = true;
  /** Whether or not to display splash screen when starting muCommander. */
  public static final String  SHOW_SPLASH_SCREEN                = "show_splash_screen";
  /** Default splash screen behavior. */
  public static final boolean DEFAULT_SHOW_SPLASH_SCREEN        = true;
  /** Look and feel used by muCommander. */
  public static final String  LOOK_AND_FEEL                     = "lookAndFeel";
  /** All registered custom Look and feels. */
  public static final String  CUSTOM_LOOK_AND_FEELS             = "custom_look_and_feels";
  /** Separator used to tokenise the custom look and feels variable. */
  public static final String  CUSTOM_LOOK_AND_FEELS_SEPARATOR   = ";";
  /** Controls whether system notifications are enabled. */
  public static final String  ENABLE_SYSTEM_NOTIFICATIONS       = "enable_system_notifications";
  /** System notifications are enabled by default on platforms where a notifier is available and works well enough.
   * In particular, the system tray notifier is available under Linux+Java 1.6, but it doesn't work well so it is not
   * enabled by default. */
  public static final boolean DEFAULT_ENABLE_SYSTEM_NOTIFICATIONS = OsFamily.MAC_OS_X.isCurrent() ||
      (OsFamily.WINDOWS.isCurrent() && JavaVersion.JAVA_1_6.isCurrentOrHigher());
  /** List of encodings that are displayed in encoding selection components. */
  public static final String  PREFERRED_ENCODINGS               = "preferred_encodings";


  // - Log variables -------------------------------------------------------
  // -----------------------------------------------------------------------
  /** Section describing the log CONFIGURATION. */
  public static final String  LOG_SECTION                       = "log";
  /** Log level. */
  public static final String  LOG_LEVEL                         = LOG_SECTION + '.' + "level";
  /** Default log level. */
  public static final String  DEFAULT_LOG_LEVEL                 = "WARNING";
  /** Log buffer size, in number of messages. */
  public static final String  LOG_BUFFER_SIZE                   = LOG_SECTION + '.' + "buffer_size";
  /** Default log buffer size. Should be set to a low value to minimize memory usage, yet high enough to have most of
   * the recent log messages. */
  public static final int     DEFAULT_LOG_BUFFER_SIZE           = 200;


  // - Shell variables -----------------------------------------------------
  // -----------------------------------------------------------------------
  /** Section describing the shell CONFIGURATION. */
  public static final String  SHELL_SECTION                     = "shell";
  /** Shell invocation command (in case muCommander is not using the default one). */
  public static final String  CUSTOM_SHELL                      = SHELL_SECTION + '.' + "custom_command";
  /** Whether or not to use a custom shell invocation command. */
  public static final String  USE_CUSTOM_SHELL                  = SHELL_SECTION + '.' + "use_custom";
  /** Default custom shell behavior. */
  public static final boolean DEFAULT_USE_CUSTOM_SHELL          = false;
  /** Maximum number of items that should be present in the shell history. */
  public static final String  SHELL_HISTORY_SIZE                = SHELL_SECTION + '.' + "history_size";
  /** Default maximum shell history size. */
  public static final int     DEFAULT_SHELL_HISTORY_SIZE        = 100;
  /** Encoding used to read the shell output. */
  public static final String  SHELL_ENCODING                    = SHELL_SECTION + '.' + "encoding";
  /** Whether or not shell encoding should be auto-detected. */
  public static final String  AUTODETECT_SHELL_ENCODING         = SHELL_SECTION + '.' + "autodect_encoding";
  /** Default shell encoding auto-detection behaviour. */
  public static final boolean DEFAULT_AUTODETECT_SHELL_ENCODING = true;



  // - Mail variables ------------------------------------------------------
  // -----------------------------------------------------------------------
  /** Section describing mail CONFIGURATION. */
  public static final String MAIL_SECTION                       = "mail";
  /** Address of the SMTP server that should be used when sending mails. */
  public static final String SMTP_SERVER                        = MAIL_SECTION + '.' + "smtp_server";
  /** Outgoing TCP port to the SMTP server. */
  public static final String SMTP_PORT                          = MAIL_SECTION + '.' + "smtp_port";
  /** Default outgoing TCP port to the SMTP server. */
  public static final int    DEFAULT_SMTP_PORT                   = 25;
  /** Name under which mails sent by muCommander should appear. */
  public static final String MAIL_SENDER_NAME                   = MAIL_SECTION + '.' + "sender_name";
  /** Address which mails sent by muCommander should be replied to. */
  public static final String MAIL_SENDER_ADDRESS                = MAIL_SECTION + '.' + "sender_address";



  // - Command bar variables -----------------------------------------------
  // -----------------------------------------------------------------------
  /** Section describing the command bar CONFIGURATION. */
  public static final String  COMMAND_BAR_SECTION               = "command_bar";
  /** Whether or not the command bar is visible. */
  public static final String  COMMAND_BAR_VISIBLE               = COMMAND_BAR_SECTION + '.' + "visible";
  /** Default command bar visibility. */
  public static final boolean DEFAULT_COMMAND_BAR_VISIBLE       = true;
  /** Scale factor of commandbar icons. */
  public static final String  COMMAND_BAR_ICON_SCALE            = COMMAND_BAR_SECTION + '.' + "icon_scale";
  /** Default scale factor of commandbar icons. */
  public static final float   DEFAULT_COMMAND_BAR_ICON_SCALE    = 1.0f;



  // - Status bar variables ------------------------------------------------
  // -----------------------------------------------------------------------
  /** Section describing the status bar CONFIGURATION. */
  public static final String STATUS_BAR_SECTION                 = "status_bar";
  /** Whether or not the status bar is visible. */
  public static final String STATUS_BAR_VISIBLE                 = STATUS_BAR_SECTION + '.' + "visible";
  /** Default status bar visibility. */
  public static final boolean DEFAULT_STATUS_BAR_VISIBLE        = true;



  // - Toolbar variables ---------------------------------------------------
  // -----------------------------------------------------------------------
  /** Section describing the toolbar CONFIGURATION. */
  public static final String TOOLBAR_SECTION                    = "toolbar";
  /** Whether or not the toolbar is visible. */
  public static final String TOOLBAR_VISIBLE                    = TOOLBAR_SECTION + '.' + "visible";
  /** Default toolbar visibility. */
  public static final boolean DEFAULT_TOOLBAR_VISIBLE           = true;
  /** Scale factor of toolbar icons. */
  public static final String  TOOLBAR_ICON_SCALE                = TOOLBAR_SECTION + '.' + "icon_scale";
  /** Default scale factor of toolbar icons. */
  public static final float   DEFAULT_TOOLBAR_ICON_SCALE        = 1.0f;


  // - Volume list ---------------------------------------------------------
  // -----------------------------------------------------------------------
  /** Section describing the volume list CONFIGURATION. */
  public static final String VOLUME_LIST_SECTION                 = "volume_list";
  /** Regexp that allows volumes to be excluded from the list. */
  public static final String VOLUME_EXCLUDE_REGEXP               = VOLUME_LIST_SECTION + '.' + "exclude_regexp";


  // - FileTable variables ---------------------------------------------------
  // -----------------------------------------------------------------------
  /** Section describing the folders view CONFIGURATION. */
  public static final String  FILE_TABLE_SECTION                 = "file_table";
  /** Identifier of the left file table. */
  public static final String  LEFT                               = "left";
  /** Identifier of the right file table. */
  public static final String  RIGHT                              = "right";
  /** Whether or not to display hidden files. */
  public static final String  SHOW_HIDDEN_FILES                  = FILE_TABLE_SECTION + '.' + "show_hidden_files";
  /** Default hidden files visibility. */
  public static final boolean DEFAULT_SHOW_HIDDEN_FILES          = true;
  /** Whether or not to display OS X .DS_Store files. */
  public static final String  SHOW_DS_STORE_FILES                = FILE_TABLE_SECTION + '.' + "show_ds_store_files";
  /** Default .DS_Store files visibility. */
  public static final boolean DEFAULT_SHOW_DS_STORE_FILES        = true;
  /** Whether or not to display system folders. */
  public static final String  SHOW_SYSTEM_FOLDERS                = FILE_TABLE_SECTION + '.' + "show_system_folders";
  /** Default system folders visibility. */
  public static final boolean DEFAULT_SHOW_SYSTEM_FOLDERS        = true;
  /** Scale factor of file table icons. */
  public static final String  TABLE_ICON_SCALE                   = FILE_TABLE_SECTION + '.' + "icon_scale";
  /** Default scale factor of file table icons. */
  public static final float   DEFAULT_TABLE_ICON_SCALE           = 1.0f;
  /** Whether or not columns should resize themselves automatically. */
  public static final String  AUTO_SIZE_COLUMNS                  = FILE_TABLE_SECTION + '.' + "auto_size_columns";
  /** Default columns auto-resizing behavior. */
  public static final boolean DEFAULT_AUTO_SIZE_COLUMNS          = true;
  /** Controls if and when system file icons should be used instead of custom file icons. */
  public static final String  USE_SYSTEM_FILE_ICONS              = FILE_TABLE_SECTION + '.' + "use_system_file_icons";
  /** Default system file icons policy. */
  public static final String  DEFAULT_USE_SYSTEM_FILE_ICONS      = FileIcons.USE_SYSTEM_ICONS_APPLICATIONS;
  /** Controls whether folders are displayed first in the FileTable or mixed with regular files. */
  public static final String  SHOW_FOLDERS_FIRST                 = FILE_TABLE_SECTION + '.' + "show_folders_first";
  /** Default value for 'Show folders first' option. */
  public static final boolean DEFAULT_SHOW_FOLDERS_FIRST         = true;
  /** Controls whether symlinks should be followed when changing directory. */
  public static final String  CD_FOLLOWS_SYMLINKS                = FILE_TABLE_SECTION + '.' + "cd_follows_symlinks";
  /** Default value for 'Follow symlinks when changing directory' option. */
  public static final boolean DEFAULT_CD_FOLLOWS_SYMLINKS        = false;
  /** Whether to always show the header of a single tab or not */
  public static final String SHOW_SINGLE_TAB_HEADER         = FILE_TABLE_SECTION + '.' + "show_single_tab_header";
  /** Default value for 'Always show single tab header" */
  public static final boolean DEFAULT_SHOW_TAB_HEADER     = false;

  /** Name of the root element's attribute that contains the version of muCommander used to write the CONFIGURATION file. */
  static final String VERSION_ATTRIBUTE = "version";



  // - Mac OS X variables --------------------------------------------------
  // -----------------------------------------------------------------------
  /** Section describing muCommander's Mac OS X integration. */
  public static final String  MAC_OSX_SECTION                   = "macosx";
  /** Whether or not to use the brushed metal look. */
  public static final String  USE_BRUSHED_METAL                 = MAC_OSX_SECTION + '.' + "brushed_metal_look";
  /** Default brushed metal look behavior. */
  // At the time of writing, the 'brushed metal' look causes the JVM to crash randomly under Leopard (10.5)
  // so we disable brushed metal on that OS version but leave it for earlier versions where it works fine.
  // See http://www.mucommander.com/forums/viewtopic.php?f=4&t=746 for more info about this issue.
  public static final boolean DEFAULT_USE_BRUSHED_METAL         = false;
  /** Whether or not to use a Mac OS X style menu bar. */
  public static final String  USE_SCREEN_MENU_BAR               = MAC_OSX_SECTION + '.' + "screen_menu_bar";
  /** Default menu bar type. */
  public static final boolean DEFAULT_USE_SCREEN_MENU_BAR       = true;



  // - Startup folder variables --------------------------------------------
  // -----------------------------------------------------------------------
  /** Section describing muCommander's startup folders. */
  public static final String  STARTUP_FOLDER_SECTION            = "startup_folder";
  /** Startup folder type (for the two panels) */
  public static final String  STARTUP_FOLDERS                   = STARTUP_FOLDER_SECTION + '.' + "on_startup";
  /** The custom folder should be used on startup. */
  public static final String  STARTUP_FOLDERS_CUSTOM            = "customFolders";
  /** The last visited folder should be used on startup. */
  public static final String  STARTUP_FOLDERS_LAST              = "lastFolders";
  /** Default startup folder type. */
  public static final String  DEFAULT_STARTUP_FOLDERS           = STARTUP_FOLDERS_LAST;
  /** Section describing custom folders that were set for the two panel. */
  public static final String  CUSTOM_FOLDERS_SECTION            = STARTUP_FOLDER_SECTION + '.' + "custom_folders";
  /** Path to a custom startup folders Section describing the right panel's startup folder. */
  public static final String  RIGHT_CUSTOM_FOLDER            = CUSTOM_FOLDERS_SECTION + '.' + RIGHT;
  /** Section describing the left panel's startup folder. */
  public static final String  LEFT_CUSTOM_FOLDER            = CUSTOM_FOLDERS_SECTION + '.' + LEFT;
 


  // - Folder monitoring variables -----------------------------------------
  // -----------------------------------------------------------------------
  /** Section describing the automatic folder refresh behavior. */
  public static final String REFRESH_SECTION                    = "auto_refresh";
  /** Frequency at which the current folder is checked for updates, -1 to disable auto refresh. */
  public static final String REFRESH_CHECK_PERIOD               = REFRESH_SECTION + '.' + "check_period";
  /** Default folder refresh frequency. */
  public static final long   DEFAULT_REFRESH_CHECK_PERIOD       = 3000;
  /** Minimum amount of time a folder should be checked for updates after it's been refreshed. */
  public static final String WAIT_AFTER_REFRESH                 = REFRESH_SECTION + '.' + "wait_after_refresh";
  /** Default minimum amount of time between two refreshes. */
  public static final long   DEFAULT_WAIT_AFTER_REFRESH         = 10000;



  // - Progress dialog variables -------------------------------------------
  // -----------------------------------------------------------------------
  /** Section describing the behavior of the progress dialog. */
  public static final String  PROGRESS_DIALOG_SECTION           = "progress_dialog";
  /** Whether the progress dialog is expanded or not. */
  public static final String  PROGRESS_DIALOG_EXPANDED          = PROGRESS_DIALOG_SECTION + '.' + "expanded";
  /** Default progress dialog expanded state. */
  public static final boolean DEFAULT_PROGRESS_DIALOG_EXPANDED  = true;
  /** Controls whether or not the progress dialog should be closed when the job is finished. */
  public static final String PROGRESS_DIALOG_CLOSE_WHEN_FINISHED = PROGRESS_DIALOG_SECTION + '.' + "close_when_finished";
  /** Default progress dialog behavior when the job is finished. */
  public static final boolean DEFAULT_PROGRESS_DIALOG_CLOSE_WHEN_FINISHED  = true;



  // - Variables used for themes -------------------------------------------
  // -----------------------------------------------------------------------
  /** Section controlling which theme should be applied to muCommander. */
  public static final String THEME_SECTION                      = "theme";
  /** Current theme type (custom, predefined or user defined). */
  public static final String THEME_TYPE                         = THEME_SECTION + '.' + "type";
  /** Describes predefined themes. */
  public static final String THEME_PREDEFINED                   = "predefined";
  /** Describes custom themes. */
  public static final String THEME_CUSTOM                       = "custom";
  /** Describes the user theme. */
  public static final String THEME_USER                         = "user";
  /** Default theme type. */
  public static final String DEFAULT_THEME_TYPE                 = THEME_PREDEFINED;
  /** Name of the current theme. */
  public static final String THEME_NAME                         = THEME_SECTION + '.' + "path";
  /** Default current theme name. */
  public static final String DEFAULT_THEME_NAME                 = RuntimeConstants.DEFAULT_THEME;



  // - Variables used by Bonjour/Zeroconf support --------------------------
  // -----------------------------------------------------------------------
  /** Section controlling parameters related to Bonjour/Zeroconf support. */
  public static final String  BONJOUR_SECTION                   = "bonjour";
  /** Used do determine whether discovery of Bonjour services should be activated or not. */
  public static final String  ENABLE_BONJOUR_DISCOVERY          = BONJOUR_SECTION + '.' + "discovery_enabled";
  /** Default Bonjour discovery activation used on startup. */
  public static final boolean DEFAULT_ENABLE_BONJOUR_DISCOVERY  = OsFamily.MAC_OS_X.isCurrent() ? false : true;



  // - Variables used for FTP ----------------------------------------------
  // -----------------------------------------------------------------------
  /** Section containing all FTP variables. */
  public static final String FTP_SECTION                        = "ftp";
  /** Controls whether hidden files should be listed by the client (LIST -al instead of LIST -l). */
  public static final String LIST_HIDDEN_FILES                  = FTP_SECTION + '.' + "list_hidden_files";
  /** Default value for {@link #LIST_HIDDEN_FILES}. */
  public static final boolean DEFAULT_LIST_HIDDEN_FILES         = false;


  // - Variables used for SMB ----------------------------------------------
  // -----------------------------------------------------------------------
  /** Section containing all SMB variables. */
  public static final String SMB_SECTION                        = "smb";
  /** Controls the authentication protocol to use when connecting to SMB servers. */
  public static final String SMB_LM_COMPATIBILITY               = SMB_SECTION + '.' + "lm_compatibility";
  /** Default value for {@link #SMB_LM_COMPATIBILITY}. */
  public static final int DEFAULT_SMB_LM_COMPATIBILITY          = 0;
  /** Controls the authentication protocol to use when connecting to SMB servers. */
  public static final String SMB_USE_EXTENDED_SECURITY          = SMB_SECTION + '.' + "use_extended_security";
  /** Default value for {@link #SMB_USE_EXTENDED_SECURITY}. */
  public static final boolean DEFAULT_SMB_USE_EXTENDED_SECURITY = false;

 
  private static final String ROOT_ELEMENT = "preferences";

  // - Instance fields -----------------------------------------------------
  // -----------------------------------------------------------------------
  private Configuration configuration;
 
  private String configurationVersion;

  /**
   * Prevents instantiation of this class from outside of this package.
   */
  MuPreferences() {
    configuration = new Configuration(MuPreferencesFile.getPreferencesFile(), new VersionedXmlConfigurationReaderFactory(),
        new VersionedXmlConfigurationWriterFactory(ROOT_ELEMENT));
  }

  // - Configuration reading / writing -------------------------------------
  // -----------------------------------------------------------------------
  /**
   * Loads the muCommander CONFIGURATION.
   * @throws IOException            if an I/O error occurs.
   * @throws ConfigurationException if a CONFIGURATION related error occurs.
   */
  void read() throws IOException, ConfigurationException {
    VersionedXmlConfigurationReader reader = new VersionedXmlConfigurationReader();
    configuration.read(reader);

    // Ensure backward compatibility
    configurationVersion = reader.getVersion();
    if(configurationVersion == null || !configurationVersion.equals(RuntimeConstants.VERSION)) {
      // Rename preferences that have changed (from v0.8.5)
      configuration.renameVariable("show_hidden_files", SHOW_HIDDEN_FILES);
      configuration.renameVariable("auto_size_columns", AUTO_SIZE_COLUMNS);
      configuration.renameVariable("show_toolbar",      TOOLBAR_VISIBLE);
      configuration.renameVariable("show_status_bar",   STATUS_BAR_VISIBLE);
      configuration.renameVariable("show_command_bar",  COMMAND_BAR_VISIBLE);
    }

    // Initializes MAC OS X specific values
    if(OsFamily.MAC_OS_X.isCurrent()) {
      if(configuration.getVariable(SHELL_ENCODING) == null) {
        configuration.setVariable(SHELL_ENCODING, "UTF-8");
        configuration.setVariable(AUTODETECT_SHELL_ENCODING, false);
      }
    }
  }

  /**
   * Saves the muCommander CONFIGURATION.
   * @throws IOException            if an I/O error occurs.
   * @throws ConfigurationException if a CONFIGURATION related error occurs.
   */
  void write() throws IOException, ConfigurationException {
    if(configurationVersion != null && !configurationVersion.equals(RuntimeConstants.VERSION)) {
      // Clear the configuration before saving to drop preferences which are unused anymore
      Configuration conf = new Configuration(MuPreferencesFile.getPreferencesFile(), new VersionedXmlConfigurationReaderFactory(),
          new VersionedXmlConfigurationWriterFactory(ROOT_ELEMENT));

      for (MuPreference preference : MuPreference.values())
        conf.setVariable(preference.toString(), configuration.getVariable(preference.toString()));
     
      // Remove preferences which are not relevant if we're not using MAC
      if (!OsFamily.MAC_OS_X.isCurrent()) {
        conf.removeVariable(USE_BRUSHED_METAL);
        conf.removeVariable(USE_SCREEN_MENU_BAR);
      }

      configuration = conf;
    }

    configuration.write();
  }

  // - Configuration listening -----------------------------------------------
  // -------------------------------------------------------------------------
  /**
   * Adds the specified object to the list of registered CONFIGURATION listeners.
   * @param listener object to register as a CONFIGURATION listener.
   * @see            #removeConfigurationListener(ConfigurationListener)
   */
  void addConfigurationListener(ConfigurationListener listener) {configuration.addConfigurationListener(listener);}

  /**
   * Removes the specified object from the list of registered CONFIGURATION listeners.
   * @param listener object to remove from the list of registered CONFIGURATION listeners.
   * @see            #addConfigurationListener(ConfigurationListener)
   */
  void removeConfigurationListener(ConfigurationListener listener) {configuration.removeConfigurationListener(listener);}


  // - Configuration source --------------------------------------------------
  // -------------------------------------------------------------------------
  /**
   * Sets the path to the CONFIGURATION file.
   * @param  file                  path to the file that should be used for CONFIGURATION storage.
   * @throws FileNotFoundException if the specified file is not a valid file.
   * @see                          #getConfigurationFile()
   */
  void setConfigurationFile(String file) throws FileNotFoundException {
    configuration.setSource(MuPreferencesFile.getPreferencesFile(file));
  }

  /**
   * Check whether the preferences file exists
   * @return             true if the preferences file exits, false otherwise.
   * @throws IOException if an error occured.
   */
  boolean isFileExists() throws IOException {
    return configuration.getSource().isExists();
  }
 
  /////////////////////////////////////
  // MuPreferencesAPI implementation //
  /////////////////////////////////////

  public boolean setVariable(MuPreference preference, String value) {
    return configuration.setVariable(preference.toString(), value);
  }

  public boolean setVariable(MuPreference preference, int value) {
    return configuration.setVariable(preference.toString(), value);
  }

  public boolean setVariable(MuPreference preference, List<String> value,
      String separator) {
    return configuration.setVariable(preference.toString(), value, separator);
  }

  public boolean setVariable(MuPreference preference, float value) {
    return configuration.setVariable(preference.toString(), value);
  }

  public boolean setVariable(MuPreference preference, boolean value) {
    return configuration.setVariable(preference.toString(), value);
  }

  public boolean setVariable(MuPreference preference, long value) {
    return configuration.setVariable(preference.toString(), value);
  }

  public boolean setVariable(MuPreference preference, double value) {
    return configuration.setVariable(preference.toString(), value);
  }

  public String getVariable(MuPreference preference) {
    return configuration.getVariable(preference.toString());
  }
 
  public String getVariable(MuPreference preference, String value) {
    return configuration.getVariable(preference.toString(), value);
  }

  public int getVariable(MuPreference preference, int value) {
    return configuration.getVariable(preference.toString(), value);
  }

  public List<String> getVariable(MuPreference preference, List<String> value, String separator) {
    return configuration.getVariable(preference.toString(), value, separator);
  }

  public float getVariable(MuPreference preference, float value) {
    return configuration.getVariable(preference.toString(), value);
  }

  public boolean getVariable(MuPreference preference, boolean value) {
    return configuration.getVariable(preference.toString(), value);
  }

  public long getVariable(MuPreference preference, long value) {
    return configuration.getVariable(preference.toString(), value);
  }

  public double getVariable(MuPreference preference, double value) {
    return configuration.getVariable(preference.toString(), value);
  }
 
  public ValueList getListVariable(MuPreference preference, String separator) {
    return configuration.getListVariable(preference.toString(), separator);
  }
 
  public boolean getBooleanVariable(String name) {
    return configuration.getBooleanVariable(name);
  }
 
  public String  getVariable(String name) {
    return configuration.getVariable(name);
  }
 
  public boolean isVariableSet(MuPreference preference) {
    return configuration.isVariableSet(preference.toString());
  }
 
  public String removeVariable(String name) {
    return configuration.removeVariable(name);
  }
}
TOP

Related Classes of com.mucommander.conf.MuPreferences

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.