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

ben pushed a commit to branch master
in repository autocomplete.

commit 28e1929b1aff2fb17a4f0a903b524cfda581d40b
Author: bobbylight <[email protected]>
Date:   Thu Apr 29 12:39:01 2010 +0000

    Tidying of completion renderers for C, HTML, PHP.
    Miscellaneous tweaks under the hood.
---
 .../ui/autocomplete/CompletionCellRenderer.java    |  110 ++++++++++++++++++--
 .../fife/ui/autocomplete/CompletionXMLParser.java  |   13 +++
 .../fife/ui/autocomplete/FunctionCompletion.java   |    4 +-
 .../fife/ui/autocomplete/VariableCompletion.java   |    5 +-
 4 files changed, 121 insertions(+), 11 deletions(-)

diff --git a/src/org/fife/ui/autocomplete/CompletionCellRenderer.java 
b/src/org/fife/ui/autocomplete/CompletionCellRenderer.java
index fa255f6..0ed3bc8 100644
--- a/src/org/fife/ui/autocomplete/CompletionCellRenderer.java
+++ b/src/org/fife/ui/autocomplete/CompletionCellRenderer.java
@@ -26,8 +26,13 @@ package org.fife.ui.autocomplete;
 import java.awt.Color;
 import java.awt.Component;
 import java.awt.Font;
+import java.awt.Graphics;
+import java.awt.Rectangle;
+
 import javax.swing.DefaultListCellRenderer;
 import javax.swing.JList;
+import javax.swing.plaf.basic.BasicHTML;
+import javax.swing.text.View;
 
 
 /**
@@ -60,6 +65,16 @@ public class CompletionCellRenderer extends 
DefaultListCellRenderer {
        private Font font;
 
        /**
+        * Whether to display the types of fields and return types of functions
+        * in the completion text.
+        */
+       private boolean showTypes;
+
+private boolean selected;
+private Color realBG;
+private Rectangle paintTextR;
+
+       /**
         * Keeps the HTML descriptions from "wrapping" in the list, which cuts 
off
         * words.
         */
