use of javax.swing.text.Document in project cayenne by apache.
the class LineNumberedBorder method paintBorder.
public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
java.awt.Rectangle clip = g.getClipBounds();
FontMetrics fm = g.getFontMetrics();
int fontHeight = fm.getHeight();
int ybaseline = y + fm.getAscent();
int startingLineNumber = (clip.y / fontHeight) + 1;
if (ybaseline < clip.y) {
ybaseline = y + startingLineNumber * fontHeight - (fontHeight - fm.getAscent());
}
int yend = ybaseline + height;
if (yend > (y + height)) {
yend = y + height;
}
int lnxstart = x;
int widhtBorder = getLineNumberWidth() - 2;
g.setColor(new Color(255, 255, 224));
g.fillRect(lnxstart, 0, lnxstart + widhtBorder, yend);
g.setColor(new Color(214, 214, 214));
g.drawRect(lnxstart - 1, -1, lnxstart + widhtBorder, yend + 1);
int end = pane.getEndPositionInDocument();
Document doc = pane.getDocument();
int endline = doc.getDefaultRootElement().getElementIndex(end) + 1;
while (startingLineNumber <= endline) {
g.setColor(Color.gray);
g.drawString(startingLineNumber + " ", lnxstart + 1, ybaseline);
ybaseline += fontHeight;
startingLineNumber++;
}
setEtalon(startingLineNumber - 1);
}
use of javax.swing.text.Document in project knime-core by knime.
the class JavaSnippet method getCompilationUnits.
@Override
public Iterable<? extends JavaFileObject> getCompilationUnits() throws IOException {
if (m_snippet == null || m_snippetFile == null || !m_snippetFile.exists()) {
m_snippetFile = new File(m_tempClassPathDir, "JSnippet.java");
// Note: this is a workaround for openWriter() not taking charset into account
m_snippet = new EclipseFileObject("JSnippet", m_snippetFile.toURI(), Kind.SOURCE, StandardCharsets.UTF_8);
m_dirty = true;
}
if (m_dirty) {
try (final Writer out = new BufferedWriter(new OutputStreamWriter(m_snippet.openOutputStream(), StandardCharsets.UTF_8))) {
try {
final Document doc = getDocument();
out.write(doc.getText(0, doc.getLength()));
m_dirty = false;
} catch (BadLocationException e) {
// this should never happen.
throw new IllegalStateException(e);
}
}
}
return Collections.singletonList(m_snippet);
}
use of javax.swing.text.Document in project enclojure by EricThorsen.
the class ClojureCodeCompletion_Provider method createTask.
public CompletionTask createTask(int i, final JTextComponent jTextComponent) {
// try {
// RT.var("clojure.core", "require").invoke(Symbol.create("test.CodeCompletion.PW.cljcompletion"));
// } catch (Throwable ex) {
// Exceptions.printStackTrace(ex);
// }
final int ctype = i;
if (i != CompletionProvider.COMPLETION_QUERY_TYPE && i != CompletionProvider.COMPLETION_ALL_QUERY_TYPE)
return null;
return new AsyncCompletionTask(new AsyncCompletionQuery() {
protected void query(final CompletionResultSet completionResultSet, final Document document, final int caretOffset) {
final StyledDocument bDoc = (StyledDocument) document;
int startOffset = -1;
class Operation implements Runnable {
boolean showCompletion = false;
boolean isDotPressed = false;
String filter = null;
int startOffset = caretOffset;
String nameSpace = null;
String lastAtom = null;
public void run() {
nameSpace = null;
lastAtom = null;
final Iterator it;
final String ret;
try {
final int lineStartOffset = getRowFirstNonWhite(bDoc, caretOffset);
String line;
if (caretOffset > lineStartOffset)
line = bDoc.getText(lineStartOffset, caretOffset - lineStartOffset);
else
line = "";
int begLine = indexOfSpace(line);
String filter = line.substring(begLine);
isDotPressed = dotPressed(filter);
int layout = getLayout(filter, isDotPressed);
begLine = lineStartOffset + begLine;
Hashtable processInfo = new Hashtable();
processInfo.put("layout", layout);
processInfo.put("filter", filter);
processInfo.put("begLine", begLine);
processInfo.put("isClojure", isClojure);
it = processLayout(processInfo);
filter = (String) processInfo.get("filter");
begLine = (Integer) processInfo.get("begLine");
if (it != null) {
handleMaps(it, completionResultSet, processInfo, filter, begLine);
//
}
if ((layout != backSlashAfterParen && layout != backSlashNoParen) && !isDotPressed) {
// now add hippie completion results
processInfo.put("isClojure", true);
processInfo.put("priority", 3);
processInfo.put("isMethodOrFunction", true);
processInfo.put("source", "Hippie Completion");
processInfo.put("isNamespaceOrPackage", false);
processInfo.put("isConstructor", false);
ArrayList<String> l = getAllHippieMatches(jTextComponent);
if (l.size() > 0) {
Iterator lit;
lit = l.listIterator();
while (lit.hasNext()) {
final String listentry = (String) lit.next();
completionResultSet.addItem(new ClojureCodeCompletionItem(listentry, begLine, caretOffset, processInfo));
}
}
}
completionResultSet.setAnchorOffset(lineStartOffset);
completionResultSet.finish();
} catch (BadLocationException ex) {
LOG.log(Level.FINEST, ex.getMessage());
}
}
private String handleNullString(String val) {
if (val == null)
return "";
else
return val;
}
private Integer handleNullInteger(Integer val) {
if (val == null)
return 0;
else
return val;
}
private Boolean handleNullBoolean(Boolean val) {
if (val == null)
return false;
else
return val;
}
private void handleMaps(Iterator iter, CompletionResultSet c, Hashtable pInfo, String filter, int begLine) {
Boolean blnCurrentListEmpty = true;
if (CurrentList.size() > 0)
blnCurrentListEmpty = false;
while (iter.hasNext()) {
final PersistentArrayMap entry = (PersistentArrayMap) iter.next();
if ((blnCurrentListEmpty) && (!gettingMethods))
CurrentList.add(entry);
String displaystr = (String) entry.get(Keyword.intern(Symbol.create("display")));
String fullclassstr = (String) entry.get(Keyword.intern(Symbol.create("fullclassname")));
Boolean isClojure = (Boolean) entry.get(Keyword.intern(Symbol.create("isclojure")));
Boolean isNamespaceOrPackage = (Boolean) entry.get(Keyword.intern(Symbol.create("isnamespaceorpkg")));
Boolean isMethodOrFunction = (Boolean) entry.get(Keyword.intern(Symbol.create("ismethodorfunction")));
Boolean isConstructor = (Boolean) entry.get(Keyword.intern(Symbol.create("isconstructor")));
String namespace = (String) entry.get(Keyword.intern(Symbol.create("namespace")));
String method = (String) entry.get(Keyword.intern(Symbol.create("method")));
Integer priority = (Integer) entry.get(Keyword.intern(Symbol.create("priority")));
pInfo.put("display", handleNullString(displaystr));
pInfo.put("fullclassname", handleNullString(fullclassstr));
pInfo.put("isClojure", isClojure);
pInfo.put("isNamespaceOrPackage", isNamespaceOrPackage);
pInfo.put("isMethodOrFunction", isMethodOrFunction);
pInfo.put("namespace", handleNullString(namespace));
pInfo.put("method", handleNullString(method));
pInfo.put("priority", handleNullInteger(priority));
pInfo.put("isConstructor", handleNullBoolean(isConstructor));
if (isClojure)
pInfo.put("source", "Clojure");
else
pInfo.put("source", "Java");
String origFilter = (String) pInfo.get("origFilter");
int layout = (Integer) pInfo.get("layout");
if (addFilter) {
if (// if this is a java method
isMethodOrFunction && (!isClojure)) {
if ((filter != null) && (displaystr.startsWith(filter.trim())))
completionResultSet.addItem(new ClojureCodeCompletionItem(displaystr, begLine, caretOffset, pInfo));
} else {
if (layout != backSlashAfterParen && layout != backSlashNoParen) {
if (isNamespaceOrPackage) {
if ((filter != null) && (displaystr.contains(origFilter.trim())))
completionResultSet.addItem(new ClojureCodeCompletionItem(displaystr, begLine, caretOffset, pInfo));
} else {
if ((filter != null) && (displaystr.contains(filter.trim())))
completionResultSet.addItem(new ClojureCodeCompletionItem(displaystr, begLine, caretOffset, pInfo));
}
} else {
if ((filter != null) && (displaystr.startsWith(filter.trim())))
completionResultSet.addItem(new ClojureCodeCompletionItem(displaystr, begLine, caretOffset, pInfo));
}
}
} else
completionResultSet.addItem(new ClojureCodeCompletionItem(displaystr, begLine, caretOffset, pInfo));
}
}
private int getLayout(String filter, boolean isDotPressed) {
try {
if (filter.startsWith("(")) {
filter = filter.substring(1);
if (backSlashPressed(filter)) {
if ((filter != null) && (filter.trim().length() > 0))
return backSlashAfterParen;
else
return -1;
} else {
if (isDotPressed && (filter != null) && (filter.trim().length() > 0) && Character.isUpperCase(filter.trim().charAt(0))) {
return UppercaseAfterParenWithDot;
} else {
if (isDotPressed && (filter != null) && (filter.trim().length() > 0) && (filter.trim().charAt(0) == '.')) {
// get all java methods available
return FirstDotAfterParen;
} else {
if (isDotPressed && (filter != null) && (filter.trim().length() > 0) && Character.isLowerCase(filter.trim().charAt((0))))
return LowercaseAfterParenWithDot;
else {
if ((filter != null) && (filter.trim().length() > 0) && Character.isUpperCase(filter.trim().charAt((0))))
return UppercaseAfterParen;
else
// lowercase
return LowercaseAfterParen;
}
}
}
}
} else // No Paren
{
if (backSlashPressed(filter)) {
if ((filter != null) && (filter.trim().length() > 0))
return backSlashNoParen;
else
return -1;
} else {
if (isDotPressed && (filter != null) && (filter.trim().length() > 0) && Character.isUpperCase(filter.trim().charAt(0))) {
return UppercaseNoParenWithDot;
} else {
if (isDotPressed && (filter != null) && (filter.trim().length() > 0) && (filter.trim().charAt(0) == '.')) {
return FirstDotNoParen;
} else {
if (isDotPressed && (filter != null) && (filter.trim().length() > 0) && Character.isLowerCase(filter.trim().charAt((0))))
return LowercaseNoParenWithDot;
else {
if ((filter != null) && (filter.trim().length() > 0) && Character.isUpperCase(filter.trim().charAt((0))))
return UppercaseNoParen;
else
// lowercase
return LowercaseNoParen;
}
}
}
}
}
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
}
return -1;
}
private Iterator processLayout(Hashtable processInfo) {
// private static final int LowercaseAfterParen = 0;
// private static final int UppercaseAfterParen = 1;
// private static final int LowercaseAfterParenWithDot = 2;
// private static final int UppercaseAfterParenWithDot = 3;
// private static final int LowercaseNoParen = 4;
// private static final int UppercaseNoParen = 5;
// private static final int LowercaseNoParenWithDot = 6;
// private static final int UppercaseNoParenWithDot = 7;
// private static final int FirstDotAfterParen = 8;
// private static final int FirstDotNoParen = 9;
int layout = (Integer) processInfo.get("layout");
String filter = (String) processInfo.get("filter");
String begFilter;
String origFilter = "";
int begLine = (Integer) processInfo.get("begLine");
int dotpos;
Iterator iter = null;
try {
filter = filter.trim();
switch(layout) {
case LowercaseAfterParen:
// remove the paranthesis
filter = filter.substring(1);
origFilter = filter;
addFilter = true;
iter = getResultsForScenario2(filter);
begLine = begLine + 1;
break;
case UppercaseAfterParen:
// remove the paranthesis
filter = filter.substring(1);
origFilter = filter;
addFilter = true;
iter = getResultsForScenario2(filter);
begLine = begLine + 1;
break;
case LowercaseAfterParenWithDot:
// remove the paranthesis
filter = filter.substring(1);
origFilter = filter;
dotpos = filter.lastIndexOf(".");
begFilter = filter.substring(0, dotpos);
addFilter = true;
// iter=getResultsForScenario1(getClsForFilter(begFilter),begFilter + "."); //check java classes
// check java classes
iter = getResultsForScenario1(getClsForFilter(begFilter), origFilter);
// iter=getAllClojureNamespaces1(origFilter);
filter = filter.substring(dotpos + 1);
// filter=origFilter;
begLine = begLine + 1;
break;
case UppercaseAfterParenWithDot:
// remove the paranthesis
filter = filter.substring(1);
origFilter = filter;
dotpos = filter.lastIndexOf(".");
begFilter = filter.substring(0, dotpos);
addFilter = true;
// iter=getResultsForScenario1(getClsForFilter(begFilter),begFilter + "."); //check java classes
// check java classes
iter = getResultsForScenario1(getClsForFilter(begFilter), origFilter);
filter = filter.substring(dotpos + 1);
// filter=origFilter;
begLine = begLine + 1;
break;
case backSlashAfterParen:
// remove the paranthesis
filter = filter.substring(1);
origFilter = filter;
dotpos = filter.lastIndexOf("/");
begFilter = filter.substring(0, dotpos);
addFilter = true;
iter = getResultsForScenario3(getClsForFilter(begFilter), begFilter);
filter = filter.substring(dotpos + 1);
begLine = begLine + 1;
break;
case FirstDotAfterParen:
// remove the paranthesis
filter = filter.substring(1);
origFilter = filter;
addFilter = true;
if (filter.equalsIgnoreCase("."))
filter = "";
else {
dotpos = filter.lastIndexOf(".");
filter = filter.substring(dotpos + 1);
}
iter = getResultsForScenario4();
begLine = begLine + 2;
break;
case UppercaseNoParen:
origFilter = filter;
addFilter = true;
iter = getResultsForScenario2(filter);
break;
case UppercaseNoParenWithDot:
origFilter = filter;
dotpos = filter.lastIndexOf(".");
begFilter = filter.substring(0, dotpos);
addFilter = true;
// iter=getResultsForScenario1(getClsForFilter(begFilter),begFilter + "."); //check java classes
// check java classes
iter = getResultsForScenario1(getClsForFilter(begFilter), origFilter);
filter = filter.substring(dotpos + 1);
// filter=origFilter;
break;
case FirstDotNoParen:
origFilter = filter;
addFilter = true;
if (filter.equalsIgnoreCase("."))
filter = "";
else {
dotpos = filter.lastIndexOf(".");
filter = filter.substring(dotpos + 1);
}
iter = getResultsForScenario4();
begLine = begLine + 1;
break;
case LowercaseNoParenWithDot:
origFilter = filter;
dotpos = filter.lastIndexOf(".");
begFilter = filter.substring(0, dotpos);
addFilter = true;
// iter=getResultsForScenario1(getClsForFilter(begFilter),begFilter + "."); //check java classes
// check java classes
iter = getResultsForScenario1(getClsForFilter(begFilter), origFilter);
filter = filter.substring(dotpos + 1);
// filter=origFilter;
break;
case LowercaseNoParen:
origFilter = filter;
addFilter = true;
iter = getResultsForScenario2(filter);
break;
case backSlashNoParen:
origFilter = filter;
dotpos = filter.lastIndexOf("/");
begFilter = filter.substring(0, dotpos);
addFilter = true;
iter = getResultsForScenario3(getClsForFilter(begFilter), begFilter);
filter = filter.substring(dotpos + 1);
break;
}
processInfo.put("layout", layout);
processInfo.put("filter", filter);
processInfo.put("begLine", begLine);
processInfo.put("isClojure", isClojure);
processInfo.put("origFilter", origFilter);
return iter;
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
}
return iter;
}
private Iterator getiterator() {
try {
return ((Iterable) getnamesfn.invoke(Symbol.create("clojure.core"))).iterator();
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
}
return null;
}
private Iterator getclojureiterator() {
try {
return ((Iterable) getclojurenamesfn.invoke(Symbol.create("clojure.core"))).iterator();
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
}
return null;
}
private Iterator getclojurefunctionsforns(String nspart) {
try {
java.lang.Object iter = (getclojurefunctionsfornsfn.invoke(nspart));
if (iter != null)
return ((Iterable) iter).iterator();
else
return null;
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getJavaMethods(String classname) {
try {
return ((Iterable) getjavamethodsfn.invoke(Class.forName(classname))).iterator();
} catch (Exception ex) {
// Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getStaticJavaMethods(String classname) {
try {
return ((Iterable) getstaticjavamethodsfn.invoke(Class.forName(classname))).iterator();
} catch (Exception ex) {
// Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getAllJavaMethods() {
try {
return ((Iterable) getalljavamethodsfn.invoke(Symbol.create("clojure.core"))).iterator();
} catch (Exception ex) {
// Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getAllJavaInstanceMethods(String classname) {
try {
return ((Iterable) getalljavainstancemethodsfn.invoke(Class.forName(classname))).iterator();
} catch (Exception ex) {
// Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getAllClojureNamespaces1(String filter) {
try {
return ((Iterable) getallclojurenamespaces1fn.invoke(1)).iterator();
} catch (Exception ex) {
// Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getResultsForScenario1(String classname, String filter) {
try {
gettingMethods = false;
if (ctype == CompletionProvider.COMPLETION_ALL_QUERY_TYPE) {
completionResultSet.setHasAdditionalItems(true);
getExtLibs = true;
} else {
completionResultSet.setHasAdditionalItems(false);
getExtLibs = false;
}
Project proj = ReplTopComponent.GetProjectFromDocument(document);
if (!getExtLibs) {
proj = null;
CurrentList = Scenario1List;
} else
CurrentList = Scenario1ListExtLib;
int listSize = CurrentList.size();
if (classname == null) {
if (listSize > 0)
return CurrentList.iterator();
else
return ((Iterable) getresultsforscenario1fn.invoke(proj, jTextComponent, null, filter)).iterator();
} else {
gettingMethods = true;
return ((Iterable) getresultsforscenario1fn.invoke(proj, jTextComponent, Class.forName(classname), filter)).iterator();
}
} catch (Exception ex) {
// Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getResultsForScenario2(String filter) {
try {
gettingMethods = false;
if (ctype == CompletionProvider.COMPLETION_ALL_QUERY_TYPE) {
completionResultSet.setHasAdditionalItems(true);
getExtLibs = true;
} else {
completionResultSet.setHasAdditionalItems(false);
getExtLibs = false;
}
Project proj = ReplTopComponent.GetProjectFromDocument(document);
if (!getExtLibs) {
proj = null;
CurrentList = Scenario2List;
} else
CurrentList = Scenario2ListExtLib;
int listSize = CurrentList.size();
if (listSize > 0)
return CurrentList.iterator();
else
return ((Iterable) getresultsforscenario2fn.invoke(proj, jTextComponent, Symbol.create("clojure.core"), filter)).iterator();
} catch (Exception ex) {
// Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getResultsForScenario3(String classname, String filter) {
try {
gettingMethods = false;
CurrentList = Scenario3List;
if (classname == null) {
gettingMethods = true;
return ((Iterable) getresultsforscenario3fn.invoke(null, filter)).iterator();
} else {
gettingMethods = true;
return ((Iterable) getresultsforscenario3fn.invoke(Class.forName(classname), filter)).iterator();
}
} catch (Exception ex) {
// Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getResultsForScenario4() {
try {
gettingMethods = false;
if (ctype == CompletionProvider.COMPLETION_ALL_QUERY_TYPE) {
completionResultSet.setHasAdditionalItems(true);
getExtLibs = true;
} else {
completionResultSet.setHasAdditionalItems(false);
getExtLibs = false;
}
Project proj = ReplTopComponent.GetProjectFromDocument(document);
if (!getExtLibs) {
proj = null;
CurrentList = Scenario4List;
} else
CurrentList = Scenario4List;
int listSize = CurrentList.size();
if (listSize > 0)
return CurrentList.iterator();
else
return ((Iterable) getresultsforscenario4fn.invoke(proj)).iterator();
} catch (Exception ex) {
// Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getAllJavaClasses() {
try {
return ((Iterable) getalljavaclassesfn.invoke(jTextComponent)).iterator();
} catch (Exception ex) {
// Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getAllJavaClasses(String filter) {
try {
return ((Iterable) getalljavaclassesbyfilterfn.invoke(jTextComponent, filter)).iterator();
} catch (Exception ex) {
// Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getAllClojureNamespaces(String filter) {
try {
return ((Iterable) getallclojurenamespacesfn.invoke(jTextComponent, filter)).iterator();
} catch (Exception ex) {
// Exceptions.printStackTrace(ex);
return null;
}
}
private Iterator getFullJavaClasses() {
try {
return ((Iterable) getfulljavaclassesfn.invoke(Symbol.create("clojure.core"))).iterator();
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
}
return null;
}
private Iterator getEnclosingFormMap(JTextComponent jTextComponent) {
try {
return ((Iterable) selectcurrentformfn.invoke(jTextComponent)).iterator();
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
}
return null;
}
private String getClsForFilter(String filterstr) {
Iterator iter;
iter = getAllJavaClasses();
if (iter != null) {
while (iter.hasNext()) {
final String entry = (String) iter.next();
if ((entry.endsWith("." + filterstr)) || (entry.equals(filterstr)))
return entry;
}
return null;
} else
return null;
}
private boolean containsFilter(Iterator iter, String filter) {
try {
if (iter != null) {
while (iter.hasNext()) {
final String entry = (String) iter.next();
if ((filter != null) && (entry.startsWith(filter)))
return true;
}
}
return false;
} catch (Exception ex) {
Exceptions.printStackTrace(ex);
return false;
}
}
}
Operation oper = new Operation();
bDoc.render(oper);
}
}, jTextComponent);
}
use of javax.swing.text.Document in project vcell by virtualcell.
the class TextFieldAutoCompletion method onComplete.
private void onComplete() {
bInCompleteTask = true;
try {
String match = (String) autoCompJList.getSelectedValue();
if (match == null) {
return;
}
boolean bFunction = match.endsWith(")");
CurrentWord currentWord = findCurrentWord(null);
Document doc = getDocument();
if (currentWord == null) {
doc.insertString(0, match, null);
setCaretPosition(match.length() + (bFunction ? -1 : 0));
} else {
doc.remove(currentWord.startPos, currentWord.endPos - currentWord.startPos + 1);
doc.insertString(currentWord.startPos, match, null);
setCaretPosition(currentWord.startPos + match.length() + (bFunction ? -1 : 0));
}
SwingUtilities.invokeLater(new Runnable() {
public void run() {
autoCompJPopupMenu.setVisible(false);
}
});
} catch (Exception e) {
e.printStackTrace();
} finally {
bInCompleteTask = false;
}
}
use of javax.swing.text.Document in project jdk8u_jdk by JetBrains.
the class LWTextAreaPeer method replaceRange.
@Override
public void replaceRange(final String text, final int start, final int end) {
synchronized (getDelegateLock()) {
// JTextArea.replaceRange() posts two different events.
// Since we make no differences between text events,
// the document listener has to be disabled while
// JTextArea.replaceRange() is called.
final Document document = getTextComponent().getDocument();
document.removeDocumentListener(this);
getTextComponent().replaceRange(text, start, end);
revalidate();
postEvent(new TextEvent(getTarget(), TextEvent.TEXT_VALUE_CHANGED));
document.addDocumentListener(this);
}
repaintPeer();
}
Aggregations