/******************************************************************************* * Copyright (c) 2007, 2015 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.internal.webapp.data; import java.util.List; import java.util.StringTokenizer; import org.eclipse.core.runtime.Platform; import org.eclipse.help.internal.base.HelpBasePlugin; import org.eclipse.help.internal.util.ProductPreferences; /** * Utility class for parsing the CSS preferences */ public class CssUtil { private final static String cssLink1 = "<link rel=\"stylesheet\" href=\""; //$NON-NLS-1$ private static final String cssLink2 = "\" type=\"text/css\"></link>\n"; //$NON-NLS-1$ private static String replaceParameters(String input) { final String OS = "${os}"; //$NON-NLS-1$ int index = input.indexOf(OS); if (index < 0) { return input; } String result = input.substring(0, index) + Platform.getOS() + input.substring(index + OS.length()); return replaceParameters(result); } /** * @param filenames * @return */ public static String[] getCssFilenames(String filenames ) { if (filenames == null) { return new String[0]; } StringTokenizer tok = new StringTokenizer(filenames , ","); //$NON-NLS-1$ String[] result = new String[tok.countTokens()]; for (int i = 0; tok.hasMoreTokens(); i++) { result[i] = replaceParameters(tok.nextToken().trim()); } return result; } public static void addCssFiles(final String preference, List<String> list) { String topicCssPath = Platform.getPreferencesService().getString(HelpBasePlugin.PLUGIN_ID, preference, "", null); //$NON-NLS-1$ String[] cssFiles = CssUtil.getCssFilenames(topicCssPath); for (String cssFile : cssFiles) { list.add(cssFile); } } public static String createCssIncludes(List<String> cssFiles, String backPath) { StringBuffer script = new StringBuffer(); for (String cssPath : cssFiles) { script.append(cssLink1); script.append(fixCssPath(cssPath, backPath)); script.append(cssLink2); } return script.toString(); } /* * Substitute for PLUGINS_ROOT and PRODUCT_PLUGIN */ private static String fixCssPath(String path, String prefix) { String newPath = ProductPreferences.resolveSpecialIdentifiers(path); return prefix + "content" + newPath; //$NON-NLS-1$ } }