Author: ivaynberg
Date: Mon Nov 13 16:44:03 2006
New Revision: 474608
URL: http://svn.apache.org/viewvc?view=rev&rev=474608
Log:
component border tweaks
Modified:
incubator/wicket/trunk/wicket/.project
incubator/wicket/trunk/wicket/src/main/java/wicket/Component.java
Modified: incubator/wicket/trunk/wicket/.project
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/.project?view=diff&rev=474608&r1=474607&r2=474608
==============================================================================
--- incubator/wicket/trunk/wicket/.project (original)
+++ incubator/wicket/trunk/wicket/.project Mon Nov 13 16:44:03 2006
@@ -1,14 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>wicket</name>
- <comment>Wicket is a Java web application framework that takes simplicity,
separation of concerns and ease of development to a whole new level. Wicket
pages can be mocked up, previewed and later revised using standard WYSIWYG HTML
design tools. Dynamic content processing and form handling is all handled in
Java code using a first-class component model backed by POJO data beans that
can easily be persisted using your favourite technology.</comment>
- <projects/>
- <buildSpec>
- <buildCommand>
- <name>org.eclipse.jdt.core.javabuilder</name>
- <arguments/>
- </buildCommand>
- </buildSpec>
- <natures>
- <nature>org.eclipse.jdt.core.javanature</nature>
- </natures>
-</projectDescription>
\ No newline at end of file
+ <name>wicket</name>
+ <comment>Wicket is a Java web application framework that takes
simplicity, separation of concerns and ease of development to a whole new
level. Wicket pages can be mocked up, previewed and later revised using
standard WYSIWYG HTML design tools. Dynamic content processing and form
handling is all handled in Java code using a first-class component model backed
by POJO data beans that can easily be persisted using your favourite
technology.</comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
Modified: incubator/wicket/trunk/wicket/src/main/java/wicket/Component.java
URL:
http://svn.apache.org/viewvc/incubator/wicket/trunk/wicket/src/main/java/wicket/Component.java?view=diff&rev=474608&r1=474607&r2=474608
==============================================================================
--- incubator/wicket/trunk/wicket/src/main/java/wicket/Component.java (original)
+++ incubator/wicket/trunk/wicket/src/main/java/wicket/Component.java Mon Nov
13 16:44:03 2006
@@ -211,6 +211,10 @@
* <li><b>AJAX support</b>- Components can be re-rendered after the whole Page
* has been rendered at least once by calling doRender().
*
+ *
+ * TODO johan: document component borders
+ *
+ *
* @param <T>
* Type of model object this component holds
*
@@ -478,7 +482,7 @@
{
private static final long serialVersionUID = 1L;
};
-
+
/** Basic model IModelComparator implementation for normal object
models */
private static final IModelComparator defaultModelComparator = new
IModelComparator()
{
@@ -1081,7 +1085,7 @@
* @return The metadata or null of no metadata was found for the given
key
* @see MetaDataKey
*/
- public final <X extends Serializable> X getMetaData(final
MetaDataKey<X> key)
+ public final <X extends Serializable> X getMetaData(final
MetaDataKey<X> key)
{
return key.get(metaData);
}
@@ -1695,10 +1699,12 @@
onBeforeRender();
try
{
- IComponentBorder border = getBorder();
- if(border != null)
border.renderBefore(this);
+ IComponentBorder border =
getComponentBorder();
+ if (border != null)
+ border.renderBefore(this);
onRender(markupStream);
- if(border != null)
border.renderAfter(this);
+ if (border != null)
+ border.renderAfter(this);
}
finally
{
@@ -1743,22 +1749,51 @@
}
/**
- * @return
+ * @return component border assigned to this component, or null if none
*/
- public IComponentBorder getBorder()
+ public IComponentBorder getComponentBorder()
{
return getMetaData(BORDER_KEY);
}
-
+
/**
+ * Assigns a component border to this component. If called with
+ * <code>null</code> any previous border will be cleared.
+ *
* @param border
- * @return
+ * componnet border to assign, or <code>null</code> to clear
+ * any previous
+ * @return component for chaining
*/
- public Component setBorder(IComponentBorder border)
+ public Component setComponentBorder(IComponentBorder border)
{
+ if (!Objects.equal(getComponentBorder(), border))
+ {
+ addStateChange(new ComponentBorderChange());
+ }
setMetaData(BORDER_KEY, border);
return this;
}
+
+ /**
+ * Undo change for component border property
+ *
+ * @author ivaynberg
+ */
+ private class ComponentBorderChange extends Change
+ {
+ private static final long serialVersionUID = 1L;
+
+ private final IComponentBorder old = getComponentBorder();
+
+ @Override
+ public void undo()
+ {
+ setComponentBorder(old);
+ }
+
+ }
+
/**
* Page.renderPage() is used to render a whole page. With AJAX however
it