Search in sources :

Example 6 with WDecoratedLabel

use of com.github.bordertech.wcomponents.WDecoratedLabel in project wcomponents by BorderTech.

the class ExampleSection method buildUI.

/**
 * Add the controls to the section in the right order.
 */
private void buildUI() {
    add(messages);
    add(tabset);
    // add(new AccessibilityWarningContainer());
    container.add(new WText("Select an example from the menu"));
    // Set a static ID on container and it becomes a de-facto naming context.
    container.setIdName("eg");
    tabset.addTab(container, "(no selection)", WTabSet.TAB_MODE_CLIENT);
    WImage srcImage = new WImage(new ImageResource("/image/text-x-source.png", "View Source"));
    srcImage.setCacheKey("srcTabImage");
    tabset.addTab(source, new WDecoratedLabel(srcImage), WTabSet.TAB_MODE_LAZY).setToolTip("View Source");
    // The refresh current view button.
    WButton refreshButton = new WButton("\u200b");
    refreshButton.setToolTip("Refresh");
    refreshButton.setHtmlClass(HtmlIconUtil.getIconClasses("fa-refresh"));
    // refreshButton.setImage("/image/refresh-w.png");
    refreshButton.setRenderAsLink(true);
    refreshButton.setAction(new ValidatingAction(messages.getValidationErrors(), refreshButton) {

        @Override
        public void executeOnValid(final ActionEvent event) {
        // Do Nothing
        }
    });
    // The reset example button.
    final WButton resetButton = new WButton("\u200b");
    resetButton.setToolTip("Reset");
    resetButton.setHtmlClass(HtmlIconUtil.getIconClasses("fa-times-circle"));
    // resetButton.setImage("/image/cancel-w.png");
    resetButton.setRenderAsLink(true);
    resetButton.setAction(new ValidatingAction(messages.getValidationErrors(), resetButton) {

        @Override
        public void executeOnValid(final ActionEvent event) {
            resetExample();
        }
    });
    addToTail(refreshButton);
    addToTail(new WText("\u2002"));
    addToTail(resetButton);
}
Also used : ImageResource(com.github.bordertech.wcomponents.ImageResource) WText(com.github.bordertech.wcomponents.WText) ValidatingAction(com.github.bordertech.wcomponents.validation.ValidatingAction) ActionEvent(com.github.bordertech.wcomponents.ActionEvent) WImage(com.github.bordertech.wcomponents.WImage) WButton(com.github.bordertech.wcomponents.WButton) WDecoratedLabel(com.github.bordertech.wcomponents.WDecoratedLabel)

Example 7 with WDecoratedLabel

use of com.github.bordertech.wcomponents.WDecoratedLabel in project wcomponents by BorderTech.

the class FilterableTableExample method buildFilterSubMenu.

/**
 * Creates and populates the sub-menu for each filter menu.
 *
 * @param menu The WMenu we are currently populating.
 * @param column The column index of the table column the menu is in. This is used to get the data off the table's
 * Bean to put text content into the menu's items.
 */
