This repository has been archived on 2021-11-25. You can view files and clone it, but cannot push or open issues or pull requests.
vmereports-manager-portlet/src/main/java/org/gcube/portlets/user/reportgenerator/client/targets/ReportTextArea.java

261 lines
5.8 KiB
Java

package org.gcube.portlets.user.reportgenerator.client.targets;
import org.gcube.portlets.d4sreporting.common.client.ComponentType;
import org.gcube.portlets.d4sreporting.common.client.ImageConstants;
import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter;
import org.gcube.portlets.user.reportgenerator.client.dialog.CommentDialog;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.AbsolutePanel;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.HasHorizontalAlignment;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.VerticalPanel;
/**
* <code> ReportTextArea </code> class represent the generic Widget that can be placed in the UI Component
*
* @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it
* @version July 2011 (3.0)
*/
public class ReportTextArea extends Composite {
/**
* the allowance when mouse cursor is on borders
*/
public final int DELTA = 7;
/**
* variables of the components
*/
protected int left, top, width, height;
/**
* the controller instance of the widget
*/
private Presenter presenter;
private ComponentType type;
protected AbsolutePanel mainPanel;
protected HorizontalPanel topPanel;
protected VerticalPanel resizablePanel;
protected Image commentImage;
/**
*
* @return .
*/
public VerticalPanel getResizablePanel() {
return resizablePanel;
}
protected ReportTextArea myInstance;
/**
* default constructor
*
*/
public ReportTextArea() {
super();
}
/**
*
* @param presenter .
* @param left left
* @param top top
* @param width .
* @param height .
* @param type a
*/
public ReportTextArea(ComponentType type, final Presenter presenter, int left, int top, int width, int height, boolean hasComments) {
myInstance = this;
this.type = type;
this.presenter = presenter;
this.left = left;
this.top = top;
this.width = width;
this.height = height;
mainPanel = new AbsolutePanel();
topPanel = new HorizontalPanel();
resizablePanel = new VerticalPanel();
mainPanel.setPixelSize(width, height);
topPanel.setPixelSize(30, 15);
resizablePanel.setPixelSize(width, height);
commentImage = new Image((hasComments) ? ImageConstants.IMAGE_COMMENTS : ImageConstants.IMAGE_COMMENTS_GRAY);
commentImage.setTitle("Show user comments");
topPanel.add(commentImage);
commentImage.setStyleName("selectable");
commentImage.addClickHandler(new ClickHandler() {
public void onClick(ClickEvent event) {
String previousComments = "";
int commentHeight = -1;
previousComments = presenter.getComponentComments(myInstance).getComment();
commentHeight = presenter.getComponentComments(myInstance).getAreaHeight();
CommentDialog dlg = new CommentDialog(presenter.getEventBus(), myInstance, presenter.getCurrentUser(), previousComments, commentHeight);
dlg.setPopupPosition(commentImage.getAbsoluteLeft()+20, commentImage.getAbsoluteTop());
dlg.show();
}
});
topPanel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_RIGHT);
mainPanel.add(resizablePanel, 0, 0);
mainPanel.add(topPanel, width-18, 0);
mainPanel.setStyleName("d4sFrame");
initWidget(mainPanel);
}
/**
*
* @return .
*/
public ComponentType getType() {
return type;
}
/**
*
* @param type .
*/
public void setType(ComponentType type) {
this.type = type;
}
/**
* used to resize the panel
* @param width w
* @param height h
*/
public void resizePanel(int width, int height) {
if (height > 15 && width > 15) {
mainPanel.setPixelSize(width, height);
resizablePanel.setPixelSize(width, height);
mainPanel.setWidgetPosition(topPanel, width-15, 0);
}
}
/***
*
* @param height g
*/
public void setHeight(int height) {
if (height > this.height) {
mainPanel.setHeight(""+(height+20));
resizablePanel.setHeight(""+(height+20));
mainPanel.setWidgetPosition(topPanel, width-15, 0);
}
}
/**
*
* @param left .
* @param top .
*/
public void repositionMyPanel(int left, int top) {
//mainPanel.setWidgetPosition(resizablePanel, left, top);
}
/**
* @return .
*/
public int getLeft() {
return left;
}
/**
*
* @param left .
*/
public void setLeft(int left) {
this.left = left;
}
/**
*
* @return -.
*/
public int getTop() {
return top;
}
/**
*
* @param top .
*/
public void setTop(int top) {
this.top = top;
}
/**
*
* @return the controller instance of the widget
*/
public Presenter getController() {
return presenter;
}
/**
*
* @return .
*/
public ReportTextArea getMyInstance() {
return myInstance;
}
/**
*
* @param myInstance .
*/
public void setMyInstance(ReportTextArea myInstance) {
this.myInstance = myInstance;
}
public void removeCommentView() {
commentImage.setUrl(ImageConstants.IMAGE_COMMENTS_GRAY);
}
public void addCommentView() {
commentImage.setUrl(ImageConstants.IMAGE_COMMENTS);
}
public void showComment(String comment) {
// final Window window = new Window();
// window.setTitle("");
// window.setMaximizable(true);
// window.setResizable(true);
// window.setLayout(new FitLayout());
// window.setWidth(200);
// window.setHeight(100);
// window.setModal(false);
//
// Panel windowPanel = new Panel();
// windowPanel.setBaseCls("comment-popup");
// windowPanel.setHtml(comment);
// windowPanel.setShadow(true);
// window.add(windowPanel);
// window.setPosition(commentImage.getAbsoluteLeft()+25, commentImage.getAbsoluteTop());
// window.show();
}
}