All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.netbeans.editor.LineElement Maven / Gradle / Ivy

/*
 *                 Sun Public License Notice
 * 
 * The contents of this file are subject to the Sun Public License
 * Version 1.0 (the "License"). You may not use this file except in
 * compliance with the License. A copy of the License is available at
 * http://www.sun.com/
 * 
 * The Original Code is NetBeans. The Initial Developer of the Original
 * Code is Sun Microsystems, Inc. Portions Copyright 1997-2003 Sun
 * Microsystems, Inc. All Rights Reserved.
 */

package org.netbeans.editor;

import javax.swing.text.Document;
import javax.swing.text.AbstractDocument;
import javax.swing.text.Element;
import javax.swing.text.AttributeSet;
import javax.swing.text.Position;

/**
 * Line element implementation.
 * 
The implementation consist of only one backward bias mark. * There is a link to next mark to satisfy * {@link javax.swing.text.Element#getEndOffset()}. *
This way allows to have just three objects * (element, element-finalizer, mark) per line of text * compared to seven (element, 2 * (position, position-finalizer, mark)) * in regular leaf element. * * @author Miloslav Metelka * @version 1.00 */ final class LineElement implements Element, Position { /** Parent and root element */ private LineRootElement root; /** Position at the begining of the line */ private Position startPos; /** Next line or null if this is the last line. */ private Position endPos; /** Attributes of this line element */ private AttributeSet attributes; private Syntax.StateInfo syntaxStateInfo; LineElement(LineRootElement root, Position startPos, Position endPos) { assert(startPos != null); assert(endPos != null); this.root = root; this.startPos = startPos; this.endPos = endPos; } public Document getDocument() { return root.getDocument(); } public int getOffset() { return getStartOffset(); } public int getStartOffset() { return startPos.getOffset(); } Position getStartPosition() { return startPos; } public int getEndOffset() { return endPos.getOffset(); } Position getEndPosition() { return endPos; } public Element getParentElement() { return root; } public String getName() { return AbstractDocument.ParagraphElementName; } public AttributeSet getAttributes() { return attributes; } public void setAttributes(AttributeSet attributes) { this.attributes = attributes; } public int getElementIndex(int offset) { return -1; } public int getElementCount() { return 0; } public Element getElement(int index) { return null; } public boolean isLeaf() { return true; } Syntax.StateInfo getSyntaxStateInfo() { return syntaxStateInfo; } void updateSyntaxStateInfo(Syntax syntax) { if (syntaxStateInfo == null) { syntaxStateInfo = syntax.createStateInfo(); assert (syntaxStateInfo != null); } syntax.storeState(syntaxStateInfo); } void clearSyntaxStateInfo() { syntaxStateInfo = null; } public String toString() { return "getStartOffset()=" + getStartOffset() // NOI18N + ", getEndOffset()=" + getEndOffset() // NOI18N + ", syntaxStateInfo=" + getSyntaxStateInfo(); // NOI18N } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy