package com.ait.toolkit.node.nw;
import com.ait.toolkit.node.core.node.event.EventHandler;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.user.client.Window;
/**
* Window is a wrapper of DOM's window object, it has extended operations and can receive various window events.
* <p>
* Every Window is an instance of EventEmitter object, and you're able to use Window.on(...) to respond to native window's events.
*/
public class NwWindow extends JavaScriptObject {
protected NwWindow() {
}
public final native void open( String url )/*-{
this.open(url);
}-*/;
public final native void open( String url, NwWindowOptions options )/*-{
this.open(url, options);
}-*/;
public final native void open( String url, NwWindowOptions options, NwWindowOpenHandler openHandler )/*-{
this
.open(
url,
options,
function(w) {
openHandler.@com.ait.toolkit.node.nw.NwWindowOpenHandler::onWindowOpen(Lcom/ait/toolkit/node/nw/NwWindow;)(w);
});
}-*/;
public final native void open( String url, NwWindowOpenHandler openHandler )/*-{
this
.open(
url,
null,
function(w) {
openHandler.@com.ait.toolkit.node.nw.NwWindowOpenHandler::onWindowOpen(Lcom/ait/toolkit/node/nw/NwWindow;)(w);
});
}-*/;
public final native Window getDom()/*-{
return this.window;
}-*/;
public final native int getX()/*-{
return this.x;
}-*/;
public final native void setX( int value )/*-{
this.x = value;
}-*/;
public final native int getWidth()/*-{
return this.width;
}-*/;
public final native void setWidth( int value )/*-{
this.width = value;
}-*/;
public final native int getHeight()/*-{
return this.height;
}-*/;
public final native void setHeight( int value )/*-{
this.height = value;
}-*/;
public final native void setTitle( String value )/*-{
this.title = value;
}-*/;
public final native String getTitle()/*-{
return this.title;
}-*/;
public final native MenuBar getMenu()/*-{
return this.menu;
}-*/;
public final native void setMenu( MenuBar value )/*-{
this.menu = value;
}-*/;
public final native boolean isFullScreen()/*-{
return this.isFullscreen;
}-*/;
public final native boolean isKioskMode()/*-{
return this.isKioskMode;
}-*/;
public final native void setZoomLevel( int value )/*-{
this.zoomLevel = value;
}-*/;
public final native int getZoomLevel()/*-{
return this.zoomLevel;
}-*/;
public final native void moveTo( int x, int y )/*-{
this.moveTo(x, y);
}-*/;
public final native void moveBy( int x, int y )/*-{
this.moveBy(x, y);
}-*/;
public final native void resizeTo( int x, int y )/*-{
this.resizeTo(x, y);
}-*/;
public final native void resizeBy( int x, int y )/*-{
this.resizeBy(x, y);
}-*/;
public final native void focus()/*-{
this.focus();
}-*/;
public final native void blur()/*-{
this.blur();
}-*/;
public final native void hide()/*-{
this.hide();
}-*/;
public final native void close()/*-{
this.close();
}-*/;
public final native void close( boolean force )/*-{
this.close(force);
}-*/;
public final native void reload()/*-{
this.reload();
}-*/;
public final native void reloadDev()/*-{
this.reloadDev();
}-*/;
public final native void reloadIgnoringCache()/*-{
this.reloadIgnoringCache();
}-*/;
public final native void maximize()/*-{
this.maximize();
}-*/;
public final native void unmaximize()/*-{
this.unmaximize();
}-*/;
public final native void minimize()/*-{
this.minimize();
}-*/;
public final native void restore()/*-{
this.restore();
}-*/;
public final native void enterFullscreen()/*-{
this.enterFullscreen();
}-*/;
public final native void leaveFullscreen()/*-{
this.leaveFullscreen();
}-*/;
public final native void toggleFullscreen()/*-{
this.toggleFullscreen();
}-*/;
public final native void setTransparent( boolean value )/*-{
this.toggleFullscreen();
}-*/;
public final native void enterKioskMode()/*-{
this.enterKioskMode();
}-*/;
public final native void toggleKioskMode()/*-{
this.toggleKioskMode();
}-*/;
public final native void showDevTools()/*-{
this.showDevTools();
}-*/;
public final native void showDevTools( String id )/*-{
this.showDevTools(id);
}-*/;
public final native void showDevTools( String id, boolean headless )/*-{
this.showDevTools(id, headless);
}-*/;
public final native boolean isDevToolsOpen()/*-{
return this.isDevToolsOpen();
}-*/;
public final native void setMaximumSize( int width, int height )/*-{
this.setMaximumSize(width, height);
}-*/;
public final native void setMinimumSize( int widht, int height )/*-{
this.setMinimumSize(widht, height);
}-*/;
public final native void setReisizable( boolean value )/*-{
this.setReisizable(value);
}-*/;
public final native void setAlwaysOnTop( boolean value )/*-{
this.setAlwaysOnTop(value);
}-*/;
public final native void setPosition( String value )/*-{
this.setPosition(value);
}-*/;
public final void center() {
setPosition( "center" );
}
public final native void setShowInTaskbar( boolean value )/*-{
this.showInTaskbar(value);
}-*/;
public final native void requestAttention( boolean attention )/*-{
this.requestAttention(attention);
}-*/;
public final native void requestAttention( int attention )/*-{
this.requestAttention(attention);
}-*/;
public final void capturePageAsPng( Base64ImageHandler handler ) {
_capturePage( "png", handler );
}
public final void capturePageAsJpeg( Base64ImageHandler handler ) {
_capturePage( "jpeg", handler );
}
public final void capturePageAsPng( BufferImageHandler handler ) {
_capturePage( "png", handler );
}
public final void capturePageAsJpeg( BufferImageHandler handler ) {
_capturePage( "jpeg", handler );
}
public final native void setProgressBar( boolean value )/*-{
this.setProgressBar(value);
}-*/;
public final native void setBadgeLabel( String value )/*-{
this.setBadgeLabel(value);
}-*/;
public final native void eval( String script )/*-{
this.eval(null, script);
}-*/;
public final native void eval( JavaScriptObject iframe, String script )/*-{
this.eval(iframe, script);
}-*/;
public final void addCloseHandler( EventHandler handler ) {
addHandler( "close", handler );
}
public final void addClosedHandler( EventHandler handler ) {
addHandler( "closed", handler );
}
public final void addLoadingHandler( EventHandler handler ) {
addHandler( "loading", handler );
}
public final void addLoadedHandler( EventHandler handler ) {
addHandler( "loaded", handler );
}
public final void addDocumentStartHandler( EventHandler handler ) {
addHandler( "document-start", handler );
}
public final void addDocumentEndHandler( EventHandler handler ) {
addHandler( "document-end", handler );
}
public final void addFocusHandler( EventHandler handler ) {
addHandler( "focus", handler );
}
public final void addBlurHandler( EventHandler handler ) {
addHandler( "blur", handler );
}
public final void addMinimizeHandler( EventHandler handler ) {
addHandler( "minimize", handler );
}
public final void addRestore( EventHandler handler ) {
addHandler( "restore", handler );
}
public final void addMaximizeHandler( EventHandler handler ) {
addHandler( "maximize", handler );
}
public final void addUnMaximizeHandler( EventHandler handler ) {
addHandler( "unmaximize", handler );
}
public final void addMoveHandler( EventHandler handler ) {
addHandler( "move", handler );
}
public final void addResizeHandler( EventHandler handler ) {
addHandler( "resize", handler );
}
public final void addEnterFullScrenHandler( EventHandler handler ) {
addHandler( "enter-fullscreen", handler );
}
public final void addLeaveFullScreenHandler( EventHandler handler ) {
addHandler( "leave-fullscreen", handler );
}
public final void addZoomHandler( EventHandler handler ) {
addHandler( "zoom", handler );
}
public final void addCapturePageDoneHandler( EventHandler handler ) {
addHandler( "capturepagedone", handler );
}
public final void addDevToolsOpenedHandler( EventHandler handler ) {
addHandler( "devtools-opened", handler );
}
public final void addDevToolsCloseddHandler( EventHandler handler ) {
addHandler( "devtools-closed", handler );
}
public final void addNewWinPolicyHandler( EventHandler handler ) {
addHandler( "new-win-policy", handler );
}
public final native void addHandler( String event, EventHandler handler )/*-{
var f = function() {
handler.@com.ait.toolkit.node.core.node.event.EventHandler::onEvent()();
};
this.on(event, f);
}-*/;
// TODO Cookie API
private final native void _capturePage( String imageFormat, Base64ImageHandler handler )/*-{
this
.capturePage(
function(s) {
handler.@com.ait.toolkit.node.nw.Base64ImageHandler::handlerImage(Ljava/lang/String;)(s);
}, {
format : imageFormat,
datatype : 'datauri'
});
}-*/;
private native void _capturePage( String imageFormat, BufferImageHandler handler )/*-{
this
.capturePage(
function(b) {
handler.@com.ait.toolkit.node.nw.BufferImageHandler::handlerImage(Lcom/ait/toolkit/node/core/node/buffer/Buffer;)(b);
}, {
format : imageFormat,
datatype : 'buffer'
});
}-*/;
}