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) {