Package org.eclipse.wst.html.core.internal.format

Source Code of org.eclipse.wst.html.core.internal.format.HTMLFormattingUtil

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

Related Classes of org.eclipse.wst.html.core.internal.format.HTMLFormattingUtil

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.