/******************************************************************************* * Copyright (c) 2009 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.css.ui.internal.projection; import org.eclipse.wst.sse.core.internal.provisional.IndexedRegion; import org.eclipse.wst.sse.ui.internal.projection.AbstractStructuredFoldingPosition; import org.w3c.dom.css.CSSStyleRule; /** * An {@link AbstractStructuredFoldingPosition} used to cover CSS regions */ public class CSSRuleFoldingPosition extends AbstractStructuredFoldingPosition { /** * the region that will be folded */ private IndexedRegion fRegion; /** * Creates a folding position that covers {@link IndexedRegion}s * in a CSS document * * @param region the {@link IndexedRegion} that this folding position covers */ public CSSRuleFoldingPosition(IndexedRegion region) { super(region.getStartOffset(), region.getLength()); this.fRegion = region; } /** * @see org.eclipse.wst.sse.ui.internal.projection.AbstractStructuredFoldingPosition#getStartOffset() */ protected int getStartOffset() { int startOffset = fRegion.getStartOffset(); //so that multi-line CSS selector text does not get folded if(this.fRegion instanceof CSSStyleRule) { CSSStyleRule rule = (CSSStyleRule)this.fRegion; startOffset += rule.getSelectorText().length(); } return startOffset; } /** * @see org.eclipse.wst.sse.ui.internal.projection.AbstractStructuredFoldingPosition#getEndOffset() */ protected int getEndOffset() { return fRegion.getEndOffset(); } }