use of org.jboss.hal.core.finder.FinderPath in project console by hal.
the class ServerColumn method onServerResult.
@Override
public void onServerResult(ServerResultEvent event) {
if (isVisible()) {
ItemMonitor.stopProgress(event.getServer().getId());
FinderPath path = refreshPath != null ? refreshPath : finder.getContext().getPath();
if (event.getServer().isStopped()) {
FinderPath woRuntime = new FinderPath();
for (FinderSegment<?> segment : path) {
if (Ids.RUNTIME_SUBSYSTEM.equals(segment.getColumnId())) {
break;
}
woRuntime.append(segment.getColumnId(), segment.getItemId(), segment.getColumnTitle(), segment.getItemTitle());
}
path = woRuntime;
}
finder.refresh(path);
refreshPath = null;
}
}
use of org.jboss.hal.core.finder.FinderPath in project console by hal.
the class ProcessStateHandler method onProcessState.
@Override
public void onProcessState(final ProcessStateEvent event) {
// adjust the static standalone server's state
if (environment.isStandalone()) {
ServerState serverState = event.getProcessState().first();
if (serverState.getState() == State.RELOAD_REQUIRED) {
Server.STANDALONE.get(SERVER_STATE).set(RELOAD_REQUIRED);
} else if (serverState.getState() == State.RESTART_REQUIRED) {
Server.STANDALONE.get(SERVER_STATE).set(RESTART_REQUIRED);
}
}
if (shouldProcess() && !event.getProcessState().isEmpty()) {
startTimeout();
if (environment.isStandalone()) {
ServerState serverState = event.getProcessState().first();
if (serverState.getState() == State.RELOAD_REQUIRED) {
MessageEvent.fire(eventBus, Message.warning(UIConstants.RELOAD_MESSAGE_ID, resources.messages().serverConfigurationChanged(), resources.constants().reload(), () -> serverActions.reload(Server.STANDALONE)));
} else if (serverState.getState() == State.RESTART_REQUIRED) {
MessageEvent.fire(eventBus, Message.warning(UIConstants.RESTART_MESSAGE_ID, resources.messages().serverConfigurationChanged(), resources.constants().restart(), () -> serverActions.restart(Server.STANDALONE)));
}
} else {
FinderPath path = new FinderPath().append(Ids.DOMAIN_BROWSE_BY, Ids.asId(Names.TOPOLOGY));
PlaceRequest place = places.finderPlace(NameTokens.RUNTIME, path).build();
MessageEvent.fire(eventBus, Message.warning(UIConstants.DOMAIN_CHANGED_MESSAGE_ID, resources.messages().domainConfigurationChanged(), Names.TOPOLOGY, () -> placeManager.revealPlace(place)));
}
}
}
use of org.jboss.hal.core.finder.FinderPath 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);
}
}
Aggregations