Search in sources :

Example 1 with StyledDocument

use of javax.swing.text.StyledDocument in project jphp by jphp-compiler.

the class UIRichTextArea method appendText.

@Signature({ @Arg("text"), @Arg(value = "style", nativeType = WrapStyle.class) })
public Memory appendText(Environment env, Memory... args) throws BadLocationException {
    StyledDocument doc = component.getContent().getStyledDocument();
    doc.insertString(doc.getLength(), args[0].toString(), args[1].toObject(WrapStyle.class).getStyle());
    return Memory.NULL;
}
Also used : StyledDocument(javax.swing.text.StyledDocument)

Example 2 with StyledDocument

use of javax.swing.text.StyledDocument in project pcgen by PCGen.

the class NotesView method updateButtons.

//Methods for dealing with button appearance
/**
	 *  Updates Editing buttons based on the location of the cursor
	 *
	 *@param  textPane  text pane to update buttons base on
	 *@param  pos       current text position
	 */
private void updateButtons(JTextPane textPane, int pos) {
    StyledDocument doc = textPane.getStyledDocument();
    AttributeSet set = doc.getCharacterElement(pos - 1).getAttributes();
    AttributeSet set1 = doc.getCharacterElement(pos).getAttributes();
    if (StyleConstants.isBold(set) && StyleConstants.isBold(set1)) {
        highlightButton(boldButton);
    } else {
        stdButton(boldButton);
    }
    if (StyleConstants.isItalic(set) && StyleConstants.isItalic(set1)) {
        highlightButton(italicButton);
    } else {
        stdButton(italicButton);
    }
    if (StyleConstants.isUnderline(set) && StyleConstants.isUnderline(set1)) {
        highlightButton(underlineButton);
    } else {
        stdButton(underlineButton);
    }
    int align = StyleConstants.getAlignment(set);
    stdButton(leftJustifyButton);
    stdButton(rightJustifyButton);
    stdButton(centerJustifyButton);
    if (align == StyleConstants.ALIGN_LEFT) {
        highlightButton(leftJustifyButton);
    } else if (align == StyleConstants.ALIGN_RIGHT) {
        highlightButton(rightJustifyButton);
    } else if (align == StyleConstants.ALIGN_CENTER) {
        highlightButton(centerJustifyButton);
    }
    int fontSize = StyleConstants.getFontSize(set);
    for (int i = 0; i < sizeCB.getItemCount(); i++) {
        String value = (String) sizeCB.getItemAt(i);
        if (value.equals(Integer.toString(fontSize))) {
            sizeCB.setSelectedItem(value);
            break;
        }
    }
}
Also used : AttributeSet(javax.swing.text.AttributeSet) SimpleAttributeSet(javax.swing.text.SimpleAttributeSet) StyledDocument(javax.swing.text.StyledDocument) Point(java.awt.Point)

Example 3 with StyledDocument

use of javax.swing.text.StyledDocument in project jmeter by apache.

the class SamplerResultTab method createResponseMetadataPanel.

