// Copyright 2012 Jeeeyul Lee, Seoul, Korea // https://github.com/jeeeyul/pde-tools // // This module is multi-licensed and may be used under the terms // of any of the following licenses: // // EPL, Eclipse Public License, V1.0 or later, http://www.eclipse.org/legal // LGPL, GNU Lesser General Public License, V2.1 or later, http://www.gnu.org/licenses/lgpl.html // GPL, GNU General Public License, V2 or later, http://www.gnu.org/licenses/gpl.html // AL, Apache License, V2.0 or later, http://www.apache.org/licenses // BSD, BSD License, http://www.opensource.org/licenses/bsd-license.php // MIT, MIT License, http://www.opensource.org/licenses/MIT // // Please contact the author if you need another license. // This module is provided "as is", without warranties of any kind. package net.jeeeyul.eclipse.themes; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.eclipse.e4.ui.css.swt.CSSSWTConstants; import org.eclipse.swt.widgets.Widget; @SuppressWarnings("restriction") public class CSSClasses { private List<String> classes = new ArrayList<>(); public CSSClasses(String source) { if (source != null && !source.trim().isEmpty()) for (String name : source.split(" ")) classes.add(name); } public boolean add(String className) { if (classes.contains(className)) return false; return classes.add(className); } public boolean contains(String className) { return classes.contains(className); } public boolean remove(String className) { return classes.remove(className); } public static CSSClasses getStyleClasses(Widget w) { String literal = (String) w.getData(CSSSWTConstants.CSS_CLASS_NAME_KEY); return new CSSClasses(literal); } public static void setStyleClasses(Widget w, CSSClasses newStyleClasses) { w.setData(CSSSWTConstants.CSS_CLASS_NAME_KEY, newStyleClasses.toString()); } @Override public String toString() { if (classes.isEmpty()) return ""; Iterator<String> iter = classes.iterator(); StringBuilder sb = new StringBuilder(iter.next()); while (iter.hasNext()) sb.append(" ").append(iter.next()); return sb.toString(); } }