@@ -71,7 +86,9 @@ public class CompletionCellRenderer extends 
DefaultListCellRenderer {
         */
        public CompletionCellRenderer() {
                //setDisplayFont(new Font("Monospaced", Font.PLAIN, 12));
-               //setAlternateBackground(new Color(0xf4f4f4));
+               setAlternateBackground(new Color(0xf4f4f4));
+               setShowTypes(true);
+               paintTextR = new Rectangle();
        }
 
 
@@ -115,6 +132,8 @@ public class CompletionCellRenderer extends 
DefaultListCellRenderer {
                if (font!=null) {
                        setFont(font); // Overrides super's 
setFont(list.getFont()).
                }
+this.selected = selected;
+this.realBG = altBG!=null && (index&1)==0 ? altBG : list.getBackground();
 
                if (value instanceof FunctionCompletion) {
                        FunctionCompletion fc = (FunctionCompletion)value;
@@ -143,6 +162,64 @@ public class CompletionCellRenderer extends 
DefaultListCellRenderer {
 
 
        /**
+        * Returns whether the types of fields and return types of methods are
+        * shown in the completion text.
+        *
+        * @return Whether to show the types.
+        * @see #setShowTypes(boolean)
+        */
+       public boolean getShowTypes() {
+               return showTypes;
+       }
+
+
+       protected void paintComponent(Graphics g) {
+
+               //super.paintComponent(g);
+
+               g.setColor(realBG);
+               int iconW = 0;
+               if (getIcon()!=null) {
+                       iconW = getIcon().getIconWidth();
+               }
+               if (selected && iconW>0) { // The icon area is never in the 
"selection"
+                       g.fillRect(0, 0, iconW, getHeight());
+                       g.setColor(getBackground());
+                       g.fillRect(iconW,0, getWidth()-iconW,getHeight());
+               }
+               else {
+                       g.setColor(getBackground());
+                       g.fillRect(0, 0, getWidth(), getHeight());
+               }
+               if (getIcon()!=null) {
+                       getIcon().paintIcon(this, g, 0, 0);
+               }
+
+               String text = getText();
+               if (text != null) {
+                       paintTextR.setBounds(iconW,0, 
getWidth()-iconW,getHeight());
+                       paintTextR.x += 3; // Force a slight margin
+                       int space = paintTextR.height - 
g.getFontMetrics().getHeight();
+                       View v = (View)getClientProperty(BasicHTML.propertyKey);
+                       if (v != null) {
+                               // HTML rendering doesn't auto-center 
vertically, for some
+                               // reason
+                               paintTextR.y += space/2;
+                               paintTextR.height -= space;
+                               v.paint(g, paintTextR);
+                       }
+                       else {
+                               int textX = paintTextR.x;
+                               int textY = paintTextR.y;// + 
g.getFontMetrics().getAscent();
+                               
System.out.println(g.getFontMetrics().getAscent());
+                               g.drawString(text, textX, textY);
+                       }
+               }
+
+       }
+
+
+       /**
         * Prepares this renderer to display a function completion. 
         *
         * @param list The list of choices being rendered.
@@ -183,13 +260,16 @@ public class CompletionCellRenderer extends 
DefaultListCellRenderer {
                        }
                }
                sb.append(fc.getProvider().getParameterListEnd());
-               sb.append(" : ");
-               if (!selected) {
-                       sb.append("<font color='#808080'>");
-               }
-               sb.append(fc.getType());
-               if (!selected) {
-                       sb.append("</font>");
+
+               if (getShowTypes() && fc.getType()!=null) {
+                       sb.append(" : ");
+                       if (!selected) {
+                               sb.append("<font color='#808080'>");
+                       }
+                       sb.append(fc.getType());
+                       if (!selected) {
+                               sb.append("</font>");
+                       }
                }
 
                setText(sb.toString());
@@ -253,7 +333,7 @@ public class CompletionCellRenderer extends 
DefaultListCellRenderer {
                StringBuffer sb = new StringBuffer(PREFIX);
                sb.append(vc.getName());
 
-               if (vc.getType()!=null) {
+               if (getShowTypes() && vc.getType()!=null) {
                        sb.append(" : ");
                        if (!selected) {
                                sb.append("<font color='#808080'>");
@@ -294,4 +374,16 @@ public class CompletionCellRenderer extends 
DefaultListCellRenderer {
        }
 
 
+       /**
+        * Sets whether the types of fields and return types of methods are
+        * shown in the completion text.
+        *
+        * @param show Whether to show the types.
+        * @see #getShowTypes()
+        */
+       public void setShowTypes(boolean show) {
+               this.showTypes = show;
+       }
+
+
 }
\ No newline at end of file
diff --git a/src/org/fife/ui/autocomplete/CompletionXMLParser.java 
b/src/org/fife/ui/autocomplete/CompletionXMLParser.java
index abca3f0..226d4da 100644
--- a/src/org/fife/ui/autocomplete/CompletionXMLParser.java
+++ b/src/org/fife/ui/autocomplete/CompletionXMLParser.java
@@ -151,6 +151,16 @@ public class CompletionXMLParser extends DefaultHandler {
        }
 
 
+       private BasicCompletion createOtherCompletion() {
+               BasicCompletion bc = new BasicCompletion(provider, name);
+               if (desc.length()>0) {
+                       bc.setSummary(desc.toString());
+                       desc.setLength(0);
+               }
+               return bc;
+       }
+
+
        private MarkupTagCompletion createMarkupTagCompletion() {
                MarkupTagCompletion mc = new MarkupTagCompletion(provider,
                                name);
@@ -198,6 +208,9 @@ public class CompletionXMLParser extends DefaultHandler {
                                else if ("tag".equals(type)) { // Markup tag, 
such as HTML
                                        c = createMarkupTagCompletion();
                                }
+                               else if ("other".equals(type)) {
+                                       c = createOtherCompletion();
+                               }
                                else {
                                        throw new InternalError("Unexpected 
type: " + type);
                                }
diff --git a/src/org/fife/ui/autocomplete/FunctionCompletion.java 
b/src/org/fife/ui/autocomplete/FunctionCompletion.java
index ec0f376..421ac27 100644
--- a/src/org/fife/ui/autocomplete/FunctionCompletion.java
+++ b/src/org/fife/ui/autocomplete/FunctionCompletion.java
@@ -192,7 +192,9 @@ public class FunctionCompletion extends VariableCompletion
        public String getSummary() {
                StringBuffer sb = new StringBuffer();
                addDefinitionString(sb);
-               possiblyAddDescription(sb);
+               if (!possiblyAddDescription(sb)) {
+                       sb.append("<br><br><br>");
+               }
                addParameters(sb);
                possiblyAddDefinedIn(sb);
                return sb.toString();
diff --git a/src/org/fife/ui/autocomplete/VariableCompletion.java 
b/src/org/fife/ui/autocomplete/VariableCompletion.java
index 20c5c65..89a3e90 100644
--- a/src/org/fife/ui/autocomplete/VariableCompletion.java
+++ b/src/org/fife/ui/autocomplete/VariableCompletion.java
@@ -170,13 +170,16 @@ public class VariableCompletion extends BasicCompletion {
         * defined.
         *
         * @param sb The buffer to append to.
+        * @return Whether there was a description to add.
         */
-       protected void possiblyAddDescription(StringBuffer sb) {
+       protected boolean possiblyAddDescription(StringBuffer sb) {
                if (getShortDescription()!=null) {
                        sb.append("<hr><br>");
                        sb.append(getShortDescription());
                        sb.append("<br><br><br>");
+                       return true;
                }
+               return false;
        }
 
 

-- 
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