Author: jdonnerstag
Date: Thu Jun 23 11:00:22 2011
New Revision: 1138827
URL: http://svn.apache.org/viewvc?rev=1138827&view=rev
Log:
fixed:
org/apache/wicket/extensions/markup/html/tree/table/{PropertyRenderableColumn,PropertyTreeColumn}
common code
Issue: WICKET-3480
Added:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractPropertyColumn.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/PropertyRenderableColumn.java
- copied, changed from r1138618,
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractRenderableColumn.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/PropertyTreeColumn.java
- copied, changed from r1138618,
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractTreeColumn.java
Removed:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractRenderableColumn.java
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractTreeColumn.java
Modified:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/TreeTable.java
Added:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractPropertyColumn.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractPropertyColumn.java?rev=1138827&view=auto
==============================================================================
---
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractPropertyColumn.java
(added)
+++
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractPropertyColumn.java
Thu Jun 23 11:00:22 2011
@@ -0,0 +1,153 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.extensions.markup.html.tree.table;
+
+import java.util.Locale;
+
+import javax.swing.tree.TreeNode;
+
+import org.apache.wicket.Application;
+import org.apache.wicket.Session;
+import org.apache.wicket.util.convert.IConverter;
+import org.apache.wicket.util.lang.PropertyResolver;
+
+
+/**
+ * Convenience class for building tree columns.
+ *
+ * @author Matej Knopp
+ * @param <T>
+ * the type of the property that is rendered in this column
+ */
+public abstract class AbstractPropertyColumn<T> extends AbstractColumn
+{
+ private static final long serialVersionUID = 1L;
+
+ private IConverter<T> converter;
+
+ private Locale locale;
+
+ private final String propertyExpression;
+
+ /**
+ * Creates the tree column.
+ *
+ * @param location
+ * Specifies how the column should be aligned and what his
size should be
+ * @param header
+ * Header caption
+ * @param propertyExpression
+ * Expression for property access
+ */
+ public AbstractPropertyColumn(final ColumnLocation location, final
String header,
+ final String propertyExpression)
+ {
+ super(location, header);
+
+ this.propertyExpression = propertyExpression;
+ }
+
+ /**
+ * Returns the converter or null if no converter is specified.
+ *
+ * @return The converter or null
+ */
+ public IConverter<T> getConverter()
+ {
+ return converter;
+ }
+
+ /**
+ * Returns the locale or null if no locale is specified.
+ *
+ * @return The locale or null
+ */
+ public Locale getLocale()
+ {
+ return locale;
+ }
+
+ /**
+ * By default the property is converted to string using
<code>toString</code> method. If you
+ * want to alter this behavior, you can specify a custom converter.
+ *
+ * @param converter
+ * any converter
+ */
+ public void setConverter(final IConverter<T> converter)
+ {
+ this.converter = converter;
+ }
+
+ /**
+ * Sets the locale to be used as parameter for custom converter (if one
is specified). If no
+ * locale is set, session locale is used.
+ *
+ * @param locale
+ * Any locale
+ */
+ public void setLocale(final Locale locale)
+ {
+ this.locale = locale;
+ }
+
+ /**
+ * Returns the property expression.
+ *
+ * @return The property expression
+ */
+ protected String getPropertyExpression()
+ {
+ return propertyExpression;
+ }
+
+ /**
+ * Returns the string representation of the node.
+ *
+ * @param node
+ * The node
+ * @return The string representation of the node
+ */
+ public String getNodeValue(final TreeNode node)
+ {
+ Object result = PropertyResolver.getValue(propertyExpression,
node);
+
+ @SuppressWarnings("rawtypes")
+ IConverter converter = getConverter();
+ if (converter == null && result != null)
+ {
+ converter =
Application.get().getConverterLocator().getConverter(result.getClass());
+ }
+
+ if (converter != null)
+ {
+ Locale locale = this.locale;
+ if (locale == null)
+ {
+ locale = Session.get().getLocale();
+ }
+
+ @SuppressWarnings("unchecked")
+ String string = converter.convertToString(result,
locale);
+ return string;
+ }
+ else
+ {
+ return result != null ? result.toString() : null;
+ }
+ }
+}
Copied:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/PropertyRenderableColumn.java
(from r1138618,
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractRenderableColumn.java)
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/PropertyRenderableColumn.java?p2=wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/PropertyRenderableColumn.java&p1=wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractRenderableColumn.java&r1=1138618&r2=1138827&rev=1138827&view=diff
==============================================================================
---
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractRenderableColumn.java
(original)
+++
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/PropertyRenderableColumn.java
Thu Jun 23 11:00:22 2011
@@ -28,12 +28,11 @@ import org.apache.wicket.util.string.Str
* Convenience class for creating non-interactive lightweight (IRenderable
based) columns.
*
* @author Matej Knopp
+ * @param <T>
+ * the type of the property that is rendered in this column
*/
-public abstract class AbstractRenderableColumn extends AbstractColumn
+public class PropertyRenderableColumn<T> extends AbstractPropertyColumn<T>
{
- /**
- *
- */
private static final long serialVersionUID = 1L;
private boolean contentAsTooltip = false;
@@ -45,25 +44,18 @@ public abstract class AbstractRenderable
*
* @param location
* Specifies how the column should be aligned and what his
size should be
- *
* @param header
* Header caption
+ * @param propertyExpression
+ * Expression for property access
*/
- public AbstractRenderableColumn(final ColumnLocation location, final
String header)
+ public PropertyRenderableColumn(final ColumnLocation location, final
String header,
+ final String propertyExpression)
{
- super(location, header);
+ super(location, header, propertyExpression);
}
/**
- * Returns the string value for the provided node.
- *
- * @param node
- * Determines the position in tree
- * @return The
- */
- public abstract String getNodeValue(TreeNode node);
-
- /**
* Returns whether the content should also be visible as tooltip of the
cell.
*
* @return whether the content should also be visible as tooltip
@@ -104,6 +96,10 @@ public abstract class AbstractRenderable
public void render(final TreeNode node, final Response
response)
{
String content = getNodeValue(node);
+ if (content == null)
+ {
+ content = "";
+ }
// escape if necessary
if (isEscapeContent())
Copied:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/PropertyTreeColumn.java
(from r1138618,
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractTreeColumn.java)
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/PropertyTreeColumn.java?p2=wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/PropertyTreeColumn.java&p1=wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractTreeColumn.java&r1=1138618&r2=1138827&rev=1138827&view=diff
==============================================================================
---
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/AbstractTreeColumn.java
(original)
+++
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/PropertyTreeColumn.java
Thu Jun 23 11:00:22 2011
@@ -26,12 +26,11 @@ import org.apache.wicket.MarkupContainer
* Convenience class for building tree columns, i.e. columns that contain the
actual tree.
*
* @author Matej Knopp
+ * @param <T>
+ * the type of the property that is rendered in this column
*/
-public abstract class AbstractTreeColumn extends AbstractColumn
+public class PropertyTreeColumn<T> extends AbstractPropertyColumn<T>
{
- /**
- *
- */
private static final long serialVersionUID = 1L;
/**
@@ -40,14 +39,15 @@ public abstract class AbstractTreeColumn
*
* @param location
* Specifies how the column should be aligned and what his
size should be
- *
* @param header
* Header caption
- *
+ * @param propertyExpression
+ * Expression for property access
*/
- public AbstractTreeColumn(final ColumnLocation location, final String
header)
+ public PropertyTreeColumn(final ColumnLocation location, final String
header,
+ final String propertyExpression)
{
- super(location, header);
+ super(location, header, propertyExpression);
}
/**
@@ -62,7 +62,7 @@ public abstract class AbstractTreeColumn
public String renderNode(final TreeNode node)
{
- return AbstractTreeColumn.this.renderNode(node);
+ return
PropertyTreeColumn.this.getNodeValue(node);
}
}, getTreeTable());
}
@@ -74,13 +74,4 @@ public abstract class AbstractTreeColumn
{
return null;
}
-
- /**
- * Returns the string representation of the node.
- *
- * @param node
- * The node
- * @return The string representation of the node
- */
- public abstract String renderNode(TreeNode node);
}
Modified:
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/TreeTable.java
URL:
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/TreeTable.java?rev=1138827&r1=1138826&r2=1138827&view=diff
==============================================================================
---
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/TreeTable.java
(original)
+++
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/tree/table/TreeTable.java
Thu Jun 23 11:00:22 2011
@@ -39,7 +39,7 @@ import org.apache.wicket.request.resourc
/**
* TreeTable is a component that represents a grid with a tree. It's divided
into columns. One of
- * the columns has to be column derived from {@link AbstractTreeColumn}.
+ * the columns has to be column derived from {@link PropertyTreeColumn}.
*
* @author Matej Knopp
*/
@@ -417,7 +417,7 @@ public class TreeTable extends DefaultAb
{
for (IColumn column : columns)
{
- if (column instanceof AbstractTreeColumn)
+ if (column instanceof PropertyTreeColumn)
{
found = true;
break;