/** * Copyright (c) 2001-2017 Mathew A. Nelson and Robocode contributors * 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://robocode.sourceforge.net/license/epl-v10.html */ package net.sf.robocode.ui.editor; import javax.swing.text.DefaultStyledDocument; import javax.swing.text.Element; /** * @author Flemming N. Larsen (original) */ @SuppressWarnings("serial") public class StyledDocument extends DefaultStyledDocument { /** * Returns the element index from an offset. * * @param offset * is the offset to retrieve the element index from. * @return the element index >= 0. */ protected int getElementIndex(int offset) { return getDefaultRootElement().getElementIndex(offset); } /** * Returns the end offset of an element. * Notice, that the end offset is off-by-one, and hence this method wraps the Element.getEndOffset() * * @param element is the element to get the end offset from. * @return the end offset of the element. */ protected int getEndOffset(Element element) { return Math.min(getLength(), element.getEndOffset()); } /** * Returns the child element at the given element index. * * @param index * is the element index. * @return the child element. */ protected Element getElement(int index) { return getDefaultRootElement().getElement(index); } /** * Returns the child element at the given document offset. * * @param offset * is the document offset. * @return the child element. */ protected Element getElementFromOffset(int offset) { return getElement(getElementIndex(offset)); } }