/******************************************************************************* * 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; } }