blob: 9a2b000632ed5c73a28138b010ea71e24bdd4b33 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010 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.wst.html.core.internal.format;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
import org.eclipse.wst.html.core.internal.HTMLCorePlugin;
import org.eclipse.wst.html.core.internal.preferences.HTMLCorePreferenceNames;
import org.w3c.dom.Node;
import com.ibm.icu.util.StringTokenizer;
public class HTMLFormattingUtil {
private Set fInlineElements;
public HTMLFormattingUtil() {
fInlineElements = getInlineSet();
}
public boolean isInline(Node node) {
return node != null && fInlineElements.contains(node.getNodeName().toLowerCase(Locale.US));
}
public boolean shouldSkipIndentForNode(Node node) {
return isInline(node.getParentNode());
}
/**
* Returns an array of the element names considered as "inline" for the purposes of formatting.
* This list represents those stored in the preference store when invoked.
*
* @return An array of element names considered to be "inline"
*/
public static Object[] getInlineElements() {
return getInlineSet().toArray();
}
/**
* Stores the element names to the preference store to be considered as "inline"
*
* @param elements The element names considered to be "inline"
*/
public static void exportToPreferences(Object[] elements) {
if (elements != null) {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < elements.length; i++) {
if (i > 0)
buffer.append(',');
buffer.append(elements[i]);
}
HTMLCorePlugin.getDefault().getPluginPreferences().setValue(HTMLCorePreferenceNames.INLINE_ELEMENTS, buffer.toString());
}
}
/**
* Returns an array of the default element names considered as "inline" for the purposes of formatting.
*
* @return An array of the default element names considered to be "inline"
*/
public static Object[] getDefaultInlineElements() {
String inline = HTMLCorePlugin.getDefault().getPluginPreferences().getDefaultString(HTMLCorePreferenceNames.INLINE_ELEMENTS);
Set defaults = new HashSet();
StringTokenizer tokenizer = new StringTokenizer(inline, ",");
while (tokenizer.hasMoreTokens()) {
defaults.add(tokenizer.nextToken());
}
return defaults.toArray();
}
private static Set getInlineSet() {
String inline = HTMLCorePlugin.getDefault().getPluginPreferences().getString(HTMLCorePreferenceNames.INLINE_ELEMENTS);
Set elements = new HashSet();
StringTokenizer tokenizer = new StringTokenizer(inline, ",");
while (tokenizer.hasMoreTokens()) {
elements.add(tokenizer.nextToken());
}
return elements;
}
}