rename webview to engine

This commit is contained in:
Adam Bradley
2015-05-03 22:03:06 -05:00
parent 0c497484b6
commit 183db30ce4
10 changed files with 140 additions and 151 deletions

View File

@ -1,8 +1,6 @@
import {Component, View as NgView, bootstrap} from 'angular2/angular2'
import {View, Tabs, Tab} from 'ionic/ionic'
import {webview} from 'ionic/webview/webview'
import {cordova} from 'ionic/webview/cordova/cordova'
import {nodeWebkit} from 'ionic/webview/node-webkit/node-webkit'
import {engine} from 'ionic/engine/engine'
import * as util from 'ionic/util'
@ -13,23 +11,23 @@ import * as util from 'ionic/util'
})
class IonicApp {
constructor() {
console.log('IonicApp Start')
console.log('IonicApp Start');
console.log(webview.getName(), webview.is('cordova'))
console.log(engine.getName(), engine.is('cordova'));
webview.ready().then(() => {
console.log('webviewready')
})
engine.ready().then(() => {
console.log('engine ready')
});
webview.fullScreen(true).then((isShown) => {
engine.fullScreen(true).then((isShown) => {
console.log('fullScreen', isShown)
})
});
webview.showStatusBar(true).then((isShown) => {
engine.showStatusBar(true).then((isShown) => {
console.log('showStatusBar', isShown)
})
});
}
}
bootstrap(IonicApp)
bootstrap(IonicApp);

View File

@ -1,32 +1,33 @@
import {webview} from '../webview'
import {engine} from '../engine';
webview.register({
engine.register({
name: 'cordova',
isMatch() {
return !(!window.cordova && !window.PhoneGap && !window.phonegap)
return !(!window.cordova && !window.PhoneGap && !window.phonegap);
},
ready() {
return new Promise(resolve => {
setTimeout(resolve, 1000)
})
setTimeout(resolve, 1000);
});
},
fullScreen(shouldShow) {
return new Promise(resolve => {
setTimeout(function() {
resolve(shouldShow)
}, 1000)
})
resolve(shouldShow);
}, 1000);
});
},
showStatusBar(shouldShow) {
return new Promise(resolve => {
setTimeout(function() {
resolve(shouldShow)
}, 1000)
})
resolve(shouldShow);
}, 1000);
});
},
exitApp() {
return new Promise(resolve => {
setTimeout(resolve, 1000)
})
setTimeout(resolve, 1000);
});
}
})
});

View File

@ -0,0 +1,37 @@
import * as util from 'ionic/util';
import {engine} from '../engine';
engine.register({
name: 'electron',
isMatch() {
try {
return util.isDefined(process) && util.isDefined(require) && util.isDefined(require('nw.gui'));
} catch (e) {}
return false;
},
ready() {
return new Promise(resolve => {
setTimeout(resolve, 1000);
});
},
fullScreen(shouldShow) {
return new Promise(resolve => {
setTimeout(function() {
resolve(shouldShow);
}, 1000);
});
},
showStatusBar(shouldShow) {
return new Promise(resolve => {
setTimeout(function() {
resolve(shouldShow);
}, 1000);
});
},
exitApp() {
return new Promise(resolve => {
setTimeout(resolve, 1000);
});
}
});

73
ionic/engine/engine.js Normal file
View File

@ -0,0 +1,73 @@
import * as util from 'ionic/util';
let registry = {};
let defaultEngine;
let activeEngine;
class EngineController {
constructor() {
let self = this;
let proxyMethods = 'ready fullScreen showStatusBar exitApp'.split(' ');
for (let x = 0; x < proxyMethods.length; x++) {
this[proxyMethods[x]] = function() {
return self.proxy(proxyMethods[x], arguments);
}
}
}
proxy(target, args) {
let eng = this.get()
if (eng && eng[target]) {
return eng[target].apply(this, args);
}
return new Promise(resolve => {}, reject => {
reject();
});
}
is(name) {
return this.name === name;
}
getName() {
return this.get().name;
}
get() {
if (util.isUndefined(activeEngine)) {
this.set(this.detect());
}
return activeEngine || defaultEngine;
}
set(eng) {
activeEngine = eng;
}
setDefault(eng) {
defaultEngine = eng;
}
register(eng) {
registry[eng.name] = eng;
}
detect() {
for (let name in registry) {
if (registry[name].isMatch()) {
return registry[name];
}
}
return null;
}
}
export let engine = new EngineController();
engine.setDefault({
name: 'default',
ready: util.dom.windowLoad
});

View File

@ -19,8 +19,9 @@ Object.defineProperties(ViewContainer.prototype, {
export * from 'ionic/components'
export * from 'ionic/platform/platform'
export * from 'ionic/routing/router'
export * from 'ionic/webview/webview'
export * from 'ionic/webview/cordova/cordova'
export * from 'ionic/webview/node-webkit/node-webkit'
export * from 'ionic/util/focus'
export * from 'ionic/collide/animation'
export * from 'ionic/engine/engine'
export * from 'ionic/engine/cordova/cordova'
export * from 'ionic/engine/electron/electron'

View File

@ -78,7 +78,3 @@
"components/icon/icon";
// Web View Adaptors
@import
"webview/cordova/cordova",
"webview/node-webkit/node-webkit";

View File

@ -1,28 +0,0 @@
import {webview} from '../webview'
webview.register({
name: 'node-webkit',
isMatch() {
try {
return util.isDefined(process) && util.isDefined(require) && util.isDefined(require('nw.gui'))
} catch (e) {}
return false
},
ready() {
return new Promise(resolve => {
setTimeout(resolve, 1000)
})
},
fullScreen(shouldShow) {
return new Promise(resolve => {
setTimeout(function() {
resolve(shouldShow)
}, 1000)
})
},
exitApp() {
return new Promise(resolve => {
setTimeout(resolve, 1000)
})
}
})

View File

@ -1,89 +0,0 @@
import * as util from 'ionic/util'
class WebView {
constructor(options) {
util.extend(this, options)
}
}
let registry = {}
let defaultWebView;
let activeWebView;
class WebViewController {
constructor() {
let self = this
let proxyMethods = 'ready fullScreen showStatusBar exitApp'.split(' ')
for (let x = 0; x < proxyMethods.length; x++) {
this[proxyMethods[x]] = function() {
return self.proxy(proxyMethods[x], arguments)
}
}
}
proxy(target, args) {
let webview = this.get()
if (webview && webview[target]) {
return webview[target].apply(this, args)
}
return new Promise(resolve => {}, reject => {
reject()
})
}
is(name) {
return this.getName() === name
}
isWebView() {
return !!this.get().isWebView
}
getName() {
return this.get().name
}
get() {
if (util.isUndefined(activeWebView)) {
this.set(this.detect())
}
return activeWebView || defaultWebView
}
set(webview) {
activeWebView = webview
}
setDefault(webview) {
if (!webview instanceof WebView) webview = new WebView(webview)
defaultWebView = webview
}
register(webview) {
if (!webview instanceof WebView) webview = new WebView(webview)
webview.isWebView = true
registry[webview.name] = webview
}
detect() {
for (let name in registry) {
if (registry[name].isMatch()) {
return registry[name]
}
}
return null
}
}
export let webview = new WebViewController()
webview.setDefault({
name: 'default',
ready: util.dom.windowLoad
})