You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2008/01/24 21:47:59 UTC
svn commit: r614985 - in
/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base:
AbstractComponentActionLink.java AbstractLink.java
Author: hlship
Date: Thu Jan 24 12:47:50 2008
New Revision: 614985
URL: http://svn.apache.org/viewvc?rev=614985&view=rev
Log:
TAPESTRY-1887: Extend the AbstractLink class to provide access to the clientId and disabled flag, as well as to the URL
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractComponentActionLink.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractLink.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractComponentActionLink.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractComponentActionLink.java?rev=614985&r1=614984&r2=614985&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractComponentActionLink.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractComponentActionLink.java Thu Jan 24 12:47:50 2008
@@ -22,7 +22,7 @@
import java.util.List;
-public abstract class AbstractComponentActionLink extends AbstractLink implements ClientElement
+public abstract class AbstractComponentActionLink extends AbstractLink
{
/**
* The context for the link (optional parameter). This list of values will be converted into strings and included in
@@ -47,28 +47,19 @@
@Environmental
private ZoneSetup _zoneSetup;
- /**
- * If true, then then no link element is rendered (and no informal parameters as well). The body is, however, still
- * rendered.
- */
- @Parameter("false")
- private boolean _disabled;
-
- private String _clientId;
-
void beginRender(MarkupWriter writer)
{
- if (_disabled) return;
+ if (isDisabled()) return;
- _clientId = _support.allocateClientId(_resources.getId());
+ String clientId = _support.allocateClientId(_resources.getId());
Object[] contextArray = _context == null ? new Object[0] : _context.toArray();
Link link = createLink(contextArray);
- writeLink(writer, _clientId, link);
+ writeLink(writer, clientId, link);
- if (_zone != null) _zoneSetup.linkZone(_clientId, _zone);
+ if (_zone != null) _zoneSetup.linkZone(clientId, _zone);
}
/**
@@ -76,16 +67,11 @@
*/
protected abstract Link createLink(Object[] eventContext);
-
void afterRender(MarkupWriter writer)
{
- if (_disabled) return;
+ if (isDisabled()) return;
writer.end(); // <a>
}
- public String getClientId()
- {
- return _clientId;
- }
}
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractLink.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractLink.java?rev=614985&r1=614984&r2=614985&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractLink.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry/corelib/base/AbstractLink.java Thu Jan 24 12:47:50 2008
@@ -14,6 +14,7 @@
package org.apache.tapestry.corelib.base;
+import org.apache.tapestry.ClientElement;
import org.apache.tapestry.ComponentResources;
import org.apache.tapestry.Link;
import org.apache.tapestry.MarkupWriter;
@@ -28,7 +29,7 @@
* Provides base utilities for classes that generate clickable links.
*/
@SupportsInformalParameters
-public abstract class AbstractLink
+public abstract class AbstractLink implements ClientElement
{
@Inject
private ComponentInvocationMap _componentInvocationMap;
@@ -39,11 +40,20 @@
@Parameter(defaultPrefix = LITERAL_BINDING_PREFIX)
private String _anchor;
+ /**
+ * If true, then then no link element is rendered (and no informal parameters as well). The body is, however, still
+ * rendered.
+ */
+ @Parameter("false")
+ private boolean _disabled;
+
@Inject
private ComponentResources _resources;
private Link _link;
+ private String _clientId;
+
private final String buildHref(Link link)
{
String href = link.toURI();
@@ -75,6 +85,7 @@
_componentInvocationMap.store(e, link);
_link = link;
+ _clientId = clientId;
}
/**
@@ -87,6 +98,24 @@
public Link getLink()
{
return _link;
+ }
+
+ /**
+ * Returns the unique client id for this element. This is valid only after the component has rendered (its start
+ * tag), and then only if the component is {@linkplain #isDisabled() enabled}.
+ */
+ public String getClientId()
+ {
+ return _clientId;
+ }
+
+ /**
+ * Returns true if the component is disabled (as per its disabled parameter). Disabled link components should not
+ * render a tag, but should still render their body.
+ */
+ public boolean isDisabled()
+ {
+ return _disabled;
}
/**