Add DOM APIs

This commit is contained in:
konsoletyper 2015-01-24 00:48:06 +04:00
parent be4457c285
commit f138c837cf
7 changed files with 131 additions and 1 deletions

View File

@ -53,6 +53,8 @@ public interface XMLHttpRequest extends JSObject {
@JSProperty("onreadystatechange") @JSProperty("onreadystatechange")
void setOnReadyStateChange(ReadyStateChangeHandler handler); void setOnReadyStateChange(ReadyStateChangeHandler handler);
void overrideMimeType(String mimeType);
@JSProperty @JSProperty
int getReadyState(); int getReadyState();

View File

@ -17,6 +17,7 @@ package org.teavm.dom.browser;
import org.teavm.dom.ajax.XMLHttpRequest; import org.teavm.dom.ajax.XMLHttpRequest;
import org.teavm.dom.html.HTMLDocument; import org.teavm.dom.html.HTMLDocument;
import org.teavm.dom.json.JSON;
import org.teavm.dom.typedarrays.*; import org.teavm.dom.typedarrays.*;
import org.teavm.jso.JSConstructor; import org.teavm.jso.JSConstructor;
import org.teavm.jso.JSGlobal; import org.teavm.jso.JSGlobal;
@ -46,6 +47,9 @@ public interface Window extends JSGlobal {
void clearInterval(int timeoutId); void clearInterval(int timeoutId);
@JSProperty("JSON")
JSON getJSON();
@JSConstructor("XMLHttpRequest") @JSConstructor("XMLHttpRequest")
XMLHttpRequest createXMLHttpRequest(); XMLHttpRequest createXMLHttpRequest();

View File

@ -100,4 +100,7 @@ public interface Node extends JSObject {
String getLocalName(); String getLocalName();
boolean hasAttributes(); boolean hasAttributes();
@JSProperty
Document getOwnerDocument();
} }

View File

@ -0,0 +1,64 @@
/*
* Copyright 2015 Alexey Andreev.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.teavm.dom.events;
import org.teavm.jso.JSProperty;
/**
*
* @author Alexey Andreev <konsoletyper@gmail.com>
*/
public interface KeyboardEvent extends Event {
int DOM_KEY_LOCATION_STANDARD = 0x00;
int DOM_KEY_LOCATION_LEFT = 0x01;
int DOM_KEY_LOCATION_RIGHT = 0x02;
int DOM_KEY_LOCATION_NUMPAD = 0x03;
@JSProperty
String getKey();
@JSProperty
int getKeyCode();
@JSProperty
String getCode();
@JSProperty
int getLocation();
@JSProperty
boolean isCtrlKey();
@JSProperty
boolean isShiftKey();
@JSProperty
boolean isAltKey();
@JSProperty
boolean isMetaKey();
@JSProperty
boolean isRepeat();
@JSProperty("isComposing")
boolean isComposing();
boolean getModifierState(String keyArg);
}

View File

@ -16,13 +16,14 @@
package org.teavm.dom.html; package org.teavm.dom.html;
import org.teavm.dom.core.Document; import org.teavm.dom.core.Document;
import org.teavm.dom.events.EventTarget;
import org.teavm.jso.JSProperty; import org.teavm.jso.JSProperty;
/** /**
* *
* @author Alexey Andreev <konsoletyper@gmail.com> * @author Alexey Andreev <konsoletyper@gmail.com>
*/ */
public interface HTMLDocument extends Document { public interface HTMLDocument extends Document, EventTarget {
@JSProperty @JSProperty
@Override @Override
HTMLHtmlElement getDocumentElement(); HTMLHtmlElement getDocumentElement();
@ -38,4 +39,10 @@ public interface HTMLDocument extends Document {
@JSProperty @JSProperty
HTMLElement getHead(); HTMLElement getHead();
@JSProperty
int getScrollLeft();
@JSProperty
int getScrollTop();
} }

View File

@ -80,4 +80,26 @@ public interface HTMLElement extends Element, ElementCSSInlineStyle, EventTarget
@JSProperty @JSProperty
String getAccessKeyLabel(); String getAccessKeyLabel();
@JSProperty
int getClientWidth();
@JSProperty
int getClientHeight();
@JSProperty
int getAbsoluteLeft();
@JSProperty
int getAbsoluteTop();
@JSProperty
int getScrollLeft();
@JSProperty
int getScrollTop();
@JSProperty
@Override
HTMLDocument getOwnerDocument();
} }

View File

@ -0,0 +1,28 @@
/*
* Copyright 2015 Alexey Andreev.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.teavm.dom.json;
import org.teavm.jso.JSObject;
/**
*
* @author Alexey Andreev <konsoletyper@gmail.com>
*/
public interface JSON extends JSObject {
String stringify(JSObject object);
JSObject parse(String string);
}