package org.gcube.portlets.user.geoportaldataviewer.client.ui.images; import org.gcube.application.geoportalcommon.shared.products.content.WorkspaceContentDV; import org.gcube.application.geoportalcommon.shared.products.model.UploadedImageDV; import org.gcube.portlets.user.geoportaldataviewer.client.ui.ModalWindow; import org.gcube.portlets.user.geoportaldataviewer.client.util.NewBrowserWindow; import org.gcube.portlets.user.geoportaldataviewer.client.util.StringUtil; import com.github.gwtbootstrap.client.ui.Button; import com.github.gwtbootstrap.client.ui.Heading; import com.github.gwtbootstrap.client.ui.Image; import com.github.gwtbootstrap.client.ui.Paragraph; 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.dom.client.Style.TextAlign; 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.Widget; public class ImageView extends Composite { private static ImageViewUiBinder uiBinder = GWT.create(ImageViewUiBinder.class); interface ImageViewUiBinder extends UiBinder { } public ImageView() { initWidget(uiBinder.createAndBindUi(this)); } @UiField Image imageURL; @UiField Heading heading; @UiField Paragraph paragraph1; @UiField Paragraph paragraph2; @UiField Button openImage; @UiField Button viewImage; private WorkspaceContentDV latest; public ImageView(UploadedImageDV imageDV, final boolean showView, final boolean showOpen) { initWidget(uiBinder.createAndBindUi(this)); if(imageDV.getTitolo()!=null && !imageDV.getTitolo().isEmpty()) { heading.setText(imageDV.getTitolo()); } paragraph1.setText(imageDV.getDidascalia()); paragraph1.getElement().getStyle().setTextAlign(TextAlign.LEFT); if(!showView && imageDV.getLicenseID()!=null) { paragraph2.setVisible(true); paragraph2.setText("ID Licenza: "+imageDV.getLicenseID()); } if(imageDV.getListWsContent()!=null && imageDV.getListWsContent().size()>0) { latest = imageDV.getListWsContent().get(imageDV.getListWsContent().size()-1); openImage.setVisible(true); viewImage.setVisible(true); imageURL.setVisible(true); imageURL.setUrl(latest.getLink()); } openImage.setType(ButtonType.LINK); openImage.setIcon(IconType.EXTERNAL_LINK); openImage.setTitle("Open Image in New Browser Window"); openImage.setVisible(showOpen); openImage.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if(latest!=null) { NewBrowserWindow.open(latest.getLink()+"?content-disposition=inline", "_blank", null); } } }); viewImage.setVisible(false); viewImage.setType(ButtonType.LINK); viewImage.setIcon(IconType.EXPAND); viewImage.setTitle("View Image in New Dialog"); viewImage.setVisible(showView); viewImage.addClickHandler(new ClickHandler() { @Override public void onClick(ClickEvent event) { if(latest!=null) { ModalWindow mw = new ModalWindow(StringUtil.ellipsize(imageDV.getDidascalia(), 50), 900, 600); mw.add(new ImageView(imageDV, false, true)); mw.setCaller(ImageView.this); //mw.setWidth(900); mw.show(); } } }); } /** * Sets the heading. * * @param title the new heading */ protected void setHeading(String title) { heading.setText(title); } protected void setParagraph(String text) { paragraph1.setText(text); } }