private void buildFilterSubMenu(final WMenu menu, final int column) {
    List<?> beanList = getFilterableTableModel().getFullBeanList();
    int rows = (beanList == null) ? 0 : beanList.size();
    if (rows == 0) {
        return;
    }
    final List<String> found = new ArrayList<>();
    final WDecoratedLabel filterSubMenuLabel = new WDecoratedLabel(new WText("\u200b"));
    filterSubMenuLabel.setToolTip("Filter this column");
    filterSubMenuLabel.setHtmlClass(HtmlIconUtil.getIconClasses("fa-filter"));
    final WSubMenu submenu = new WSubMenu(filterSubMenuLabel);
    submenu.setSelectionMode(SELECTION_MODE);
    menu.add(submenu);
    WMenuItem item = new WMenuItem(CLEAR_ALL, new ClearFilterAction());
    submenu.add(item);
    item.setActionObject(item);
    item.setSelectability(false);
    add(new WAjaxControl(item, table));
    Object cellObject;
    String cellContent, cellContentMatch;
    Object bean;
    if (beanList != null) {
        for (int i = 0; i < rows; ++i) {
            bean = beanList.get(i);
            if (bean != null) {
                cellObject = getFilterableTableModel().getBeanPropertyValueFullList(BEAN_PROPERTIES[column], bean);
                if (cellObject != null) {
                    if (cellObject instanceof Date) {
                        cellContent = new SimpleDateFormat(DATE_FORMAT).format((Date) cellObject);
                    } else {
                        cellContent = cellObject.toString();
                    }
                    if ("".equals(cellContent)) {
                        cellContent = EMPTY;
                    }
                    cellContentMatch = (getFilterableTableModel().isCaseInsensitiveMatch()) ? cellContent.toLowerCase() : cellContent;
                    if (found.indexOf(cellContentMatch) == -1) {
                        item = new WMenuItem(cellContent, new FilterAction());
                        submenu.add(item);
                        add(new WAjaxControl(item, table));
                        found.add(cellContentMatch);
                    }
                }
            }
        }
    }
}
Also used : WAjaxControl(com.github.bordertech.wcomponents.WAjaxControl) ArrayList(java.util.ArrayList) Date(java.util.Date) WSubMenu(com.github.bordertech.wcomponents.WSubMenu) WMenuItem(com.github.bordertech.wcomponents.WMenuItem) WText(com.github.bordertech.wcomponents.WText) SimpleDateFormat(java.text.SimpleDateFormat) WDecoratedLabel(com.github.bordertech.wcomponents.WDecoratedLabel)

Example 8 with WDecoratedLabel

use of com.github.bordertech.wcomponents.WDecoratedLabel in project wcomponents by BorderTech.

the class WTabSetExample method constructExample.

/**
 * Helper to do the work of the constructor since we do not really want to call over-rideable methods in a
 * constructor.
 */
