package org.waveprotocol.wave.client.doodad.annotation.jso;
import org.waveprotocol.wave.client.editor.Editor;
import org.waveprotocol.wave.client.editor.util.EditorAnnotationUtil;
import org.waveprotocol.wave.model.document.util.DocHelper;
import org.waveprotocol.wave.model.document.util.Range;
import com.google.gwt.core.client.JavaScriptObject;
/**
* A native Js view of an annotation.
*
* @author pablojan
*
*/
public class JsoAnnotation extends JavaScriptObject {
public static native JsoAnnotation create(Editor editor, Range range, String _key) /*-{
var jso = {
key: _key,
id: null,
value: @org.waveprotocol.wave.client.doodad.annotation.jso.JsoAnnotation::getValue(Lorg/waveprotocol/wave/client/editor/Editor;Lorg/waveprotocol/wave/model/document/util/Range;Ljava/lang/String;)(editor, range, _key),
text: @org.waveprotocol.wave.client.doodad.annotation.jso.JsoAnnotation::getText(Lorg/waveprotocol/wave/client/editor/Editor;Lorg/waveprotocol/wave/model/document/util/Range;)(editor, range),
start : range.@org.waveprotocol.wave.model.document.util.Range::getStart()(),
end : range.@org.waveprotocol.wave.model.document.util.Range::getEnd()(),
element : null
};
return jso;
}-*/;
protected JsoAnnotation() {
}
protected static String getValue(Editor editor, Range range, String key) {
return EditorAnnotationUtil.getAnnotationOverRangeIfFull(editor.getDocument(), editor.getCaretAnnotations(), key, range.getStart(), range.getEnd());
}
protected static String getText(Editor editor, Range range) {
return DocHelper.getText(editor.getDocument(), range.getStart(), range.getEnd());
}
}