/* * Copyright 2014 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.dashbuilder.displayer.client.widgets; 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.uibinder.client.UiBinder; import com.google.gwt.uibinder.client.UiField; import com.google.gwt.uibinder.client.UiHandler; 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.dashbuilder.common.client.error.ClientRuntimeError; import org.dashbuilder.common.client.widgets.AlertPanel; import org.dashbuilder.displayer.client.Displayer; import org.dashbuilder.displayer.client.resources.i18n.CommonConstants; import org.gwtbootstrap3.client.ui.CheckBox; import org.gwtbootstrap3.client.ui.Column; import org.gwtbootstrap3.client.ui.Row; import org.gwtbootstrap3.client.ui.TabListItem; import org.uberfire.mvp.Command; import org.gwtbootstrap3.client.ui.constants.AlertType; import javax.enterprise.context.Dependent; import javax.inject.Inject; @Dependent public class DisplayerEditorView extends Composite implements DisplayerEditor.View { interface Binder extends UiBinder<Widget, DisplayerEditorView> {} private static Binder uiBinder = GWT.create(Binder.class); @UiField Column westColumn; @UiField Column leftColumn; @UiField Column centerColumn; @UiField TabListItem optionType; @UiField TabListItem optionData; @UiField TabListItem optionSettings; @UiField Row viewAsTableButtonRow; @UiField CheckBox viewAsTableButton; protected DisplayerEditor presenter; protected DisplayerError errorWidget = new DisplayerError(); public void init(DisplayerEditor presenter) { this.presenter = presenter; initWidget(uiBinder.createAndBindUi(this)); viewAsTableButtonRow.getElement().setAttribute("cellpadding", "5"); } @Override public String getBrandNewDisplayerTitle() { return "- " + CommonConstants.INSTANCE.displayer_editor_new() + " -"; } @Override public void showDisplayer(IsWidget displayer) { centerColumn.clear(); centerColumn.add(displayer); } @Override public void setTypeSelectionEnabled(boolean enabled) { optionType.setVisible(enabled); } @Override public void setDisplaySettingsEnabled(boolean enabled) { optionSettings.setVisible(enabled); } @Override public void setDataSetLookupConfEnabled(boolean enabled) { optionData.setVisible(enabled); } @Override public boolean isTableDisplayModeOn() { return viewAsTableButtonRow.isVisible() && viewAsTableButton.getValue(); } @Override public void setTableDisplayModeEnabled(boolean enabled) { viewAsTableButtonRow.setVisible(enabled); } @Override public void gotoTypeSelection(DisplayerTypeSelector typeSelector) { leftColumn.clear(); leftColumn.getElement().getStyle().setOverflowY(Style.Overflow.HIDDEN); leftColumn.add(typeSelector); viewAsTableButtonRow.setVisible(false); optionData.setActive(false); optionSettings.setActive(false); optionType.setActive(true); } @Override public void gotoDataSetLookupConf(DataSetLookupEditor lookupEditor) { leftColumn.clear(); leftColumn.getElement().getStyle().setOverflowY(Style.Overflow.AUTO); leftColumn.add(lookupEditor); optionSettings.setActive(false); optionType.setActive(false); optionData.setActive(true); } @Override public void gotoDisplaySettings(DisplayerSettingsEditor settingsEditor) { leftColumn.clear(); leftColumn.getElement().getStyle().setOverflowY(Style.Overflow.AUTO); leftColumn.add(settingsEditor); viewAsTableButtonRow.setVisible(false); optionType.setActive(false); optionData.setActive(false); optionSettings.setActive(true); } @Override public void showTypeChangedWarning(Command yes, Command no) { AlertPanel alertPanel = new AlertPanel(); String alertMsg = CommonConstants.INSTANCE.displayer_editor_incompatible_settings(); alertPanel.show(AlertType.WARNING, alertMsg, 400, yes, no); centerColumn.clear(); centerColumn.add(alertPanel); } @Override public void error(String error) { centerColumn.clear(); centerColumn.add(errorWidget); errorWidget.show(error, null); GWT.log(error); } @Override public void error(ClientRuntimeError e) { centerColumn.clear(); centerColumn.add(errorWidget); errorWidget.show(e.getMessage(), e.getCause()); if (e.getThrowable() != null) { GWT.log(e.getMessage(), e.getThrowable()); } else { GWT.log(e.getMessage()); } } @UiHandler(value = "optionType") public void onTypeSelected(ClickEvent clickEvent) { presenter.gotoTypeSelection(); } @UiHandler(value = "optionData") public void onDataSelected(ClickEvent clickEvent) { presenter.gotoDataSetLookupConf(); } @UiHandler(value = "optionSettings") public void onSettingsSelected(ClickEvent clickEvent) { presenter.gotoDisplaySettings(); } @UiHandler(value = "viewAsTableButton") public void onRawTableChecked(ClickEvent clickEvent) { presenter.showDisplayer(); } }