private void constructExample() {
    add(new WHeading(HeadingLevel.H2, "Examples showing TabSet Type property."));
    add(new WHeading(HeadingLevel.H3, "Tabs at the top"));
    WTabSet tabset0 = new SampleWTabset();
    add(tabset0);
    add(new WHeading(HeadingLevel.H3, "Tabs at the top with explicit TYPE"));
    /* Explicitly setting TYPE_TOP is superfluous */
    WTabSet tabset1 = new SampleWTabset(WTabSet.TYPE_TOP);
    add(tabset1);
    add(new WHeading(HeadingLevel.H3, "Tabs on the LEFT"));
    WTabSet tabset1a = new SampleWTabset(WTabSet.TYPE_LEFT);
    add(tabset1a);
    add(new WHeading(HeadingLevel.H3, "Tabs on the RIGHT"));
    WTabSet tabset1b = new SampleWTabset(WTabSet.TYPE_RIGHT);
    add(tabset1b);
    add(new WHeading(HeadingLevel.H3, "ACCORDION tabs"));
    WTabSet tabset1c = new SampleWTabset(TabSetType.ACCORDION);
    add(tabset1c);
    add(new WHorizontalRule());
    /* Content height */
    add(new WHeading(HeadingLevel.H2, "Examples showing content height property."));
    add(new WHeading(HeadingLevel.H3, "Tall content."));
    WTabSet htabset1 = new SampleWTabset();
    htabset1.setContentHeight(TALL_CONTENT);
    add(htabset1);
    WTabSet htabset1a = new SampleWTabset(WTabSet.TYPE_LEFT);
    htabset1a.setContentHeight(TALL_CONTENT);
    add(htabset1a);
    WTabSet htabset1b = new SampleWTabset(WTabSet.TYPE_RIGHT);
    htabset1b.setContentHeight(TALL_CONTENT);
    add(htabset1b);
    WTabSet htabset1c = new SampleWTabset(TabSetType.ACCORDION);
    htabset1c.setContentHeight(TALL_CONTENT);
    add(htabset1c);
    add(new WHeading(HeadingLevel.H3, "Short content."));
    WTabSet htabset1d = new SampleWTabset();
    htabset1d.setContentHeight(SHORT_CONTENT);
    add(htabset1d);
    WTabSet htabset1e = new SampleWTabset(WTabSet.TYPE_LEFT);
    htabset1e.setContentHeight(SHORT_CONTENT);
    add(htabset1e);
    WTabSet htabset1f = new SampleWTabset(WTabSet.TYPE_RIGHT);
    htabset1f.setContentHeight(SHORT_CONTENT);
    add(htabset1f);
    WTabSet htabset1g = new SampleWTabset(TabSetType.ACCORDION);
    htabset1g.setContentHeight(SHORT_CONTENT);
    add(htabset1g);
    add(new WHorizontalRule());
    add(new WHeading(HeadingLevel.H2, "Examples showing disabled property."));
    /* NOTE: WTabSet does not currently implement SubordinateTarget therefore one cannot create a subordinate
		 * control to disable/enable a WTabSet.
		 */
    WTabSet disabledTabset = new SampleWTabset();
    disabledTabset.setDisabled(true);
    add(disabledTabset);
    add(new WHeading(HeadingLevel.H2, "Examples showing accordion's single property."));
    WTabSet singleOpenAccordionabset = new SampleWTabset(WTabSet.TYPE_ACCORDION);
    singleOpenAccordionabset.setSingle(true);
    add(singleOpenAccordionabset);
    add(new WHorizontalRule());
    /* NOTE: no example of the hidden property because WTabSet is not a subordinate target. This is inconsistent
		 * with the schema. */
    add(new WHeading(HeadingLevel.H2, "Setting the initially active tab"));
    add(new WHeading(HeadingLevel.H3, "Server side with tabs on the left, with second tab initially active."));
    WTabSet tabset3 = new WTabSet(WTabSet.TYPE_LEFT);
    tabset3.setContentHeight("10em");
    tabset3.addTab(new WText("Some content should go in here."), "First tab", WTabSet.TAB_MODE_SERVER, 'i');
    WPanel largeContent2 = new WPanel();
    largeContent2.setLayout(new FlowLayout(Alignment.VERTICAL));
    largeContent2.add(new WText(LONG_TEXT));
    largeContent2.add(new WText(LONG_TEXT));
    largeContent2.add(new WText(LONG_TEXT));
    tabset3.addTab(largeContent2, "Second tab which is much longer", WTabSet.TAB_MODE_SERVER, 'e');
    WImage image = new WImage("/image/success.png", "success");
    image.setCacheKey("eg-image-tab");
    WDecoratedLabel tabLabel = new WDecoratedLabel(image, new WText("Third tab"), null);
    tabset3.addTab(new WText("The tab button for this tab has an image!"), tabLabel, WTabSet.TAB_MODE_SERVER, 'h');
    // Set 2nd tab active
    tabset3.setActiveIndex(1);
    add(tabset3);
    add(new WHeading(HeadingLevel.H3, "Client side with tabs on the right and the third tab initially active."));
    WText thirdContent = new WText("Some more content should go into here.");
    WTabSet tabset4 = new WTabSet(WTabSet.TYPE_RIGHT);
    tabset4.setContentHeight("10em");
    tabset4.addTab(new WText("Some content should go into here."), "First tab", WTabSet.TAB_MODE_CLIENT);
    tabset4.addTab(new WText(LONG_TEXT), "Second tab which is longer", WTabSet.TAB_MODE_CLIENT);
    tabset4.addTab(thirdContent, "Third tab", WTabSet.TAB_MODE_CLIENT);
    // Set 3rd tab active
    tabset4.setActiveTab(thirdContent);
    add(tabset4);
    add(new WHeading(HeadingLevel.H3, "Client side with showing lots of tabs."));
    add(new ExplanatoryText("This will effectively show what happens when tabs need to wrap. You should do everything possible to avoid this situation."));
    WTabSet tabset5 = new WTabSet();
    tabset5.addTab(new WText("Tab 1."), "First tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 2."), "Second tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 3."), "Third tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 4."), "Fourth tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 5."), "Fifth tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 6."), "Sixth tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 7."), "Seventh tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 8."), "Eighth tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 9."), "Nineth tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 10."), "Tenth tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 11."), "Eleventh tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 12."), "Twelfth tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 13."), "Thirteenth tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 14."), "Fourteenth tab", WTabSet.TAB_MODE_CLIENT);
    tabset5.addTab(new WText("Tab 15."), "Fifteenth tab", WTabSet.TAB_MODE_CLIENT);
    add(tabset5);
    add(new WHorizontalRule());
    add(new WHeading(HeadingLevel.H2, "Using WSubordinateControl"));
    WTabSet targetTabset = new SampleWTabset();
    add(targetTabset);
    WFieldLayout layout = new WFieldLayout(WFieldLayout.LAYOUT_STACKED);
    add(layout);
    final WCheckBox disabledControllerCb = new WCheckBox();
    final WCheckBox hiddenControllerCb = new WCheckBox();
    layout.addField("disable tabset", disabledControllerCb);
    layout.addField("hide tabset", hiddenControllerCb);
    // Build & add the subordinate
    SubordinateBuilder builder = new SubordinateBuilder();
    builder.condition().equals(hiddenControllerCb, String.valueOf(true));
    builder.whenTrue().hide(targetTabset);
    builder.whenFalse().show(targetTabset);
    add(builder.build());
    builder = new SubordinateBuilder();
    builder.condition().equals(disabledControllerCb, String.valueOf(true));
    builder.whenTrue().disable(targetTabset);
    builder.whenFalse().enable(targetTabset);
    add(builder.build());
}
Also used : FlowLayout(com.github.bordertech.wcomponents.layout.FlowLayout) WPanel(com.github.bordertech.wcomponents.WPanel) WImage(com.github.bordertech.wcomponents.WImage) SubordinateBuilder(com.github.bordertech.wcomponents.subordinate.builder.SubordinateBuilder) ExplanatoryText(com.github.bordertech.wcomponents.examples.common.ExplanatoryText) WCheckBox(com.github.bordertech.wcomponents.WCheckBox) WHeading(com.github.bordertech.wcomponents.WHeading) WText(com.github.bordertech.wcomponents.WText) WFieldLayout(com.github.bordertech.wcomponents.WFieldLayout) WTabSet(com.github.bordertech.wcomponents.WTabSet) WHorizontalRule(com.github.bordertech.wcomponents.WHorizontalRule) WDecoratedLabel(com.github.bordertech.wcomponents.WDecoratedLabel)

