01: /*
02: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
03: *
04: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
05: *
06: * The contents of this file are subject to the terms of either the GNU
07: * General Public License Version 2 only ("GPL") or the Common
08: * Development and Distribution License("CDDL") (collectively, the
09: * "License"). You may not use this file except in compliance with the
10: * License. You can obtain a copy of the License at
11: * http://www.netbeans.org/cddl-gplv2.html
12: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
13: * specific language governing permissions and limitations under the
14: * License. When distributing the software, include this License Header
15: * Notice in each file and include the License file at
16: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
17: * particular file as subject to the "Classpath" exception as provided
18: * by Sun in the GPL Version 2 section of the License file that
19: * accompanied this code. If applicable, add the following below the
20: * License Header, with the fields enclosed by brackets [] replaced by
21: * your own identifying information:
22: * "Portions Copyrighted [year] [name of copyright owner]"
23: *
24: * Contributor(s):
25: *
26: * Portions Copyrighted 2007 Sun Microsystems, Inc.
27: */
28:
29: package org.netbeans.modules.cnd.editor.cplusplus;
30:
31: import javax.swing.text.BadLocationException;
32: import javax.swing.text.EditorKit;
33: import org.netbeans.editor.Formatter;
34: import org.netbeans.modules.cnd.test.base.BaseDocumentUnitTestCase;
35:
36: /**
37: *
38: * @author Alexander Simon
39: */
40: public class CCFormatterBaseUnitTestCase extends
41: BaseDocumentUnitTestCase {
42: private boolean isCPP = true;
43:
44: public CCFormatterBaseUnitTestCase(String testMethodName) {
45: super (testMethodName);
46: }
47:
48: @Override
49: protected EditorKit createEditorKit() {
50: if (isCPP) {
51: return new CCKit();
52: } else {
53: return new CKit();
54: }
55: }
56:
57: protected void setCppEditorKit(boolean isCPP) {
58: this .isCPP = isCPP;
59: }
60:
61: /**
62: * Perform new-line insertion followed by indenting of the new line
63: * by the formatter.
64: * The caret position should be marked in the document text by '|'.
65: */
66: protected void indentNewLine() {
67: Formatter f = getDocument().getFormatter();
68: try {
69: f.indentLock();
70: int offset = f.indentNewLine(getDocument(),
71: getCaretOffset());
72: getCaret().setDot(offset);
73: } finally {
74: f.indentUnlock();
75: }
76: }
77:
78: /**
79: * Perform reformatting of the whole document's text.
80: */
81: protected void reformat() {
82: Formatter f = getDocument().getFormatter();
83: try {
84: f.reformatLock();
85: f.reformat(getDocument(), 0, getDocument().getLength());
86: } catch (BadLocationException e) {
87: e.printStackTrace(getLog());
88: fail(e.getMessage());
89: } finally {
90: f.reformatUnlock();
91: }
92: }
93: }
|