use of org.jboss.gwt.elemento.core.builder.HtmlContentBuilder in project console by hal.
the class TopologyPreview method buildTable.
// ------------------------------------------------------ UI methods
private HTMLElement buildTable(List<Host> hosts, List<ServerGroup> serverGroups, List<Server> servers) {
HTMLTableElement table = table().css(topology).element();
// <colgroup>
double width = 100.0 / (serverGroups.size() + 1);
HtmlContentBuilder<HTMLTableColElement> colgroup = colgroup().add(col().attr("width", width + "%"));
for (int i = 0; i < serverGroups.size(); i++) {
colgroup.add(col().attr("width", width + "%"));
}
table.appendChild(colgroup.element());
// </colgroup>
// <thead>
HtmlContentBuilder<HTMLTableSectionElement> thead = thead().add(tr().add(th().css(empty).innerHtml(new SafeHtmlBuilder().appendEscaped(Names.SERVER_GROUPS + " ").appendHtmlConstant("→").appendHtmlConstant("<br/>").appendEscaped(Names.HOSTS + " ").appendHtmlConstant("↓").toSafeHtml())).addAll(serverGroups.stream().map(this::serverGroupElement).collect(toList())));
table.appendChild(thead.element());
// </thead>
// <tbody>
HTMLElement tbody = tbody().element();
for (Host host : hosts) {
HTMLElement tr;
tbody.appendChild(tr = tr().element());
tr.appendChild(hostElement(host));
for (ServerGroup serverGroup : serverGroups) {
List<HTMLElement> matchingServers = servers.stream().filter(sc -> host.getName().equals(sc.getHost()) && serverGroup.getName().equals(sc.getServerGroup())).sorted(comparing(Server::getName)).map(this::serverElement).collect(toList());
if (matchingServers.isEmpty()) {
tr.appendChild(td().css(empty).element());
} else {
tr.appendChild(td().add(div().css(CSS.servers).addAll(matchingServers)).element());
}
}
}
table.appendChild(tbody);
return table;
}
use of org.jboss.gwt.elemento.core.builder.HtmlContentBuilder in project console by hal.
the class HeaderView method updateBreadcrumb.
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
public void updateBreadcrumb(FinderContext finderContext) {
clearBreadcrumb();
FinderPath currentPath = new FinderPath();
for (HandlerRegistration handler : breadcrumbHandlers) {
handler.removeHandler();
}
breadcrumbHandlers.clear();
for (Iterator<FinderSegment> iterator = finderContext.getPath().iterator(); iterator.hasNext(); ) {
FinderSegment<Object> segment = iterator.next();
if (segment.getColumnId() == null || segment.getItemId() == null) {
// we need to ignore half filled segments which occur when removing items from a column
break;
}
boolean last = !iterator.hasNext();
currentPath.append(segment.getColumnId(), segment.getItemId());
HtmlContentBuilder<HTMLLIElement> builder = li();
if (last) {
builder.css(active);
}
HTMLElement key = span().css(CSS.key).element();
if (finderContext.getToken() != null) {
PlaceRequest keyRequest = new PlaceRequest.Builder().nameToken(finderContext.getToken()).with("path", currentPath.toString()).build();
key.appendChild(a().css(clickable).on(click, event -> presenter.goTo(keyRequest)).textContent(segment.getColumnTitle()).element());
} else {
key.textContent = segment.getColumnTitle();
}
builder.add(key).add(span().css(arrow).innerHtml(SafeHtmlUtils.fromSafeConstant("⇒")));
HTMLElement value = span().css(CSS.value).element();
if (segment.supportsDropdown()) {
value.classList.add(dropdown);
HTMLElement a;
String id = Ids.build(segment.getColumnId(), VALUE);
value.appendChild(a = a().css(clickable).id(id).data(UIConstants.TOGGLE, UIConstants.DROPDOWN).aria(UIConstants.HAS_POPUP, UIConstants.TRUE).aria(UIConstants.EXPANDED, UIConstants.FALSE).attr(UIConstants.ROLE, UIConstants.BUTTON).element());
breadcrumbHandlers.add(bind(a, click, event -> {
Element ul = a.nextElementSibling;
segment.dropdown(finderContext, items -> {
Elements.removeChildrenFrom(ul);
if (items.isEmpty()) {
HTMLElement empty = li().css(CSS.empty).textContent(HeaderView.this.resources.constants().noItems()).element();
ul.appendChild(empty);
} else {
for (DropdownItem<Object> dropdownItem : items) {
HTMLElement element = li().add(a().css(clickable).on(click, e -> dropdownItem.onSelect(finderContext)).textContent(dropdownItem.getTitle())).element();
ul.appendChild(element);
}
}
});
}));
String breadcrumbValue = segment.getItemTitle();
if (breadcrumbValue.length() > MAX_BREADCRUMB_VALUE_LENGTH) {
a.appendChild(span().textContent(abbreviateMiddle(breadcrumbValue, MAX_BREADCRUMB_VALUE_LENGTH) + " ").title(breadcrumbValue).element());
} else {
a.appendChild(span().textContent(breadcrumbValue + " ").element());
}
a.appendChild(span().css(caret).element());
value.appendChild(ul().css(dropdownMenu, valueDropdown).aria(UIConstants.LABELLED_BY, id).element());
} else {
String breadcrumbValue = segment.getItemTitle();
if (breadcrumbValue.length() > MAX_BREADCRUMB_VALUE_LENGTH) {
value.textContent = abbreviateMiddle(breadcrumbValue, MAX_BREADCRUMB_VALUE_LENGTH);
value.title = breadcrumbValue;
} else {
value.textContent = segment.getItemTitle();
}
}
builder.add(value);
breadcrumb.insertBefore(builder.element(), breadcrumbToolsItem);
}
}
use of org.jboss.gwt.elemento.core.builder.HtmlContentBuilder in project console by hal.
the class FinderColumn method newColumnButton.
private HTMLElement newColumnButton(ColumnAction<T> action) {
HtmlContentBuilder<? extends HTMLElement> builder;
if (!action.actions.isEmpty()) {
HTMLElement button;
HTMLElement ul;
builder = div().css(dropdown).add(button = button().css(btn, btnFinder, dropdownToggle).id(action.id).data(UIConstants.TOGGLE, UIConstants.DROPDOWN).aria(UIConstants.EXPANDED, UIConstants.FALSE).element()).add(ul = ul().css(dropdownMenu).id(Ids.uniqueId()).attr(UIConstants.ROLE, UIConstants.MENU).aria(UIConstants.LABELLED_BY, action.id).element());
if (action.title != null) {
button.textContent = action.title;
} else if (action.element != null) {
button.appendChild(action.element);
} else {
button.textContent = NOT_AVAILABLE;
}
button.appendChild(span().css(caret).element());
for (ColumnAction<T> liAction : action.actions) {
HTMLElement a;
ul.appendChild(li().attr(UIConstants.ROLE, UIConstants.PRESENTATION).add(a = a().id(liAction.id).attr(UIConstants.ROLE, UIConstants.MENUITEM).attr(UIConstants.TABINDEX, "-1").on(click, event -> {
if (liAction.handler != null) {
liAction.handler.execute(this);
}
}).element()).element());
if (liAction.title != null) {
a.textContent = liAction.title;
} else if (liAction.element != null) {
a.appendChild(liAction.element);
} else {
a.textContent = NOT_AVAILABLE;
}
}
} else {
builder = button().css(btn, btnFinder).id(action.id).on(click, event -> {
if (action.handler != null) {
action.handler.execute(this);
}
});
if (action.title != null) {
builder.textContent(action.title);
} else if (action.element != null) {
builder.add(action.element);
} else {
builder.textContent(NOT_AVAILABLE);
}
}
return builder.element();
}
Aggregations