Example 9 with WDecoratedLabel

use of com.github.bordertech.wcomponents.WDecoratedLabel in project wcomponents by BorderTech.

the class WDecoratedLabelRenderer method doRender.

/**
 * Paints the given WDecoratedLabel.
 *
 * @param component the WDecoratedLabel to paint.
 * @param renderContext the RenderContext to paint to.
 */
@Override
public void doRender(final WComponent component, final WebXmlRenderContext renderContext) {
    WDecoratedLabel label = (WDecoratedLabel) component;
    XmlStringBuilder xml = renderContext.getWriter();
    WComponent head = label.getHead();
    WComponent body = label.getBody();
    WComponent tail = label.getTail();
    xml.appendTagOpen("ui:decoratedlabel");
    xml.appendAttribute("id", component.getId());
    xml.appendOptionalAttribute("class", component.getHtmlClass());
    xml.appendOptionalAttribute("track", component.isTracking(), "true");
    xml.appendOptionalAttribute("hidden", label.isHidden(), "true");
    xml.appendClose();
    if (head != null && head.isVisible()) {
        xml.appendTagOpen("ui:labelhead");
        xml.appendAttribute("id", label.getId() + "-head");
        xml.appendClose();
        head.paint(renderContext);
        xml.appendEndTag("ui:labelhead");
    }
    xml.appendTagOpen("ui:labelbody");
    xml.appendAttribute("id", label.getId() + "-body");
    xml.appendClose();
    body.paint(renderContext);
    xml.appendEndTag("ui:labelbody");
    if (tail != null && tail.isVisible()) {
        xml.appendTagOpen("ui:labeltail");
        xml.appendAttribute("id", label.getId() + "-tail");
        xml.appendClose();
        tail.paint(renderContext);
        xml.appendEndTag("ui:labeltail");
    }
    xml.appendEndTag("ui:decoratedlabel");
}
Also used : WComponent(com.github.bordertech.wcomponents.WComponent) XmlStringBuilder(com.github.bordertech.wcomponents.XmlStringBuilder) WDecoratedLabel(com.github.bordertech.wcomponents.WDecoratedLabel)

