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/BasicTextArea.java

130 lines
3.7 KiB
Java
Raw Normal View History

package org.gcube.portlets.user.reportgenerator.client.targets;
import org.gcube.portlets.d4sreporting.common.shared.ComponentType;
import org.gcube.portlets.user.reportgenerator.client.ReportGenerator;
import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter;
import com.google.gwt.dom.client.Style.Unit;
import com.google.gwt.event.dom.client.KeyUpEvent;
import com.google.gwt.event.dom.client.KeyUpHandler;
import com.google.gwt.event.dom.client.MouseDownEvent;
import com.google.gwt.event.dom.client.MouseDownHandler;
import com.google.gwt.event.dom.client.MouseOutEvent;
import com.google.gwt.event.dom.client.MouseOutHandler;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HasVerticalAlignment;
import com.google.gwt.user.client.ui.RichTextArea;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
/**
* <code> BasicTextArea </code>
*
* @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it
* @version July 2011 (3.0)
*/
public class BasicTextArea extends ReportTextArea {
private RichTextArea textArea = new RichTextArea();
//private TextArea textArea = new TextArea();
private VerticalPanel myPanel;
int currHeight = 0;
public BasicTextArea(ComponentType type, final Presenter presenter, int left, int top, final int width, final int height, boolean hasComments, boolean showClose) {
super(type, presenter, left, top, width, height, hasComments, showClose);
currHeight = height;
myPanel = getResizablePanel();
textArea.setPixelSize(width, height);
textArea.getElement().getStyle().setMarginTop(-4, Unit.PX); //this is needed because the richtextarea has margin 8px and a not able to modify it via css
textArea.addMouseOutHandler(new MouseOutHandler() {
public void onMouseOut(MouseOutEvent event) {
presenter.storeChangeInSession((Widget) event.getSource());
}
});
textArea.setStyleName("report-ui-component");
switch (type) {
case BODY_NOT_FORMATTED:
textArea.addStyleName("simpleText");
myPanel.setTitle("Simple text");
break;
default:
break;
}
myPanel.add(textArea);
myPanel.setVerticalAlignment(HasVerticalAlignment.ALIGN_BOTTOM);
myPanel.setPixelSize(width, height);
textArea.addMouseOutHandler(new MouseOutHandler() {
public void onMouseOut(MouseOutEvent event) {
presenter.storeChangeInSession((Widget) event.getSource());
}
});
textArea.addKeyUpHandler(new KeyUpHandler() {
public void onKeyUp(KeyUpEvent event) {
HTML div = ReportGenerator.get().getDivHidden();
div.setHTML(textArea.getHTML());
int newHeight = div.getOffsetHeight();
resizePanel(width, newHeight);
presenter.resizeTemplateComponentInModel(myInstance, width, newHeight);
currHeight = newHeight;
}
});
textArea.addMouseDownHandler(new MouseDownHandler() {
public void onMouseDown(MouseDownEvent event) {
HTML div = ReportGenerator.get().getDivHidden();
div.setHTML(textArea.getHTML());
int newHeight = div.getOffsetHeight();
resizePanel(width, newHeight);
presenter.resizeTemplateComponentInModel(myInstance, width, newHeight);
currHeight = newHeight;
}
});
}
public String getText() {
return textArea.getText();
}
public void setText(String text) {
textArea.setText(text);
}
public RichTextArea getRichTextArea() {
return null;
}
/**
* used to resize the panel
* @param width w
* @param height h
*/
@Override
public void resizePanel(int width, int height) {
if (height > 25) {
mainPanel.setPixelSize(width, height);
resizablePanel.setPixelSize(width, height);
textArea.setPixelSize(width-4, height);
currHeight = height;
}
}
}