blob: 3192137caf7e12d9d22cdf5ce75f0983f2eeb028 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2016 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.help.ui.internal.preferences;
import java.net.MalformedURLException;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.preferences.DefaultScope;
import org.eclipse.core.runtime.preferences.IEclipsePreferences;
import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.help.internal.HelpPlugin;
import org.eclipse.help.internal.base.IHelpBaseConstants;
import org.eclipse.help.ui.internal.HelpUIPlugin;
import org.osgi.service.prefs.BackingStoreException;
public class ICPreferences {
public final static String DELIMITER = ","; //$NON-NLS-1$
public static void setICs(List<IC> ics)
{
String name = "", host = "", path = "", protocol="", port = "", enabled = ""; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$ //$NON-NLS-6$
for (int i=0;i<ics.size();i++)
{
name += ics.get(i).getName() + DELIMITER;
protocol += ics.get(i).getProtocol() + DELIMITER;
host += ics.get(i).getHost() + DELIMITER;
port += ics.get(i).getPort() + DELIMITER;
path += ics.get(i).getPath() + DELIMITER;
enabled += ics.get(i).isEnabled() + DELIMITER;
}
// Remove trailing commas
if(ics.size()!=0)
{
name = name.substring(0,name.length()-1);
protocol = protocol.substring(0,protocol.length()-1);
host = host.substring(0,host.length()-1);
port = port.substring(0,port.length()-1);
path = path.substring(0,path.length()-1);
enabled = enabled.substring(0,enabled.length()-1);
}
set("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_NAME, name); //$NON-NLS-1$
set("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_HOST, host); //$NON-NLS-1$
set("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_PATH, path); //$NON-NLS-1$
set("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_PROTOCOL, protocol); //$NON-NLS-1$
set("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_PORT, port); //$NON-NLS-1$
set("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_ICEnabled, enabled); //$NON-NLS-1$
HelpPlugin.getTocManager().clearCache();
}
public static List<IC> getICs()
{
return prefsToICs(
ICPreferences.get("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_NAME).split(DELIMITER), //$NON-NLS-1$
ICPreferences.get("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_PROTOCOL).split(DELIMITER), //$NON-NLS-1$
ICPreferences.get("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_HOST).split(DELIMITER), //$NON-NLS-1$
ICPreferences.get("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_PORT).split(DELIMITER), //$NON-NLS-1$
ICPreferences.get("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_PATH).split(DELIMITER), //$NON-NLS-1$
ICPreferences.get("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_ICEnabled).split(DELIMITER)); //$NON-NLS-1$
}
public static List<IC> prefsToICs(String names[],String protocols[],String hosts[],String ports[],String paths[],String states[])
{
List<IC> ics = new ArrayList<>();
for (int i=0;i<names.length;i++)
{
if (!names[i].equals("")) //$NON-NLS-1$
{
try {
IC ic = new IC(
names[i],
(protocols.length>i ? protocols[i] : "http") + "://" + //$NON-NLS-1$ //$NON-NLS-2$
hosts[i]+":"+ //$NON-NLS-1$
ports[i]+
paths[i],
"true".equalsIgnoreCase(states[i])); //$NON-NLS-1$
ics.add(ic);
} catch (MalformedURLException e) {
HelpUIPlugin.logError(e.getMessage(), e);
}
}
}
return ics;
}
public static List<IC> getDefaultICs()
{
return prefsToICs(
getDefault("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_NAME).split(DELIMITER), //$NON-NLS-1$
getDefault("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_PROTOCOL).split(DELIMITER), //$NON-NLS-1$
getDefault("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_HOST).split(DELIMITER), //$NON-NLS-1$
getDefault("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_PORT).split(DELIMITER), //$NON-NLS-1$
getDefault("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_PATH).split(DELIMITER), //$NON-NLS-1$
getDefault("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_ICEnabled).split(DELIMITER)); //$NON-NLS-1$
}
/**
* Returns a default preference for the given name
*
* @param plugin - Name of the plugin containing this preference
* @param name - Name of the preference to retrieve
* @return value, or empty string if no preference found
*/
public static String getDefault(String plugin,String name)
{
return getDefaultNode(plugin).get(name, ""); //$NON-NLS-1$
}
public static void setRemoteHelp(boolean enabled)
{
set("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_ON,enabled+""); //$NON-NLS-1$ //$NON-NLS-2$
HelpPlugin.getTocManager().clearCache();
}
public static void setRemoteHelpPreferred(boolean remotePreferred)
{
set("org.eclipse.help.base",IHelpBaseConstants.P_KEY_REMOTE_HELP_PREFERRED,remotePreferred+""); //$NON-NLS-1$ //$NON-NLS-2$
HelpPlugin.getTocManager().clearCache();
}
/**
* Sets a preference
*
* @param plugin - Name of the plugin containing this preference
* @param name - Name of the preference
* @param value - Value to set
*/
public static void set(String plugin,String name,String value)
{
set(getNode(plugin),name,value);
}
/**
* Set a preference in the given node.
*
* @param node
* @param name
* @param value
*/
public static void set(IEclipsePreferences node,String name,String value)
{
node.put(name, value);
try {
node.flush();
} catch (BackingStoreException e) {} //Nothing we can do, move on
}
/**
* Returns the preference found for the given name
*
* @param plugin - Name of the plugin containing this preference
* @param name - Name of the preference to retrieve
* @return value, or empty string if no preference found
*/
public static String get(String plugin,String name)
{
return getNode(plugin).get(name, ""); //$NON-NLS-1$
}
/**
* Get the IEclipsePreferences node for the given plugin
*
* @param plugin
* @return
*/
public static IEclipsePreferences getNode(String plugin)
{
IEclipsePreferences p = InstanceScope.INSTANCE.getNode(plugin);
return p;
}
/**
* Get the default IEclipsePreferences node for the given plugin
*
* @param plugin
* @return
*/
public static IEclipsePreferences getDefaultNode(String plugin)
{
IEclipsePreferences p = DefaultScope.INSTANCE.getNode(plugin);
return p;
}
}