Example 10 with WDecoratedLabel

use of com.github.bordertech.wcomponents.WDecoratedLabel in project wcomponents by BorderTech.

the class WFieldSetRenderer method doRender.

/**
 * Paints the given WFieldSet.
 *
 * @param component the WFieldSet to paint.
 * @param renderContext the RenderContext to paint to.
 */
@Override
public void doRender(final WComponent component, final WebXmlRenderContext renderContext) {
    WFieldSet fieldSet = (WFieldSet) component;
    XmlStringBuilder xml = renderContext.getWriter();
    xml.appendTagOpen("ui:fieldset");
    xml.appendAttribute("id", component.getId());
    xml.appendOptionalAttribute("class", component.getHtmlClass());
    xml.appendOptionalAttribute("track", component.isTracking(), "true");
    xml.appendOptionalAttribute("hidden", fieldSet.isHidden(), "true");
    switch(fieldSet.getFrameType()) {
        case NO_BORDER:
            xml.appendOptionalAttribute("frame", "noborder");
            break;
        case NO_TEXT:
            xml.appendOptionalAttribute("frame", "notext");
            break;
        case NONE:
            xml.appendOptionalAttribute("frame", "none");
            break;
        case NORMAL:
        default:
            break;
    }
    xml.appendOptionalAttribute("required", fieldSet.isMandatory(), "true");
    xml.appendClose();
    // Render margin
    MarginRendererUtil.renderMargin(fieldSet, renderContext);
    // Label
    WDecoratedLabel label = fieldSet.getTitle();
    label.paint(renderContext);
    // Children
    xml.appendTag("ui:content");
    int size = fieldSet.getChildCount();
    for (int i = 0; i < size; i++) {
        WComponent child = fieldSet.getChildAt(i);
        // Skip label, as it has already been painted
        if (child != label) {
            child.paint(renderContext);
        }
    }
    xml.appendEndTag("ui:content");
    DiagnosticRenderUtil.renderDiagnostics(fieldSet, renderContext);
    xml.appendEndTag("ui:fieldset");
}
Also used : WComponent(com.github.bordertech.wcomponents.WComponent) WFieldSet(com.github.bordertech.wcomponents.WFieldSet) XmlStringBuilder(com.github.bordertech.wcomponents.XmlStringBuilder) WDecoratedLabel(com.github.bordertech.wcomponents.WDecoratedLabel)

Aggregations

WDecoratedLabel (com.github.bordertech.wcomponents.WDecoratedLabel)13 WText (com.github.bordertech.wcomponents.WText)10 WImage (com.github.bordertech.wcomponents.WImage)6 WMenuItem (com.github.bordertech.wcomponents.WMenuItem)5 Test (org.junit.Test)4 ActionEvent (com.github.bordertech.wcomponents.ActionEvent)3 WHeading (com.github.bordertech.wcomponents.WHeading)3 WSubMenu (com.github.bordertech.wcomponents.WSubMenu)3 Action (com.github.bordertech.wcomponents.Action)2 WCheckBox (com.github.bordertech.wcomponents.WCheckBox)2 WComponent (com.github.bordertech.wcomponents.WComponent)2 WMenu (com.github.bordertech.wcomponents.WMenu)2 XmlStringBuilder (com.github.bordertech.wcomponents.XmlStringBuilder)2 ImageResource (com.github.bordertech.wcomponents.ImageResource)1 WAjaxControl (com.github.bordertech.wcomponents.WAjaxControl)1 WButton (com.github.bordertech.wcomponents.WButton)1 WContainer (com.github.bordertech.wcomponents.WContainer)1 WFieldLayout (com.github.bordertech.wcomponents.WFieldLayout)1 WFieldSet (com.github.bordertech.wcomponents.WFieldSet)1 WHorizontalRule (com.github.bordertech.wcomponents.WHorizontalRule)1