/******************************************************************************* * 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.xml.ui.internal.projection; import org.eclipse.wst.sse.core.internal.provisional.text.IStructuredDocumentRegion; import org.eclipse.wst.sse.ui.internal.projection.AbstractStructuredFoldingPosition; /** * Folds an XML element */ public class XMLElementFoldingPosition extends AbstractStructuredFoldingPosition { /** * The region representing the start of the folding region */ private IStructuredDocumentRegion fStartRegion; /** * The region representing the end of the folding region, or <code>null</code> * if the entire folding region is represented by <code>fStartRegion</code> */ private IStructuredDocumentRegion fEndRegion; /** * <p>Used to represent a folding position that covers a single * {@link IStructuredDocumentRegion}.</p> * * @param region the region that covers the entire position of the folding region */ public XMLElementFoldingPosition(IStructuredDocumentRegion region) { super(region.getStartOffset(), region.getEndOffset()-region.getStartOffset()); this.fStartRegion = region; this.fEndRegion = null; } /** * <p>Used to represent a folding position that covers more then one * {@link IStructuredDocumentRegion}.</p> * * @param startRegion the first region covered by this position * @param endRegion the last region covered by this position */ public XMLElementFoldingPosition(IStructuredDocumentRegion startRegion, IStructuredDocumentRegion endRegion) { super(startRegion.getStartOffset(), endRegion.getEndOffset()-startRegion.getStartOffset()); this.fStartRegion = startRegion; this.fEndRegion = endRegion; } /** * @see org.eclipse.wst.sse.ui.internal.projection.AbstractStructuredFoldingPosition#getStartOffset() */ protected int getStartOffset() { return fStartRegion.getStartOffset(); } /** * @see org.eclipse.wst.sse.ui.internal.projection.AbstractStructuredFoldingPosition#getEndOffset() */ protected int getEndOffset() { int endOffset; if(fEndRegion != null) { endOffset = fEndRegion.getEndOffset(); } else { endOffset = fStartRegion.getEndOffset(); } return endOffset; } }