private Component createResponseMetadataPanel() {
    stats = new JTextPane();
    stats.setEditable(false);
    stats.setBackground(backGround);
    // Add styles to use for different types of status messages
    StyledDocument doc = (StyledDocument) stats.getDocument();
    Style style = doc.addStyle(STYLE_REDIRECT, null);
    StyleConstants.setForeground(style, REDIRECT_COLOR);
    style = doc.addStyle(STYLE_CLIENT_ERROR, null);
    StyleConstants.setForeground(style, CLIENT_ERROR_COLOR);
    style = doc.addStyle(STYLE_SERVER_ERROR, null);
    StyleConstants.setForeground(style, SERVER_ERROR_COLOR);
    paneRaw = GuiUtils.makeScrollPane(stats);
    paneRaw.setBorder(BorderFactory.createEmptyBorder(2, 2, 2, 2));
    // Set up the 1st table Result with empty headers
    tableResult = new JTable(resultModel);
    JMeterUtils.applyHiDPI(tableResult);
    // $NON-NLS-1$
    tableResult.setToolTipText(JMeterUtils.getResString("textbox_tooltip_cell"));
    tableResult.addMouseListener(new TextBoxDoubleClick(tableResult));
    setFirstColumnPreferredSize(tableResult);
    RendererUtils.applyRenderers(tableResult, RENDERERS_RESULT);
    // Set up the 2nd table 
    tableResHeaders = new JTable(resHeadersModel);
    JMeterUtils.applyHiDPI(tableResHeaders);
    // $NON-NLS-1$
    tableResHeaders.setToolTipText(JMeterUtils.getResString("textbox_tooltip_cell"));
    tableResHeaders.addMouseListener(new TextBoxDoubleClick(tableResHeaders));
    setFirstColumnPreferredSize(tableResHeaders);
    tableResHeaders.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer());
    RendererUtils.applyRenderers(tableResHeaders, RENDERERS_HEADERS);
    // Set up the 3rd table 
    tableResFields = new JTable(resFieldsModel);
    JMeterUtils.applyHiDPI(tableResFields);
    // $NON-NLS-1$
    tableResFields.setToolTipText(JMeterUtils.getResString("textbox_tooltip_cell"));
    tableResFields.addMouseListener(new TextBoxDoubleClick(tableResFields));
    setFirstColumnPreferredSize(tableResFields);
    tableResFields.getTableHeader().setDefaultRenderer(new HeaderAsPropertyRenderer());
    RendererUtils.applyRenderers(tableResFields, RENDERERS_FIELDS);
    // Prepare the Results tabbed pane
    tabbedResult = new JTabbedPane(SwingConstants.BOTTOM);
    // Create the split pane
    JSplitPane topSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, GuiUtils.makeScrollPane(tableResHeaders), GuiUtils.makeScrollPane(tableResFields));
    topSplit.setOneTouchExpandable(true);
    // set split ratio
    topSplit.setResizeWeight(0.80);
    // see bug jdk 4131528
    topSplit.setBorder(null);
    paneParsed = new JSplitPane(JSplitPane.VERTICAL_SPLIT, GuiUtils.makeScrollPane(tableResult), topSplit);
    paneParsed.setOneTouchExpandable(true);
    // set split ratio
    paneParsed.setResizeWeight(0.40);
    // see bug jdk 4131528
    paneParsed.setBorder(null);
    // setup bottom tabs, first Raw, second Parsed
    //$NON-NLS-1$
    tabbedResult.addTab(JMeterUtils.getResString("view_results_table_result_tab_raw"), paneRaw);
    //$NON-NLS-1$
    tabbedResult.addTab(JMeterUtils.getResString("view_results_table_result_tab_parsed"), paneParsed);
    // Hint to background color on bottom tabs (grey, not blue)
    JPanel panel = new JPanel(new BorderLayout());
    panel.add(tabbedResult);
    return panel;
}
Also used : JTextPane(javax.swing.JTextPane) JPanel(javax.swing.JPanel) BorderLayout(java.awt.BorderLayout) JTable(javax.swing.JTable) HeaderAsPropertyRenderer(org.apache.jmeter.gui.util.HeaderAsPropertyRenderer) JTabbedPane(javax.swing.JTabbedPane) StyledDocument(javax.swing.text.StyledDocument) Style(javax.swing.text.Style) TextBoxDoubleClick(org.apache.jmeter.gui.util.TextBoxDialoger.TextBoxDoubleClick) JSplitPane(javax.swing.JSplitPane)

Example 4 with StyledDocument

use of javax.swing.text.StyledDocument 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);
}
Also used : AsyncCompletionTask(org.netbeans.spi.editor.completion.support.AsyncCompletionTask) Hashtable(java.util.Hashtable) StyledDocument(javax.swing.text.StyledDocument) ArrayList(java.util.ArrayList) CompletionResultSet(org.netbeans.spi.editor.completion.CompletionResultSet) JTextComponent(javax.swing.text.JTextComponent) AsyncCompletionQuery(org.netbeans.spi.editor.completion.support.AsyncCompletionQuery) StyledDocument(javax.swing.text.StyledDocument) Document(javax.swing.text.Document) BadLocationException(javax.swing.text.BadLocationException) Project(org.netbeans.api.project.Project) PersistentArrayMap(clojure.lang.PersistentArrayMap) Iterator(java.util.Iterator) BadLocationException(javax.swing.text.BadLocationException)

Example 5 with StyledDocument

use of javax.swing.text.StyledDocument in project omegat by omegat-org.

the class MatchesTextArea method setActiveMatch.

/**
 * Sets the index of an active match. It basically highlights the fuzzy
 * match string selected. (numbers start from 0)
 */
