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