2013-02-06 23:25:43 +01:00
|
|
|
package org.gcube.portlets.user.reportgenerator.client.targets;
|
|
|
|
|
2013-07-16 14:30:26 +02:00
|
|
|
import java.util.Date;
|
|
|
|
|
2013-02-08 17:02:37 +01:00
|
|
|
import org.gcube.portlets.d4sreporting.common.shared.ComponentType;
|
2013-02-06 23:25:43 +01:00
|
|
|
import org.gcube.portlets.user.reportgenerator.client.Presenter.Presenter;
|
|
|
|
|
2013-07-16 14:30:26 +02:00
|
|
|
import com.google.gwt.core.client.GWT;
|
2013-03-12 18:10:16 +01:00
|
|
|
import com.google.gwt.dom.client.Style.Unit;
|
2013-02-06 23:25:43 +01:00
|
|
|
import com.google.gwt.event.dom.client.KeyUpEvent;
|
|
|
|
import com.google.gwt.event.dom.client.KeyUpHandler;
|
2013-03-12 18:10:16 +01:00
|
|
|
import com.google.gwt.event.dom.client.MouseDownEvent;
|
|
|
|
import com.google.gwt.event.dom.client.MouseDownHandler;
|
2013-02-06 23:25:43 +01:00
|
|
|
import com.google.gwt.event.dom.client.MouseOutEvent;
|
|
|
|
import com.google.gwt.event.dom.client.MouseOutHandler;
|
2013-03-12 18:10:16 +01:00
|
|
|
import com.google.gwt.user.client.ui.RichTextArea;
|
2013-07-16 14:30:26 +02:00
|
|
|
import com.google.gwt.user.client.ui.TextArea;
|
2013-02-06 23:25:43 +01:00
|
|
|
import com.google.gwt.user.client.ui.Widget;
|
|
|
|
/**
|
2013-07-16 14:30:26 +02:00
|
|
|
* <code> BasicTextArea </code> is a resizable textArea
|
2013-02-06 23:25:43 +01:00
|
|
|
*
|
|
|
|
* @author Massimiliano Assante, ISTI-CNR - massimiliano.assante@isti.cnr.it
|
2013-07-16 14:30:26 +02:00
|
|
|
* @version July 2013
|
2013-02-06 23:25:43 +01:00
|
|
|
*/
|
2013-07-16 14:30:26 +02:00
|
|
|
public class BasicTextArea extends TextArea {
|
|
|
|
private String myId;
|
2013-03-12 18:10:16 +01:00
|
|
|
|
|
|
|
public BasicTextArea(ComponentType type, final Presenter presenter, int left, int top, final int width, final int height, boolean hasComments, boolean showClose) {
|
2013-02-06 23:25:43 +01:00
|
|
|
|
2013-07-16 14:30:26 +02:00
|
|
|
myId = Long.toString(new Date().getTime());
|
|
|
|
this.setPixelSize(width, height);
|
2013-02-06 23:25:43 +01:00
|
|
|
|
2013-07-16 14:30:26 +02:00
|
|
|
this.addMouseOutHandler(new MouseOutHandler() {
|
2013-02-06 23:25:43 +01:00
|
|
|
|
|
|
|
public void onMouseOut(MouseOutEvent event) {
|
|
|
|
presenter.storeChangeInSession((Widget) event.getSource());
|
|
|
|
}
|
|
|
|
});
|
2013-03-13 11:06:47 +01:00
|
|
|
|
2013-07-16 14:30:26 +02:00
|
|
|
this.setStyleName("report-ui-component");
|
|
|
|
this.addStyleName("d4sFrame");
|
|
|
|
this.getElement().setId(myId);
|
|
|
|
|
2013-02-06 23:25:43 +01:00
|
|
|
switch (type) {
|
2013-03-13 11:06:47 +01:00
|
|
|
|
2013-03-04 19:15:59 +01:00
|
|
|
case BODY_NOT_FORMATTED:
|
2013-07-16 14:30:26 +02:00
|
|
|
this.addStyleName("simpleText");
|
2013-03-04 19:15:59 +01:00
|
|
|
break;
|
2013-02-06 23:25:43 +01:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2013-07-16 14:30:26 +02:00
|
|
|
this.addMouseOutHandler(new MouseOutHandler() {
|
2013-02-06 23:25:43 +01:00
|
|
|
public void onMouseOut(MouseOutEvent event) {
|
|
|
|
presenter.storeChangeInSession((Widget) event.getSource());
|
|
|
|
}
|
|
|
|
});
|
2013-03-12 18:10:16 +01:00
|
|
|
|
2013-07-16 14:30:26 +02:00
|
|
|
this.addKeyUpHandler(new KeyUpHandler() {
|
2013-03-12 18:10:16 +01:00
|
|
|
public void onKeyUp(KeyUpEvent event) {
|
2013-07-16 14:30:26 +02:00
|
|
|
//presenter.resizeTemplateComponentInModel(myInstance, width, newHeight);
|
2013-03-12 18:10:16 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2013-07-16 14:30:26 +02:00
|
|
|
this.addMouseDownHandler(new MouseDownHandler() {
|
2013-03-12 18:10:16 +01:00
|
|
|
public void onMouseDown(MouseDownEvent event) {
|
2013-07-16 14:30:26 +02:00
|
|
|
autoSizeIt(myId, height);
|
2013-03-12 18:10:16 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2013-02-06 23:25:43 +01:00
|
|
|
}
|
2013-03-13 11:06:47 +01:00
|
|
|
|
|
|
|
|
|
|
|
public RichTextArea getRichTextArea() {
|
|
|
|
return null;
|
2013-02-06 23:25:43 +01:00
|
|
|
}
|
|
|
|
|
2013-03-12 18:10:16 +01:00
|
|
|
/**
|
2013-07-16 14:30:26 +02:00
|
|
|
* This method actually makes resizable the textArea
|
|
|
|
* @param id
|
2013-03-12 18:10:16 +01:00
|
|
|
*/
|
2013-07-16 14:30:26 +02:00
|
|
|
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);
|
|
|
|
};
|
2013-03-12 18:10:16 +01:00
|
|
|
}
|
2013-07-16 14:30:26 +02:00
|
|
|
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();
|
|
|
|
}-*/;
|
2013-02-06 23:25:43 +01:00
|
|
|
|
|
|
|
}
|