This is an automated email from the git hooks/post-receive script.

ben pushed a commit to branch master
in repository autocomplete.

commit 67bde52b93652a3a3f32c3713eead9f26850bd55
Author: bobbylight <[email protected]>
Date:   Tue Jun 26 03:19:29 2012 +0000

    Tweaks to template completions, added more template completions to 
JavaLanguageSupport demo.
---
 src/org/fife/ui/autocomplete/AutoCompletion.java   |   26 ++-
 .../autocomplete/AutoCompletionStyleContext.java   |  120 ++++++++++++
 .../fife/ui/autocomplete/FunctionCompletion.java   |   10 +-
 .../ui/autocomplete/ParameterizedCompletion.java   |   12 +-
 .../ParameterizedCompletionContext.java            |  201 +++++++++++---------
 .../fife/ui/autocomplete/TemplateCompletion.java   |    8 +
 6 files changed, 275 insertions(+), 102 deletions(-)

diff --git a/src/org/fife/ui/autocomplete/AutoCompletion.java 
b/src/org/fife/ui/autocomplete/AutoCompletion.java
index 9c46c9e..b5f5141 100644
--- a/src/org/fife/ui/autocomplete/AutoCompletion.java
+++ b/src/org/fife/ui/autocomplete/AutoCompletion.java
@@ -203,6 +203,13 @@ public class AutoCompletion {
        private static final String PARAM_COMPLETE_KEY = 
"AutoCompletion.FunctionStart";
 
        /**
+        * Stores how to render auto-completion-specific highlights in text
+        * components.
+        */
+       private static final AutoCompletionStyleContext styleContext =
+                       new AutoCompletionStyleContext();
+
+       /**
         * Whether debug messages should be printed to stdout as AutoCompletion
         * runs.
         */
@@ -378,6 +385,17 @@ public class AutoCompletion {
 
 
        /**
+        * Returns the style context describing how auto-completion related
+        * highlights in the editor are rendered.
+        *
+        * @return The style context.
+        */
+       public static AutoCompletionStyleContext getStyleContext() {
+               return styleContext;
+       }
+
+
+       /**
         * Returns the text component for which auto-completion is enabled.
         *
         * @return The text component, or <code>null</code> if this
@@ -432,7 +450,7 @@ public class AutoCompletion {
         */
        private boolean hideParameterCompletionPopups() {
                if (pcc!=null) {
-                       pcc.setVisible(false, false);
+                       pcc.deactivate();
                        pcc = null;
                        return true;
                }
@@ -930,8 +948,8 @@ public class AutoCompletion {
         *        {@link CompletionProvider#getParameterListStart()} should be
         *        added to the text component.
         */
-       private void 
startParameterizedCompletionAssistance(ParameterizedCompletion pc,
-                                                                               
boolean addParamListStart) {
+       private void startParameterizedCompletionAssistance(
+                               ParameterizedCompletion pc, boolean 
addParamListStart) {
 
                // Get rid of the previous tooltip window, if there is one.
                hideParameterCompletionPopups();
@@ -949,7 +967,7 @@ public class AutoCompletion {
                }
 
                pcc = new ParameterizedCompletionContext(parentWindow, this, 
pc);
-               pcc.setVisible(true, addParamListStart);
+               pcc.activate(addParamListStart);
 
        }
 
diff --git a/src/org/fife/ui/autocomplete/AutoCompletionStyleContext.java 
b/src/org/fife/ui/autocomplete/AutoCompletionStyleContext.java
new file mode 100644
index 0000000..94c1f41
--- /dev/null
+++ b/src/org/fife/ui/autocomplete/AutoCompletionStyleContext.java
@@ -0,0 +1,120 @@
+/*
+ * 06/24/2012
+ *
+ * AutoCompletionStyleContext.java - Manages styles related to auto-completion.
+ * 
+ * This library is distributed under a modified BSD license.  See the included
+ * RSyntaxTextArea.License.txt file for details.
+ */
+package org.fife.ui.autocomplete;
+
+import java.awt.Color;
+
+
+/**
+ * Manages the colors shared across the library.
+ *
+ * @author Robert Futrell
+ * @version 1.0
+ */
+public class AutoCompletionStyleContext {
+
+       /**
+        * The color used to denote the ending caret position for parameterized
+        * completions.
+        */
+       private Color parameterizedCompletionCursorPositionColor;
+
+       /**
+        * The color used to highlight copies of editable parameters in
+        * parameterized completions.
+        */
+       private Color parameterCopyColor;
+
+       /**
+        * The color of the outline highlight used to denote editable parameters
+        * in parameterized completions.
+        */
+       private Color parameterOutlineColor;
+
+
+       public AutoCompletionStyleContext() {
+               setParameterOutlineColor(Color.gray);
+               setParameterCopyColor(new Color(0xb4d7ff));
+               setParameterizedCompletionCursorPositionColor(new 
Color(0x00b400));
+       }
+
+
+       /**
+        * Returns the color of the highlight painted on copies of editable
+        * parameters in parameterized completions.
+        *
+        * @return The color used.
+        * @see #setParameterCopyColor(Color)
+        */
+       public Color getParameterCopyColor() {
+               return parameterCopyColor;
+       }
+
+       
+       /**
+        * Returns the color used to denote the ending caret position for
+        * parameterized completions.
+        *
+        * @return The color used.
+        * @see #setParameterizedCompletionCursorPositionColor(Color)
+        */
+       public Color getParameterizedCompletionCursorPositionColor() {
+               return parameterizedCompletionCursorPositionColor;
+       }
+
+
+       /**
+        * Returns the color of the outline highlight used to denote editable
+        * parameters in parameterized completions.
+        *
+        * @return The color used.
+        * @see #setParameterOutlineColor(Color)
+        */
+       public Color getParameterOutlineColor() {
+               return parameterOutlineColor;
+       }
+
+
+       /**
+        * Sets the color of the highlight painted on copies of editable
+        * parameters in parameterized completions.
+        *
+        * @param color The color to use.
+        * @see #setParameterCopyColor(Color)
+        */
+       public void setParameterCopyColor(Color parameterCopyColor) {
+               this.parameterCopyColor = parameterCopyColor;
+       }
+
+
+       /**
+        * Sets the color used to denote the ending caret position for
+        * parameterized completions.
+        *
+        * @param color The color to use.
+        * @see #getParameterizedCompletionCursorPositionColor()
+        */
+       public void setParameterizedCompletionCursorPositionColor(Color color) {
+               this.parameterizedCompletionCursorPositionColor = color;
+       }
+
+
+       /**
+        * Sets the color of the outline highlight used to denote editable
+        * parameters in parameterized completions.
+        *
+        * @param color The color to use.
+        * @see #getParameterOutlineColor()
+        */
+       public void setParameterOutlineColor(Color color) {
+               this.parameterOutlineColor = color;
+       }
+
+
+}
\ No newline at end of file
diff --git a/src/org/fife/ui/autocomplete/FunctionCompletion.java 
b/src/org/fife/ui/autocomplete/FunctionCompletion.java
index 427d146..8f42b11 100644
--- a/src/org/fife/ui/autocomplete/FunctionCompletion.java
+++ b/src/org/fife/ui/autocomplete/FunctionCompletion.java
@@ -164,10 +164,8 @@ public class FunctionCompletion extends VariableCompletion
                // this tool tip.
                int minPos = dot;
                Position maxPos = null;
-               int defaultEndOffs = -1;
                try {
                        maxPos = 
tc.getDocument().createPosition(dot-sb.length()+1);
-                       defaultEndOffs = dot-sb.length();
                } catch (BadLocationException ble) {
                        ble.printStackTrace(); // Never happens
                }
@@ -230,6 +228,14 @@ public class FunctionCompletion extends VariableCompletion
 
 
        /**
+        * {@inheritDoc}
+        */
+       public boolean getShowParameterToolTip() {
+               return true;
+       }
+
+
+       /**
         * Returns the text to insert for a parameter.
         *
         * @param param The parameter.
diff --git a/src/org/fife/ui/autocomplete/ParameterizedCompletion.java 
b/src/org/fife/ui/autocomplete/ParameterizedCompletion.java
index acd674f..2b4531e 100644
--- a/src/org/fife/ui/autocomplete/ParameterizedCompletion.java
+++ b/src/org/fife/ui/autocomplete/ParameterizedCompletion.java
@@ -55,10 +55,16 @@ public interface ParameterizedCompletion extends Completion 
{
 
 
        /**
-        * A parameter passed to a parameterized {@link Completion}.
+        * Returns whether a tool tip displaying assistance for each parameter
+        * while it is being edited is appropriate for this completion.
         *
-        * @author Robert Futrell
-        * @version 1.0
+        * @return Whether the tool tip is appropriate to display.
+        */
+       public boolean getShowParameterToolTip();
+
+
+       /**
+        * A parameter passed to a parameterized {@link Completion}.
         */
        public static class Parameter {
 
diff --git a/src/org/fife/ui/autocomplete/ParameterizedCompletionContext.java 
b/src/org/fife/ui/autocomplete/ParameterizedCompletionContext.java
index 62e2a5e..8cd6fe4 100644
--- a/src/org/fife/ui/autocomplete/ParameterizedCompletionContext.java
+++ b/src/org/fife/ui/autocomplete/ParameterizedCompletionContext.java
@@ -9,7 +9,6 @@
  */
 package org.fife.ui.autocomplete;
 
-import java.awt.Color;
 import java.awt.Point;
 import java.awt.Rectangle;
 import java.awt.Window;
@@ -39,6 +38,7 @@ import javax.swing.text.Highlighter;
 import javax.swing.text.JTextComponent;
 import javax.swing.text.Position;
 import javax.swing.text.Highlighter.Highlight;
+import javax.swing.text.Highlighter.HighlightPainter;
 
 import org.fife.ui.autocomplete.ParameterizedCompletion.Parameter;
 import 
org.fife.ui.autocomplete.ParameterizedCompletionInsertionInfo.ReplacementCopy;
@@ -76,6 +76,11 @@ class ParameterizedCompletionContext {
        private ParameterizedCompletion pc;
 
        /**
+        * Whether parameterized completion assistance is active.
+        */
+       private boolean active;
+
+       /**
         * A tool tip displaying the currently edited parameter name and type.
         */
        private ParameterizedCompletionDescriptionToolTip tip;
@@ -85,6 +90,8 @@ class ParameterizedCompletionContext {
         */
        private Highlighter.HighlightPainter p;
 
+       private Highlighter.HighlightPainter endingP;
+
        private Highlighter.HighlightPainter paramCopyP;
 
        /**
@@ -167,13 +174,61 @@ class ParameterizedCompletionContext {
                this.pc = pc;
                listener = new Listener();
 
-               p = new OutlineHighlightPainter(Color.GRAY);
-               paramCopyP = new ChangeableHighlightPainter(new Color(255, 224, 
224));
+               AutoCompletionStyleContext sc = 
AutoCompletion.getStyleContext();
+               p = new OutlineHighlightPainter(sc.getParameterOutlineColor());
+               endingP = new OutlineHighlightPainter(
+                               
sc.getParameterizedCompletionCursorPositionColor());
+               paramCopyP = new 
ChangeableHighlightPainter(sc.getParameterCopyColor());
                tags = new ArrayList(1); // Usually small
                paramCopyInfos = new ArrayList(1);
 
-               tip = new 
ParameterizedCompletionDescriptionToolTip(parentWindow,
-                                                                               
                                        this, ac, pc);
+       }
+
+
+       /**
+        * Activates parameter completion support.
+        *
+        * @param addParamListStart Whether the parameter list start token 
should
+        *        be inserted at the caret position before the parameters.
+        * @see #deactivate()
+        */
+       public void activate(boolean addParamListStart) {
+
+               if (active) {
+                       return;
+               }
+
+               active = true;
+               JTextComponent tc = ac.getTextComponent();
+               lastSelectedParam = -1;
+
+               if (pc.getShowParameterToolTip()) {
+                       tip = new ParameterizedCompletionDescriptionToolTip(
+                                       parentWindow, this, ac, pc);
+                       try {
+                               int dot = tc.getCaretPosition();
+                               Rectangle r = tc.modelToView(dot);
+                               Point p = new Point(r.x, r.y);
+                               SwingUtilities.convertPointToScreen(p, tc);
+                               r.x = p.x;
+                               r.y = p.y;
+                               tip.setLocationRelativeTo(r);
+                               tip.setVisible(true);
+                       } catch (BadLocationException ble) { // Should never 
happen
+                               
UIManager.getLookAndFeel().provideErrorFeedback(tc);
+                               ble.printStackTrace();
+                               tip = null;
+                       }
+               }
+
+               listener.install(tc, addParamListStart);
+               // First time through, we'll need to create this window.
+               if (paramChoicesWindow==null) {
+                       paramChoicesWindow = createParamChoicesWindow();
+               }
+               lastSelectedParam = getCurrentParameterIndex();
+               prepareParamChoicesWindow();
+               paramChoicesWindow.setVisible(true);
 
        }
 
@@ -193,6 +248,27 @@ class ParameterizedCompletionContext {
 
 
        /**
+        * Hides any popup windows and terminates parameterized completion
+        * assistance.
+        *
+        * @see #activate(boolean)
+        */
+       public void deactivate() {
+               if (!active) {
+                       return;
+               }
+               active = false;
+               listener.uninstall();
+               if (tip!=null) {
+                       tip.setVisible(false);
+               }
+               if (paramChoicesWindow!=null) {
+                       paramChoicesWindow.setVisible(false);
+               }
+       }
+
+
+       /**
         * Returns the text inserted for the parameter containing the specified
         * offset.
         *
@@ -336,11 +412,12 @@ class ParameterizedCompletionContext {
 
 
        public List getParameterHighlights() {
-               List paramHighlights = new ArrayList(1);
+               List paramHighlights = new ArrayList(2);
                JTextComponent tc = ac.getTextComponent();
                Highlight[] highlights = tc.getHighlighter().getHighlights();
                for (int i=0; i<highlights.length; i++) {
-                       if (highlights[i].getPainter()==p) {
+                       HighlightPainter painter = highlights[i].getPainter();
+                       if (painter==p || painter==endingP) {
                                paramHighlights.add(highlights[i]);
                        }
                }
@@ -451,7 +528,7 @@ class ParameterizedCompletionContext {
                int tagCount = tags.size();
                if (tagCount==0) {
                        tc.setCaretPosition(maxPos.getOffset());
-                       setVisible(false, false);
+                       deactivate();
                }
 
                Highlight currentNext = null;
@@ -497,7 +574,7 @@ class ParameterizedCompletionContext {
                int tagCount = tags.size();
                if (tagCount==0) { // Should never happen
                        tc.setCaretPosition(maxPos.getOffset());
-                       setVisible(false, false);
+                       deactivate();
                }
 
                int dot = tc.getCaretPosition();
@@ -536,7 +613,7 @@ class ParameterizedCompletionContext {
                }
                else {
                        tc.setCaretPosition(maxPos.getOffset());
-                       setVisible(false, false);
+                       deactivate();
                }
 
        }
@@ -551,7 +628,7 @@ class ParameterizedCompletionContext {
                        // Typing in an "end parameter" => stop parameter 
assistance.
                        Parameter param = pc.getParam(index);
                        if (param.isEndParam()) {
-                               setVisible(false, false);
+                               deactivate();
                                return;
                        }
 
@@ -579,7 +656,7 @@ class ParameterizedCompletionContext {
                }
 
                else { // Probably the "end parameter" for FunctionCompletions.
-                       setVisible(false, false);
+                       deactivate();
                }
 
        }
@@ -680,62 +757,6 @@ class ParameterizedCompletionContext {
 
 
        /**
-        * Toggles the visibility of this tool tip.
-        *
-        * @param visible Whether the tool tip should be visible.
-        * @param addParamListStart Whether or not
-        *        {@link CompletionProvider#getParameterListStart()} should be
-        *        added to the text component.  If <code>visible</code> is
-        *        <code>false</code>, this parameter is ignored.
-        */
-       public void setVisible(boolean visible, boolean addParamListStart) {
-
-               if (visible!=tip.isVisible()) {
-
-                       JTextComponent tc = ac.getTextComponent();
-
-                       if (visible) {
-
-                               lastSelectedParam = -1;
-
-                               try {
-                                       int dot = tc.getCaretPosition();
-                                       Rectangle r = tc.modelToView(dot);
-                                       Point p = new Point(r.x, r.y);
-                                       SwingUtilities.convertPointToScreen(p, 
tc);
-                                       r.x = p.x;
-                                       r.y = p.y;
-                                       tip.setLocationRelativeTo(r);
-                               } catch (BadLocationException ble) { // Should 
never happen
-                                       
UIManager.getLookAndFeel().provideErrorFeedback(tc);
-                                       ble.printStackTrace();
-                               }
-
-                               listener.install(tc, addParamListStart);
-                               // First time through, we'll need to create 
this window.
-                               if (paramChoicesWindow==null) {
-                                       paramChoicesWindow = 
createParamChoicesWindow();
-                               }
-                               lastSelectedParam = getCurrentParameterIndex();
-                               prepareParamChoicesWindow();
-
-                       }
-                       else {
-                               listener.uninstall();
-                       }
-
-                       tip.setVisible(visible);
-                       if (paramChoicesWindow!=null) {
-                               // Only really needed to hide the window (i.e. 
visible==false)
-                               paramChoicesWindow.setVisible(visible);
-                       }
-
-               }
-
-       }
-
-
-       /**
         * Removes the key bindings we installed.
         *
         * @see #installKeyBindings()
@@ -826,7 +847,9 @@ class ParameterizedCompletionContext {
 
        private void updateToolTipText(int selectedParam) {
                if (selectedParam!=lastSelectedParam) {
-                       tip.updateText(selectedParam);
+                       if (tip!=null) {
+                               tip.updateText(selectedParam);
+                       }
                        this.lastSelectedParam = selectedParam;
                }
        }
@@ -837,7 +860,9 @@ class ParameterizedCompletionContext {
         * manages.
         */
        public void updateUI() {
-               tip.updateUI();
+               if (tip!=null) {
+                       tip.updateUI();
+               }
                if (paramChoicesWindow!=null) {
                        paramChoicesWindow.updateUI();
                }
@@ -846,9 +871,6 @@ class ParameterizedCompletionContext {
 
        /**
         * Called when the user presses Enter while entering parameters.
-        *
-        * @author Robert Futrell
-        * @version 1.0
         */
        private class GotoEndAction extends AbstractAction {
 
@@ -865,7 +887,7 @@ class ParameterizedCompletionContext {
                        // Otherwise, just move to the end.
                        JTextComponent tc = ac.getTextComponent();
                        tc.setCaretPosition(defaultEndOffs.getOffset());
-                       setVisible(false, false);
+                       deactivate();
 
                }
 
@@ -875,9 +897,6 @@ class ParameterizedCompletionContext {
        /**
         * Called when the user types the character marking the closing of the
         * parameter list, such as '<code>)</code>'.
-        *
-        * @author Robert Futrell
-        * @version 1.0
         */
        private class ClosingAction extends AbstractAction {
 
@@ -911,7 +930,7 @@ class ParameterizedCompletionContext {
                                        
tc.setCaretPosition(tc.getCaretPosition()+1);
                                }
 
-                               setVisible(false, false);
+                               deactivate();
 
                        }
 
@@ -939,9 +958,6 @@ class ParameterizedCompletionContext {
 
        /**
         * Action performed when the user hits the escape key.
-        *
-        * @author Robert Futrell
-        * @version 1.0
         */
        private class HideAction extends AbstractAction {
 
@@ -955,7 +971,7 @@ class ParameterizedCompletionContext {
                                paramChoicesWindow = null;
                        }
                        else {
-                               setVisible(false, false);
+                               deactivate();
                        }
                }
 
@@ -965,9 +981,6 @@ class ParameterizedCompletionContext {
        /**
         * Listens for various events in the text component while this tool tip
         * is visible.
-        *
-        * @author Robert Futrell
-        * @version 1.0
         */
        private class Listener implements FocusListener, CaretListener,
                                                        DocumentListener {
@@ -981,17 +994,16 @@ class ParameterizedCompletionContext {
                 */
                public void caretUpdate(CaretEvent e) {
                        if (maxPos==null) { // Sanity check
-                               setVisible(false, false);
+                               deactivate();
                                return;
                        }
                        int dot = e.getDot();
                        if (dot<minPos || dot>=maxPos.getOffset()) {
-                               System.err.println(">>>>> dot==" + dot + ", " + 
minPos + ", " + maxPos);
-                               setVisible(false, false);
+                               deactivate();
                                return;
                        }
                        paramPrefix = updateToolTipText();
-                       if (tip.isVisible()) {
+                       if (active) {
                                prepareParamChoicesWindow();
                        }
                }
@@ -1017,7 +1029,7 @@ class ParameterizedCompletionContext {
                 * @param e The event.
                 */
                public void focusLost(FocusEvent e) {
-                       setVisible(false, false);
+                       deactivate();
                }
 
 
@@ -1068,10 +1080,13 @@ class ParameterizedCompletionContext {
                                tc.replaceSelection(info.getTextToInsert());
 
                                // Add highlights around the parameters.
-                               for (int i=0; i<info.getReplacementCount(); 
i++) {
+                               final int replacementCount = 
info.getReplacementCount();
+                               for (int i=0; i<replacementCount; i++) {
                                        DocumentRange dr = 
info.getReplacementLocation(i);
+                                       HighlightPainter painter = 
i<replacementCount-1 ? p : endingP;
                                         // "-1" is a workaround for Java 
Highlight issues.
-                                       
tags.add(h.addHighlight(dr.getStartOffset()-1, dr.getEndOffset(), p));
+                                       tags.add(h.addHighlight(
+                                                       dr.getStartOffset()-1, 
dr.getEndOffset(), painter));
                                }
                                for (int i=0; i<info.getReplacementCopyCount(); 
i++) {
                                        ReplacementCopy rc = 
info.getReplacementCopy(i);
@@ -1163,7 +1178,7 @@ class ParameterizedCompletionContext {
                                oldAction.actionPerformed(e);
                        }
                        else {
-                               setVisible(false, false);
+                               deactivate();
                        }
                }
 
diff --git a/src/org/fife/ui/autocomplete/TemplateCompletion.java 
b/src/org/fife/ui/autocomplete/TemplateCompletion.java
index 6e5efad..c2b35c4 100644
--- a/src/org/fife/ui/autocomplete/TemplateCompletion.java
+++ b/src/org/fife/ui/autocomplete/TemplateCompletion.java
@@ -125,6 +125,14 @@ public class TemplateCompletion extends AbstractCompletion
        }
 
 
+       /**
+        * {@inheritDoc}
+        */
+       public boolean getShowParameterToolTip() {
+               return false;
+       }
+
+
        public ParameterizedCompletionInsertionInfo getInsertionInfo(
                        JTextComponent tc, boolean addParamStartList,
                        boolean replaceTabsWithSpaces) {

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-java/autocomplete.git

_______________________________________________
pkg-java-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-java-commits

Reply via email to