當前位置: 首頁>>代碼示例>>Java>>正文


Java Element.getElementIndex方法代碼示例

本文整理匯總了Java中javax.swing.text.Element.getElementIndex方法的典型用法代碼示例。如果您正苦於以下問題:Java Element.getElementIndex方法的具體用法?Java Element.getElementIndex怎麽用?Java Element.getElementIndex使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在javax.swing.text.Element的用法示例。


在下文中一共展示了Element.getElementIndex方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: insertUpdate

import javax.swing.text.Element; //導入方法依賴的package包/類
@Override
public void insertUpdate(DocumentEvent e) {
	// Adding text containing a newline to the visible line of a folded
	// Fold causes that Fold to unfold.  Check only start offset of
	// insertion since that's the line that was "modified".
	int startOffs = e.getOffset();
	int endOffs = startOffs + e.getLength();
	Document doc = e.getDocument();
	Element root = doc.getDefaultRootElement();
	int startLine = root.getElementIndex(startOffs);
	int endLine = root.getElementIndex(endOffs);
	if (startLine!=endLine) { // Inserted text covering > 1 line...
		Fold fold = getFoldForLine(startLine);
		if (fold!=null && fold.isCollapsed()) {
			fold.toggleCollapsedState();
		}
	}
}
 
開發者ID:Thecarisma,項目名稱:powertext,代碼行數:19,代碼來源:DefaultFoldManager.java

示例2: actionPerformed

