electron-kit
Version:
Utility kits for middle-scale electron app
101 lines (79 loc) • 2.68 kB
JavaScript
// Generated by CoffeeScript 1.10.0
(function() {
var AppWindow, BrowserWindow, CompositeDisposable, Emitter, WindowManager;
BrowserWindow = require("electron").BrowserWindow;
CompositeDisposable = require("event-kit").CompositeDisposable;
Emitter = require("../utils/Emitter");
AppWindow = require("./AppWindow");
module.exports = WindowManager = (function() {
function WindowManager() {
this.emitter = new Emitter;
this.subscriptions = new CompositeDisposable;
this.windows = new Set;
}
/**
* Open a new BrowserWindow
* @param {Object} options Options for BrowserWindow creation
* @return {AppWindow}
*/
WindowManager.prototype.openWindow = function(options) {
var window;
if (options == null) {
options = {};
}
window = new AppWindow(options);
this.addWindow(window);
return window;
};
/**
* Add created window into WindowManager
* @param {AppWindow} window
*/
WindowManager.prototype.addWindow = function(window) {
var beforeSize;
beforeSize = this.windows.size;
if (this.windows.add(window).size === beforeSize) {
return;
}
this.subscriptions.add(window.on("focus", (function(_this) {
return function() {
return _this.setLastFocusedWindow(window);
};
})(this)));
this.emitter.emit("did-add-window", window);
};
WindowManager.prototype.removeWindow = function(window) {
if (!this.windows["delete"](window)) {
return;
}
this.emitter.emit("did-remove-window", window);
};
WindowManager.prototype.findWindowByBrowserWindow = function(browserWindow) {
var target;
target = null;
this.windows.forEach(function(appWindow) {
if (appWindow.browserWindow === browserWindow) {
target = appWindow;
}
});
return target;
};
WindowManager.prototype.setLastFocusedWindow = function(window) {
this._lastFocusedWindow = window;
this.emitter.emit("did-change-focused-window", window);
};
WindowManager.prototype.lastFocusedWindow = function() {
return this._lastFocusedWindow;
};
WindowManager.prototype.onDidAddWindow = function(fn) {
return this.emitter.on("did-add-window", fn);
};
WindowManager.prototype.onDidRemoveWindow = function(fn) {
return this.emitter.on("did-remove-window", fn);
};
WindowManager.prototype.onDidChangeFocusedWindow = function(fn) {
return this.emitter.on("did-change-focused-window", fn);
};
return WindowManager;
})();
}).call(this);