package com.project.shared.client.html5.impl; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.dom.client.Node; import com.project.shared.client.html5.Range; import com.project.shared.client.html5.Selection; public class SelectionImpl extends JavaScriptObject implements Selection { protected SelectionImpl() {} public native final static SelectionImpl getWindowSelection() /*-{ return $wnd.getSelection(); }-*/; @Override public final native Node getAnchorNode() /*-{ return this.anchorNode; }-*/; @Override public final native int getAnchorOffset() /*-{ return this.anchorOffset; }-*/; @Override public final native Node getFocusNode() /*-{ return this.focusNode; }-*/; @Override public final native int getFocusOffset() /*-{ return this.focusOffset; }-*/; @Override public final native boolean isCollapsed() /*-{ return this.isCollapsed; }-*/; @Override public final native void collapse(Node parentNode, int offset) /*-{ this.collapse(parentNode, offset); }-*/; @Override public final native void collapseToStart() /*-{ this.collapseToStart(); }-*/; @Override public final native void collapseToEnd() /*-{ this.collapseToEnd(); }-*/; @Override public final native void extend(Node parentNode, int offset) /*-{ this.extend(parentNode, offset); }-*/; @Override public final native void modify(String alter, String direction, String granularity) /*-{ this.modify(alter, direction, granularity); }-*/; @Override public final native void selectAllChildren(Node parentNode) /*-{ this.selectAllChildren(parentNode); }-*/; @Override public final native void deleteFromDocument() /*-{ this.deleteFromDocument(); }-*/; @Override public final native int getRangeCount() /*-{ return this.rangeCount; }-*/; @Override public final native Range getRangeAt(int index) /*-{ return this.getRangeAt(index); }-*/; @Override public final void addRange(Range range) { if (range instanceof RangeImpl) { this.addRangeNative((RangeImpl)range); return; } throw new RuntimeException("Implemented only for Range class: " + RangeImpl.class.getName()); } public final native void addRangeNative(RangeImpl range) /*-{ this.addRange(range); }-*/; @Override public final void removeRange(Range range) { if (range instanceof RangeImpl) { this.removeRangeNative((RangeImpl)range); return; } throw new RuntimeException("Implemented only for Range class: " + RangeImpl.class.getName()); } public final native void removeRangeNative(RangeImpl range) /*-{ this.removeRange(range); }-*/; @Override public final native void removeAllRanges() /*-{ this.removeAllRanges(); }-*/; }