/* * Copyright (c) 2003-2004 Christopher Lenz and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Common Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/cpl-v10.html * * Contributors: * Christopher Lenz - initial API and implementation * * $Id: CssOutlineLabelProvider.java,v 1.1 2004-09-02 18:11:49 jsurfer Exp $ */ package net.sourceforge.phpeclipse.css.ui.internal.outline; import net.sourceforge.phpeclipse.core.model.ISourceReference; import net.sourceforge.phpeclipse.css.core.model.IAtRule; import net.sourceforge.phpeclipse.css.core.model.IStyleRule; import net.sourceforge.phpeclipse.css.ui.CssUI; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; /** * Label provider for the CSS outline page. */ public class CssOutlineLabelProvider extends LabelProvider { // LabelProvider Implementation -------------------------------------------- /** * @see org.eclipse.jface.viewers.ILabelProvider#getImage(java.lang.Object) */ public Image getImage(Object element) { if (element instanceof IStyleRule) { return CssUI.getDefault().getImageRegistry().get( CssUI.ICON_STYLE_RULE); } else if (element instanceof IAtRule) { return CssUI.getDefault().getImageRegistry().get( CssUI.ICON_AT_RULE); } return null; } /** * @see org.eclipse.jface.viewers.ILabelProvider#getText(java.lang.Object) */ public String getText(Object element) { StringBuffer text = new StringBuffer(); if (element instanceof IStyleRule) { IStyleRule rule = (IStyleRule) element; ISourceReference selector = rule.getSelector(); if (selector != null) { text.append(selector.getSource()); } } else if (element instanceof IAtRule) { IAtRule rule = (IAtRule) element; ISourceReference name = rule.getName(); ISourceReference value = rule.getValue(); if (name != null) { text.append(name.getSource()); if (value != null) { text.append(' '); } } if (value != null) { text.append(value.getSource()); } } return normalizeWhitespace(text.toString()); } // Private Methods --------------------------------------------------------- /** * Replaces all whitespace characters by regular spaces, and trims excessive * whitespace down to at most one whitespace between non-whitespace * characters. * * @param text The text to normalize * @return The normalized text */ public String normalizeWhitespace(String text) { StringBuffer buf = new StringBuffer(); boolean previousWasWhitespace = false; for (int i = 0; i < text.length(); i++) { char c = text.charAt(i); if ((c == 9) || (c == 10) || (c == 13)) { // Tab c = ' '; } if ((c != ' ') || !previousWasWhitespace) { buf.append(c); } previousWasWhitespace = (c == ' '); } return buf.toString(); } }