package org.dashbuilder.client.widgets.dataset.editor.workflow; import com.google.gwt.core.client.GWT; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.user.client.ui.Composite; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.Widget; import org.gwtbootstrap3.client.ui.Button; import org.gwtbootstrap3.client.ui.Column; import org.gwtbootstrap3.client.ui.Container; import org.gwtbootstrap3.client.ui.Popover; import org.gwtbootstrap3.client.ui.Tooltip; import org.gwtbootstrap3.client.ui.constants.ButtonType; import org.gwtbootstrap3.client.ui.constants.Placement; import org.uberfire.mvp.Command; import javax.enterprise.context.Dependent; /** * <p>The Data Set workflow editor view.</p> * * @since 0.4.0 */ @Dependent public class DataSetEditorWorkflowView extends Composite implements DataSetEditorWorkflow.View { interface Binder extends UiBinder<Widget, DataSetEditorWorkflowView> { Binder BINDER = GWT.create(Binder.class); } @UiField Container container; @UiField Column buttonsPanel; DataSetEditorWorkflow presenter; @Override public void init(final DataSetEditorWorkflow presenter) { this.presenter = presenter; initWidget(Binder.BINDER.createAndBindUi(this)); } @Override public DataSetEditorWorkflow.View add(IsWidget widget) { container.add(widget.asWidget()); return this; } @Override public DataSetEditorWorkflow.View addButton(final String text, final String content, final boolean isPrimary, final Command clickCommand) { final Button button = new Button(text); if (isPrimary) { button.setType(ButtonType.PRIMARY); } final Tooltip tooltip = new Tooltip(button); tooltip.setTitle(content); tooltip.setContainer("body"); tooltip.setPlacement(Placement.BOTTOM); tooltip.setShowDelayMs(500); tooltip.setHideDelayMs(100); buttonsPanel.add(tooltip); button.addClickHandler(e -> { tooltip.hide(); clickCommand.execute(); }); return this; } @Override public DataSetEditorWorkflow.View clearButtons() { buttonsPanel.clear(); return this; } @Override public DataSetEditorWorkflow.View clearView() { container.clear(); clearButtons(); return this; } }