Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
Copyright (c) 2011 itemis AG (http://www.itemis.eu) 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 /
  
  package org.eclipse.xtext.ui.editor.folding;
  
 import  org.eclipse.jface.text.BadLocationException;
 import  org.eclipse.jface.text.IDocument;
 import  org.eclipse.jface.text.IRegion;
 import  org.eclipse.jface.text.Region;

Default implementation of folded position. It uses a relative offset to determine the significant content and its length.

Author(s):
Sebastian Zarnekow - Initial contribution and API
 
 public class DefaultFoldedPosition extends FoldedPosition {
 
 	static final int UNSET = -1;
 	
 	private final int contentStart;
 	private final int contentLength;
 	private boolean initiallyFolded;
 	
 	public DefaultFoldedPosition(int offsetint lengthint contentStartint contentLength) {
 		this(offsetlengthcontentStartcontentLengthfalse);
 	}

Deprecated:
use / override DefaultFoldedPosition(int, int, int, int) instead
Since:
2.8
 
 	public DefaultFoldedPosition(int offsetint lengthint contentStartint contentLengthboolean initiallyFolded) {
 		super(offsetlength);
 		this. = contentStart;
 		this. = contentLength;
 		this. = initiallyFolded;
 	}
 	
 	public IRegion[] computeProjectionRegions(IDocument documentthrows BadLocationException {
 		if ( == ) {
 			int linedocument.getLineOfOffset(offset);
 			int offsetdocument.getLineOffset(line + 1);
 	
 			int lengththis. - (offset - this.);
 			if (length > 0) {
 				return new IRegion[] {
 					new Region(offsetlength)
 				};
 			}
 			return null;
 		} else {
 			int firstLine = document.getLineOfOffset(offset);
 			int captionLine = document.getLineOfOffset(offset + );
 			int captionEndLine = document.getLineOfOffset(offset +  + );
 			int lastLine = document.getLineOfOffset(offset + length) - 1;
 			IRegion preRegion;
 			if (firstLine < captionLine) {
 				int preOffsetdocument.getLineOffset(firstLine);
 				IRegion preEndLineInfodocument.getLineInformation(captionLine);
 				int preEndpreEndLineInfo.getOffset();
 				preRegionnew Region(preOffsetpreEnd - preOffset);
 			} else {
 				preRegionnull;
 			}
 			if (captionEndLine < lastLine) {
 				int postOffsetdocument.getLineOffset(captionLine + 1);
 				IRegion postRegionnew Region(postOffset, offset + length - postOffset);
 
 				if (preRegion == null)
 					return new IRegion[] { postRegion };
 
 				return new IRegion[] { preRegionpostRegion };
 			}
 
 			if (preRegion != null)
 				return new IRegion[] { preRegion };
 
 			return null;
 		}
 	}
 
 	public int computeCaptionOffset(IDocument documentthrows BadLocationException {
 		if ( == ) {
 			return 0;
 		}
 		return ;
 	}
 
 	public int hashCode() {
 		final int prime = 31;
 		int result = super.hashCode();
		result = prime * result + ;
		result = prime * result + ;
		return result;
	}
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (!super.equals(obj))
			return false;
		if (getClass() != obj.getClass())
			return false;
		if ( != other.contentLength)
			return false;
		if ( != other.contentStart)
			return false;
		return true;
	}

Since:
2.8
	public boolean isInitiallyFolded() {
	}

Since:
2.9
	public void setInitiallyFolded(boolean initiallyFolded) {
		this. = initiallyFolded;
	}
New to GrepCode? Check out our FAQ X