news-feed/src/main/java/org/gcube/portlets/user/newsfeed/client/ui/AttachmentPreviewer.java

106 lines
2.5 KiB
Java

package org.gcube.portlets.user.newsfeed.client.ui;
import org.gcube.portal.databook.shared.Attachment;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Style.Unit;
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.Window;
import com.google.gwt.user.client.ui.Anchor;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HTMLPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
/**
* Class to show an attached file.
* @author Costantino Perciante at ISTI-CNR
*
*/
public class AttachmentPreviewer extends Composite {
private static AttachmentPreviewerUiBinder uiBinder = GWT
.create(AttachmentPreviewerUiBinder.class);
interface AttachmentPreviewerUiBinder extends
UiBinder<Widget, AttachmentPreviewer> {
}
public AttachmentPreviewer() {
initWidget(uiBinder.createAndBindUi(this));
}
@UiField
HTMLPanel attachmentContainer;
@UiField
Image imagePreview;
@UiField
Label fileNameLabel;
@UiField
Anchor downloadLabel;
@UiField
Anchor showPreviewLabel;
// save attachment
private Attachment attachment;
public AttachmentPreviewer(Attachment a) {
// init
initWidget(uiBinder.createAndBindUi(this));
// save the attachment
attachment = a;
// set image preview
imagePreview.setUrl(a.getThumbnailURL());
// set file name (be careful on file name length)
String shownName = a.getName().length() > 21 ? a.getName().substring(0, 18) + "..." : a.getName();
fileNameLabel.setText(shownName);
fileNameLabel.setTitle(a.getName());
// download label
downloadLabel.setText("Download");
downloadLabel.setHref(attachment.getUri());
downloadLabel.setTarget("_blank");
// preview TODO
showPreviewLabel.setText("Show");
showPreviewLabel.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Window.alert("Image preview widget will be made soon...");
}
});
// style links
downloadLabel.addStyleName("link");
showPreviewLabel.addStyleName("link");
}
/**
* Change the width of this container.
* @param newWidth
* @param unit
*/
public void changeAttachmentWidth(int newWidth, Unit unit){
attachmentContainer.getElement().getStyle().setWidth(newWidth, unit);
}
}