import javax.swing.text.Element; //導入方法依賴的package包/類
/** The operation to perform when this action is triggered. */
public void actionPerformed(ActionEvent e) {
    JTextComponent target = getTextComponent(e);
    if (target != null) {
        Document doc = target.getDocument();
        Element map = doc.getDefaultRootElement();
        int offs = target.getCaretPosition();
        int lineIndex = map.getElementIndex(offs);
        int lineEnd = map.getElement(lineIndex).getEndOffset() - 1;

        if (select) {
            target.moveCaretPosition(lineEnd);
        } else {
            target.setCaretPosition(lineEnd);
        }
    }            
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:18,代碼來源:OutputEditorKit.java

示例3: actionPerformedImpl

import javax.swing.text.Element; //導入方法依賴的package包/類
@Override
public void actionPerformedImpl(ActionEvent e, RTextArea textArea) {

	try {

		// We use the elements instead of calling getLineOfOffset(),
		// etc. to speed things up just a tad (i.e. micro-optimize).
		Document document = textArea.getDocument();
		int caretPosition = textArea.getCaretPosition();
		Element map = document.getDefaultRootElement();
		int currentLineNum = map.getElementIndex(caretPosition);
		Element currentLineElement = map.getElement(currentLineNum);
		// Always take -1 as we don't want to remove the newline.
		int currentLineEnd = currentLineElement.getEndOffset()-1;
		if (caretPosition<currentLineEnd) {
			document.remove(caretPosition,
							currentLineEnd-caretPosition);
		}

	} catch (BadLocationException ble) {
		ble.printStackTrace();
	}

}
 
開發者ID:Thecarisma,項目名稱:powertext,代碼行數:25,代碼來源:RTextAreaEditorKit.java

示例4: getWordEnd

import javax.swing.text.Element; //導入方法依賴的package包/類
@Override
protected int getWordEnd(RTextArea textArea, int offs)
		throws BadLocationException {

	RSyntaxDocument doc = (RSyntaxDocument)textArea.getDocument();
	Element root = doc.getDefaultRootElement();
	int line = root.getElementIndex(offs);
	Element elem = root.getElement(line);
	int end = elem.getEndOffset() - 1;

	int wordEnd = offs;
	while (wordEnd <= end) {
		if (!isIdentifierChar(doc.charAt(wordEnd))) {
			break;
		}
		wordEnd++;
	}

	return wordEnd;

}
 
開發者ID:Thecarisma,項目名稱:powertext,代碼行數:22,代碼來源:RSyntaxTextAreaEditorKit.java

示例5: appendOffset

import javax.swing.text.Element; //導入方法依賴的package包/類
/**
 * Get string representation of an offset for debugging purposes
 * in form "offset[line:column]". Both lines and columns start counting from 1
 * like in the editor's status bar. Tabs are expanded when counting the column.
 *
 * @param sb valid string builder to which text will be appended or null in which case
 *  the method itself will create a string builder and it will return it.
 * @param doc non-null document in which the offset is located.
 * @param offset offset in the document.
 * @return non-null string builder to which the description was added.
 * @since 1.27
 */
public static StringBuilder appendOffset(StringBuilder sb, Document doc, int offset) {
    if (sb == null) {
        sb = new StringBuilder(50);
    }
    sb.append(offset).append('[');
    if (offset < 0) { // Offset too low
        sb.append("<0");
    } else if (offset > doc.getLength() + 1) { // +1 for AbstractDocument-based docs
        sb.append(">").append(doc.getLength());
    } else { // Valid offset
        Element paragraphRoot = getParagraphRootElement(doc);
        int lineIndex = paragraphRoot.getElementIndex(offset);
        Element lineElem = paragraphRoot.getElement(lineIndex);
        sb.append(lineIndex + 1).append(':'); // Line
        sb.append(visualColumn(doc, lineElem.getStartOffset(), offset) + 1); // Column
    }
    sb.append(']');
    return sb;
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:32,代碼來源:DocumentUtilities.java

示例6: reindent

import javax.swing.text.Element; //導入方法依賴的package包/類
public void reindent() throws BadLocationException {
    Document doc = context.document();
    int startOffset = context.startOffset();
    int endOffset = context.endOffset();
    
    pushFormattingContextDocument(doc);
    try {
        // Original formatter does not have reindentation of multiple lines
        // so reformat start line and continue for each line.
        Element lineRootElem = lineRootElement(doc);
        Position endPos = doc.createPosition(endOffset);
        do {
            startOffset = formatter.indentLine(doc, startOffset);
            int startLineIndex = lineRootElem.getElementIndex(startOffset) + 1;
            if (startLineIndex >= lineRootElem.getElementCount())
                break;
            Element lineElem = lineRootElem.getElement(startLineIndex);
            startOffset = lineElem.getStartOffset(); // Move to next line
        } while (startOffset < endPos.getOffset());
    } finally {
        popFormattingContextDocument(doc);
    }
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:24,代碼來源:LegacyFormattersProvider.java

示例7: getTextLineNumber

import javax.swing.text.Element; //導入方法依賴的package包/類
protected String getTextLineNumber(int rowStartOffset)
{
	Element root = component.getDocument().getDefaultRootElement();
	int index = root.getElementIndex( rowStartOffset );
	Element line = root.getElement( index );

	if (line.getStartOffset() == rowStartOffset)
		return String.valueOf(index + 1);
	else
		return "";
}
 
開發者ID:BlidiWajdi,項目名稱:Mujeed-Arabic-Prolog,代碼行數:12,代碼來源:TextLineNumber.java

示例8: getAlreadyEnteredText

import javax.swing.text.Element; //導入方法依賴的package包/類
/**
 * Returns the text just before the current caret position that could be
 * the start of something auto-completable.<p>
 *
 * This method returns all characters before the caret that are matched
 * by  {@link #isValidChar(char)}.
 *
 * {@inheritDoc}
 */
@Override
public String getAlreadyEnteredText(JTextComponent comp) {
	
	Document doc = comp.getDocument();

	int dot = comp.getCaretPosition();
	Element root = doc.getDefaultRootElement();
	int index = root.getElementIndex(dot);
	Element elem = root.getElement(index);
	int start = elem.getStartOffset();
	int len = dot-start;
	try {
		doc.getText(start, len, seg);
	} catch (BadLocationException ble) {
		ble.printStackTrace();
		return EMPTY_STRING;
	}

	int segEnd = seg.offset + len;
	start = segEnd - 1;
	while (start>=seg.offset && isValidChar(seg.array[start])) {
		start--;
	}
	start++;

	len = segEnd - start;
	return len==0 ? EMPTY_STRING : new String(seg.array, start, len);

}
 
開發者ID:Thecarisma,項目名稱:powertext,代碼行數:39,代碼來源:DefaultCompletionProvider.java

示例9: replace

import javax.swing.text.Element; //導入方法依賴的package包/類
public void replace(DocumentFilter.FilterBypass fb, int offset, int length,String text, AttributeSet attrs) throws BadLocationException {
Document doc = fb.getDocument();
   Element root = doc.getDefaultRootElement();
   int count = root.getElementCount();
   int index = root.getElementIndex(offset);
   Element cur = root.getElement(index);
   int promptPosition = cur.getStartOffset()+PROMPT.length();
   if(index==count-1 && offset-promptPosition>=0) {
     if(text.equals("\n")) {
  	   text = "\n"+PROMPT;
     }
     fb.replace(offset, length, text, attrs);
   }
}
 
開發者ID:BlidiWajdi,項目名稱:Mujeed-Arabic-Prolog,代碼行數:15,代碼來源:NonEditableLineDocumentFilter.java

示例10: getCompletionsAt

import javax.swing.text.Element; //導入方法依賴的package包/類
/**
 * {@inheritDoc}
 */
@Override
public List<Completion> getCompletionsAt(JTextComponent tc, Point p) {

	int offset = tc.viewToModel(p);
	if (offset<0 || offset>=tc.getDocument().getLength()) {
		lastCompletionsAtText = null;
		return lastParameterizedCompletionsAt = null;
	}

	Segment s = new Segment();
	Document doc = tc.getDocument();
	Element root = doc.getDefaultRootElement();
	int line = root.getElementIndex(offset);
	Element elem = root.getElement(line);
	int start = elem.getStartOffset();
	int end = elem.getEndOffset() - 1;

	try {

		doc.getText(start, end-start, s);

		// Get the valid chars before the specified offset.
		int startOffs = s.offset + (offset-start) - 1;
		while (startOffs>=s.offset && isValidChar(s.array[startOffs])) {
			startOffs--;
		}

		// Get the valid chars at and after the specified offset.
		int endOffs = s.offset + (offset-start);
		while (endOffs<s.offset+s.count && isValidChar(s.array[endOffs])) {
			endOffs++;
		}

		int len = endOffs - startOffs - 1;
		if (len<=0) {
			return lastParameterizedCompletionsAt = null;
		}
		String text = new String(s.array, startOffs+1, len);

		if (text.equals(lastCompletionsAtText)) {
			return lastParameterizedCompletionsAt;
		}

		// Get a list of all Completions matching the text.
		List<Completion> list = getCompletionByInputText(text);
		lastCompletionsAtText = text;
		return lastParameterizedCompletionsAt = list;

	} catch (BadLocationException ble) {
		ble.printStackTrace(); // Never happens
	}

	lastCompletionsAtText = null;
	return lastParameterizedCompletionsAt = null;

}
 
開發者ID:Thecarisma,項目名稱:powertext,代碼行數:60,代碼來源:DefaultCompletionProvider.java

示例11: paintView

import javax.swing.text.Element; //導入方法依賴的package包/類
/**
 * Paints one view that corresponds to a line (or
 * multiple lines if folding takes effect).
 */
private void paintView(View view, Graphics g, int yBase) {
    JTextComponent component = editorUI.getComponent();
    if (component == null) return;
    BaseTextUI textUI = (BaseTextUI)component.getUI();

    Element rootElem = textUI.getRootView(component).getElement();
    int line = rootElem.getElementIndex(view.getStartOffset());

    String annotation = "";  // NOI18N
    AnnotateLine al = null;
    if (!elementAnnotations.isEmpty()) {
        al = getAnnotateLine(line);
        if (al != null) {
            annotation = getDisplayName(al);  // NOI18N
        }
    } else {
        annotation = elementAnnotationsSubstitute;
    }

    if (al != null && al.getRevision().equals(recentRevision)) {
        g.setColor(selectedColor());
    } else {
        g.setColor(foregroundColor());
    }
    int texty = yBase + editorUI.getLineAscent();
    int textx = 2;
    g.drawString(annotation, textx, texty);
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:33,代碼來源:AnnotationBar.java

示例12: getWordStart

import javax.swing.text.Element; //導入方法依賴的package包/類
@Override
protected int getWordStart(RTextArea textArea, int offs)
		throws BadLocationException {
	RSyntaxDocument doc = (RSyntaxDocument)textArea.getDocument();
	Element root = doc.getDefaultRootElement();
	int line = root.getElementIndex(offs);
	Element elem = root.getElement(line);
	return getWordStartImpl(doc, elem, offs);
}
 
開發者ID:Thecarisma,項目名稱:powertext,代碼行數:10,代碼來源:RSyntaxTextAreaEditorKit.java

示例13: getLineCount

import javax.swing.text.Element; //導入方法依賴的package包/類
/** Count of rows between these two positions */
public static int getLineCount(@NonNull LineDocument doc, int startOffset, int endOffset) {
    if (startOffset > endOffset) {
        return 0;
    }
    Element lineRoot = doc.getParagraphElement(0).getParentElement();
    return lineRoot.getElementIndex(endOffset) - lineRoot.getElementIndex(startOffset) + 1;
}
 
開發者ID:apache,項目名稱:incubator-netbeans,代碼行數:9,代碼來源:LineDocumentUtils.java

示例14: discoverTagName

import javax.swing.text.Element; //導入方法依賴的package包/類
/**
 * Discovers the name of the tag being closed.  Assumes standard
 * SGML-style markup tags.
 *
 * @param doc The document to parse.
 * @param dot The location of the caret.  This should be right after
 *        the start of a closing tag token (e.g. "<code>&lt;/</code>"
 *        or "<code>[</code>" in the case of BBCode).
 * @return The name of the tag to close, or <code>null</code> if it
 *         could not be determined.
 */
private String discoverTagName(RSyntaxDocument doc, int dot) {

	Stack<String> stack = new Stack<String>();

	Element root = doc.getDefaultRootElement();
	int curLine = root.getElementIndex(dot);

	for (int i=0; i<=curLine; i++) {

		Token t = doc.getTokenListForLine(i);
		while (t!=null && t.isPaintable()) {

			if (t.getType()==Token.MARKUP_TAG_DELIMITER) {
				if (t.isSingleChar('<') || t.isSingleChar('[')) {
					t = t.getNextToken();
					while (t!=null && t.isPaintable()) {
						if (t.getType()==Token.MARKUP_TAG_NAME ||
								// Being lenient here and also checking
								// for attributes, in case they
								// (incorrectly) have whitespace between
								// the '<' char and the element name.
								t.getType()==Token.MARKUP_TAG_ATTRIBUTE) {
							stack.push(t.getLexeme());
							break;
						}
						t = t.getNextToken();
					}
				}
				else if (t.length()==2 && t.charAt(0)=='/' &&
						(t.charAt(1)=='>' ||
								t.charAt(1)==']')) {
					if (!stack.isEmpty()) { // Always true for valid XML
						stack.pop();
					}
				}
				else if (t.length()==2 &&
						(t.charAt(0)=='<' || t.charAt(0)=='[') &&
						t.charAt(1)=='/') {
					String tagName = null;
					if (!stack.isEmpty()) { // Always true for valid XML
						tagName = stack.pop();
					}
					if (t.getEndOffset()>=dot) {
						return tagName;
					}
				}
			}

			t = t==null ? null : t.getNextToken();

		}

	}

	return null; // Should never happen

}
 
開發者ID:Thecarisma,項目名稱:powertext,代碼行數:69,代碼來源:RSyntaxTextAreaEditorKit.java

示例15: setCollapsed

import javax.swing.text.Element; //導入方法依賴的package包/類
/**
 * Sets whether this <code>Fold</code> is collapsed.  Calling this method
 * will update both the text area and all <code>Gutter</code> components.
 *
 * @param collapsed Whether this fold should be collapsed.
 * @see #isCollapsed()
 * @see #toggleCollapsedState()
 */
public void setCollapsed(boolean collapsed) {

	if (collapsed!=this.collapsed) {

		// Change our fold state and cached info about folded line count.
		int lineCount = getLineCount();
		int linesToCollapse = lineCount - childCollapsedLineCount;
		if (!collapsed) { // If we're expanding
			linesToCollapse = -linesToCollapse;
		}
		//System.out.println("Hiding lines: " + linesToCollapse +
		//		" (" + lineCount + ", " + linesToCollapse + ")");
		this.collapsed = collapsed;
		if (parent!=null) {
			parent.updateChildCollapsedLineCount(linesToCollapse);
		}

		// If an end point of the selection is being hidden, move the caret
		// "out" of the fold.
		if (collapsed) {
			int dot = textArea.getSelectionStart(); // Forgive variable name
			Element root = textArea.getDocument().getDefaultRootElement();
			int dotLine = root.getElementIndex(dot);
			boolean updateCaret = containsLine(dotLine);
			if (!updateCaret) {
				int mark = textArea.getSelectionEnd();
				if (mark!=dot) {
					int markLine = root.getElementIndex(mark);
					updateCaret = containsLine(markLine);
				}
			}
			if (updateCaret) {
				dot = root.getElement(getStartLine()).getEndOffset() - 1;
				textArea.setCaretPosition(dot);
			}
		}

		textArea.foldToggled(this);

	}

}
 
開發者ID:Thecarisma,項目名稱:powertext,代碼行數:51,代碼來源:Fold.java


注:本文中的javax.swing.text.Element.getElementIndex方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。