@Override
public void setActiveMatch(int activeMatch) {
    UIThreadsUtil.mustBeSwingThread();
    if (activeMatch < 0 || activeMatch >= matches.size() || this.activeMatch == activeMatch) {
        return;
    }
    this.activeMatch = activeMatch;
    StyledDocument doc = (StyledDocument) getDocument();
    doc.setCharacterAttributes(0, doc.getLength(), ATTRIBUTES_EMPTY, true);
    int start = delimiters.get(activeMatch);
    int end = delimiters.get(activeMatch + 1);
    NearString match = matches.get(activeMatch);
    // List tokens = match.str.getSrcTokenList();
    ITokenizer tokenizer = Core.getProject().getSourceTokenizer();
    if (tokenizer == null) {
        return;
    }
    // Apply sourceText styling
    if (sourcePos.get(activeMatch) != -1) {
        Token[] tokens = tokenizer.tokenizeVerbatim(match.source);
        // fix for bug 1586397
        byte[] attributes = match.attr;
        for (int i = 0; i < tokens.length; i++) {
            Token token = tokens[i];
            int tokstart = start + sourcePos.get(activeMatch) + token.getOffset();
            int toklength = token.getLength();
            if ((attributes[i] & StringData.UNIQ) != 0) {
                doc.setCharacterAttributes(tokstart, toklength, ATTRIBUTES_CHANGED, false);
            } else if ((attributes[i] & StringData.PAIR) != 0) {
                doc.setCharacterAttributes(tokstart, toklength, ATTRIBUTES_UNCHANGED, false);
            }
        }
    }
    // Iterate through (up to) 5 fuzzy matches
    for (int i = 0; i < diffInfos.size(); i++) {
        Map<Integer, List<TextRun>> diffInfo = diffInfos.get(i);
        // Iterate through each diff variant (${diff}, ${diffReversed}, ...)
        for (Entry<Integer, List<TextRun>> e : diffInfo.entrySet()) {
            int diffPos = e.getKey();
            if (diffPos != -1) {
                // Iterate through each style chunk (added or deleted)
                for (TextRun r : e.getValue()) {
                    int tokstart = delimiters.get(i) + diffPos + r.start;
                    switch(r.type) {
                        case DELETE:
                            doc.setCharacterAttributes(tokstart, r.length, i == activeMatch ? ATTRIBUTES_DELETED_ACTIVE : ATTRIBUTES_DELETED_INACTIVE, false);
                            break;
                        case INSERT:
                            doc.setCharacterAttributes(tokstart, r.length, i == activeMatch ? ATTRIBUTES_INSERTED_ACTIVE : ATTRIBUTES_INSERTED_INACTIVE, false);
                            break;
                        case NOCHANGE:
                    }
                }
            }
        }
    }
    doc.setCharacterAttributes(start, end - start, ATTRIBUTES_SELECTED, false);
    // two newlines
    setCaretPosition(end - 2);
    final int fstart = start;
    SwingUtilities.invokeLater(new Runnable() {

        @Override
        public void run() {
            setCaretPosition(fstart);
        }
    });
}
Also used : StyledDocument(javax.swing.text.StyledDocument) Token(org.omegat.util.Token) NearString(org.omegat.core.matching.NearString) TextRun(org.omegat.core.matching.DiffDriver.TextRun) Point(java.awt.Point) ITokenizer(org.omegat.tokenizer.ITokenizer) List(java.util.List) ArrayList(java.util.ArrayList)

Aggregations

StyledDocument (javax.swing.text.StyledDocument)53 BadLocationException (javax.swing.text.BadLocationException)24 Style (javax.swing.text.Style)16 SimpleAttributeSet (javax.swing.text.SimpleAttributeSet)11 Point (java.awt.Point)8 JLabel (javax.swing.JLabel)4 JTextPane (javax.swing.JTextPane)4 DefaultStyledDocument (javax.swing.text.DefaultStyledDocument)4 Font (java.awt.Font)3 ArrayList (java.util.ArrayList)3 Matcher (java.util.regex.Matcher)3 ImageIcon (javax.swing.ImageIcon)3 JPanel (javax.swing.JPanel)3 PersistentArrayMap (clojure.lang.PersistentArrayMap)2 BorderLayout (java.awt.BorderLayout)2 Dimension (java.awt.Dimension)2 Rectangle (java.awt.Rectangle)2 IOException (java.io.IOException)2 Pattern (java.util.regex.Pattern)2 Element (javax.swing.text.Element)2