/* * 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.client.widgets.dataset.explorer; import com.google.gwt.event.dom.client.ClickEvent; import com.google.gwt.event.dom.client.ClickHandler; import com.google.gwt.safehtml.shared.SafeUri; import com.google.gwt.user.client.ui.IsWidget; import com.google.gwt.user.client.ui.Widget; import org.dashbuilder.client.widgets.dataset.event.EditDataSetEvent; import org.dashbuilder.client.widgets.resources.i18n.DataSetExplorerConstants; import org.dashbuilder.dataset.client.resources.bundles.DataSetClientResources; import org.dashbuilder.dataset.def.DataSetDef; import org.uberfire.client.mvp.UberView; import javax.annotation.PostConstruct; import javax.enterprise.context.Dependent; import javax.enterprise.event.Event; import javax.inject.Inject; import static org.dashbuilder.dataprovider.DataSetProviderType.*; /** * <p>Data Set Panel widget with a collapsed by default summary.</p> * <p>It displays a panel with a header and a collape panel body.</p> * * @since 0.3.0 */ @Dependent public class DataSetPanel implements IsWidget { public interface View extends UberView<DataSetPanel> { View configure(final DataSetSummary.View summaryView); /** * <p>Displays the summary header's.</p> * @param uuid The data set unique identifier. * @param parentCollapseId The identifier of the parent collage widget to refer for data toggle features. * @param dataSetTypeImageUri The uri for the data set type image. * @param dataSetTypeImageTitle The title for the data set type image. * @param dataSetTitle The title for the data set. * @return The view instance. */ View showHeader(final String uuid, final String parentCollapseId, final SafeUri dataSetTypeImageUri, final String dataSetTypeImageTitle, final String dataSetTitle); View showSummary(); View hideSummary(); View enableActionButton(final String buttonTitle, final ClickHandler clickHandler); View disableActionButton(); } DataSetSummary dataSetSummary; Event<EditDataSetEvent> editDataSetEvent; View view; DataSetDef def; @Inject public DataSetPanel(final DataSetSummary dataSetSummary, final Event<EditDataSetEvent> editDataSetEvent, final View view) { this.dataSetSummary = dataSetSummary; this.editDataSetEvent = editDataSetEvent; this.view = view; } @PostConstruct public void init() { view.init(this); view.configure(dataSetSummary.view); } @Override public Widget asWidget() { return view.asWidget(); } public void show(final DataSetDef def, final String parentPanelId) { this.def = def; if (def != null) { final String name = def.getName(); final SafeUri typeIconUri = getTypeIconUri(def); final String typeName = getTypeIconTitle(def); view.showHeader(def.getUUID(), parentPanelId, typeIconUri, typeName, name); } } public void close() { view.hideSummary(); } public void disable() { view.disableActionButton(); } public DataSetDef getDataSetDef() { return def; } void open() { dataSetSummary.show(def); view.showSummary(); view.enableActionButton(DataSetExplorerConstants.INSTANCE.edit(), new ClickHandler() { @Override public void onClick(final ClickEvent clickEvent) { editDataSetEvent.fire(new EditDataSetEvent(def)); } });; } SafeUri getTypeIconUri(final DataSetDef dataSetDef) { if (BEAN.equals(dataSetDef.getProvider())) { return DataSetClientResources.INSTANCE.images().javaIcon32().getSafeUri(); } if (CSV.equals(dataSetDef.getProvider())) { return DataSetClientResources.INSTANCE.images().csvIcon32().getSafeUri(); } if (SQL.equals(dataSetDef.getProvider())) { return DataSetClientResources.INSTANCE.images().sqlIcon32().getSafeUri(); } if (ELASTICSEARCH.equals(dataSetDef.getProvider())) { return DataSetClientResources.INSTANCE.images().elIcon32().getSafeUri(); } return null; } String getTypeIconTitle(final DataSetDef dataSetDef) { if (BEAN.equals(dataSetDef.getProvider())) { return DataSetExplorerConstants.INSTANCE.bean(); } if (CSV.equals(dataSetDef.getProvider())) { return DataSetExplorerConstants.INSTANCE.csv(); } if (SQL.equals(dataSetDef.getProvider())) { return DataSetExplorerConstants.INSTANCE.sql(); } if (ELASTICSEARCH.equals(dataSetDef.getProvider())) { return DataSetExplorerConstants.INSTANCE.el(); } return null; } }