content: /**
   *  Copyright (c) 2013-2016 Angelo ZERR.
   *  All rights reserved. This program and the accompanying materials
   *  are made available under the terms of the Eclipse Public License v1.0
   *  which accompanies this distribution, and is available at
   *  http://www.eclipse.org/legal/epl-v10.html
   *
   *  Contributors:
   *  Angelo Zerr <angelo.zerr@gmail.com> - initial API and implementation
   */
  package tern.eclipse.ide.internal.core.preferences;
  
  import org.eclipse.core.resources.IProject;
  import org.eclipse.core.runtime.Preferences;
  
  import tern.eclipse.ide.core.ITernServerType;
  import tern.eclipse.ide.core.TernCorePlugin;
  import tern.eclipse.ide.core.preferences.PreferencesSupport;
  import tern.eclipse.ide.core.preferences.TernCorePreferenceConstants;
  import tern.utils.StringUtils;
  
  public class TernCorePreferencesSupport {
  
  	private static final String NODES_QUALIFIER = TernCorePlugin.PLUGIN_ID;
  	private static final Preferences store = TernCorePlugin.getDefault()
  			.getPluginPreferences();
  	private PreferencesSupport preferencesSupport;
  
  	private TernCorePreferencesSupport() {
  		preferencesSupport = new PreferencesSupport(TernCorePlugin.PLUGIN_ID,
  				store);
  	}
  
  	private static TernCorePreferencesSupport instance = null;
  
  	public static TernCorePreferencesSupport getInstance() {
  		if (instance == null) {
  			instance = new TernCorePreferencesSupport();
  		}
  		return instance;
  	}
  
  	public ITernServerType getServerType() {
  		String id = preferencesSupport
  				.getWorkspacePreferencesValue(TernCorePreferenceConstants.TERN_SERVER_TYPE);
  		return TernCorePlugin.getTernServerTypeManager().findTernServerType(id);
  	}
  
  	/**
  	 * Returns true if JSON request/response can be traced inside Eclipse
  	 * console and false otherwise.
  	 * 
  	 * @param project
  	 * @return true if JSON request/response can be traced inside Eclipse
  	 *         console and false otherwise.
  	 */
  	public boolean isTraceOnConsole(IProject project) {
  		String result = preferencesSupport.getPreferencesValue(
  				TernCorePreferenceConstants.TRACE_ON_CONSOLE, null, project);
  		return StringUtils.asBoolean(result, false);
  	}
  
  	/**
  	 * Returns true if tern plugins can be loaded from the project root and
  	 * false otherwise.
  	 * 
  	 * @param project
  	 * @return true if tern plugins can be loaded from the project root and
  	 *         false otherwise.
  	 * @see https://github.com/marijnh/tern/commit/154
  	 *      b0587a64eea193d124005e03d80065ac310e2
  	 */
  	public boolean isLoadingLocalPlugins(IProject project) {
  		String result = preferencesSupport.getPreferencesValue(
  				TernCorePreferenceConstants.LOADING_LOCAL_PLUGINS, null,
  				project);
  		return StringUtils.asBoolean(result, false);
  	}
  
  	/**
  	 * Return false if Tern requests, like autocompletion should not be allowed
  	 * to run asynchronously and timeout.
  	 * 
  	 * @param project
  	 * @return true if asynchronous requests should not be allowed.
  	 */
  	public boolean isDisableAsynchronousReques(IProject project) {
  		String result = preferencesSupport.getPreferencesValue(
  				TernCorePreferenceConstants.DISABLE_ASYNC_REQUESTS, null,
  				project);
  		return StringUtils.asBoolean(result, false);
  	}
  
  	/**
  	 * Returns the used tern repository name for the given project.
  	 * 
  	 * @param project
  	 * @return the used tern repository name for the given project.
  	 */
  	public String getUsedTernRepositoryName(IProject project) {
  		return preferencesSupport
  				.getPreferencesValue(
  						TernCorePreferenceConstants.USED_REPOSITORY_NAME, null,
  						project);
  
  	}
  
  }
  