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/04/12 08:24:01 UTC

svn commit: r1738697 - in /myfaces/tobago/branches/tobago-3.0.x: tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/ tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/ tobago-example/...

Author: lofwyr
Date: Tue Apr 12 06:24:00 2016
New Revision: 1738697

URL: http://svn.apache.org/viewvc?rev=1738697&view=rev
Log:
TOBAGO-1544: Revise Demo Application for Tobago 3.0
[developed by hnoeth]

Added:
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetController.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetSortingController.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetTreeController.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SuggestController.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/80-security/20-roles/
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/80-security/20-roles/roles.xhtml
Modified:
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/HtmlEditor.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/Login.java
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/sheet-sorting.xhtml
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/30-event/sheet-column-event.xhtml
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/50-filter/sheet-filter.xhtml
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/70-tree/sheet-tree.xhtml
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/sheet.xhtml
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/110-wysiwyg/00-tinymce/tinymce.xhtml
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/110-wysiwyg/01-ckeditor/ckeditor.xhtml
    myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/tobago-resource/html/standard/standard/property/overview.properties.xml
    myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/style/tobago.css

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/HtmlEditor.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/HtmlEditor.java?rev=1738697&r1=1738696&r2=1738697&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/HtmlEditor.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/HtmlEditor.java Tue Apr 12 06:24:00 2016
@@ -37,11 +37,11 @@ public class HtmlEditor implements Seria
   public HtmlEditor() {
     ckeditorAvailable = ResourceManagerUtils.getScripts(
         FacesContext.getCurrentInstance(),
-        "content/35-wysiwyg/01-ckeditor/ckeditor/ckeditor.js")
+        "content/20-component/110-wysiwyg/01-ckeditor/ckeditor/ckeditor.js")
         .size() != 0;
     tinymceAvailable = ResourceManagerUtils.getScripts(
         FacesContext.getCurrentInstance(),
-        "content/35-wysiwyg/00-tinymce/tinymce/js/tinymce/tinymce.min.js")
+        "content/20-component/110-wysiwyg/00-tinymce/tinymce/js/tinymce/tinymce.min.js")
         .size() != 0;
     text = "<h1>Sonne</h1>"
         + "<p>Die Sonne ist ein Stern in der Galaxie Milchstraße.</p>";

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/Login.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/Login.java?rev=1738697&r1=1738696&r2=1738697&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/Login.java (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/Login.java Tue Apr 12 06:24:00 2016
@@ -1,3 +1,22 @@
+/*
+ * 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.myfaces.tobago.example.demo;
 
 import org.slf4j.Logger;

Added: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java?rev=1738697&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java (added)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/RoleController.java Tue Apr 12 06:24:00 2016
@@ -0,0 +1,57 @@
+/*
+ * 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.myfaces.tobago.example.demo;
+
+import javax.annotation.security.RolesAllowed;
+import javax.enterprise.context.SessionScoped;
+import javax.inject.Named;
+import java.io.Serializable;
+
+@SessionScoped
+@Named
+public class RoleController implements Serializable {
+
+  private String guestString;
+  private String adminString;
+  private static final String OUTCOME_ADMIN = "admin";
+
+  public String getGuestString() {
+    return guestString;
+  }
+
+  public void setGuestString(String guestString) {
+    this.guestString = guestString;
+  }
+
+  @RolesAllowed({"admin"})
+  public String getAdminString() {
+    return adminString;
+  }
+
+  @RolesAllowed({"admin"})
+  public void setAdminString(String adminString) {
+    this.adminString = adminString;
+  }
+
+  @RolesAllowed({"admin"})
+  public String admin() {
+    return OUTCOME_ADMIN;
+  }
+}

Added: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetController.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetController.java?rev=1738697&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetController.java (added)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetController.java Tue Apr 12 06:24:00 2016
@@ -0,0 +1,92 @@
+/*
+ * 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.myfaces.tobago.example.demo;
+
+import org.apache.myfaces.tobago.example.data.SolarObject;
+import org.apache.myfaces.tobago.model.SheetState;
+import org.apache.myfaces.tobago.util.ComponentUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.enterprise.context.SessionScoped;
+import javax.faces.component.UIData;
+import javax.faces.event.ActionEvent;
+import javax.inject.Named;
+import java.io.Serializable;
+import java.util.List;
+
+@SessionScoped
+@Named
+public class SheetController implements Serializable {
+
+  private static final Logger LOG = LoggerFactory.getLogger(SheetController.class);
+
+  private List<SolarObject> solarList;
+  private SheetState sheetState;
+  private SolarObject selectedSolarObject;
+
+  public SheetController() {
+    solarList = SolarObject.getList();
+  }
+
+  public List<SolarObject> getSolarList() {
+    return solarList;
+  }
+
+  public SheetState getSheetState() {
+    return sheetState;
+  }
+
+  public void setSheetState(SheetState sheetState) {
+    this.sheetState = sheetState;
+  }
+
+  public void selectSolarObject(final ActionEvent actionEvent) {
+    LOG.info("actionEvent=" + actionEvent);
+    final UIData data = ComponentUtils.findAncestor(actionEvent.getComponent(), UIData.class);
+    if (data != null) {
+      selectedSolarObject = (SolarObject) data.getRowData();
+      LOG.info("Selected: " + selectedSolarObject.getName());
+    } else {
+      selectedSolarObject = null;
+      LOG.info("Deselect.");
+    }
+  }
+
+  public String getSelectedSolarObject() {
+    if (selectedSolarObject != null) {
+      return selectedSolarObject.getName();
+    } else {
+      return "Nothing selected";
+    }
+  }
+
+  public int getNumberOfSelections() {
+    return sheetState.getSelectedRows().size();
+  }
+
+  public int getSelectedRowNumber() {
+    if (sheetState.getSelectedRows().size() <= 0) {
+      return -1;
+    } else {
+      return sheetState.getSelectedRows().get(0);
+    }
+  }
+}

Added: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetSortingController.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetSortingController.java?rev=1738697&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetSortingController.java (added)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetSortingController.java Tue Apr 12 06:24:00 2016
@@ -0,0 +1,93 @@
+/*
+ * 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.myfaces.tobago.example.demo;
+
+import org.apache.myfaces.tobago.component.UISheet;
+import org.apache.myfaces.tobago.event.SortActionEvent;
+import org.apache.myfaces.tobago.example.data.SolarObject;
+import org.apache.myfaces.tobago.model.SheetState;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.enterprise.context.SessionScoped;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+import javax.inject.Named;
+import java.io.Serializable;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
+
+@SessionScoped
+@Named
+public class SheetSortingController extends SheetController implements Serializable {
+
+  private static final Logger LOG = LoggerFactory.getLogger(SheetSortingController.class);
+
+  public void sheetSorter(final ActionEvent event) {
+    if (event instanceof SortActionEvent) {
+      final SortActionEvent sortEvent = (SortActionEvent) event;
+      final UISheet sheet = (UISheet) sortEvent.getComponent();
+      final SheetState sheetState = sheet.getSheetState(FacesContext.getCurrentInstance());
+      final List<SolarObject> list = (List<SolarObject>) sheet.getValue();
+      sheetSorter(sheetState, list);
+    }
+  }
+
+  private void sheetSorter(final SheetState sheetState, final List<SolarObject> list) {
+    final String columnId = sheetState.getSortedColumnId();
+
+    LOG.info("Sorting column '{}'", columnId);
+
+    Comparator<SolarObject> comparator = null;
+
+    if ("namecol".equals(columnId)) {
+      comparator = new Comparator<SolarObject>() {
+        @Override
+        public int compare(final SolarObject o1, final SolarObject o2) {
+          return o1.getName().compareToIgnoreCase(o2.getName());
+        }
+      };
+    } else if ("periodcol".equals(columnId)) {
+      comparator = new Comparator<SolarObject>() {
+        @Override
+        public int compare(final SolarObject o1, final SolarObject o2) {
+          Double period1 = Math.abs(o1.getPeriod());
+          Double period2 = Math.abs(o2.getPeriod());
+          return period1.compareTo(period2);
+        }
+      };
+    } else if ("yearcol".equals(columnId)) {
+      comparator = new Comparator<SolarObject>() {
+        @Override
+        public int compare(final SolarObject o1, final SolarObject o2) {
+          Integer discoverYear1 = o1.getDiscoverYear() != null ? o1.getDiscoverYear() : 0;
+          Integer discoverYear2 = o2.getDiscoverYear() != null ? o2.getDiscoverYear() : 0;
+          return discoverYear1.compareTo(discoverYear2);
+        }
+      };
+    }
+
+    Collections.sort(list, comparator);
+    if (!sheetState.isAscending()) {
+      Collections.reverse(list);
+    }
+  }
+}

Added: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetTreeController.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetTreeController.java?rev=1738697&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetTreeController.java (added)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SheetTreeController.java Tue Apr 12 06:24:00 2016
@@ -0,0 +1,23 @@
+package org.apache.myfaces.tobago.example.demo;
+
+import org.apache.myfaces.tobago.example.data.SolarObject;
+
+import javax.enterprise.context.RequestScoped;
+import javax.inject.Named;
+import javax.swing.tree.DefaultMutableTreeNode;
+import java.io.Serializable;
+
+@RequestScoped
+@Named
+public class SheetTreeController implements Serializable {
+
+  private DefaultMutableTreeNode solarTree;
+
+  public SheetTreeController() {
+    solarTree = SolarObject.getTree();
+  }
+
+  public DefaultMutableTreeNode getSolarTree() {
+    return solarTree;
+  }
+}

Added: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SuggestController.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SuggestController.java?rev=1738697&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SuggestController.java (added)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/java/org/apache/myfaces/tobago/example/demo/SuggestController.java Tue Apr 12 06:24:00 2016
@@ -0,0 +1,75 @@
+/*
+ * 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.myfaces.tobago.example.demo;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.myfaces.tobago.example.data.LocaleList;
+import org.apache.myfaces.tobago.model.SuggestFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.enterprise.context.SessionScoped;
+import javax.faces.component.UIInput;
+import javax.inject.Named;
+import java.io.Serializable;
+import java.util.ArrayList;
+import java.util.List;
+
+@SessionScoped
+@Named
+public class SuggestController implements Serializable {
+
+  private static final Logger LOG = LoggerFactory.getLogger(SuggestController.class);
+  private String suggestInput;
+
+  public String getSuggestInput() {
+    return suggestInput;
+  }
+
+  public void setSuggestInput(String suggestInput) {
+    this.suggestInput = suggestInput;
+  }
+
+  public List<String> getInputSuggestItems(final UIInput component) {
+    String substring = (String) component.getSubmittedValue();
+    if (substring == null) {
+      substring = "";
+    }
+    LOG.info("Creating items for substring: '" + substring + "'");
+    final List<String> result = new ArrayList<String>();
+    for (final String name : LocaleList.COUNTRY_LANGUAGE) {
+      if (StringUtils.containsIgnoreCase(name, substring)) {
+        result.add(name);
+      }
+      if (result.size() > 100) { // this value should not be smaller than the value of the suggest control
+        break;
+      }
+    }
+    return result;
+  }
+
+  public SuggestFilter getFilter() {
+    return SuggestFilter.PREFIX;
+  }
+
+  public List<String> getCountryLanguageList(final UIInput component) {
+    return LocaleList.COUNTRY_LANGUAGE;
+  }
+}

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/sheet-sorting.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/sheet-sorting.xhtml?rev=1738697&r1=1738696&r2=1738697&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/sheet-sorting.xhtml (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/10-sort/sheet-sorting.xhtml Tue Apr 12 06:24:00 2016
@@ -22,7 +22,10 @@
                 xmlns:tc="http://myfaces.apache.org/tobago/component"
                 xmlns:ui="http://java.sun.com/jsf/facelets">
   <ui:param name="title" value="#{overviewBundle.sheet_sorting} &lt;tc:sheet>"/>
-  <p>Sorting can be enabled via the <code>sortActionListener</code> attribute, which is set in the sheet.</p>
+  <p>Sorting can be enable via the <code>sortable</code> attribute in the
+    <code class="language-markup">&lt;tc:column/></code>.
+    A custom sorting implementation can be set in the <code>sortActionListener</code> attribute in the
+    <code class="language-markup">&lt;tc:sheet/></code>.</p>
   <p>Tag Library Documentation:
     <tc:link label="&lt;tc:sheet/>" image="image/feather-leaf.png"
              link="#{overviewBundle.tagDocUrl}/sheet.html"/>
@@ -30,15 +33,36 @@
     <tc:link label="&lt;tc:column/>" image="image/feather-leaf.png"
              link="#{overviewBundle.tagDocUrl}/column.html"/></p>
 
-  <tc:section label="Sorting">
-    <p>All columns in this sheet can be sorted.</p>
+  <tc:section label="Basics">
+    <p>In this example, the <code>sortable</code> attribute is 'true' for all columns.
+      Notice, that there are negative periods.</p>
+    <pre><code class="language-markup">&lt;tc:column label="Name" sortable="true"></code></pre>
+    <tc:sheet id="s1" value="#{sheetSortingController.solarList}" var="solarobject" rows="4">
+      <tc:column label="Name" sortable="true">
+        <tc:out value="#{solarobject.name}"/>
+      </tc:column>
+      <tc:column label="Period (Days)" sortable="true">
+        <tc:out value="#{solarobject.period}"/>
+      </tc:column>
+      <tc:column label="Discovery Year" sortable="true">
+        <tc:out value="#{solarobject.discoverYear}"/>
+      </tc:column>
+    </tc:sheet>
+  </tc:section>
+
+  <tc:section label="Custom Sorting">
+    <p>All columns in this sheet can be sorted. A custom sorting implementation is set.
+      Now, the sign for period numbers is ignored by sorting.</p>
+
     <pre><code class="language-markup">&lt;tc:sheet value="\#{sheetController.solarList}"
     var="solarobject" rows="4"
-    sortActionListener="\#{sheetController.sheetSorter}"></code></pre>
-    <p>In addition, the columns must be sortable and have an id.</p>
-    <pre><code class="language-markup">&lt;tc:column id="namecol" label="Name" sortable="true"></code></pre>
-    <tc:sheet id="s3" value="#{sheetController.solarList}" var="solarobject" rows="4"
-              sortActionListener="#{sheetController.sheetSorter}">
+    sortActionListener="\#{sheetController.sheetSorter}">
+      &lt;tc:column id="namecol" label="Name" sortable="true">
+      ...
+    </code></pre>
+
+    <tc:sheet id="s2" value="#{sheetSortingController.solarList}" var="solarobject" rows="4"
+              sortActionListener="#{sheetSortingController.sheetSorter}">
       <tc:column id="namecol" label="Name" sortable="true">
         <tc:out value="#{solarobject.name}"/>
       </tc:column>

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/30-event/sheet-column-event.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/30-event/sheet-column-event.xhtml?rev=1738697&r1=1738696&r2=1738697&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/30-event/sheet-column-event.xhtml (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/30-event/sheet-column-event.xhtml Tue Apr 12 06:24:00 2016
@@ -22,7 +22,7 @@
                 xmlns:tc="http://myfaces.apache.org/tobago/component"
                 xmlns:ui="http://java.sun.com/jsf/facelets"
                 xmlns:f="http://java.sun.com/jsf/core">
-  <ui:param name="title" value="#{overviewBundle.sheet_master_detail} &lt;tc:columnEvent>"/>
+  <ui:param name="title" value="#{overviewBundle.sheet_column_event} &lt;tc:columnEvent>"/>
   <p>A <code class="language-markup">&lt;tc:sheet/></code> can contain a
     <code class="language-markup">&lt;tc:columnEvent/></code> tag, which knows two types of events.
     The eventtype can be set by the <code>event</code> attribute. Possible values are 'click' and 'dblclick'.

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/50-filter/sheet-filter.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/50-filter/sheet-filter.xhtml?rev=1738697&r1=1738696&r2=1738697&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/50-filter/sheet-filter.xhtml (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/50-filter/sheet-filter.xhtml Tue Apr 12 06:24:00 2016
@@ -22,7 +22,7 @@
                 xmlns:ui="http://java.sun.com/jsf/facelets"
                 xmlns:f="http://java.sun.com/jsf/core"
                 xmlns="http://www.w3.org/1999/xhtml">
-  <ui:param name="title" value="#{overviewBundle.sheet}"/>
+  <ui:param name="title" value="#{overviewBundle.sheet_filter}"/>
 
   <tc:panel>
     <f:facet name="layout">

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/70-tree/sheet-tree.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/70-tree/sheet-tree.xhtml?rev=1738697&r1=1738696&r2=1738697&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/70-tree/sheet-tree.xhtml (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/70-tree/sheet-tree.xhtml Tue Apr 12 06:24:00 2016
@@ -18,56 +18,52 @@
 -->
 
 <ui:composition template="/main.xhtml"
+                xmlns="http://www.w3.org/1999/xhtml"
                 xmlns:tc="http://myfaces.apache.org/tobago/component"
-                xmlns:ui="http://java.sun.com/jsf/facelets"
-                xmlns:f="http://java.sun.com/jsf/core">
-  <ui:param name="title" value="#{overviewBundle.sheet}"/>
+                xmlns:ui="http://java.sun.com/jsf/facelets">
+  <ui:param name="title" value="#{overviewBundle.sheet_tree} &lt;tc:columnNode/>"/>
+  <p>A tree can be added into a sheet. To do so, there are two steps which must be done.
+    First, the <code>value</code> attribute of the sheet must refer to a method, which return a tree instead of a list.
+    Second, to display the tree, use the <code class="language-markup">&lt;tc:columnNode/></code> tag.</p>
 
-  <tc:panel>
-    <f:facet name="layout">
-      <tc:gridLayout rows="1*;5*"/>
-    </f:facet>
+  <p>Tag Library Documentation:
+    <tc:link label="&lt;tc:sheet/>" image="image/feather-leaf.png"
+             link="#{overviewBundle.tagDocUrl}/sheet.html"/>
+    |
+    <tc:link label="&lt;tc:columnNode/>" image="image/feather-leaf.png"
+             link="#{overviewBundle.tagDocUrl}/columnNode.html"/></p>
 
-    <tc:out value="Tree Table"/>
-
-    <tc:sheet value="#{demo.solarTree}" id="sheet"
-              columns="3*;2*;30px;2*;2*;2*;2*;2*;2*" var="luminary"
-              state="#{demo.sheetTreeState}"
-              showRoot="true"
-              showRootJunction="true"
-              showRowRange="left"
-              showPageRange="right"
-              showDirectLinks="center">
-
-      <tc:columnNode id="name">
+  <tc:section label="Column Tree">
+    <p>There is a tree in the first column. You can expand and collapse the items.
+      The <code class="language-markup">&lt;tc:columnNode/></code> tag can contain several tags for a tree.
+      In this example, it's a <code class="language-markup">&lt;tc:treeIndent/></code> to intent the
+      single entries of the tree.</p>
+    <pre><code class="language-markup">&lt;tc:sheet value="\#{sheetTreeController.solarTree}"
+    var="solarObject" showRoot="true" showRootJunction="true">
+  &lt;tc:columnNode label="Name">
+    &lt;tc:treeIndent/>
+    &lt;tc:out value="\#{solarObject.userObject.name}"/>
+    ...</code></pre>
+    <tc:sheet value="#{sheetTreeController.solarTree}" var="solarObject" showRoot="true" showRootJunction="true">
+      <tc:columnNode label="Name">
         <tc:treeIndent/>
-        <tc:out value="#{luminary.userObject.name}" id="t_name"/>
+        <tc:out value="#{solarObject.userObject.name}"/>
       </tc:columnNode>
-      <tc:column id="orbit" label="#{overviewBundle.solarArrayOrbit}">
-        <tc:out value="#{luminary.userObject.orbit}" id="t_orbit"/>
-      </tc:column>
-      <tc:column id="number" resizable="false"
-                 tip="#{overviewBundle.solarArrayNumberTip}" align="center">
-        <tc:out value="#{luminary.userObject.number}" id="t_number"/>
-      </tc:column>
-      <tc:column align="right" id="distance">
-        <tc:out value="#{luminary.userObject.distance}" id="t_distance"/>
-      </tc:column>
-      <tc:column label="#{overviewBundle.solarArrayPeriod}" align="right" id="period">
-        <tc:out value="#{luminary.userObject.period}" id="t_period"/>
+      <tc:column label="Central Body">
+        <tc:out value="#{solarObject.userObject.orbit}"/>
       </tc:column>
-      <tc:column align="right" id="incl">
-        <tc:out value="#{luminary.userObject.incl}" id="t_incl"/>
+      <tc:column label="Distance" sortable="true">
+        <tc:out value="#{solarObject.userObject.distance}"/>
       </tc:column>
-      <tc:column align="right" id="eccen">
-        <tc:out value="#{luminary.userObject.eccen}" id="t_eccen"/>
+      <tc:column label="Period" sortable="true">
+        <tc:out value="#{solarObject.userObject.period}"/>
       </tc:column>
-      <tc:column id="discoverer">
-        <tc:out value="#{luminary.userObject.discoverer}" id="t_discoverer"/>
+      <tc:column label="Discoverer">
+        <tc:out value="#{solarObject.userObject.discoverer}"/>
       </tc:column>
-      <tc:column align="center" id="discoverYear">
-        <tc:out value="#{luminary.userObject.discoverYear}" id="t_discoverYear"/>
+      <tc:column label="Year" sortable="true">
+        <tc:out value="#{solarObject.userObject.discoverYear}"/>
       </tc:column>
     </tc:sheet>
-  </tc:panel>
+  </tc:section>
 </ui:composition>

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/sheet.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/sheet.xhtml?rev=1738697&r1=1738696&r2=1738697&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/sheet.xhtml (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/080-sheet/sheet.xhtml Tue Apr 12 06:24:00 2016
@@ -25,7 +25,7 @@
   <p>A <code class="language-markup">&lt;tc:sheet/></code> tag can contain any number of
     <code class="language-markup">&lt;tc:column/></code> tags.
     The <code class="language-markup">&lt;tc:column/></code> tag is a container, which may contain
-    outputfields, progress bars or even tab groups.</p>
+    outputfields, labels, progress bars or even tab groups.</p>
   <p>Tag Library Documentation:
     <tc:link label="&lt;tc:sheet/>" image="image/feather-leaf.png"
              link="#{overviewBundle.tagDocUrl}/sheet.html"/>
@@ -35,17 +35,16 @@
 
   <tc:section label="Basics">
     <p>Two attributes should be recognized in a sheet.
-      The date of the sheet is set in the <code>value</code> attribute.
+      The data of the sheet is set in the <code>value</code> attribute.
       The variablename of a single entry is set by the <code>var</code> attribute, which can be used in the
       <code class="language-markup">&lt;tc:column/></code> tags.
-      In this example, also the <code>rows</code> attribute is set. So only four rows are shown at a time.
-      Only outputfields are used to display the data.</p>
+      In this example, also the <code>rows</code> attribute is set. So only four rows are shown at a time.</p>
     <pre><code class="language-markup">&lt;tc:sheet value="\#{sheetController.solarList}"
     var="solarobject" rows="4">
   &lt;tc:column label="Name">
     &lt;tc:out value="\#{solarobject.name}"/>
       ...</code></pre>
-    <tc:sheet columns="3*;2*;3*;*;*" id="s1" value="#{sheetController.solarList}" var="solarobject" rows="4">
+    <tc:sheet id="s1" value="#{sheetController.solarList}" var="solarobject" rows="4">
       <tc:style maxHeight="500px"/>
       <tc:column label="Name">
         <tc:out value="#{solarobject.name}"/>
@@ -64,4 +63,8 @@
       </tc:column>
     </tc:sheet>
   </tc:section>
+
+  <tc:section label="Static Header">
+
+  </tc:section>
 </ui:composition>

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/110-wysiwyg/00-tinymce/tinymce.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/110-wysiwyg/00-tinymce/tinymce.xhtml?rev=1738697&r1=1738696&r2=1738697&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/110-wysiwyg/00-tinymce/tinymce.xhtml (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/110-wysiwyg/00-tinymce/tinymce.xhtml Tue Apr 12 06:24:00 2016
@@ -24,11 +24,11 @@
                 xmlns="http://www.w3.org/1999/xhtml">
   <ui:param name="title" value="TinyMCE integration"/>
 
-  <tc:script file="content/35-wysiwyg/00-tinymce/tinymce/js/tinymce/tinymce.min.js"/>
+  <tc:script file="content/20-component/110-wysiwyg/00-tinymce/tinymce/js/tinymce/tinymce.min.js"/>
 <!--
-  <tc:script file="content/35-wysiwyg/00-tinymce/tinymce/js/tinymce/jquery.tinymce.min.js"/>
+  <tc:script file="content/20-component/110-wysiwyg/00-tinymce/tinymce/js/tinymce/jquery.tinymce.min.js"/>
 -->
-  <tc:script file="content/35-wysiwyg/00-tinymce/tinymce.js"/>
+  <tc:script file="content/20-component/110-wysiwyg/00-tinymce/tinymce.js"/>
 
   <tc:panel>
     <f:facet name="layout">

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/110-wysiwyg/01-ckeditor/ckeditor.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/110-wysiwyg/01-ckeditor/ckeditor.xhtml?rev=1738697&r1=1738696&r2=1738697&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/110-wysiwyg/01-ckeditor/ckeditor.xhtml (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/20-component/110-wysiwyg/01-ckeditor/ckeditor.xhtml Tue Apr 12 06:24:00 2016
@@ -24,8 +24,8 @@
                 xmlns="http://www.w3.org/1999/xhtml">
   <ui:param name="title" value="CKEditor integration"/>
 
-  <tc:script file="content/35-wysiwyg/01-ckeditor/ckeditor/ckeditor.js"/>
-  <tc:script file="content/35-wysiwyg/01-ckeditor/demo-ckeditor.js"/>
+  <tc:script file="content/20-component/110-wysiwyg/01-ckeditor/ckeditor/ckeditor.js"/>
+  <tc:script file="content/20-component/110-wysiwyg/01-ckeditor/demo-ckeditor.js"/>
 
   <tc:panel>
     <f:facet name="layout">

Added: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/80-security/20-roles/roles.xhtml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/80-security/20-roles/roles.xhtml?rev=1738697&view=auto
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/80-security/20-roles/roles.xhtml (added)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/content/30-concept/80-security/20-roles/roles.xhtml Tue Apr 12 06:24:00 2016
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+ * 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.
+-->
+
+<ui:composition template="/main.xhtml"
+                xmlns:tc="http://myfaces.apache.org/tobago/component"
+                xmlns:ui="http://java.sun.com/jsf/facelets"
+                xmlns:f="http://java.sun.com/jsf/core">
+  <ui:param name="title" value="Roles"/>
+
+  TODO
+
+  <tc:section label="Guest">
+    <p>This section should be visible for all.</p>
+
+    <tc:in label="Guest Input" value="#{roleController.guestString}"/>
+    <tc:out label="Guest Output" value="#{roleController.guestString}"/>
+    <tc:button label="Submit"/>
+  </tc:section>
+
+  <tc:section label="Admin">
+    <p>This section can only be used by an admin.</p>
+    <tc:in label="Admin Input" value="#{roleController.adminString}"/>
+    <tc:out label="Admin Output" value="#{roleController.adminString}"/>
+    <tc:button label="The admin button"/>
+  </tc:section>
+</ui:composition>

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/tobago-resource/html/standard/standard/property/overview.properties.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/tobago-resource/html/standard/standard/property/overview.properties.xml?rev=1738697&r1=1738696&r2=1738697&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/tobago-resource/html/standard/standard/property/overview.properties.xml (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-example/tobago-example-demo/src/main/webapp/tobago-resource/html/standard/standard/property/overview.properties.xml Tue Apr 12 06:24:00 2016
@@ -73,7 +73,14 @@
   <entry key="tab_ajax">Ajax</entry>
   <entry key="tab_server">Server sided</entry>
   <entry key="sheet">Sheet Control</entry>
-  <entry key="sheet_master_detail">Column Event</entry>
+  <entry key="sheet_column_content">Column Content</entry>
+  <entry key="sheet_sorting">Sorting</entry>
+  <entry key="sheet_column_selector">Column Selector</entry>
+  <entry key="sheet_column_event">Column Event</entry>
+  <entry key="sheet_dropdown">Dropdown Box</entry>
+  <entry key="sheet_filter">Filtering</entry>
+  <entry key="sheet_header">Header</entry>
+  <entry key="sheet_tree">Column Tree</entry>
   <entry key="tree">Tree Control</entry>
   <entry key="tree_command_types">Command</entry>
   <entry key="tree_select">Select</entry>
@@ -81,10 +88,11 @@
   <entry key="tree_menu">Tree Menu</entry>
   <entry key="tree_listbox">Tree List</entry>
   <entry key="upload">File Upload</entry>
+  <entry key="wysiwyg_editor">WYSIWYG Editor</entry>
+  <entry key="tinymce">TinyMCE</entry>
+  <entry key="ckeditor">CKEditor</entry>
 
 
-  <entry key="tree-editor">Editor</entry>
-  <entry key="tree-command-types">Command Types</entry>
   <entry key="validation">Validation</entry>
   <entry key="validation-severity">Severity</entry>
   <entry key="form">Forms</entry>

Modified: myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/style/tobago.css
URL: http://svn.apache.org/viewvc/myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/style/tobago.css?rev=1738697&r1=1738696&r2=1738697&view=diff
==============================================================================
--- myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/style/tobago.css (original)
+++ myfaces/tobago/branches/tobago-3.0.x/tobago-theme/tobago-theme-standard/src/main/resources/org/apache/myfaces/tobago/renderkit/html/standard/standard/style/tobago.css Tue Apr 12 06:24:00 2016
@@ -319,12 +319,21 @@ h6 > .fa:first-child {
   margin-right: 0.7em;
 }
 
+/* selectBooleanCheckbox ----------------------------------------------- */
+.tobago-selectBooleanCheckbox input {
+  margin-right: 6px;
+}
+
 /* selectManyCheckbox ----------------------------------------------------------- */
 
 .tobago-selectManyCheckbox {
   list-style: none;
 }
 
+.tobago-selectManyCheckbox input {
+  margin-right: 6px;
+}
+
 /* selectManyShuttle ----------------------------------------------------------- */
 
 .tobago-selectManyShuttle {
@@ -365,6 +374,10 @@ h6 > .fa:first-child {
   list-style: none;
 }
 
+.tobago-selectOneRadio input {
+  margin-right: 6px;
+}
+
 /* segmentLayout ----------------------------------------------------------- */
 
 .tobago-segmentLayout {
@@ -377,6 +390,28 @@ h6 > .fa:first-child {
   */
 }
 
+/* separator -------------------------------------------------------------- */
+hr.tobago-separator {
+  border-top: 1px solid #e5e5e5;
+}
+
+fieldset.tobago-separator {
+  border-top: 1px solid #e5e5e5;
+  border-bottom: none;
+  border-left: none;
+  border-right: none;
+  display: block;
+  margin: 1rem 0rem;
+}
+
+fieldset.tobago-separator legend {
+  width: initial;
+  margin-left: 25px;
+  padding-left: 10px;
+  padding-right: 10px;
+  font-size: 12pt;
+}
+
 /* sheet -------------------------------------------------------------- */
 
 .tobago-sheet {