package org.gcube.portlets.user.geoportaldataviewer.client.ui; import org.gcube.portlets.user.geoportaldataviewer.client.events.ClosedViewDetailsEvent; import org.gcube.portlets.user.geoportaldataviewer.client.ui.products.concessioni.ConcessioneView; import org.gcube.portlets.user.geoportaldataviewer.shared.GeoNaItemRef; import org.gcube.portlets.user.geoportaldataviewer.shared.products.ConcessioneDV; import org.gcube.portlets.user.geoportaldataviewer.shared.products.model.RecordDV; import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.constants.ButtonType; import com.github.gwtbootstrap.client.ui.constants.IconType; 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.event.shared.HandlerManager; 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.HTMLPanel; import com.google.gwt.user.client.ui.Widget; public class DetailsPanel extends Composite { private static DetailsPanelUiBinder uiBinder = GWT.create(DetailsPanelUiBinder.class); @UiField Button closeButton; @UiField HTMLPanel datailsContainerPanel; @UiField HTMLPanel detailsHTMLPanel; private RecordDV displayedRecord = null; private HandlerManager applicationBus; interface DetailsPanelUiBinder extends UiBinder { } public DetailsPanel() { initWidget(uiBinder.createAndBindUi(this)); closeButton.setType(ButtonType.LINK); closeButton.setIcon(IconType.REMOVE_SIGN); closeButton.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { hidePanelDetails(); applicationBus.fireEvent(new ClosedViewDetailsEvent()); } }); } public void setApplicationBus(HandlerManager applicationBus) { this.applicationBus = applicationBus; } public void showDetailsFor(ConcessioneDV cdv, GeoNaItemRef geonaItemRef) { this.displayedRecord = cdv; datailsContainerPanel.clear(); if(detailsHTMLPanel.getParent()!=null) detailsHTMLPanel.getParent().getElement().setScrollTop(0); datailsContainerPanel.add(new ConcessioneView(geonaItemRef, cdv)); showPanelDetails(); } private void showPanelDetails() { detailsHTMLPanel.setVisible(true); } public void hidePanelDetails() { this.displayedRecord = null; datailsContainerPanel.clear(); detailsHTMLPanel.setVisible(false); } public RecordDV getDisplayedRecord() { return displayedRecord; } }