package org.dashbuilder.client.widgets.dataset.editor;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.event.logical.shared.OpenEvent;
import com.google.gwt.event.logical.shared.OpenHandler;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.ui.*;
import org.dashbuilder.client.widgets.dataset.editor.attributes.*;
import org.gwtbootstrap3.client.ui.Alert;
import org.gwtbootstrap3.client.ui.Button;
import org.gwtbootstrap3.client.ui.TabListItem;
import org.gwtbootstrap3.client.ui.TabPane;
import org.gwtbootstrap3.client.ui.constants.IconType;
import org.gwtbootstrap3.client.ui.html.Text;
import org.uberfire.mvp.Command;
import javax.enterprise.context.Dependent;
/**
* <p>The Data Set Editor view.</p>
*
* @since 0.4.0
*/
@Dependent
public class DataSetEditorView extends Composite implements DataSetEditor.View {
interface Binder extends UiBinder<Widget, DataSetEditorView> {
Binder BINDER = GWT.create(Binder.class);
}
DataSetEditor presenter;
@UiField
TabListItem basicAttributesTabItem;
@UiField
TabListItem previewTabItem;
@UiField
TabListItem advancedAttributesTabItem;
@UiField
TabPane basicAttributesTabPane;
@UiField
TabPane previewTabPane;
@UiField
DisclosurePanel filterAndColumnsPanel;
@UiField
Button filterAndColumnsPanelToggleButton;
@UiField
TabPane advancedAttributesTabPane;
@UiField(provided = true)
DataSetDefBasicAttributesEditor.View basicAttributesEditorView;
@UiField(provided = true)
IsWidget providerAttributesEditorView;
@UiField(provided = true)
DataSetDefColumnsFilterEditor.View columnsAndFilterEditorView;
@UiField
FlowPanel previewTablePanel;
@UiField(provided = true)
DataSetDefPreviewTable.View previewTableView;
@UiField
Alert previewErrorNotification;
@UiField
Text notificationLabel;
@UiField(provided = true)
DataSetDefCacheAttributesEditorView backendCacheAttributesEditorView;
@UiField(provided = true)
DataSetDefCacheAttributesEditorView clientCacheAttributesEditorView;
@UiField(provided = true)
DataSetDefRefreshAttributesEditor.View refreshEditorView;
@Override
public void init(final DataSetEditor presenter) {
this.presenter = presenter;
}
@Override
public void initWidgets(final DataSetDefBasicAttributesEditor.View basicAttributesEditorView,
final IsWidget providerAttributesEditorView,
final DataSetDefColumnsFilterEditor.View columnsAndFilterEditorView,
final DataSetDefPreviewTable.View previewTableView,
final DataSetDefCacheAttributesEditorView backendCacheAttributesEditorView,
final DataSetDefCacheAttributesEditorView clientCacheAttributesEditorView,
final DataSetDefRefreshAttributesEditor.View refreshEditorView) {
this.basicAttributesEditorView = basicAttributesEditorView;
this.providerAttributesEditorView = providerAttributesEditorView;
this.columnsAndFilterEditorView = columnsAndFilterEditorView;
this.previewTableView = previewTableView;
this.backendCacheAttributesEditorView = backendCacheAttributesEditorView;
this.clientCacheAttributesEditorView = clientCacheAttributesEditorView;
this.refreshEditorView = refreshEditorView;
initWidget(Binder.BINDER.createAndBindUi(this));
basicAttributesTabItem.setDataTargetWidget(basicAttributesTabPane);
previewTabItem.setDataTargetWidget(previewTabPane);
advancedAttributesTabItem.setDataTargetWidget(advancedAttributesTabPane);
filterAndColumnsPanel.addOpenHandler(new OpenHandler<DisclosurePanel>() {
@Override
public void onOpen(final OpenEvent<DisclosurePanel> event) {
presenter.onOpenColumnsFilterPanel();
}
});
filterAndColumnsPanel.addCloseHandler(new CloseHandler<DisclosurePanel>() {
@Override
public void onClose(final CloseEvent<DisclosurePanel> event) {
presenter.onCloseColumnsFilterPanel();
}
});
}
@Override
public void setConfigurationTabTitle(String title) {
basicAttributesTabItem.setText(title);
basicAttributesTabItem.setTitle(title);
}
@Override
public void showConfigurationTab() {
basicAttributesTabItem.showTab();
}
@Override
public void showPreviewTab() {
previewTabItem.showTab();
}
@Override
public void addPreviewTabItemClickHandler(final Command command) {
previewTabItem.addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
command.execute();
}
});
}
@Override
public void showAdvancedTab() {
advancedAttributesTabItem.showTab();
}
@Override
public void addAdvancedTabItemClickHandler(final Command command) {
advancedAttributesTabItem.addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
command.execute();
}
});
}
@Override
public void openColumnsFilterPanel(final String title) {
filterAndColumnsPanelToggleButton.setTitle(title);
filterAndColumnsPanelToggleButton.setIcon(IconType.STEP_BACKWARD);
filterAndColumnsPanelToggleButton.getElement().getStyle().setBorderStyle(Style.BorderStyle.SOLID);
}
@Override
public void closeColumnsFilterPanel(final String title) {
filterAndColumnsPanelToggleButton.setTitle(title);
filterAndColumnsPanelToggleButton.setIcon(IconType.STEP_FORWARD);
filterAndColumnsPanelToggleButton.getElement().getStyle().setBorderStyle(Style.BorderStyle.NONE);
}
public void addConfigurationTabItemClickHandler(final Command command) {
basicAttributesTabItem.addClickHandler(new ClickHandler() {
@Override
public void onClick(final ClickEvent event) {
command.execute();
}
});
}
public void showErrorNotification(final SafeHtml text) {
notificationLabel.setText(text.asString());
previewErrorNotification.setVisible(true);
filterAndColumnsPanel.setVisible(false);
previewTablePanel.setVisible(false);
}
public void clearErrorNotification() {
notificationLabel.setText("");
previewErrorNotification.setVisible(false);
filterAndColumnsPanel.setVisible(true);
previewTablePanel.setVisible(true);
}
}