Revision: 1297
Author:   mathiasbr
Date:     2006-08-13 12:15:18 -0700 (Sun, 13 Aug 2006)
ViewCVS:  http://svn.sourceforge.net/spring-rich-c/?rev=1297&view=rev

Log Message:
-----------
fix for RCP-354
OptimizedTableCellRenderer marked as deprecated as it is not working at last 
with 1.5.
Subclasses of OptimizedTableCellRenderer now use DefaultTableCellRenderer as 
base class.

Modified Paths:
--------------
    
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/TableUtils.java
    
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/BeanTableCellRenderer.java
    
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/BooleanTableCellRenderer.java
    
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/DateTimeTableCellRenderer.java
    
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/FormatTableCellRenderer.java
    
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/LabeledEnumTableCellRenderer.java
    
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/OptimizedTableCellRenderer.java
    
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/RowIndexColumnCellRenderer.java
    
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/TableRenderers.java
    
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/TimeTableCellRenderer.java
Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/TableUtils.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/TableUtils.java
  2006-08-12 13:35:30 UTC (rev 1296)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/TableUtils.java
  2006-08-13 19:15:18 UTC (rev 1297)
@@ -86,10 +86,8 @@
        }
 
        public static void installDefaultRenderers(JTable table) {
-               OptimizedTableCellRenderer defaultRenderer = new 
OptimizedTableCellRenderer();
                BeanTableCellRenderer beanRenderer = new 
BeanTableCellRenderer();
                table.setDefaultRenderer(Object.class, beanRenderer);
-               table.setDefaultRenderer(String.class, defaultRenderer);
                LabeledEnumTableCellRenderer er = new 
LabeledEnumTableCellRenderer();
                table.setDefaultRenderer(ShortCodedLabeledEnum.class, er);
                table.setDefaultRenderer(StringCodedLabeledEnum.class, er);

Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/BeanTableCellRenderer.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/BeanTableCellRenderer.java
      2006-08-12 13:35:30 UTC (rev 1296)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/BeanTableCellRenderer.java
      2006-08-13 19:15:18 UTC (rev 1297)
@@ -21,55 +21,58 @@
 import java.beans.Introspector;
 
 import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
 import javax.swing.table.TableCellRenderer;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.springframework.beans.BeanWrapper;
 import org.springframework.beans.BeanWrapperImpl;
 
 /**
+ * Renders a bean by using its default property. If no default property is 
defined the beans toString method will be
+ * used as the value. To render the default property the table default 
renderer for the property class will be used to
+ * get the cell component.
+ * 
+ * @see JTable#getDefaultRenderer(Class)
+ * 
  * @author Keith Donald
+ * @author Mathias Broekelmann
  */
-public class BeanTableCellRenderer extends OptimizedTableCellRenderer {
+public class BeanTableCellRenderer extends DefaultTableCellRenderer {
+    private static final Log log = 
LogFactory.getLog(BeanTableCellRenderer.class);
+
     private BeanWrapper beanWrapper;
 
+    public BeanTableCellRenderer() {
+        super();
+    }
+
+    public BeanTableCellRenderer(BeanWrapper wrapper) {
+        beanWrapper = wrapper;
+    }
+
     public Component getTableCellRendererComponent(JTable table, Object value, 
boolean isSelected, boolean hasFocus,
             int row, int column) {
-        super.getTableCellRendererComponent(table, value, isSelected, 
hasFocus, row, column);
-        if (value == null) {
-            return this;
-        }
-        if (beanWrapper == null) {
-            beanWrapper = new BeanWrapperImpl(value);
-        }
-        else {
-            beanWrapper.setWrappedInstance(value);
-        }
-        try {
-            BeanInfo info = Introspector.getBeanInfo(value.getClass());
-            int index = info.getDefaultPropertyIndex();
-            if (index != -1) {
-                String defaultPropName = 
beanWrapper.getPropertyDescriptors()[index].getName();
-                Object val = beanWrapper.getPropertyValue(defaultPropName);
-                TableCellRenderer r = table.getDefaultRenderer(val.getClass());
-                return r.getTableCellRendererComponent(table, val, isSelected, 
hasFocus, row, column);
+        if (value != null) {
+            if (beanWrapper == null) {
+                beanWrapper = new BeanWrapperImpl(value);
+            } else {
+                beanWrapper.setWrappedInstance(value);
             }
-
-            setText(String.valueOf(value));
+            try {
+                BeanInfo info = Introspector.getBeanInfo(value.getClass());
+                int index = info.getDefaultPropertyIndex();
+                if (index != -1) {
+                    String defaultPropName = 
beanWrapper.getPropertyDescriptors()[index].getName();
+                    Object val = beanWrapper.getPropertyValue(defaultPropName);
+                    TableCellRenderer r = 
table.getDefaultRenderer(val.getClass());
+                    return r.getTableCellRendererComponent(table, val, 
isSelected, hasFocus, row, column);
+                }
+            } catch (IntrospectionException e) {
+                log.debug("Error during introspection of bean: " + 
e.getMessage(), e);
+            }
         }
-        catch (IntrospectionException e) {
-            setText(String.valueOf(value));
-        }
-        return this;
+        return super.getTableCellRendererComponent(table, value, isSelected, 
hasFocus, row, column);
     }
-
-    /**
-     * Creates a ValuedEnumRenderer %DOC short caption%
-     * 
-     * %long description%.
-     *  
-     */
-    public BeanTableCellRenderer() {
-        super();
-    }
-
 }
\ No newline at end of file

Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/BooleanTableCellRenderer.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/BooleanTableCellRenderer.java
   2006-08-12 13:35:30 UTC (rev 1296)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/BooleanTableCellRenderer.java
   2006-08-13 19:15:18 UTC (rev 1297)
@@ -18,24 +18,27 @@
 import java.awt.Component;
 
 import javax.swing.JTable;
-import javax.swing.table.TableCellRenderer;
+import javax.swing.table.DefaultTableCellRenderer;
 
 import org.springframework.util.StringUtils;
 
 /**
  * @author Keith Donald
+ * @author Mathias Broekelmann
  */
-public class BooleanTableCellRenderer extends OptimizedTableCellRenderer 
implements TableCellRenderer {
+public class BooleanTableCellRenderer extends DefaultTableCellRenderer {
 
+    public BooleanTableCellRenderer() {
+        super();
+    }
+
     public Component getTableCellRendererComponent(JTable table, Object value, 
boolean isSelected, boolean hasFocus,
             int row, int column) {
-        super.getTableCellRendererComponent(table, value, isSelected, 
hasFocus, row, column);
-        this.setText(StringUtils.capitalize(((Boolean)value).toString()));
-        return this;
+        if (value != null) {
+            // TODO: localize value
+            value = StringUtils.capitalize(value.toString());
+        }
+        return super.getTableCellRendererComponent(table, value, isSelected, 
hasFocus, row, column);
     }
 
-    public BooleanTableCellRenderer() {
-        super();
-    }
-
 }
\ No newline at end of file

Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/DateTimeTableCellRenderer.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/DateTimeTableCellRenderer.java
  2006-08-12 13:35:30 UTC (rev 1296)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/DateTimeTableCellRenderer.java
  2006-08-13 19:15:18 UTC (rev 1297)
@@ -16,18 +16,18 @@
 package org.springframework.richclient.table.renderer;
 
 import java.text.DateFormat;
-import java.text.SimpleDateFormat;
 import java.util.TimeZone;
 
 /**
  * Renders a date/time in the standard format.
  * 
  * @author Keith Donald
+ * @author Mathias Broekelmann
  */
 public class DateTimeTableCellRenderer extends FormatTableCellRenderer {
-    
+
     public DateTimeTableCellRenderer() {
-        super(new SimpleDateFormat("EEE M/d/yyyy H:mm:ss"));
+        super(DateFormat.getInstance());
     }
 
     public DateTimeTableCellRenderer(DateFormat formatter) {
@@ -44,11 +44,10 @@
     }
 
     public void useGMTTime() {
-        setFormat(new SimpleDateFormat("EEE M/d/yyyy H:mm:ss z"));
         getDateFormat().setTimeZone(TimeZone.getTimeZone("GMT"));
     }
 
     public void useLocalTime() {
-        setFormat(new SimpleDateFormat("EEE M/d/yyyy H:mm:ss"));
+        getDateFormat().setTimeZone(TimeZone.getDefault());
     }
 }
\ No newline at end of file

Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/FormatTableCellRenderer.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/FormatTableCellRenderer.java
    2006-08-12 13:35:30 UTC (rev 1296)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/FormatTableCellRenderer.java
    2006-08-13 19:15:18 UTC (rev 1297)
@@ -19,35 +19,33 @@
 import java.text.Format;
 
 import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
 
 /**
  * @author Oliver Hutchison
+ * @author Mathias Broekelmann
  */
-public class FormatTableCellRenderer extends OptimizedTableCellRenderer {
-    
+public class FormatTableCellRenderer extends DefaultTableCellRenderer {
+
     private Format format;
-    
+
     public FormatTableCellRenderer(Format format) {
         setFormat(format);
     }
-    
+
     protected Format getFormat() {
         return format;
     }
-    
+
     protected void setFormat(Format format) {
-        this.format = format;        
+        this.format = format;
     }
-    
+
     public Component getTableCellRendererComponent(JTable table, Object value, 
boolean isSelected, boolean hasFocus,
             int row, int column) {
-        doPrepareRenderer(table, isSelected, hasFocus, row, column);
         if (value != null) {
-            setValue(format.format(value));
+            value = format.format(value);
         }
-        else {
-            setValue(null);
-        }
-        return this;
+        return super.getTableCellRendererComponent(table, value, isSelected, 
hasFocus, row, column);
     }
 }
\ No newline at end of file

Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/LabeledEnumTableCellRenderer.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/LabeledEnumTableCellRenderer.java
       2006-08-12 13:35:30 UTC (rev 1296)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/LabeledEnumTableCellRenderer.java
       2006-08-13 19:15:18 UTC (rev 1297)
@@ -19,7 +19,7 @@
 import java.util.Locale;
 
 import javax.swing.JTable;
-import javax.swing.table.TableCellRenderer;
+import javax.swing.table.DefaultTableCellRenderer;
 
 import org.springframework.context.MessageSource;
 import org.springframework.context.MessageSourceResolvable;
@@ -27,27 +27,25 @@
 
 /**
  * @author Keith Donald
+ * @author Mathias Broekelmann
  */
-public class LabeledEnumTableCellRenderer extends OptimizedTableCellRenderer 
implements TableCellRenderer {
-       private MessageSource messages;
+public class LabeledEnumTableCellRenderer extends DefaultTableCellRenderer {
+    private MessageSource messages;
 
-       public void setMessages(MessageSource messages) {
-               this.messages = messages;
-       }
+    public void setMessages(MessageSource messages) {
+        this.messages = messages;
+    }
 
-       public Component getTableCellRendererComponent(JTable table, Object 
value, boolean isSelected, boolean hasFocus,
-                       int row, int column) {
-               super.getTableCellRendererComponent(table, value, isSelected, 
hasFocus, row, column);
-               if (value == null) {
-                       return this;
-               }
-               if (messages != null && value instanceof 
MessageSourceResolvable) {
-                       
setText(messages.getMessage((MessageSourceResolvable)value, 
Locale.getDefault()));
-               }
-               else {
-                       setText(((LabeledEnum)value).getLabel());
-               }
-               return this;
-       }
+    public Component getTableCellRendererComponent(JTable table, Object value, 
boolean isSelected, boolean hasFocus,
+            int row, int column) {
+        if (value != null) {
+            if (messages != null && value instanceof MessageSourceResolvable) {
+                value = messages.getMessage((MessageSourceResolvable) value, 
Locale.getDefault());
+            } else {
+                value = ((LabeledEnum) value).getLabel();
+            }
+        }
+        return super.getTableCellRendererComponent(table, value, isSelected, 
hasFocus, row, column);
+    }
 
 }
\ No newline at end of file

Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/OptimizedTableCellRenderer.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/OptimizedTableCellRenderer.java
 2006-08-12 13:35:30 UTC (rev 1296)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/OptimizedTableCellRenderer.java
 2006-08-13 19:15:18 UTC (rev 1297)
@@ -28,6 +28,12 @@
  * A table cell renderer that has been optimized for performance
  * 
  * @author Keith Donald
+ * <p>
+ * XXX: please describe what is being optimized here and how it should be used.
+ * 
+ * @deprecated OptimizedTableCellRenderer messes up cell rendering see
+ *             [EMAIL PROTECTED] 
http://opensource.atlassian.com/projects/spring/browse/RCP-354}
+ * 
  */
 public class OptimizedTableCellRenderer extends DefaultTableCellRenderer {
     protected Border focusBorder = 
UIManager.getBorder("Table.focusCellHighlightBorder");

Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/RowIndexColumnCellRenderer.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/RowIndexColumnCellRenderer.java
 2006-08-12 13:35:30 UTC (rev 1296)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/RowIndexColumnCellRenderer.java
 2006-08-13 19:15:18 UTC (rev 1297)
@@ -19,34 +19,21 @@
 import java.awt.SystemColor;
 
 import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
 
 /**
  * Renders a date/time in the standard format.
  * 
  * @author Keith Donald
  */
-public class RowIndexColumnCellRenderer extends OptimizedTableCellRenderer {
+public class RowIndexColumnCellRenderer extends DefaultTableCellRenderer {
 
-    public RowIndexColumnCellRenderer() {
-    }
-
     public Component getTableCellRendererComponent(JTable table, Object value, 
boolean isSelected, boolean hasFocus,
             int row, int column) {
-        if (isSelected) {
-            setForeground(table.getSelectionForeground());
-            setBackground(table.getSelectionBackground());
+        Component comp = super.getTableCellRendererComponent(table, value, 
isSelected, false, row, column);
+        if (!isSelected) {
+            comp.setBackground(SystemColor.controlHighlight);
         }
-        else {
-            setForeground(table.getForeground());
-            setBackground(SystemColor.controlHighlight);
-        }
-        if (hasFocus) {
-            setBorder(focusBorder);
-        }
-        else {
-            setBorder(noFocusBorder);
-        }
-        setValue(value);
-        return this;
+        return comp;
     }
 }
\ No newline at end of file

Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/TableRenderers.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/TableRenderers.java
     2006-08-12 13:35:30 UTC (rev 1296)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/TableRenderers.java
     2006-08-13 19:15:18 UTC (rev 1297)
@@ -15,7 +15,7 @@
  */
 package org.springframework.richclient.table.renderer;
 
-import java.text.SimpleDateFormat;
+import java.text.DateFormat;
 import java.util.TimeZone;
 
 /**
@@ -24,9 +24,11 @@
 public class TableRenderers {
     public static final DateTimeTableCellRenderer LOCAL_DATE = new 
DateTimeTableCellRenderer();
 
-    public static final DateTimeTableCellRenderer GMT_DATE = new 
DateTimeTableCellRenderer(new SimpleDateFormat(
-            "EEE M/d/yyyy H:mm:ss z"));
+    private static final DateFormat GMT_DATE_FORMAT = DateFormat.getInstance();
+
     static {
-        GMT_DATE.getDateFormat().setTimeZone(TimeZone.getTimeZone("GMT"));
+        GMT_DATE_FORMAT.setTimeZone(TimeZone.getTimeZone("GMT"));
     }
+
+    public static final DateTimeTableCellRenderer GMT_DATE = new 
DateTimeTableCellRenderer(GMT_DATE_FORMAT);
 }
\ No newline at end of file

Modified: 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/TimeTableCellRenderer.java
===================================================================
--- 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/TimeTableCellRenderer.java
      2006-08-12 13:35:30 UTC (rev 1296)
+++ 
trunk/spring-richclient/support/src/main/java/org/springframework/richclient/table/renderer/TimeTableCellRenderer.java
      2006-08-13 19:15:18 UTC (rev 1297)
@@ -18,6 +18,7 @@
 import java.awt.Component;
 
 import javax.swing.JTable;
+import javax.swing.table.DefaultTableCellRenderer;
 
 import org.springframework.richclient.text.TimeFormat;
 
@@ -26,7 +27,7 @@
  * 
  * @author Keith Donald
  */
-public class TimeTableCellRenderer extends OptimizedTableCellRenderer {
+public class TimeTableCellRenderer extends DefaultTableCellRenderer {
     public TimeFormat formatter;
 
     public TimeTableCellRenderer() {
@@ -39,8 +40,9 @@
 
     public Component getTableCellRendererComponent(JTable table, Object value, 
boolean isSelected, boolean hasFocus,
             int row, int column) {
-        doPrepareRenderer(table, isSelected, hasFocus, row, column);
-        setValue(formatter.format(((Number)value).longValue()));
-        return this;
+        if (value != null && value instanceof Number) {
+            value = formatter.format(((Number) value).longValue());
+        }
+        return super.getTableCellRendererComponent(table, value, isSelected, 
hasFocus, row, column);
     }
 }
\ No newline at end of file


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
spring-rich-c-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/spring-rich-c-cvs

Reply via email to