You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by lo...@apache.org on 2016/08/29 08:00:21 UTC
svn commit: r1758182 - in
/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit:
css/ html/standard/standard/tag/
Author: lofwyr
Date: Mon Aug 29 08:00:21 2016
New Revision: 1758182
URL: http://svn.apache.org/viewvc?rev=1758182&view=rev
Log:
TOBAGO-1557: Consolidate <tc:button>, <tc:link> and <tc:command>
* simplify render structure
* tc:link and tc:button will render same HTML, but with other CSS classes
TOBAGO-1587: links doesn't support rightklick->newTab
* href will contain the real link now
Modified:
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/css/BootstrapClass.java
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/ButtonRenderer.java
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/CommandRenderer.java
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/CommandRendererBase.java
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuCommandRenderer.java
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuRenderer.java
myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SheetRenderer.java
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/css/BootstrapClass.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/css/BootstrapClass.java?rev=1758182&r1=1758181&r2=1758182&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/css/BootstrapClass.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/css/BootstrapClass.java Mon Aug 29 08:00:21 2016
@@ -43,6 +43,7 @@ public enum BootstrapClass implements Cs
BG_INVERSE("bg-inverse"),
BTN("btn"),
BTN_GROUP("btn-group"),
+ BTN_LINK("btn-link"),
BTN_PRIMARY("btn-primary"),
BTN_SECONDARY("btn-secondary"),
BTN_TOOLBAR("btn-toolbar"),
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/ButtonRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/ButtonRenderer.java?rev=1758182&r1=1758181&r2=1758182&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/ButtonRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/ButtonRenderer.java Mon Aug 29 08:00:21 2016
@@ -23,57 +23,14 @@ import org.apache.myfaces.tobago.compone
import org.apache.myfaces.tobago.internal.component.AbstractUICommand;
import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
import org.apache.myfaces.tobago.renderkit.css.CssItem;
-import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
-import org.apache.myfaces.tobago.renderkit.html.HtmlButtonTypes;
-import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
import org.apache.myfaces.tobago.util.ComponentUtils;
-import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
import javax.faces.context.FacesContext;
-import java.io.IOException;
import java.util.List;
public class ButtonRenderer extends CommandRendererBase {
@Override
- protected void encodeBeginElement(final FacesContext facesContext, final AbstractUICommand command)
- throws IOException {
- final TobagoResponseWriter writer = getResponseWriter(facesContext);
-
- writer.startElement(HtmlElements.BUTTON);
- writer.writeAttribute(HtmlAttributes.TYPE, HtmlButtonTypes.BUTTON);
- }
-
- @Override
- protected void encodeEndElement(final FacesContext facesContext, final AbstractUICommand command)
- throws IOException {
- final TobagoResponseWriter writer = getResponseWriter(facesContext);
-
- writer.endElement(HtmlElements.BUTTON);
- }
-
- @Override
- protected void encodeBeginOuter(final FacesContext facesContext, final AbstractUICommand command)
- throws IOException {
- final TobagoResponseWriter writer = getResponseWriter(facesContext);
-
-// if (isMarked(facesContext, MARKER)) { // this is only needed, if button has a sub-menu (dropdown)
- writer.startElement(HtmlElements.SPAN);
- writer.writeClassAttribute(BootstrapClass.BTN_GROUP);
-// }
- }
-
- @Override
- protected void encodeEndOuter(final FacesContext facesContext, final AbstractUICommand command)
- throws IOException {
- final TobagoResponseWriter writer = getResponseWriter(facesContext);
-
-// if (isMarked(facesContext, MARKER)) {
- writer.endElement(HtmlElements.SPAN);
-// }
- }
-
- @Override
protected void addCssItems(
final FacesContext facesContext, final AbstractUICommand command, final List<CssItem> collected) {
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/CommandRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/CommandRenderer.java?rev=1758182&r1=1758181&r2=1758182&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/CommandRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/CommandRenderer.java Mon Aug 29 08:00:21 2016
@@ -20,44 +20,19 @@
package org.apache.myfaces.tobago.renderkit.html.standard.standard.tag;
import org.apache.myfaces.tobago.internal.component.AbstractUICommand;
-import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
-import org.apache.myfaces.tobago.webapp.TobagoResponseWriter;
+import org.apache.myfaces.tobago.renderkit.css.BootstrapClass;
+import org.apache.myfaces.tobago.renderkit.css.CssItem;
import javax.faces.context.FacesContext;
-import java.io.IOException;
+import java.util.List;
public class CommandRenderer extends CommandRendererBase {
@Override
- protected void encodeBeginElement(final FacesContext facesContext, final AbstractUICommand command)
- throws IOException {
- final TobagoResponseWriter writer = getResponseWriter(facesContext);
- writer.startElement(HtmlElements.A);
- }
-
- @Override
- protected void encodeEndElement(final FacesContext facesContext, final AbstractUICommand command)
- throws IOException {
- final TobagoResponseWriter writer = getResponseWriter(facesContext);
- writer.endElement(HtmlElements.A);
- }
-
- @Override
- protected void encodeBeginOuter(final FacesContext facesContext, final AbstractUICommand command)
- throws IOException {
- final TobagoResponseWriter writer = getResponseWriter(facesContext);
-
-// writer.startElement(HtmlElements.SPAN);
- // XXX this class fixes the problem, that the submenu are not opened at correct position, but
- // the name doesn't suggest, that it is correct.
-// writer.writeClassAttribute(BootstrapClass.BTN_GROUP);
- }
-
- @Override
- protected void encodeEndOuter(final FacesContext facesContext, final AbstractUICommand command)
- throws IOException {
- final TobagoResponseWriter writer = getResponseWriter(facesContext);
+ protected void addCssItems(
+ final FacesContext facesContext, final AbstractUICommand command, final List<CssItem> collected) {
-// writer.endElement(HtmlElements.SPAN);
+ collected.add(BootstrapClass.BTN);
+ collected.add(BootstrapClass.BTN_LINK);
}
}
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/CommandRendererBase.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/CommandRendererBase.java?rev=1758182&r1=1758181&r2=1758182&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/CommandRendererBase.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/CommandRendererBase.java Mon Aug 29 08:00:21 2016
@@ -33,6 +33,7 @@ import org.apache.myfaces.tobago.renderk
import org.apache.myfaces.tobago.renderkit.html.CommandMap;
import org.apache.myfaces.tobago.renderkit.html.DataAttributes;
import org.apache.myfaces.tobago.renderkit.html.HtmlAttributes;
+import org.apache.myfaces.tobago.renderkit.html.HtmlButtonTypes;
import org.apache.myfaces.tobago.renderkit.html.HtmlElements;
import org.apache.myfaces.tobago.renderkit.html.HtmlRoleValues;
import org.apache.myfaces.tobago.renderkit.html.JsonUtils;
@@ -81,14 +82,29 @@ public abstract class CommandRendererBas
final String clientId = command.getClientId(facesContext);
final boolean disabled = command.isDisabled();
final LabelWithAccessKey label = new LabelWithAccessKey(command);
+ final String href = command.getLink();
+ final boolean link = href != null;
final TobagoResponseWriter writer = getResponseWriter(facesContext);
if (command.isParentOfCommands()) {
- encodeBeginOuter(facesContext, command);
+ if (link) {
+ writer.startElement(HtmlElements.SPAN);
+ writer.writeClassAttribute(BootstrapClass.BTN_GROUP);
+ }
}
- encodeBeginElement(facesContext, command);
+ if (link) {
+ writer.startElement(HtmlElements.A);
+ if (disabled) {
+ writer.writeAttribute(HtmlAttributes.HREF, "#/", false);
+ } else {
+ writer.writeAttribute(HtmlAttributes.HREF, href, false);
+ }
+ } else {
+ writer.startElement(HtmlElements.BUTTON);
+ writer.writeAttribute(HtmlAttributes.TYPE, HtmlButtonTypes.BUTTON);
+ }
writer.writeIdAttribute(clientId);
writer.writeNameAttribute(clientId);
writer.writeAttribute(HtmlAttributes.DISABLED, disabled);
@@ -101,8 +117,6 @@ public abstract class CommandRendererBas
}
writer.writeAttribute(DataAttributes.COMMANDS, commands, true);
- writer.writeAttribute(HtmlAttributes.HREF, "#", false);
-
if (label.getAccessKey() != null) {
writer.writeAttribute(HtmlAttributes.ACCESSKEY, Character.toString(label.getAccessKey()), false);
AccessKeyLogger.addAccessKey(facesContext, label.getAccessKey(), clientId);
@@ -124,7 +138,6 @@ public abstract class CommandRendererBas
cssItems.add(BootstrapClass.NAV_LINK);
writer.writeAttribute(DataAttributes.TOGGLE, "dropdown", false);
}
- cssItems.add(command.getCustomClass());
addCssItems(facesContext, command, cssItems);
final String title = HtmlRendererUtils.getTitleFromTipAndMessages(facesContext, command);
if (title != null) {
@@ -169,7 +182,11 @@ public abstract class CommandRendererBas
final String image = ComponentUtils.getStringAttribute(command, Attributes.image);
HtmlRendererUtils.encodeIconWithLabel(writer, facesContext, image, label, disabled);
- encodeEndElement(facesContext, command);
+ if (link) {
+ writer.endElement(HtmlElements.A);
+ } else {
+ writer.endElement(HtmlElements.BUTTON);
+ }
if (command.isParentOfCommands()) {
writer.startElement(HtmlElements.UL);
@@ -191,10 +208,10 @@ public abstract class CommandRendererBas
if (command.isParentOfCommands()) {
final TobagoResponseWriter writer = getResponseWriter(facesContext);
- for (UIComponent child : component.getChildren()) {
+ for (final UIComponent child : component.getChildren()) {
if (child.isRendered()) {
writer.startElement(HtmlElements.LI);
- CssItem submenu = child instanceof AbstractUICommand && ((AbstractUICommand) child).isParentOfCommands()
+ final CssItem submenu = child instanceof AbstractUICommand && ((AbstractUICommand) child).isParentOfCommands()
? TobagoClass.DROPDOWN_SUBMENU : null;
// fixme: this name comes not from bootstrap, using prefix? tobago-command-dropdown-submenu
writer.writeClassAttribute(BootstrapClass.DROPDOWN_ITEM, submenu);
@@ -212,29 +229,21 @@ public abstract class CommandRendererBas
public void encodeEnd(final FacesContext facesContext, final UIComponent component) throws IOException {
final AbstractUICommand command = (AbstractUICommand) component;
+ final boolean link = command.getLink() != null;
+
+ final TobagoResponseWriter writer = getResponseWriter(facesContext);
if (command.isParentOfCommands()) {
- final TobagoResponseWriter writer = getResponseWriter(facesContext);
writer.endElement(HtmlElements.UL);
}
if (command.isParentOfCommands()) {
- encodeEndOuter(facesContext, command);
+ if (link) {
+ writer.endElement(HtmlElements.SPAN);
+ }
}
}
- protected abstract void encodeBeginElement(final FacesContext facesContext, final AbstractUICommand command)
- throws IOException;
-
- protected abstract void encodeEndElement(final FacesContext facesContext, final AbstractUICommand command)
- throws IOException;
-
- protected abstract void encodeBeginOuter(final FacesContext facesContext, final AbstractUICommand command)
- throws IOException;
-
- protected abstract void encodeEndOuter(final FacesContext facesContext, final AbstractUICommand command)
- throws IOException;
-
protected void commandActivated(final UIComponent component) {
component.queueEvent(new ActionEvent(component));
}
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuCommandRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuCommandRenderer.java?rev=1758182&r1=1758181&r2=1758182&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuCommandRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuCommandRenderer.java Mon Aug 29 08:00:21 2016
@@ -19,5 +19,9 @@
package org.apache.myfaces.tobago.renderkit.html.standard.standard.tag;
-public class MenuCommandRenderer extends ButtonRenderer {
+/**
+ * @deprecated
+ */
+@Deprecated
+public class MenuCommandRenderer extends CommandRenderer {
}
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuRenderer.java?rev=1758182&r1=1758181&r2=1758182&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/MenuRenderer.java Mon Aug 29 08:00:21 2016
@@ -88,7 +88,7 @@ public class MenuRenderer extends Render
writer.writeStyleAttribute(style);
}
writer.startElement(HtmlElements.A);
- writer.writeAttribute(HtmlAttributes.HREF, "#", false);
+ writer.writeAttribute(HtmlAttributes.HREF, "#/", false);
if (!component.isTransient()) {
writer.writeIdAttribute(component.getClientId(facesContext));
}
Modified: myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SheetRenderer.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SheetRenderer.java?rev=1758182&r1=1758181&r2=1758182&view=diff
==============================================================================
--- myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SheetRenderer.java (original)
+++ myfaces/tobago/trunk/tobago-theme/tobago-theme-standard/src/main/java/org/apache/myfaces/tobago/renderkit/html/standard/standard/tag/SheetRenderer.java Mon Aug 29 08:00:21 2016
@@ -1040,7 +1040,7 @@ public class SheetRenderer extends Rende
writer.writeClassAttribute(liClass, disabled ? BootstrapClass.DISABLED : null, BootstrapClass.PAGE_ITEM);
writer.startElement(HtmlElements.A);
writer.writeClassAttribute(BootstrapClass.PAGE_LINK);
- writer.writeAttribute(HtmlAttributes.HREF, "#", false);
+ writer.writeAttribute(HtmlAttributes.HREF, "#/", false);
writer.writeIdAttribute(command.getClientId(facesContext));
writer.writeAttribute(HtmlAttributes.TITLE, tip, true);
if (!disabled) {