You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

117 lines
3.2 KiB
Java

package org.gcube.portlets.user.reportgenerator.client.targets;
import java.util.Date;
import org.gcube.portlets.d4sreporting.common.shared.ComponentType;
import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter;
import com.google.gwt.core.client.GWT;
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.RichTextArea;
import com.google.gwt.user.client.ui.TextArea;
import com.google.gwt.user.client.ui.Widget;
/**
* <code> BasicTextArea </code> is a resizable textArea
*
* @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it
* @version July 2013
*/
public class BasicTextArea extends TextArea {
private String myId;
public BasicTextArea(ComponentType type, final Presenter presenter, int left, int top, final int width, final int height, boolean hasComments, boolean showClose) {
myId = Long.toString(new Date().getTime());
this.setPixelSize(width, height);
this.addMouseOutHandler(new MouseOutHandler() {
public void onMouseOut(MouseOutEvent event) {
presenter.storeChangeInSession((Widget) event.getSource());
}
});
this.setStyleName("report-ui-component");
this.addStyleName("d4sFrame");
this.getElement().setId(myId);
switch (type) {
case BODY_NOT_FORMATTED:
this.addStyleName("simpleText");
break;
default:
break;
}
this.addMouseOutHandler(new MouseOutHandler() {
public void onMouseOut(MouseOutEvent event) {
presenter.storeChangeInSession((Widget) event.getSource());
}
});
this.addKeyUpHandler(new KeyUpHandler() {
public void onKeyUp(KeyUpEvent event) {
//presenter.resizeTemplateComponentInModel(myInstance, width, newHeight);
}
});
this.addMouseDownHandler(new MouseDownHandler() {
public void onMouseDown(MouseDownEvent event) {
autoSizeIt(myId, height);
}
});
}
public RichTextArea getRichTextArea() {
return null;
}
/**
* This method actually makes resizable the textArea
* @param id
*/
public static native void autoSizeIt(String id, int height) /*-{
var text = $doc.getElementById(id);
var observe;
if (window.attachEvent) {
observe = function (element, event, handler) {
element.attachEvent('on'+event, handler);
};
}
else {
observe = function (element, event, handler) {
element.addEventListener(event, handler, false);
};
}
function resize () {
text.style.height = height+'px';
text.style.height = text.scrollHeight+'px';
}
function delayedResize () {
window.setTimeout(resize, 0);
}
observe(text, 'change', resize);
observe(text, 'cut', delayedResize);
observe(text, 'paste', delayedResize);
observe(text, 'drop', delayedResize);
observe(text, 'keydown', delayedResize);
text.focus();
text.select();
resize();
}-*/;
}