use of elemental.html.SpanElement in project flow by vaadin.
the class ResourceLoader method inlineHtml.
/**
* Inlines an HTML import and notify a listener when the HTML import is
* loaded. Calling this method when the HTML import is currently loading or
* already loaded doesn't cause the HTML import to be loaded again, but the
* listener will still be notified when appropriate.
*
* @param htmlContents
* the html contents to inline
* @param resourceLoadListener
* listener to notify when the HTML import is loaded
*/
public void inlineHtml(String htmlContents, final ResourceLoadListener resourceLoadListener) {
ResourceLoadEvent event = new ResourceLoadEvent(this, htmlContents);
if (loadedResources.has(htmlContents)) {
if (resourceLoadListener != null) {
resourceLoadListener.onLoad(event);
}
return;
}
if (addListener(htmlContents, resourceLoadListener, loadListeners)) {
SpanElement spanElement = getDocument().createSpanElement();
spanElement.setInnerHTML(htmlContents);
spanElement.setAttribute("hidden", "true");
HtmlLoadListener listener = new HtmlLoadListener(event);
getDocument().appendChild(spanElement);
addOnloadHandler(spanElement, listener, event);
if (supportsHtmlWhenReady) {
addHtmlImportsReadyHandler(listener);
}
}
}
use of elemental.html.SpanElement in project che by eclipse.
the class ContentAssistWidget method createProposalPopupItem.
/**
* Creates a new proposal item.
*
* @param index
* of proposal
*/
private Element createProposalPopupItem(int index) {
final CompletionProposal proposal = proposals.get(index);
final Element element = Elements.createLiElement(popupResources.popupStyle().item());
element.setId(Integer.toString(index));
final Element icon = Elements.createDivElement(popupResources.popupStyle().icon());
if (proposal.getIcon() != null && proposal.getIcon().getSVGImage() != null) {
icon.appendChild((Node) proposal.getIcon().getSVGImage().getElement());
} else if (proposal.getIcon() != null && proposal.getIcon().getImage() != null) {
icon.appendChild((Node) proposal.getIcon().getImage().getElement());
}
element.appendChild(icon);
final SpanElement label = Elements.createSpanElement(popupResources.popupStyle().label());
label.setInnerHTML(proposal.getDisplayString());
element.appendChild(label);
element.setTabIndex(1);
final EventListener validateListener = evt -> applyProposal(proposal);
element.addEventListener(Event.DBLCLICK, validateListener, false);
element.addEventListener(CUSTOM_EVT_TYPE_VALIDATE, validateListener, false);
element.addEventListener(Event.CLICK, event -> select(element), false);
element.addEventListener(Event.FOCUS, this, false);
element.addEventListener(DOCUMENTATION, new EventListener() {
@Override
public void handleEvent(Event event) {
proposal.getAdditionalProposalInfo(new AsyncCallback<Widget>() {
@Override
public void onSuccess(Widget info) {
if (info != null) {
docPopup.clear();
docPopup.add(info);
docPopup.getElement().getStyle().setOpacity(1);
if (!docPopup.isAttached()) {
final int x = popupElement.getOffsetLeft() + popupElement.getOffsetWidth() + 3;
final int y = popupElement.getOffsetTop();
RootPanel.get().add(docPopup);
updateMenuPosition(docPopup, x, y);
}
} else {
docPopup.getElement().getStyle().setOpacity(0);
}
}
@Override
public void onFailure(Throwable e) {
Log.error(getClass(), e);
docPopup.getElement().getStyle().setOpacity(0);
}
});
}
}, false);
return element;
}
use of elemental.html.SpanElement in project che by eclipse.
the class ProcessTreeRenderer method createMachineElement.
private SpanElement createMachineElement(final ProcessTreeNode node) {
final MachineEntity machine = (MachineEntity) node.getData();
final String machineId = machine.getId();
final MachineConfig machineConfig = machine.getConfig();
final String machineCategory = machineConfig.isDev() ? locale.devMachineCategory() : machineConfig.getType();
SpanElement root = Elements.createSpanElement();
root.appendChild(createMachineLabel(machineCategory));
Element statusElement = Elements.createSpanElement(resources.getCss().machineStatus());
root.appendChild(statusElement);
if (node.isRunning()) {
statusElement.appendChild(Elements.createDivElement(resources.getCss().machineStatusRunning()));
} else {
statusElement.appendChild(Elements.createDivElement(resources.getCss().machineStatusPausedLeft()));
statusElement.appendChild(Elements.createDivElement(resources.getCss().machineStatusPausedRight()));
}
Tooltip.create(statusElement, BOTTOM, MIDDLE, locale.viewMachineRunningTooltip());
/***************************************************************************
*
* New terminal button
*
***************************************************************************/
if (node.isRunning() && node.hasTerminalAgent()) {
SpanElement newTerminalButton = Elements.createSpanElement(resources.getCss().newTerminalButton());
newTerminalButton.appendChild((Node) new SVGImage(resources.addTerminalIcon()).getElement());
root.appendChild(newTerminalButton);
Tooltip.create(newTerminalButton, BOTTOM, MIDDLE, locale.viewNewTerminalTooltip());
newTerminalButton.addEventListener(Event.CLICK, new EventListener() {
@Override
public void handleEvent(Event event) {
event.stopPropagation();
event.preventDefault();
if (addTerminalClickHandler != null) {
addTerminalClickHandler.onAddTerminalClick(machineId);
}
}
}, true);
/**
* This listener cancels mouse events on '+' button and prevents the jitter of the selection in the tree.
*/
EventListener blockMouseListener = new EventListener() {
@Override
public void handleEvent(Event event) {
event.stopPropagation();
event.preventDefault();
}
};
/**
* Prevent jitter when pressing mouse on '+' button.
*/
newTerminalButton.addEventListener(Event.MOUSEDOWN, blockMouseListener, true);
newTerminalButton.addEventListener(Event.MOUSEUP, blockMouseListener, true);
newTerminalButton.addEventListener(Event.CLICK, blockMouseListener, true);
newTerminalButton.addEventListener(Event.DBLCLICK, blockMouseListener, true);
}
/***************************************************************************
*
* SSH button
*
***************************************************************************/
if (node.isRunning() && node.hasSSHAgent()) {
SpanElement sshButton = Elements.createSpanElement(resources.getCss().sshButton());
sshButton.setTextContent("SSH");
root.appendChild(sshButton);
sshButton.addEventListener(Event.CLICK, new EventListener() {
@Override
public void handleEvent(Event event) {
if (previewSshClickHandler != null) {
previewSshClickHandler.onPreviewSshClick(machineId);
}
}
}, true);
Tooltip.create(sshButton, BOTTOM, MIDDLE, locale.connectViaSSH());
}
Element monitorsElement = Elements.createSpanElement(resources.getCss().machineMonitors());
root.appendChild(monitorsElement);
Node monitorNode = (Node) machineMonitors.getMonitorWidget(machineId, this).getElement();
monitorsElement.appendChild(monitorNode);
Element nameElement = Elements.createSpanElement(resources.getCss().nameLabel());
nameElement.setTextContent(machineConfig.getName());
Tooltip.create(nameElement, BOTTOM, MIDDLE, machineConfig.getName());
root.appendChild(nameElement);
return root;
}
use of elemental.html.SpanElement in project che by eclipse.
the class MachineTreeRenderer method renderNodeContents.
@Override
public SpanElement renderNodeContents(MachineTreeNode data) {
SpanElement root = Elements.createSpanElement();
Element nodeName = Elements.createSpanElement();
nodeName.setTextContent(data.getName());
root.appendChild(nodeName);
return root;
}
use of elemental.html.SpanElement in project che by eclipse.
the class EmptyEditorsPanel method renderAction.
private Node renderAction(String title, final Action action) {
final Presentation presentation = presentationFactory.getPresentation(action);
Element divElement = Elements.createDivElement(style.listElement());
divElement.addEventListener("click", new EventListener() {
@Override
public void handleEvent(Event evt) {
ActionEvent event = new ActionEvent(presentation, actionManager, perspectiveManagerProvider.get());
action.actionPerformed(event);
}
}, true);
divElement.getStyle().setCursor("pointer");
divElement.getStyle().setColor(Style.getOutputLinkColor());
Element label = Elements.createDivElement(style.actionLabel());
label.setInnerText(title);
divElement.appendChild(label);
String hotKey = KeyMapUtil.getShortcutText(keyBindingAgent.getKeyBinding(actionManager.getId(action)));
if (hotKey == null) {
hotKey = " ";
} else {
hotKey = "<nobr> " + hotKey + " </nobr>";
}
SpanElement hotKeyElement = Elements.createSpanElement(style.hotKey());
hotKeyElement.setInnerHTML(hotKey);
divElement.appendChild(hotKeyElement);
return divElement;
}
Aggregations