Best JavaScript code snippet using mountebank
rpg_scenes.js
Source:rpg_scenes.js
1//=============================================================================2// rpg_scenes.js v1.6.23//=============================================================================4//=============================================================================5/**6 * The Superclass of all scene within the game.7 * 8 * @class Scene_Base9 * @constructor 10 * @extends Stage11 */12function Scene_Base() {13 this.initialize.apply(this, arguments);14}15Scene_Base.prototype = Object.create(Stage.prototype);16Scene_Base.prototype.constructor = Scene_Base;17/**18 * Create a instance of Scene_Base.19 * 20 * @instance 21 * @memberof Scene_Base22 */23Scene_Base.prototype.initialize = function() {24 Stage.prototype.initialize.call(this);25 this._active = false;26 this._fadeSign = 0;27 this._fadeDuration = 0;28 this._fadeSprite = null;29 this._imageReservationId = Utils.generateRuntimeId();30};31/**32 * Attach a reservation to the reserve queue.33 * 34 * @method attachReservation35 * @instance 36 * @memberof Scene_Base37 */38Scene_Base.prototype.attachReservation = function() {39 ImageManager.setDefaultReservationId(this._imageReservationId);40};41/**42 * Remove the reservation from the Reserve queue.43 * 44 * @method detachReservation45 * @instance 46 * @memberof Scene_Base47 */48Scene_Base.prototype.detachReservation = function() {49 ImageManager.releaseReservation(this._imageReservationId);50};51/**52 * Create the components and add them to the rendering process.53 * 54 * @method create55 * @instance 56 * @memberof Scene_Base57 */58Scene_Base.prototype.create = function() {59};60/**61 * Returns whether the scene is active or not.62 * 63 * @method isActive64 * @instance 65 * @memberof Scene_Base66 * @return {Boolean} return true if the scene is active67 */68Scene_Base.prototype.isActive = function() {69 return this._active;70};71/**72 * Return whether the scene is ready to start or not.73 * 74 * @method isReady75 * @instance 76 * @memberof Scene_Base77 * @return {Boolean} Return true if the scene is ready to start78 */79Scene_Base.prototype.isReady = function() {80 return ImageManager.isReady();81};82/**83 * Start the scene processing.84 * 85 * @method start86 * @instance 87 * @memberof Scene_Base88 */89Scene_Base.prototype.start = function() {90 this._active = true;91};92/**93 * Update the scene processing each new frame.94 * 95 * @method update96 * @instance 97 * @memberof Scene_Base98 */99Scene_Base.prototype.update = function() {100 this.updateFade();101 this.updateChildren();102};103/**104 * Stop the scene processing.105 * 106 * @method stop107 * @instance 108 * @memberof Scene_Base109 */110Scene_Base.prototype.stop = function() {111 this._active = false;112};113/**114 * Return whether the scene is busy or not.115 * 116 * @method isBusy117 * @instance118 * @memberof Scene_Base119 * @return {Boolean} Return true if the scene is currently busy120 */121Scene_Base.prototype.isBusy = function() {122 return this._fadeDuration > 0;123};124/**125 * Terminate the scene before switching to a another scene.126 * 127 * @method terminate128 * @instance 129 * @memberof Scene_Base130 */131Scene_Base.prototype.terminate = function() {132};133/**134 * Create the layer for the windows children135 * and add it to the rendering process.136 * 137 * @method createWindowLayer138 * @instance 139 * @memberof Scene_Base140 */141Scene_Base.prototype.createWindowLayer = function() {142 var width = Graphics.boxWidth;143 var height = Graphics.boxHeight;144 var x = (Graphics.width - width) / 2;145 var y = (Graphics.height - height) / 2;146 this._windowLayer = new WindowLayer();147 this._windowLayer.move(x, y, width, height);148 this.addChild(this._windowLayer);149};150/**151 * Add the children window to the windowLayer processing.152 * 153 * @method addWindow154 * @instance 155 * @memberof Scene_Base156 */157Scene_Base.prototype.addWindow = function(window) {158 this._windowLayer.addChild(window);159};160/**161 * Request a fadeIn screen process.162 * 163 * @method startFadeIn164 * @param {Number} [duration=30] The time the process will take for fadeIn the screen165 * @param {Boolean} [white=false] If true the fadein will be process with a white color else it's will be black166 * 167 * @instance 168 * @memberof Scene_Base169 */170Scene_Base.prototype.startFadeIn = function(duration, white) {171 this.createFadeSprite(white);172 this._fadeSign = 1;173 this._fadeDuration = duration || 30;174 this._fadeSprite.opacity = 255;175};176/**177 * Request a fadeOut screen process.178 * 179 * @method startFadeOut180 * @param {Number} [duration=30] The time the process will take for fadeOut the screen181 * @param {Boolean} [white=false] If true the fadeOut will be process with a white color else it's will be black182 * 183 * @instance 184 * @memberof Scene_Base185 */186Scene_Base.prototype.startFadeOut = function(duration, white) {187 this.createFadeSprite(white);188 this._fadeSign = -1;189 this._fadeDuration = duration || 30;190 this._fadeSprite.opacity = 0;191};192/**193 * Create a Screen sprite for the fadein and fadeOut purpose and194 * add it to the rendering process.195 * 196 * @method createFadeSprite197 * @instance 198 * @memberof Scene_Base199 */200Scene_Base.prototype.createFadeSprite = function(white) {201 if (!this._fadeSprite) {202 this._fadeSprite = new ScreenSprite();203 this.addChild(this._fadeSprite);204 }205 if (white) {206 this._fadeSprite.setWhite();207 } else {208 this._fadeSprite.setBlack();209 }210};211/**212 * Update the screen fade processing.213 * 214 * @method updateFade215 * @instance 216 * @memberof Scene_Base217 */218Scene_Base.prototype.updateFade = function() {219 if (this._fadeDuration > 0) {220 var d = this._fadeDuration;221 if (this._fadeSign > 0) {222 this._fadeSprite.opacity -= this._fadeSprite.opacity / d;223 } else {224 this._fadeSprite.opacity += (255 - this._fadeSprite.opacity) / d;225 }226 this._fadeDuration--;227 }228};229/**230 * Update the children of the scene EACH frame.231 * 232 * @method updateChildren233 * @instance 234 * @memberof Scene_Base235 */236Scene_Base.prototype.updateChildren = function() {237 this.children.forEach(function(child) {238 if (child.update) {239 child.update();240 }241 });242};243/**244 * Pop the scene from the stack array and switch to the245 * previous scene.246 * 247 * @method popScene248 * @instance 249 * @memberof Scene_Base250 */251Scene_Base.prototype.popScene = function() {252 SceneManager.pop();253};254/**255 * Check whether the game should be triggering a gameover.256 * 257 * @method checkGameover258 * @instance 259 * @memberof Scene_Base260 */261Scene_Base.prototype.checkGameover = function() {262 if ($gameParty.isAllDead()) {263 SceneManager.goto(Scene_Gameover);264 }265};266/**267 * Slowly fade out all the visual and audio of the scene.268 * 269 * @method fadeOutAll270 * @instance 271 * @memberof Scene_Base272 */273Scene_Base.prototype.fadeOutAll = function() {274 var time = this.slowFadeSpeed() / 60;275 AudioManager.fadeOutBgm(time);276 AudioManager.fadeOutBgs(time);277 AudioManager.fadeOutMe(time);278 this.startFadeOut(this.slowFadeSpeed());279};280/**281 * Return the screen fade speed value.282 * 283 * @method fadeSpeed284 * @instance 285 * @memberof Scene_Base286 * @return {Number} Return the fade speed287 */288Scene_Base.prototype.fadeSpeed = function() {289 return 24;290};291/**292 * Return a slow screen fade speed value.293 * 294 * @method slowFadeSpeed295 * @instance 296 * @memberof Scene_Base297 * @return {Number} Return the fade speed298 */299Scene_Base.prototype.slowFadeSpeed = function() {300 return this.fadeSpeed() * 2;301};302//-----------------------------------------------------------------------------303// Scene_Boot304//305// The scene class for initializing the entire game.306function Scene_Boot() {307 this.initialize.apply(this, arguments);308}309Scene_Boot.prototype = Object.create(Scene_Base.prototype);310Scene_Boot.prototype.constructor = Scene_Boot;311Scene_Boot.prototype.initialize = function() {312 Scene_Base.prototype.initialize.call(this);313 this._startDate = Date.now();314};315Scene_Boot.prototype.create = function() {316 Scene_Base.prototype.create.call(this);317 DataManager.loadDatabase();318 ConfigManager.load();319 this.loadSystemWindowImage();320};321Scene_Boot.prototype.loadSystemWindowImage = function() {322 ImageManager.reserveSystem('Window');323};324Scene_Boot.loadSystemImages = function() {325 ImageManager.reserveSystem('IconSet');326 ImageManager.reserveSystem('Balloon');327 ImageManager.reserveSystem('Shadow1');328 ImageManager.reserveSystem('Shadow2');329 ImageManager.reserveSystem('Damage');330 ImageManager.reserveSystem('States');331 ImageManager.reserveSystem('Weapons1');332 ImageManager.reserveSystem('Weapons2');333 ImageManager.reserveSystem('Weapons3');334 ImageManager.reserveSystem('ButtonSet');335};336Scene_Boot.prototype.isReady = function() {337 if (Scene_Base.prototype.isReady.call(this)) {338 return DataManager.isDatabaseLoaded() && this.isGameFontLoaded();339 } else {340 return false;341 }342};343Scene_Boot.prototype.isGameFontLoaded = function() {344 if (Graphics.isFontLoaded('GameFont')) {345 return true;346 } else if (!Graphics.canUseCssFontLoading()){347 var elapsed = Date.now() - this._startDate;348 if (elapsed >= 60000) {349 throw new Error('Failed to load GameFont');350 }351 }352};353Scene_Boot.prototype.start = function() {354 Scene_Base.prototype.start.call(this);355 SoundManager.preloadImportantSounds();356 if (DataManager.isBattleTest()) {357 DataManager.setupBattleTest();358 SceneManager.goto(Scene_Battle);359 } else if (DataManager.isEventTest()) {360 DataManager.setupEventTest();361 SceneManager.goto(Scene_Map);362 } else {363 this.checkPlayerLocation();364 DataManager.setupNewGame();365 SceneManager.goto(Scene_Title);366 Window_TitleCommand.initCommandPosition();367 }368 this.updateDocumentTitle();369};370Scene_Boot.prototype.updateDocumentTitle = function() {371 document.title = $dataSystem.gameTitle;372};373Scene_Boot.prototype.checkPlayerLocation = function() {374 if ($dataSystem.startMapId === 0) {375 throw new Error('Player\'s starting position is not set');376 }377};378//-----------------------------------------------------------------------------379// Scene_Title380//381// The scene class of the title screen.382function Scene_Title() {383 this.initialize.apply(this, arguments);384}385Scene_Title.prototype = Object.create(Scene_Base.prototype);386Scene_Title.prototype.constructor = Scene_Title;387Scene_Title.prototype.initialize = function() {388 Scene_Base.prototype.initialize.call(this);389};390Scene_Title.prototype.create = function() {391 Scene_Base.prototype.create.call(this);392 this.createBackground();393 this.createForeground();394 this.createWindowLayer();395 this.createCommandWindow();396};397Scene_Title.prototype.start = function() {398 Scene_Base.prototype.start.call(this);399 SceneManager.clearStack();400 this.centerSprite(this._backSprite1);401 this.centerSprite(this._backSprite2);402 this.playTitleMusic();403 this.startFadeIn(this.fadeSpeed(), false);404};405Scene_Title.prototype.update = function() {406 if (!this.isBusy()) {407 this._commandWindow.open();408 }409 Scene_Base.prototype.update.call(this);410};411Scene_Title.prototype.isBusy = function() {412 return this._commandWindow.isClosing() || Scene_Base.prototype.isBusy.call(this);413};414Scene_Title.prototype.terminate = function() {415 Scene_Base.prototype.terminate.call(this);416 SceneManager.snapForBackground();417};418Scene_Title.prototype.createBackground = function() {419 this._backSprite1 = new Sprite(ImageManager.loadTitle1($dataSystem.title1Name));420 this._backSprite2 = new Sprite(ImageManager.loadTitle2($dataSystem.title2Name));421 this.addChild(this._backSprite1);422 this.addChild(this._backSprite2);423};424Scene_Title.prototype.createForeground = function() {425 this._gameTitleSprite = new Sprite(new Bitmap(Graphics.width, Graphics.height));426 this.addChild(this._gameTitleSprite);427 if ($dataSystem.optDrawTitle) {428 this.drawGameTitle();429 }430};431Scene_Title.prototype.drawGameTitle = function() {432 var x = 20;433 var y = Graphics.height / 4;434 var maxWidth = Graphics.width - x * 2;435 var text = $dataSystem.gameTitle;436 this._gameTitleSprite.bitmap.outlineColor = 'black';437 this._gameTitleSprite.bitmap.outlineWidth = 8;438 this._gameTitleSprite.bitmap.fontSize = 72;439 this._gameTitleSprite.bitmap.drawText(text, x, y, maxWidth, 48, 'center');440};441Scene_Title.prototype.centerSprite = function(sprite) {442 sprite.x = Graphics.width / 2;443 sprite.y = Graphics.height / 2;444 sprite.anchor.x = 0.5;445 sprite.anchor.y = 0.5;446};447Scene_Title.prototype.createCommandWindow = function() {448 this._commandWindow = new Window_TitleCommand();449 this._commandWindow.setHandler('newGame', this.commandNewGame.bind(this));450 this._commandWindow.setHandler('continue', this.commandContinue.bind(this));451 this._commandWindow.setHandler('options', this.commandOptions.bind(this));452 this.addWindow(this._commandWindow);453};454Scene_Title.prototype.commandNewGame = function() {455 DataManager.setupNewGame();456 this._commandWindow.close();457 this.fadeOutAll();458 SceneManager.goto(Scene_Map);459};460Scene_Title.prototype.commandContinue = function() {461 this._commandWindow.close();462 SceneManager.push(Scene_Load);463};464Scene_Title.prototype.commandOptions = function() {465 this._commandWindow.close();466 SceneManager.push(Scene_Options);467};468Scene_Title.prototype.playTitleMusic = function() {469 AudioManager.playBgm($dataSystem.titleBgm);470 AudioManager.stopBgs();471 AudioManager.stopMe();472};473//-----------------------------------------------------------------------------474// Scene_Map475//476// The scene class of the map screen.477function Scene_Map() {478 this.initialize.apply(this, arguments);479}480Scene_Map.prototype = Object.create(Scene_Base.prototype);481Scene_Map.prototype.constructor = Scene_Map;482Scene_Map.prototype.initialize = function() {483 Scene_Base.prototype.initialize.call(this);484 this._waitCount = 0;485 this._encounterEffectDuration = 0;486 this._mapLoaded = false;487 this._touchCount = 0;488};489Scene_Map.prototype.create = function() {490 Scene_Base.prototype.create.call(this);491 this._transfer = $gamePlayer.isTransferring();492 var mapId = this._transfer ? $gamePlayer.newMapId() : $gameMap.mapId();493 DataManager.loadMapData(mapId);494};495Scene_Map.prototype.isReady = function() {496 if (!this._mapLoaded && DataManager.isMapLoaded()) {497 this.onMapLoaded();498 this._mapLoaded = true;499 }500 return this._mapLoaded && Scene_Base.prototype.isReady.call(this);501};502Scene_Map.prototype.onMapLoaded = function() {503 if (this._transfer) {504 $gamePlayer.performTransfer();505 }506 this.createDisplayObjects();507};508Scene_Map.prototype.start = function() {509 Scene_Base.prototype.start.call(this);510 SceneManager.clearStack();511 if (this._transfer) {512 this.fadeInForTransfer();513 this._mapNameWindow.open();514 $gameMap.autoplay();515 } else if (this.needsFadeIn()) {516 this.startFadeIn(this.fadeSpeed(), false);517 }518 this.menuCalling = false;519};520Scene_Map.prototype.update = function() {521 this.updateDestination();522 this.updateMainMultiply();523 if (this.isSceneChangeOk()) {524 this.updateScene();525 } else if (SceneManager.isNextScene(Scene_Battle)) {526 this.updateEncounterEffect();527 }528 this.updateWaitCount();529 Scene_Base.prototype.update.call(this);530};531Scene_Map.prototype.updateMainMultiply = function() {532 this.updateMain();533 if (this.isFastForward()) {534 this.updateMain();535 }536};537Scene_Map.prototype.updateMain = function() {538 var active = this.isActive();539 $gameMap.update(active);540 $gamePlayer.update(active);541 $gameTimer.update(active);542 $gameScreen.update();543};544Scene_Map.prototype.isFastForward = function() {545 return ($gameMap.isEventRunning() && !SceneManager.isSceneChanging() &&546 (Input.isLongPressed('ok') || TouchInput.isLongPressed()));547};548Scene_Map.prototype.stop = function() {549 Scene_Base.prototype.stop.call(this);550 $gamePlayer.straighten();551 this._mapNameWindow.close();552 if (this.needsSlowFadeOut()) {553 this.startFadeOut(this.slowFadeSpeed(), false);554 } else if (SceneManager.isNextScene(Scene_Map)) {555 this.fadeOutForTransfer();556 } else if (SceneManager.isNextScene(Scene_Battle)) {557 this.launchBattle();558 }559};560Scene_Map.prototype.isBusy = function() {561 return ((this._messageWindow && this._messageWindow.isClosing()) ||562 this._waitCount > 0 || this._encounterEffectDuration > 0 ||563 Scene_Base.prototype.isBusy.call(this));564};565Scene_Map.prototype.terminate = function() {566 Scene_Base.prototype.terminate.call(this);567 if (!SceneManager.isNextScene(Scene_Battle)) {568 this._spriteset.update();569 this._mapNameWindow.hide();570 SceneManager.snapForBackground();571 } else {572 ImageManager.clearRequest();573 }574 if (SceneManager.isNextScene(Scene_Map)) {575 ImageManager.clearRequest();576 }577 $gameScreen.clearZoom();578 this.removeChild(this._fadeSprite);579 this.removeChild(this._mapNameWindow);580 this.removeChild(this._windowLayer);581 this.removeChild(this._spriteset);582};583Scene_Map.prototype.needsFadeIn = function() {584 return (SceneManager.isPreviousScene(Scene_Battle) ||585 SceneManager.isPreviousScene(Scene_Load));586};587Scene_Map.prototype.needsSlowFadeOut = function() {588 return (SceneManager.isNextScene(Scene_Title) ||589 SceneManager.isNextScene(Scene_Gameover));590};591Scene_Map.prototype.updateWaitCount = function() {592 if (this._waitCount > 0) {593 this._waitCount--;594 return true;595 }596 return false;597};598Scene_Map.prototype.updateDestination = function() {599 if (this.isMapTouchOk()) {600 this.processMapTouch();601 } else {602 $gameTemp.clearDestination();603 this._touchCount = 0;604 }605};606Scene_Map.prototype.isMapTouchOk = function() {607 return this.isActive() && $gamePlayer.canMove();608};609Scene_Map.prototype.processMapTouch = function() {610 if (TouchInput.isTriggered() || this._touchCount > 0) {611 if (TouchInput.isPressed()) {612 if (this._touchCount === 0 || this._touchCount >= 15) {613 var x = $gameMap.canvasToMapX(TouchInput.x);614 var y = $gameMap.canvasToMapY(TouchInput.y);615 $gameTemp.setDestination(x, y);616 }617 this._touchCount++;618 } else {619 this._touchCount = 0;620 }621 }622};623Scene_Map.prototype.isSceneChangeOk = function() {624 return this.isActive() && !$gameMessage.isBusy();625};626Scene_Map.prototype.updateScene = function() {627 this.checkGameover();628 if (!SceneManager.isSceneChanging()) {629 this.updateTransferPlayer();630 }631 if (!SceneManager.isSceneChanging()) {632 this.updateEncounter();633 }634 if (!SceneManager.isSceneChanging()) {635 this.updateCallMenu();636 }637 if (!SceneManager.isSceneChanging()) {638 this.updateCallDebug();639 }640};641Scene_Map.prototype.createDisplayObjects = function() {642 this.createSpriteset();643 this.createMapNameWindow();644 this.createWindowLayer();645 this.createAllWindows();646};647Scene_Map.prototype.createSpriteset = function() {648 this._spriteset = new Spriteset_Map();649 this.addChild(this._spriteset);650};651Scene_Map.prototype.createAllWindows = function() {652 this.createMessageWindow();653 this.createScrollTextWindow();654};655Scene_Map.prototype.createMapNameWindow = function() {656 this._mapNameWindow = new Window_MapName();657 this.addChild(this._mapNameWindow);658};659Scene_Map.prototype.createMessageWindow = function() {660 this._messageWindow = new Window_Message();661 this.addWindow(this._messageWindow);662 this._messageWindow.subWindows().forEach(function(window) {663 this.addWindow(window);664 }, this);665};666Scene_Map.prototype.createScrollTextWindow = function() {667 this._scrollTextWindow = new Window_ScrollText();668 this.addWindow(this._scrollTextWindow);669};670Scene_Map.prototype.updateTransferPlayer = function() {671 if ($gamePlayer.isTransferring()) {672 SceneManager.goto(Scene_Map);673 }674};675Scene_Map.prototype.updateEncounter = function() {676 if ($gamePlayer.executeEncounter()) {677 SceneManager.push(Scene_Battle);678 }679};680Scene_Map.prototype.updateCallMenu = function() {681 if (this.isMenuEnabled()) {682 if (this.isMenuCalled()) {683 this.menuCalling = true;684 }685 if (this.menuCalling && !$gamePlayer.isMoving()) {686 this.callMenu();687 }688 } else {689 this.menuCalling = false;690 }691};692Scene_Map.prototype.isMenuEnabled = function() {693 return $gameSystem.isMenuEnabled() && !$gameMap.isEventRunning();694};695Scene_Map.prototype.isMenuCalled = function() {696 return Input.isTriggered('menu') || TouchInput.isCancelled();697};698Scene_Map.prototype.callMenu = function() {699 SoundManager.playOk();700 SceneManager.push(Scene_Menu);701 Window_MenuCommand.initCommandPosition();702 $gameTemp.clearDestination();703 this._mapNameWindow.hide();704 this._waitCount = 2;705};706Scene_Map.prototype.updateCallDebug = function() {707 if (this.isDebugCalled()) {708 SceneManager.push(Scene_Debug);709 }710};711Scene_Map.prototype.isDebugCalled = function() {712 return Input.isTriggered('debug') && $gameTemp.isPlaytest();713};714Scene_Map.prototype.fadeInForTransfer = function() {715 var fadeType = $gamePlayer.fadeType();716 switch (fadeType) {717 case 0: case 1:718 this.startFadeIn(this.fadeSpeed(), fadeType === 1);719 break;720 }721};722Scene_Map.prototype.fadeOutForTransfer = function() {723 var fadeType = $gamePlayer.fadeType();724 switch (fadeType) {725 case 0: case 1:726 this.startFadeOut(this.fadeSpeed(), fadeType === 1);727 break;728 }729};730Scene_Map.prototype.launchBattle = function() {731 BattleManager.saveBgmAndBgs();732 this.stopAudioOnBattleStart();733 SoundManager.playBattleStart();734 this.startEncounterEffect();735 this._mapNameWindow.hide();736};737Scene_Map.prototype.stopAudioOnBattleStart = function() {738 if (!AudioManager.isCurrentBgm($gameSystem.battleBgm())) {739 AudioManager.stopBgm();740 }741 AudioManager.stopBgs();742 AudioManager.stopMe();743 AudioManager.stopSe();744};745Scene_Map.prototype.startEncounterEffect = function() {746 this._spriteset.hideCharacters();747 this._encounterEffectDuration = this.encounterEffectSpeed();748};749Scene_Map.prototype.updateEncounterEffect = function() {750 if (this._encounterEffectDuration > 0) {751 this._encounterEffectDuration--;752 var speed = this.encounterEffectSpeed();753 var n = speed - this._encounterEffectDuration;754 var p = n / speed;755 var q = ((p - 1) * 20 * p + 5) * p + 1;756 var zoomX = $gamePlayer.screenX();757 var zoomY = $gamePlayer.screenY() - 24;758 if (n === 2) {759 $gameScreen.setZoom(zoomX, zoomY, 1);760 this.snapForBattleBackground();761 this.startFlashForEncounter(speed / 2);762 }763 $gameScreen.setZoom(zoomX, zoomY, q);764 if (n === Math.floor(speed / 6)) {765 this.startFlashForEncounter(speed / 2);766 }767 if (n === Math.floor(speed / 2)) {768 BattleManager.playBattleBgm();769 this.startFadeOut(this.fadeSpeed());770 }771 }772};773Scene_Map.prototype.snapForBattleBackground = function() {774 this._windowLayer.visible = false;775 SceneManager.snapForBackground();776 this._windowLayer.visible = true;777};778Scene_Map.prototype.startFlashForEncounter = function(duration) {779 var color = [255, 255, 255, 255];780 $gameScreen.startFlash(color, duration);781};782Scene_Map.prototype.encounterEffectSpeed = function() {783 return 60;784};785//-----------------------------------------------------------------------------786// Scene_MenuBase787//788// The superclass of all the menu-type scenes.789function Scene_MenuBase() {790 this.initialize.apply(this, arguments);791}792Scene_MenuBase.prototype = Object.create(Scene_Base.prototype);793Scene_MenuBase.prototype.constructor = Scene_MenuBase;794Scene_MenuBase.prototype.initialize = function() {795 Scene_Base.prototype.initialize.call(this);796};797Scene_MenuBase.prototype.create = function() {798 Scene_Base.prototype.create.call(this);799 this.createBackground();800 this.updateActor();801 this.createWindowLayer();802};803Scene_MenuBase.prototype.actor = function() {804 return this._actor;805};806Scene_MenuBase.prototype.updateActor = function() {807 this._actor = $gameParty.menuActor();808};809Scene_MenuBase.prototype.createBackground = function() {810 this._backgroundSprite = new Sprite();811 this._backgroundSprite.bitmap = SceneManager.backgroundBitmap();812 this.addChild(this._backgroundSprite);813};814Scene_MenuBase.prototype.setBackgroundOpacity = function(opacity) {815 this._backgroundSprite.opacity = opacity;816};817Scene_MenuBase.prototype.createHelpWindow = function() {818 this._helpWindow = new Window_Help();819 this.addWindow(this._helpWindow);820};821Scene_MenuBase.prototype.nextActor = function() {822 $gameParty.makeMenuActorNext();823 this.updateActor();824 this.onActorChange();825};826Scene_MenuBase.prototype.previousActor = function() {827 $gameParty.makeMenuActorPrevious();828 this.updateActor();829 this.onActorChange();830};831Scene_MenuBase.prototype.onActorChange = function() {832};833//-----------------------------------------------------------------------------834// Scene_Menu835//836// The scene class of the menu screen.837function Scene_Menu() {838 this.initialize.apply(this, arguments);839}840Scene_Menu.prototype = Object.create(Scene_MenuBase.prototype);841Scene_Menu.prototype.constructor = Scene_Menu;842Scene_Menu.prototype.initialize = function() {843 Scene_MenuBase.prototype.initialize.call(this);844};845Scene_Menu.prototype.create = function() {846 Scene_MenuBase.prototype.create.call(this);847 this.createCommandWindow();848 this.createGoldWindow();849 this.createStatusWindow();850};851Scene_Menu.prototype.start = function() {852 Scene_MenuBase.prototype.start.call(this);853 this._statusWindow.refresh();854};855Scene_Menu.prototype.createCommandWindow = function() {856 this._commandWindow = new Window_MenuCommand(0, 0);857 this._commandWindow.setHandler('item', this.commandItem.bind(this));858 this._commandWindow.setHandler('skill', this.commandPersonal.bind(this));859 this._commandWindow.setHandler('equip', this.commandPersonal.bind(this));860 this._commandWindow.setHandler('status', this.commandPersonal.bind(this));861 this._commandWindow.setHandler('formation', this.commandFormation.bind(this));862 this._commandWindow.setHandler('options', this.commandOptions.bind(this));863 this._commandWindow.setHandler('save', this.commandSave.bind(this));864 this._commandWindow.setHandler('gameEnd', this.commandGameEnd.bind(this));865 this._commandWindow.setHandler('cancel', this.popScene.bind(this));866 this.addWindow(this._commandWindow);867};868Scene_Menu.prototype.createGoldWindow = function() {869 this._goldWindow = new Window_Gold(0, 0);870 this._goldWindow.y = Graphics.boxHeight - this._goldWindow.height;871 this.addWindow(this._goldWindow);872};873Scene_Menu.prototype.createStatusWindow = function() {874 this._statusWindow = new Window_MenuStatus(this._commandWindow.width, 0);875 this._statusWindow.reserveFaceImages();876 this.addWindow(this._statusWindow);877};878Scene_Menu.prototype.commandItem = function() {879 SceneManager.push(Scene_Item);880};881Scene_Menu.prototype.commandPersonal = function() {882 this._statusWindow.setFormationMode(false);883 this._statusWindow.selectLast();884 this._statusWindow.activate();885 this._statusWindow.setHandler('ok', this.onPersonalOk.bind(this));886 this._statusWindow.setHandler('cancel', this.onPersonalCancel.bind(this));887};888Scene_Menu.prototype.commandFormation = function() {889 this._statusWindow.setFormationMode(true);890 this._statusWindow.selectLast();891 this._statusWindow.activate();892 this._statusWindow.setHandler('ok', this.onFormationOk.bind(this));893 this._statusWindow.setHandler('cancel', this.onFormationCancel.bind(this));894};895Scene_Menu.prototype.commandOptions = function() {896 SceneManager.push(Scene_Options);897};898Scene_Menu.prototype.commandSave = function() {899 SceneManager.push(Scene_Save);900};901Scene_Menu.prototype.commandGameEnd = function() {902 SceneManager.push(Scene_GameEnd);903};904Scene_Menu.prototype.onPersonalOk = function() {905 switch (this._commandWindow.currentSymbol()) {906 case 'skill':907 SceneManager.push(Scene_Skill);908 break;909 case 'equip':910 SceneManager.push(Scene_Equip);911 break;912 case 'status':913 SceneManager.push(Scene_Status);914 break;915 }916};917Scene_Menu.prototype.onPersonalCancel = function() {918 this._statusWindow.deselect();919 this._commandWindow.activate();920};921Scene_Menu.prototype.onFormationOk = function() {922 var index = this._statusWindow.index();923 var actor = $gameParty.members()[index];924 var pendingIndex = this._statusWindow.pendingIndex();925 if (pendingIndex >= 0) {926 $gameParty.swapOrder(index, pendingIndex);927 this._statusWindow.setPendingIndex(-1);928 this._statusWindow.redrawItem(index);929 } else {930 this._statusWindow.setPendingIndex(index);931 }932 this._statusWindow.activate();933};934Scene_Menu.prototype.onFormationCancel = function() {935 if (this._statusWindow.pendingIndex() >= 0) {936 this._statusWindow.setPendingIndex(-1);937 this._statusWindow.activate();938 } else {939 this._statusWindow.deselect();940 this._commandWindow.activate();941 }942};943//-----------------------------------------------------------------------------944// Scene_ItemBase945//946// The superclass of Scene_Item and Scene_Skill.947function Scene_ItemBase() {948 this.initialize.apply(this, arguments);949}950Scene_ItemBase.prototype = Object.create(Scene_MenuBase.prototype);951Scene_ItemBase.prototype.constructor = Scene_ItemBase;952Scene_ItemBase.prototype.initialize = function() {953 Scene_MenuBase.prototype.initialize.call(this);954};955Scene_ItemBase.prototype.create = function() {956 Scene_MenuBase.prototype.create.call(this);957};958Scene_ItemBase.prototype.createActorWindow = function() {959 this._actorWindow = new Window_MenuActor();960 this._actorWindow.setHandler('ok', this.onActorOk.bind(this));961 this._actorWindow.setHandler('cancel', this.onActorCancel.bind(this));962 this.addWindow(this._actorWindow);963};964Scene_ItemBase.prototype.item = function() {965 return this._itemWindow.item();966};967Scene_ItemBase.prototype.user = function() {968 return null;969};970Scene_ItemBase.prototype.isCursorLeft = function() {971 return this._itemWindow.index() % 2 === 0;972};973Scene_ItemBase.prototype.showSubWindow = function(window) {974 window.x = this.isCursorLeft() ? Graphics.boxWidth - window.width : 0;975 window.show();976 window.activate();977};978Scene_ItemBase.prototype.hideSubWindow = function(window) {979 window.hide();980 window.deactivate();981 this.activateItemWindow();982};983Scene_ItemBase.prototype.onActorOk = function() {984 if (this.canUse()) {985 this.useItem();986 } else {987 SoundManager.playBuzzer();988 }989};990Scene_ItemBase.prototype.onActorCancel = function() {991 this.hideSubWindow(this._actorWindow);992};993Scene_ItemBase.prototype.determineItem = function() {994 var action = new Game_Action(this.user());995 var item = this.item();996 action.setItemObject(item);997 if (action.isForFriend()) {998 this.showSubWindow(this._actorWindow);999 this._actorWindow.selectForItem(this.item());1000 } else {1001 this.useItem();1002 this.activateItemWindow();1003 }1004};1005Scene_ItemBase.prototype.useItem = function() {1006 this.playSeForItem();1007 this.user().useItem(this.item());1008 this.applyItem();1009 this.checkCommonEvent();1010 this.checkGameover();1011 this._actorWindow.refresh();1012};1013Scene_ItemBase.prototype.activateItemWindow = function() {1014 this._itemWindow.refresh();1015 this._itemWindow.activate();1016};1017Scene_ItemBase.prototype.itemTargetActors = function() {1018 var action = new Game_Action(this.user());1019 action.setItemObject(this.item());1020 if (!action.isForFriend()) {1021 return [];1022 } else if (action.isForAll()) {1023 return $gameParty.members();1024 } else {1025 return [$gameParty.members()[this._actorWindow.index()]];1026 }1027};1028Scene_ItemBase.prototype.canUse = function() {1029 return this.user().canUse(this.item()) && this.isItemEffectsValid();1030};1031Scene_ItemBase.prototype.isItemEffectsValid = function() {1032 var action = new Game_Action(this.user());1033 action.setItemObject(this.item());1034 return this.itemTargetActors().some(function(target) {1035 return action.testApply(target);1036 }, this);1037};1038Scene_ItemBase.prototype.applyItem = function() {1039 var action = new Game_Action(this.user());1040 action.setItemObject(this.item());1041 this.itemTargetActors().forEach(function(target) {1042 for (var i = 0; i < action.numRepeats(); i++) {1043 action.apply(target);1044 }1045 }, this);1046 action.applyGlobal();1047};1048Scene_ItemBase.prototype.checkCommonEvent = function() {1049 if ($gameTemp.isCommonEventReserved()) {1050 SceneManager.goto(Scene_Map);1051 }1052};1053//-----------------------------------------------------------------------------1054// Scene_Item1055//1056// The scene class of the item screen.1057function Scene_Item() {1058 this.initialize.apply(this, arguments);1059}1060Scene_Item.prototype = Object.create(Scene_ItemBase.prototype);1061Scene_Item.prototype.constructor = Scene_Item;1062Scene_Item.prototype.initialize = function() {1063 Scene_ItemBase.prototype.initialize.call(this);1064};1065Scene_Item.prototype.create = function() {1066 Scene_ItemBase.prototype.create.call(this);1067 this.createHelpWindow();1068 this.createCategoryWindow();1069 this.createItemWindow();1070 this.createActorWindow();1071};1072Scene_Item.prototype.createCategoryWindow = function() {1073 this._categoryWindow = new Window_ItemCategory();1074 this._categoryWindow.setHelpWindow(this._helpWindow);1075 this._categoryWindow.y = this._helpWindow.height;1076 this._categoryWindow.setHandler('ok', this.onCategoryOk.bind(this));1077 this._categoryWindow.setHandler('cancel', this.popScene.bind(this));1078 this.addWindow(this._categoryWindow);1079};1080Scene_Item.prototype.createItemWindow = function() {1081 var wy = this._categoryWindow.y + this._categoryWindow.height;1082 var wh = Graphics.boxHeight - wy;1083 this._itemWindow = new Window_ItemList(0, wy, Graphics.boxWidth, wh);1084 this._itemWindow.setHelpWindow(this._helpWindow);1085 this._itemWindow.setHandler('ok', this.onItemOk.bind(this));1086 this._itemWindow.setHandler('cancel', this.onItemCancel.bind(this));1087 this.addWindow(this._itemWindow);1088 this._categoryWindow.setItemWindow(this._itemWindow);1089};1090Scene_Item.prototype.user = function() {1091 var members = $gameParty.movableMembers();1092 var bestActor = members[0];1093 var bestPha = 0;1094 for (var i = 0; i < members.length; i++) {1095 if (members[i].pha > bestPha) {1096 bestPha = members[i].pha;1097 bestActor = members[i];1098 }1099 }1100 return bestActor;1101};1102Scene_Item.prototype.onCategoryOk = function() {1103 this._itemWindow.activate();1104 this._itemWindow.selectLast();1105};1106Scene_Item.prototype.onItemOk = function() {1107 $gameParty.setLastItem(this.item());1108 this.determineItem();1109};1110Scene_Item.prototype.onItemCancel = function() {1111 this._itemWindow.deselect();1112 this._categoryWindow.activate();1113};1114Scene_Item.prototype.playSeForItem = function() {1115 SoundManager.playUseItem();1116};1117Scene_Item.prototype.useItem = function() {1118 Scene_ItemBase.prototype.useItem.call(this);1119 this._itemWindow.redrawCurrentItem();1120};1121//-----------------------------------------------------------------------------1122// Scene_Skill1123//1124// The scene class of the skill screen.1125function Scene_Skill() {1126 this.initialize.apply(this, arguments);1127}1128Scene_Skill.prototype = Object.create(Scene_ItemBase.prototype);1129Scene_Skill.prototype.constructor = Scene_Skill;1130Scene_Skill.prototype.initialize = function() {1131 Scene_ItemBase.prototype.initialize.call(this);1132};1133Scene_Skill.prototype.create = function() {1134 Scene_ItemBase.prototype.create.call(this);1135 this.createHelpWindow();1136 this.createSkillTypeWindow();1137 this.createStatusWindow();1138 this.createItemWindow();1139 this.createActorWindow();1140};1141Scene_Skill.prototype.start = function() {1142 Scene_ItemBase.prototype.start.call(this);1143 this.refreshActor();1144};1145Scene_Skill.prototype.createSkillTypeWindow = function() {1146 var wy = this._helpWindow.height;1147 this._skillTypeWindow = new Window_SkillType(0, wy);1148 this._skillTypeWindow.setHelpWindow(this._helpWindow);1149 this._skillTypeWindow.setHandler('skill', this.commandSkill.bind(this));1150 this._skillTypeWindow.setHandler('cancel', this.popScene.bind(this));1151 this._skillTypeWindow.setHandler('pagedown', this.nextActor.bind(this));1152 this._skillTypeWindow.setHandler('pageup', this.previousActor.bind(this));1153 this.addWindow(this._skillTypeWindow);1154};1155Scene_Skill.prototype.createStatusWindow = function() {1156 var wx = this._skillTypeWindow.width;1157 var wy = this._helpWindow.height;1158 var ww = Graphics.boxWidth - wx;1159 var wh = this._skillTypeWindow.height;1160 this._statusWindow = new Window_SkillStatus(wx, wy, ww, wh);1161 this._statusWindow.reserveFaceImages();1162 this.addWindow(this._statusWindow);1163};1164Scene_Skill.prototype.createItemWindow = function() {1165 var wx = 0;1166 var wy = this._statusWindow.y + this._statusWindow.height;1167 var ww = Graphics.boxWidth;1168 var wh = Graphics.boxHeight - wy;1169 this._itemWindow = new Window_SkillList(wx, wy, ww, wh);1170 this._itemWindow.setHelpWindow(this._helpWindow);1171 this._itemWindow.setHandler('ok', this.onItemOk.bind(this));1172 this._itemWindow.setHandler('cancel', this.onItemCancel.bind(this));1173 this._skillTypeWindow.setSkillWindow(this._itemWindow);1174 this.addWindow(this._itemWindow);1175};1176Scene_Skill.prototype.refreshActor = function() {1177 var actor = this.actor();1178 this._skillTypeWindow.setActor(actor);1179 this._statusWindow.setActor(actor);1180 this._itemWindow.setActor(actor);1181};1182Scene_Skill.prototype.user = function() {1183 return this.actor();1184};1185Scene_Skill.prototype.commandSkill = function() {1186 this._itemWindow.activate();1187 this._itemWindow.selectLast();1188};1189Scene_Skill.prototype.onItemOk = function() {1190 this.actor().setLastMenuSkill(this.item());1191 this.determineItem();1192};1193Scene_Skill.prototype.onItemCancel = function() {1194 this._itemWindow.deselect();1195 this._skillTypeWindow.activate();1196};1197Scene_Skill.prototype.playSeForItem = function() {1198 SoundManager.playUseSkill();1199};1200Scene_Skill.prototype.useItem = function() {1201 Scene_ItemBase.prototype.useItem.call(this);1202 this._statusWindow.refresh();1203 this._itemWindow.refresh();1204};1205Scene_Skill.prototype.onActorChange = function() {1206 this.refreshActor();1207 this._skillTypeWindow.activate();1208};1209//-----------------------------------------------------------------------------1210// Scene_Equip1211//1212// The scene class of the equipment screen.1213function Scene_Equip() {1214 this.initialize.apply(this, arguments);1215}1216Scene_Equip.prototype = Object.create(Scene_MenuBase.prototype);1217Scene_Equip.prototype.constructor = Scene_Equip;1218Scene_Equip.prototype.initialize = function() {1219 Scene_MenuBase.prototype.initialize.call(this);1220};1221Scene_Equip.prototype.create = function() {1222 Scene_MenuBase.prototype.create.call(this);1223 this.createHelpWindow();1224 this.createStatusWindow();1225 this.createCommandWindow();1226 this.createSlotWindow();1227 this.createItemWindow();1228 this.refreshActor();1229};1230Scene_Equip.prototype.createStatusWindow = function() {1231 this._statusWindow = new Window_EquipStatus(0, this._helpWindow.height);1232 this.addWindow(this._statusWindow);1233};1234Scene_Equip.prototype.createCommandWindow = function() {1235 var wx = this._statusWindow.width;1236 var wy = this._helpWindow.height;1237 var ww = Graphics.boxWidth - this._statusWindow.width;1238 this._commandWindow = new Window_EquipCommand(wx, wy, ww);1239 this._commandWindow.setHelpWindow(this._helpWindow);1240 this._commandWindow.setHandler('equip', this.commandEquip.bind(this));1241 this._commandWindow.setHandler('optimize', this.commandOptimize.bind(this));1242 this._commandWindow.setHandler('clear', this.commandClear.bind(this));1243 this._commandWindow.setHandler('cancel', this.popScene.bind(this));1244 this._commandWindow.setHandler('pagedown', this.nextActor.bind(this));1245 this._commandWindow.setHandler('pageup', this.previousActor.bind(this));1246 this.addWindow(this._commandWindow);1247};1248Scene_Equip.prototype.createSlotWindow = function() {1249 var wx = this._statusWindow.width;1250 var wy = this._commandWindow.y + this._commandWindow.height;1251 var ww = Graphics.boxWidth - this._statusWindow.width;1252 var wh = this._statusWindow.height - this._commandWindow.height;1253 this._slotWindow = new Window_EquipSlot(wx, wy, ww, wh);1254 this._slotWindow.setHelpWindow(this._helpWindow);1255 this._slotWindow.setStatusWindow(this._statusWindow);1256 this._slotWindow.setHandler('ok', this.onSlotOk.bind(this));1257 this._slotWindow.setHandler('cancel', this.onSlotCancel.bind(this));1258 this.addWindow(this._slotWindow);1259};1260Scene_Equip.prototype.createItemWindow = function() {1261 var wx = 0;1262 var wy = this._statusWindow.y + this._statusWindow.height;1263 var ww = Graphics.boxWidth;1264 var wh = Graphics.boxHeight - wy;1265 this._itemWindow = new Window_EquipItem(wx, wy, ww, wh);1266 this._itemWindow.setHelpWindow(this._helpWindow);1267 this._itemWindow.setStatusWindow(this._statusWindow);1268 this._itemWindow.setHandler('ok', this.onItemOk.bind(this));1269 this._itemWindow.setHandler('cancel', this.onItemCancel.bind(this));1270 this._slotWindow.setItemWindow(this._itemWindow);1271 this.addWindow(this._itemWindow);1272};1273Scene_Equip.prototype.refreshActor = function() {1274 var actor = this.actor();1275 this._statusWindow.setActor(actor);1276 this._slotWindow.setActor(actor);1277 this._itemWindow.setActor(actor);1278};1279Scene_Equip.prototype.commandEquip = function() {1280 this._slotWindow.activate();1281 this._slotWindow.select(0);1282};1283Scene_Equip.prototype.commandOptimize = function() {1284 SoundManager.playEquip();1285 this.actor().optimizeEquipments();1286 this._statusWindow.refresh();1287 this._slotWindow.refresh();1288 this._commandWindow.activate();1289};1290Scene_Equip.prototype.commandClear = function() {1291 SoundManager.playEquip();1292 this.actor().clearEquipments();1293 this._statusWindow.refresh();1294 this._slotWindow.refresh();1295 this._commandWindow.activate();1296};1297Scene_Equip.prototype.onSlotOk = function() {1298 this._itemWindow.activate();1299 this._itemWindow.select(0);1300};1301Scene_Equip.prototype.onSlotCancel = function() {1302 this._slotWindow.deselect();1303 this._commandWindow.activate();1304};1305Scene_Equip.prototype.onItemOk = function() {1306 SoundManager.playEquip();1307 this.actor().changeEquip(this._slotWindow.index(), this._itemWindow.item());1308 this._slotWindow.activate();1309 this._slotWindow.refresh();1310 this._itemWindow.deselect();1311 this._itemWindow.refresh();1312 this._statusWindow.refresh();1313};1314Scene_Equip.prototype.onItemCancel = function() {1315 this._slotWindow.activate();1316 this._itemWindow.deselect();1317};1318Scene_Equip.prototype.onActorChange = function() {1319 this.refreshActor();1320 this._commandWindow.activate();1321};1322//-----------------------------------------------------------------------------1323// Scene_Status1324//1325// The scene class of the status screen.1326function Scene_Status() {1327 this.initialize.apply(this, arguments);1328}1329Scene_Status.prototype = Object.create(Scene_MenuBase.prototype);1330Scene_Status.prototype.constructor = Scene_Status;1331Scene_Status.prototype.initialize = function() {1332 Scene_MenuBase.prototype.initialize.call(this);1333};1334Scene_Status.prototype.create = function() {1335 Scene_MenuBase.prototype.create.call(this);1336 this._statusWindow = new Window_Status();1337 this._statusWindow.setHandler('cancel', this.popScene.bind(this));1338 this._statusWindow.setHandler('pagedown', this.nextActor.bind(this));1339 this._statusWindow.setHandler('pageup', this.previousActor.bind(this));1340 this._statusWindow.reserveFaceImages();1341 this.addWindow(this._statusWindow);1342};1343Scene_Status.prototype.start = function() {1344 Scene_MenuBase.prototype.start.call(this);1345 this.refreshActor();1346};1347Scene_Status.prototype.refreshActor = function() {1348 var actor = this.actor();1349 this._statusWindow.setActor(actor);1350};1351Scene_Status.prototype.onActorChange = function() {1352 this.refreshActor();1353 this._statusWindow.activate();1354};1355//-----------------------------------------------------------------------------1356// Scene_Options1357//1358// The scene class of the options screen.1359function Scene_Options() {1360 this.initialize.apply(this, arguments);1361}1362Scene_Options.prototype = Object.create(Scene_MenuBase.prototype);1363Scene_Options.prototype.constructor = Scene_Options;1364Scene_Options.prototype.initialize = function() {1365 Scene_MenuBase.prototype.initialize.call(this);1366};1367Scene_Options.prototype.create = function() {1368 Scene_MenuBase.prototype.create.call(this);1369 this.createOptionsWindow();1370};1371Scene_Options.prototype.terminate = function() {1372 Scene_MenuBase.prototype.terminate.call(this);1373 ConfigManager.save();1374};1375Scene_Options.prototype.createOptionsWindow = function() {1376 this._optionsWindow = new Window_Options();1377 this._optionsWindow.setHandler('cancel', this.popScene.bind(this));1378 this.addWindow(this._optionsWindow);1379};1380//-----------------------------------------------------------------------------1381// Scene_File1382//1383// The superclass of Scene_Save and Scene_Load.1384function Scene_File() {1385 this.initialize.apply(this, arguments);1386}1387Scene_File.prototype = Object.create(Scene_MenuBase.prototype);1388Scene_File.prototype.constructor = Scene_File;1389Scene_File.prototype.initialize = function() {1390 Scene_MenuBase.prototype.initialize.call(this);1391};1392Scene_File.prototype.create = function() {1393 Scene_MenuBase.prototype.create.call(this);1394 DataManager.loadAllSavefileImages();1395 this.createHelpWindow();1396 this.createListWindow();1397};1398Scene_File.prototype.start = function() {1399 Scene_MenuBase.prototype.start.call(this);1400 this._listWindow.refresh();1401};1402Scene_File.prototype.savefileId = function() {1403 return this._listWindow.index() + 1;1404};1405Scene_File.prototype.createHelpWindow = function() {1406 this._helpWindow = new Window_Help(1);1407 this._helpWindow.setText(this.helpWindowText());1408 this.addWindow(this._helpWindow);1409};1410Scene_File.prototype.createListWindow = function() {1411 var x = 0;1412 var y = this._helpWindow.height;1413 var width = Graphics.boxWidth;1414 var height = Graphics.boxHeight - y;1415 this._listWindow = new Window_SavefileList(x, y, width, height);1416 this._listWindow.setHandler('ok', this.onSavefileOk.bind(this));1417 this._listWindow.setHandler('cancel', this.popScene.bind(this));1418 this._listWindow.select(this.firstSavefileIndex());1419 this._listWindow.setTopRow(this.firstSavefileIndex() - 2);1420 this._listWindow.setMode(this.mode());1421 this._listWindow.refresh();1422 this.addWindow(this._listWindow);1423};1424Scene_File.prototype.mode = function() {1425 return null;1426};1427Scene_File.prototype.activateListWindow = function() {1428 this._listWindow.activate();1429};1430Scene_File.prototype.helpWindowText = function() {1431 return '';1432};1433Scene_File.prototype.firstSavefileIndex = function() {1434 return 0;1435};1436Scene_File.prototype.onSavefileOk = function() {1437};1438//-----------------------------------------------------------------------------1439// Scene_Save1440//1441// The scene class of the save screen.1442function Scene_Save() {1443 this.initialize.apply(this, arguments);1444}1445Scene_Save.prototype = Object.create(Scene_File.prototype);1446Scene_Save.prototype.constructor = Scene_Save;1447Scene_Save.prototype.initialize = function() {1448 Scene_File.prototype.initialize.call(this);1449};1450Scene_Save.prototype.mode = function() {1451 return 'save';1452};1453Scene_Save.prototype.helpWindowText = function() {1454 return TextManager.saveMessage;1455};1456Scene_Save.prototype.firstSavefileIndex = function() {1457 return DataManager.lastAccessedSavefileId() - 1;1458};1459Scene_Save.prototype.onSavefileOk = function() {1460 Scene_File.prototype.onSavefileOk.call(this);1461 $gameSystem.onBeforeSave();1462 if (DataManager.saveGame(this.savefileId())) {1463 this.onSaveSuccess();1464 } else {1465 this.onSaveFailure();1466 }1467};1468Scene_Save.prototype.onSaveSuccess = function() {1469 SoundManager.playSave();1470 StorageManager.cleanBackup(this.savefileId());1471 this.popScene();1472};1473Scene_Save.prototype.onSaveFailure = function() {1474 SoundManager.playBuzzer();1475 this.activateListWindow();1476};1477//-----------------------------------------------------------------------------1478// Scene_Load1479//1480// The scene class of the load screen.1481function Scene_Load() {1482 this.initialize.apply(this, arguments);1483}1484Scene_Load.prototype = Object.create(Scene_File.prototype);1485Scene_Load.prototype.constructor = Scene_Load;1486Scene_Load.prototype.initialize = function() {1487 Scene_File.prototype.initialize.call(this);1488 this._loadSuccess = false;1489};1490Scene_Load.prototype.terminate = function() {1491 Scene_File.prototype.terminate.call(this);1492 if (this._loadSuccess) {1493 $gameSystem.onAfterLoad();1494 }1495};1496Scene_Load.prototype.mode = function() {1497 return 'load';1498};1499Scene_Load.prototype.helpWindowText = function() {1500 return TextManager.loadMessage;1501};1502Scene_Load.prototype.firstSavefileIndex = function() {1503 return DataManager.latestSavefileId() - 1;1504};1505Scene_Load.prototype.onSavefileOk = function() {1506 Scene_File.prototype.onSavefileOk.call(this);1507 if (DataManager.loadGame(this.savefileId())) {1508 this.onLoadSuccess();1509 } else {1510 this.onLoadFailure();1511 }1512};1513Scene_Load.prototype.onLoadSuccess = function() {1514 SoundManager.playLoad();1515 this.fadeOutAll();1516 this.reloadMapIfUpdated();1517 SceneManager.goto(Scene_Map);1518 this._loadSuccess = true;1519};1520Scene_Load.prototype.onLoadFailure = function() {1521 SoundManager.playBuzzer();1522 this.activateListWindow();1523};1524Scene_Load.prototype.reloadMapIfUpdated = function() {1525 if ($gameSystem.versionId() !== $dataSystem.versionId) {1526 $gamePlayer.reserveTransfer($gameMap.mapId(), $gamePlayer.x, $gamePlayer.y);1527 $gamePlayer.requestMapReload();1528 }1529};1530//-----------------------------------------------------------------------------1531// Scene_GameEnd1532//1533// The scene class of the game end screen.1534function Scene_GameEnd() {1535 this.initialize.apply(this, arguments);1536}1537Scene_GameEnd.prototype = Object.create(Scene_MenuBase.prototype);1538Scene_GameEnd.prototype.constructor = Scene_GameEnd;1539Scene_GameEnd.prototype.initialize = function() {1540 Scene_MenuBase.prototype.initialize.call(this);1541};1542Scene_GameEnd.prototype.create = function() {1543 Scene_MenuBase.prototype.create.call(this);1544 this.createCommandWindow();1545};1546Scene_GameEnd.prototype.stop = function() {1547 Scene_MenuBase.prototype.stop.call(this);1548 this._commandWindow.close();1549};1550Scene_GameEnd.prototype.createBackground = function() {1551 Scene_MenuBase.prototype.createBackground.call(this);1552 this.setBackgroundOpacity(128);1553};1554Scene_GameEnd.prototype.createCommandWindow = function() {1555 this._commandWindow = new Window_GameEnd();1556 this._commandWindow.setHandler('toTitle', this.commandToTitle.bind(this));1557 this._commandWindow.setHandler('cancel', this.popScene.bind(this));1558 this.addWindow(this._commandWindow);1559};1560Scene_GameEnd.prototype.commandToTitle = function() {1561 this.fadeOutAll();1562 SceneManager.goto(Scene_Title);1563};1564//-----------------------------------------------------------------------------1565// Scene_Shop1566//1567// The scene class of the shop screen.1568function Scene_Shop() {1569 this.initialize.apply(this, arguments);1570}1571Scene_Shop.prototype = Object.create(Scene_MenuBase.prototype);1572Scene_Shop.prototype.constructor = Scene_Shop;1573Scene_Shop.prototype.initialize = function() {1574 Scene_MenuBase.prototype.initialize.call(this);1575};1576Scene_Shop.prototype.prepare = function(goods, purchaseOnly) {1577 this._goods = goods;1578 this._purchaseOnly = purchaseOnly;1579 this._item = null;1580};1581Scene_Shop.prototype.create = function() {1582 Scene_MenuBase.prototype.create.call(this);1583 this.createHelpWindow();1584 this.createGoldWindow();1585 this.createCommandWindow();1586 this.createDummyWindow();1587 this.createNumberWindow();1588 this.createStatusWindow();1589 this.createBuyWindow();1590 this.createCategoryWindow();1591 this.createSellWindow();1592};1593Scene_Shop.prototype.createGoldWindow = function() {1594 this._goldWindow = new Window_Gold(0, this._helpWindow.height);1595 this._goldWindow.x = Graphics.boxWidth - this._goldWindow.width;1596 this.addWindow(this._goldWindow);1597};1598Scene_Shop.prototype.createCommandWindow = function() {1599 this._commandWindow = new Window_ShopCommand(this._goldWindow.x, this._purchaseOnly);1600 this._commandWindow.y = this._helpWindow.height;1601 this._commandWindow.setHandler('buy', this.commandBuy.bind(this));1602 this._commandWindow.setHandler('sell', this.commandSell.bind(this));1603 this._commandWindow.setHandler('cancel', this.popScene.bind(this));1604 this.addWindow(this._commandWindow);1605};1606Scene_Shop.prototype.createDummyWindow = function() {1607 var wy = this._commandWindow.y + this._commandWindow.height;1608 var wh = Graphics.boxHeight - wy;1609 this._dummyWindow = new Window_Base(0, wy, Graphics.boxWidth, wh);1610 this.addWindow(this._dummyWindow);1611};1612Scene_Shop.prototype.createNumberWindow = function() {1613 var wy = this._dummyWindow.y;1614 var wh = this._dummyWindow.height;1615 this._numberWindow = new Window_ShopNumber(0, wy, wh);1616 this._numberWindow.hide();1617 this._numberWindow.setHandler('ok', this.onNumberOk.bind(this));1618 this._numberWindow.setHandler('cancel', this.onNumberCancel.bind(this));1619 this.addWindow(this._numberWindow);1620};1621Scene_Shop.prototype.createStatusWindow = function() {1622 var wx = this._numberWindow.width;1623 var wy = this._dummyWindow.y;1624 var ww = Graphics.boxWidth - wx;1625 var wh = this._dummyWindow.height;1626 this._statusWindow = new Window_ShopStatus(wx, wy, ww, wh);1627 this._statusWindow.hide();1628 this.addWindow(this._statusWindow);1629};1630Scene_Shop.prototype.createBuyWindow = function() {1631 var wy = this._dummyWindow.y;1632 var wh = this._dummyWindow.height;1633 this._buyWindow = new Window_ShopBuy(0, wy, wh, this._goods);1634 this._buyWindow.setHelpWindow(this._helpWindow);1635 this._buyWindow.setStatusWindow(this._statusWindow);1636 this._buyWindow.hide();1637 this._buyWindow.setHandler('ok', this.onBuyOk.bind(this));1638 this._buyWindow.setHandler('cancel', this.onBuyCancel.bind(this));1639 this.addWindow(this._buyWindow);1640};1641Scene_Shop.prototype.createCategoryWindow = function() {1642 this._categoryWindow = new Window_ItemCategory();1643 this._categoryWindow.setHelpWindow(this._helpWindow);1644 this._categoryWindow.y = this._dummyWindow.y;1645 this._categoryWindow.hide();1646 this._categoryWindow.deactivate();1647 this._categoryWindow.setHandler('ok', this.onCategoryOk.bind(this));1648 this._categoryWindow.setHandler('cancel', this.onCategoryCancel.bind(this));1649 this.addWindow(this._categoryWindow);1650};1651Scene_Shop.prototype.createSellWindow = function() {1652 var wy = this._categoryWindow.y + this._categoryWindow.height;1653 var wh = Graphics.boxHeight - wy;1654 this._sellWindow = new Window_ShopSell(0, wy, Graphics.boxWidth, wh);1655 this._sellWindow.setHelpWindow(this._helpWindow);1656 this._sellWindow.hide();1657 this._sellWindow.setHandler('ok', this.onSellOk.bind(this));1658 this._sellWindow.setHandler('cancel', this.onSellCancel.bind(this));1659 this._categoryWindow.setItemWindow(this._sellWindow);1660 this.addWindow(this._sellWindow);1661};1662Scene_Shop.prototype.activateBuyWindow = function() {1663 this._buyWindow.setMoney(this.money());1664 this._buyWindow.show();1665 this._buyWindow.activate();1666 this._statusWindow.show();1667};1668Scene_Shop.prototype.activateSellWindow = function() {1669 this._categoryWindow.show();1670 this._sellWindow.refresh();1671 this._sellWindow.show();1672 this._sellWindow.activate();1673 this._statusWindow.hide();1674};1675Scene_Shop.prototype.commandBuy = function() {1676 this._dummyWindow.hide();1677 this.activateBuyWindow();1678};1679Scene_Shop.prototype.commandSell = function() {1680 this._dummyWindow.hide();1681 this._categoryWindow.show();1682 this._categoryWindow.activate();1683 this._sellWindow.show();1684 this._sellWindow.deselect();1685 this._sellWindow.refresh();1686};1687Scene_Shop.prototype.onBuyOk = function() {1688 this._item = this._buyWindow.item();1689 this._buyWindow.hide();1690 this._numberWindow.setup(this._item, this.maxBuy(), this.buyingPrice());1691 this._numberWindow.setCurrencyUnit(this.currencyUnit());1692 this._numberWindow.show();1693 this._numberWindow.activate();1694};1695Scene_Shop.prototype.onBuyCancel = function() {1696 this._commandWindow.activate();1697 this._dummyWindow.show();1698 this._buyWindow.hide();1699 this._statusWindow.hide();1700 this._statusWindow.setItem(null);1701 this._helpWindow.clear();1702};1703Scene_Shop.prototype.onCategoryOk = function() {1704 this.activateSellWindow();1705 this._sellWindow.select(0);1706};1707Scene_Shop.prototype.onCategoryCancel = function() {1708 this._commandWindow.activate();1709 this._dummyWindow.show();1710 this._categoryWindow.hide();1711 this._sellWindow.hide();1712};1713Scene_Shop.prototype.onSellOk = function() {1714 this._item = this._sellWindow.item();1715 this._categoryWindow.hide();1716 this._sellWindow.hide();1717 this._numberWindow.setup(this._item, this.maxSell(), this.sellingPrice());1718 this._numberWindow.setCurrencyUnit(this.currencyUnit());1719 this._numberWindow.show();1720 this._numberWindow.activate();1721 this._statusWindow.setItem(this._item);1722 this._statusWindow.show();1723};1724Scene_Shop.prototype.onSellCancel = function() {1725 this._sellWindow.deselect();1726 this._categoryWindow.activate();1727 this._statusWindow.setItem(null);1728 this._helpWindow.clear();1729};1730Scene_Shop.prototype.onNumberOk = function() {1731 SoundManager.playShop();1732 switch (this._commandWindow.currentSymbol()) {1733 case 'buy':1734 this.doBuy(this._numberWindow.number());1735 break;1736 case 'sell':1737 this.doSell(this._numberWindow.number());1738 break;1739 }1740 this.endNumberInput();1741 this._goldWindow.refresh();1742 this._statusWindow.refresh();1743};1744Scene_Shop.prototype.onNumberCancel = function() {1745 SoundManager.playCancel();1746 this.endNumberInput();1747};1748Scene_Shop.prototype.doBuy = function(number) {1749 $gameParty.loseGold(number * this.buyingPrice());1750 $gameParty.gainItem(this._item, number);1751};1752Scene_Shop.prototype.doSell = function(number) {1753 $gameParty.gainGold(number * this.sellingPrice());1754 $gameParty.loseItem(this._item, number);1755};1756Scene_Shop.prototype.endNumberInput = function() {1757 this._numberWindow.hide();1758 switch (this._commandWindow.currentSymbol()) {1759 case 'buy':1760 this.activateBuyWindow();1761 break;1762 case 'sell':1763 this.activateSellWindow();1764 break;1765 }1766};1767Scene_Shop.prototype.maxBuy = function() {1768 var max = $gameParty.maxItems(this._item) - $gameParty.numItems(this._item);1769 var price = this.buyingPrice();1770 if (price > 0) {1771 return Math.min(max, Math.floor(this.money() / price));1772 } else {1773 return max;1774 }1775};1776Scene_Shop.prototype.maxSell = function() {1777 return $gameParty.numItems(this._item);1778};1779Scene_Shop.prototype.money = function() {1780 return this._goldWindow.value();1781};1782Scene_Shop.prototype.currencyUnit = function() {1783 return this._goldWindow.currencyUnit();1784};1785Scene_Shop.prototype.buyingPrice = function() {1786 return this._buyWindow.price(this._item);1787};1788Scene_Shop.prototype.sellingPrice = function() {1789 return Math.floor(this._item.price / 2);1790};1791//-----------------------------------------------------------------------------1792// Scene_Name1793//1794// The scene class of the name input screen.1795function Scene_Name() {1796 this.initialize.apply(this, arguments);1797}1798Scene_Name.prototype = Object.create(Scene_MenuBase.prototype);1799Scene_Name.prototype.constructor = Scene_Name;1800Scene_Name.prototype.initialize = function() {1801 Scene_MenuBase.prototype.initialize.call(this);1802};1803Scene_Name.prototype.prepare = function(actorId, maxLength) {1804 this._actorId = actorId;1805 this._maxLength = maxLength;1806};1807Scene_Name.prototype.create = function() {1808 Scene_MenuBase.prototype.create.call(this);1809 this._actor = $gameActors.actor(this._actorId);1810 this.createEditWindow();1811 this.createInputWindow();1812};1813Scene_Name.prototype.start = function() {1814 Scene_MenuBase.prototype.start.call(this);1815 this._editWindow.refresh();1816};1817Scene_Name.prototype.createEditWindow = function() {1818 this._editWindow = new Window_NameEdit(this._actor, this._maxLength);1819 this.addWindow(this._editWindow);1820};1821Scene_Name.prototype.createInputWindow = function() {1822 this._inputWindow = new Window_NameInput(this._editWindow);1823 this._inputWindow.setHandler('ok', this.onInputOk.bind(this));1824 this.addWindow(this._inputWindow);1825};1826Scene_Name.prototype.onInputOk = function() {1827 this._actor.setName(this._editWindow.name());1828 this.popScene();1829};1830//-----------------------------------------------------------------------------1831// Scene_Debug1832//1833// The scene class of the debug screen.1834function Scene_Debug() {1835 this.initialize.apply(this, arguments);1836}1837Scene_Debug.prototype = Object.create(Scene_MenuBase.prototype);1838Scene_Debug.prototype.constructor = Scene_Debug;1839Scene_Debug.prototype.initialize = function() {1840 Scene_MenuBase.prototype.initialize.call(this);1841};1842Scene_Debug.prototype.create = function() {1843 Scene_MenuBase.prototype.create.call(this);1844 this.createRangeWindow();1845 this.createEditWindow();1846 this.createDebugHelpWindow();1847};1848Scene_Debug.prototype.createRangeWindow = function() {1849 this._rangeWindow = new Window_DebugRange(0, 0);1850 this._rangeWindow.setHandler('ok', this.onRangeOk.bind(this));1851 this._rangeWindow.setHandler('cancel', this.popScene.bind(this));1852 this.addWindow(this._rangeWindow);1853};1854Scene_Debug.prototype.createEditWindow = function() {1855 var wx = this._rangeWindow.width;1856 var ww = Graphics.boxWidth - wx;1857 this._editWindow = new Window_DebugEdit(wx, 0, ww);1858 this._editWindow.setHandler('cancel', this.onEditCancel.bind(this));1859 this._rangeWindow.setEditWindow(this._editWindow);1860 this.addWindow(this._editWindow);1861};1862Scene_Debug.prototype.createDebugHelpWindow = function() {1863 var wx = this._editWindow.x;1864 var wy = this._editWindow.height;1865 var ww = this._editWindow.width;1866 var wh = Graphics.boxHeight - wy;1867 this._debugHelpWindow = new Window_Base(wx, wy, ww, wh);1868 this.addWindow(this._debugHelpWindow);1869};1870Scene_Debug.prototype.onRangeOk = function() {1871 this._editWindow.activate();1872 this._editWindow.select(0);1873 this.refreshHelpWindow();1874};1875Scene_Debug.prototype.onEditCancel = function() {1876 this._rangeWindow.activate();1877 this._editWindow.deselect();1878 this.refreshHelpWindow();1879};1880Scene_Debug.prototype.refreshHelpWindow = function() {1881 this._debugHelpWindow.contents.clear();1882 if (this._editWindow.active) {1883 this._debugHelpWindow.drawTextEx(this.helpText(), 4, 0);1884 }1885};1886Scene_Debug.prototype.helpText = function() {1887 if (this._rangeWindow.mode() === 'switch') {1888 return 'Enter : ON / OFF';1889 } else {1890 return ('Left : -1\n' +1891 'Right : +1\n' +1892 'Pageup : -10\n' +1893 'Pagedown : +10');1894 }1895};1896//-----------------------------------------------------------------------------1897// Scene_Battle1898//1899// The scene class of the battle screen.1900function Scene_Battle() {1901 this.initialize.apply(this, arguments);1902}1903Scene_Battle.prototype = Object.create(Scene_Base.prototype);1904Scene_Battle.prototype.constructor = Scene_Battle;1905Scene_Battle.prototype.initialize = function() {1906 Scene_Base.prototype.initialize.call(this);1907};1908Scene_Battle.prototype.create = function() {1909 Scene_Base.prototype.create.call(this);1910 this.createDisplayObjects();1911};1912Scene_Battle.prototype.start = function() {1913 Scene_Base.prototype.start.call(this);1914 this.startFadeIn(this.fadeSpeed(), false);1915 BattleManager.playBattleBgm();1916 BattleManager.startBattle();1917};1918Scene_Battle.prototype.update = function() {1919 var active = this.isActive();1920 $gameTimer.update(active);1921 $gameScreen.update();1922 this.updateStatusWindow();1923 this.updateWindowPositions();1924 if (active && !this.isBusy()) {1925 this.updateBattleProcess();1926 }1927 Scene_Base.prototype.update.call(this);1928};1929Scene_Battle.prototype.updateBattleProcess = function() {1930 if (!this.isAnyInputWindowActive() || BattleManager.isAborting() ||1931 BattleManager.isBattleEnd()) {1932 BattleManager.update();1933 this.changeInputWindow();1934 }1935};1936Scene_Battle.prototype.isAnyInputWindowActive = function() {1937 return (this._partyCommandWindow.active ||1938 this._actorCommandWindow.active ||1939 this._skillWindow.active ||1940 this._itemWindow.active ||1941 this._actorWindow.active ||1942 this._enemyWindow.active);1943};1944Scene_Battle.prototype.changeInputWindow = function() {1945 if (BattleManager.isInputting()) {1946 if (BattleManager.actor()) {1947 this.startActorCommandSelection();1948 } else {1949 this.startPartyCommandSelection();1950 }1951 } else {1952 this.endCommandSelection();1953 }1954};1955Scene_Battle.prototype.stop = function() {1956 Scene_Base.prototype.stop.call(this);1957 if (this.needsSlowFadeOut()) {1958 this.startFadeOut(this.slowFadeSpeed(), false);1959 } else {1960 this.startFadeOut(this.fadeSpeed(), false);1961 }1962 this._statusWindow.close();1963 this._partyCommandWindow.close();1964 this._actorCommandWindow.close();1965};1966Scene_Battle.prototype.terminate = function() {1967 Scene_Base.prototype.terminate.call(this);1968 $gameParty.onBattleEnd();1969 $gameTroop.onBattleEnd();1970 AudioManager.stopMe();1971 ImageManager.clearRequest();1972};1973Scene_Battle.prototype.needsSlowFadeOut = function() {1974 return (SceneManager.isNextScene(Scene_Title) ||1975 SceneManager.isNextScene(Scene_Gameover));1976};1977Scene_Battle.prototype.updateStatusWindow = function() {1978 if ($gameMessage.isBusy()) {1979 this._statusWindow.close();1980 this._partyCommandWindow.close();1981 this._actorCommandWindow.close();1982 } else if (this.isActive() && !this._messageWindow.isClosing()) {1983 this._statusWindow.open();1984 }1985};1986Scene_Battle.prototype.updateWindowPositions = function() {1987 var statusX = 0;1988 if (BattleManager.isInputting()) {1989 statusX = this._partyCommandWindow.width;1990 } else {1991 statusX = this._partyCommandWindow.width / 2;1992 }1993 if (this._statusWindow.x < statusX) {1994 this._statusWindow.x += 16;1995 if (this._statusWindow.x > statusX) {1996 this._statusWindow.x = statusX;1997 }1998 }1999 if (this._statusWindow.x > statusX) {2000 this._statusWindow.x -= 16;2001 if (this._statusWindow.x < statusX) {2002 this._statusWindow.x = statusX;2003 }2004 }2005};2006Scene_Battle.prototype.createDisplayObjects = function() {2007 this.createSpriteset();2008 this.createWindowLayer();2009 this.createAllWindows();2010 BattleManager.setLogWindow(this._logWindow);2011 BattleManager.setStatusWindow(this._statusWindow);2012 BattleManager.setSpriteset(this._spriteset);2013 this._logWindow.setSpriteset(this._spriteset);2014};2015Scene_Battle.prototype.createSpriteset = function() {2016 this._spriteset = new Spriteset_Battle();2017 this.addChild(this._spriteset);2018};2019Scene_Battle.prototype.createAllWindows = function() {2020 this.createLogWindow();2021 this.createStatusWindow();2022 this.createPartyCommandWindow();2023 this.createActorCommandWindow();2024 this.createHelpWindow();2025 this.createSkillWindow();2026 this.createItemWindow();2027 this.createActorWindow();2028 this.createEnemyWindow();2029 this.createMessageWindow();2030 this.createScrollTextWindow();2031};2032Scene_Battle.prototype.createLogWindow = function() {2033 this._logWindow = new Window_BattleLog();2034 this.addWindow(this._logWindow);2035};2036Scene_Battle.prototype.createStatusWindow = function() {2037 this._statusWindow = new Window_BattleStatus();2038 this.addWindow(this._statusWindow);2039};2040Scene_Battle.prototype.createPartyCommandWindow = function() {2041 this._partyCommandWindow = new Window_PartyCommand();2042 this._partyCommandWindow.setHandler('fight', this.commandFight.bind(this));2043 this._partyCommandWindow.setHandler('escape', this.commandEscape.bind(this));2044 this._partyCommandWindow.deselect();2045 this.addWindow(this._partyCommandWindow);2046};2047Scene_Battle.prototype.createActorCommandWindow = function() {2048 this._actorCommandWindow = new Window_ActorCommand();2049 this._actorCommandWindow.setHandler('attack', this.commandAttack.bind(this));2050 this._actorCommandWindow.setHandler('skill', this.commandSkill.bind(this));2051 this._actorCommandWindow.setHandler('guard', this.commandGuard.bind(this));2052 this._actorCommandWindow.setHandler('item', this.commandItem.bind(this));2053 this._actorCommandWindow.setHandler('cancel', this.selectPreviousCommand.bind(this));2054 this.addWindow(this._actorCommandWindow);2055};2056Scene_Battle.prototype.createHelpWindow = function() {2057 this._helpWindow = new Window_Help();2058 this._helpWindow.visible = false;2059 this.addWindow(this._helpWindow);2060};2061Scene_Battle.prototype.createSkillWindow = function() {2062 var wy = this._helpWindow.y + this._helpWindow.height;2063 var wh = this._statusWindow.y - wy;2064 this._skillWindow = new Window_BattleSkill(0, wy, Graphics.boxWidth, wh);2065 this._skillWindow.setHelpWindow(this._helpWindow);2066 this._skillWindow.setHandler('ok', this.onSkillOk.bind(this));2067 this._skillWindow.setHandler('cancel', this.onSkillCancel.bind(this));2068 this.addWindow(this._skillWindow);2069};2070Scene_Battle.prototype.createItemWindow = function() {2071 var wy = this._helpWindow.y + this._helpWindow.height;2072 var wh = this._statusWindow.y - wy;2073 this._itemWindow = new Window_BattleItem(0, wy, Graphics.boxWidth, wh);2074 this._itemWindow.setHelpWindow(this._helpWindow);2075 this._itemWindow.setHandler('ok', this.onItemOk.bind(this));2076 this._itemWindow.setHandler('cancel', this.onItemCancel.bind(this));2077 this.addWindow(this._itemWindow);2078};2079Scene_Battle.prototype.createActorWindow = function() {2080 this._actorWindow = new Window_BattleActor(0, this._statusWindow.y);2081 this._actorWindow.setHandler('ok', this.onActorOk.bind(this));2082 this._actorWindow.setHandler('cancel', this.onActorCancel.bind(this));2083 this.addWindow(this._actorWindow);2084};2085Scene_Battle.prototype.createEnemyWindow = function() {2086 this._enemyWindow = new Window_BattleEnemy(0, this._statusWindow.y);2087 this._enemyWindow.x = Graphics.boxWidth - this._enemyWindow.width;2088 this._enemyWindow.setHandler('ok', this.onEnemyOk.bind(this));2089 this._enemyWindow.setHandler('cancel', this.onEnemyCancel.bind(this));2090 this.addWindow(this._enemyWindow);2091};2092Scene_Battle.prototype.createMessageWindow = function() {2093 this._messageWindow = new Window_Message();2094 this.addWindow(this._messageWindow);2095 this._messageWindow.subWindows().forEach(function(window) {2096 this.addWindow(window);2097 }, this);2098};2099Scene_Battle.prototype.createScrollTextWindow = function() {2100 this._scrollTextWindow = new Window_ScrollText();2101 this.addWindow(this._scrollTextWindow);2102};2103Scene_Battle.prototype.refreshStatus = function() {2104 this._statusWindow.refresh();2105};2106Scene_Battle.prototype.startPartyCommandSelection = function() {2107 this.refreshStatus();2108 this._statusWindow.deselect();2109 this._statusWindow.open();2110 this._actorCommandWindow.close();2111 this._partyCommandWindow.setup();2112};2113Scene_Battle.prototype.commandFight = function() {2114 this.selectNextCommand();2115};2116Scene_Battle.prototype.commandEscape = function() {2117 BattleManager.processEscape();2118 this.changeInputWindow();2119};2120Scene_Battle.prototype.startActorCommandSelection = function() {2121 this._statusWindow.select(BattleManager.actor().index());2122 this._partyCommandWindow.close();2123 this._actorCommandWindow.setup(BattleManager.actor());2124};2125Scene_Battle.prototype.commandAttack = function() {2126 BattleManager.inputtingAction().setAttack();2127 this.selectEnemySelection();2128};2129Scene_Battle.prototype.commandSkill = function() {2130 this._skillWindow.setActor(BattleManager.actor());2131 this._skillWindow.setStypeId(this._actorCommandWindow.currentExt());2132 this._skillWindow.refresh();2133 this._skillWindow.show();2134 this._skillWindow.activate();2135};2136Scene_Battle.prototype.commandGuard = function() {2137 BattleManager.inputtingAction().setGuard();2138 this.selectNextCommand();2139};2140Scene_Battle.prototype.commandItem = function() {2141 this._itemWindow.refresh();2142 this._itemWindow.show();2143 this._itemWindow.activate();2144};2145Scene_Battle.prototype.selectNextCommand = function() {2146 BattleManager.selectNextCommand();2147 this.changeInputWindow();2148};2149Scene_Battle.prototype.selectPreviousCommand = function() {2150 BattleManager.selectPreviousCommand();2151 this.changeInputWindow();2152};2153Scene_Battle.prototype.selectActorSelection = function() {2154 this._actorWindow.refresh();2155 this._actorWindow.show();2156 this._actorWindow.activate();2157};2158Scene_Battle.prototype.onActorOk = function() {2159 var action = BattleManager.inputtingAction();2160 action.setTarget(this._actorWindow.index());2161 this._actorWindow.hide();2162 this._skillWindow.hide();2163 this._itemWindow.hide();2164 this.selectNextCommand();2165};2166Scene_Battle.prototype.onActorCancel = function() {2167 this._actorWindow.hide();2168 switch (this._actorCommandWindow.currentSymbol()) {2169 case 'skill':2170 this._skillWindow.show();2171 this._skillWindow.activate();2172 break;2173 case 'item':2174 this._itemWindow.show();2175 this._itemWindow.activate();2176 break;2177 }2178};2179Scene_Battle.prototype.selectEnemySelection = function() {2180 this._enemyWindow.refresh();2181 this._enemyWindow.show();2182 this._enemyWindow.select(0);2183 this._enemyWindow.activate();2184};2185Scene_Battle.prototype.onEnemyOk = function() {2186 var action = BattleManager.inputtingAction();2187 action.setTarget(this._enemyWindow.enemyIndex());2188 this._enemyWindow.hide();2189 this._skillWindow.hide();2190 this._itemWindow.hide();2191 this.selectNextCommand();2192};2193Scene_Battle.prototype.onEnemyCancel = function() {2194 this._enemyWindow.hide();2195 switch (this._actorCommandWindow.currentSymbol()) {2196 case 'attack':2197 this._actorCommandWindow.activate();2198 break;2199 case 'skill':2200 this._skillWindow.show();2201 this._skillWindow.activate();2202 break;2203 case 'item':2204 this._itemWindow.show();2205 this._itemWindow.activate();2206 break;2207 }2208};2209Scene_Battle.prototype.onSkillOk = function() {2210 var skill = this._skillWindow.item();2211 var action = BattleManager.inputtingAction();2212 action.setSkill(skill.id);2213 BattleManager.actor().setLastBattleSkill(skill);2214 this.onSelectAction();2215};2216Scene_Battle.prototype.onSkillCancel = function() {2217 this._skillWindow.hide();2218 this._actorCommandWindow.activate();2219};2220Scene_Battle.prototype.onItemOk = function() {2221 var item = this._itemWindow.item();2222 var action = BattleManager.inputtingAction();2223 action.setItem(item.id);2224 $gameParty.setLastItem(item);2225 this.onSelectAction();2226};2227Scene_Battle.prototype.onItemCancel = function() {2228 this._itemWindow.hide();2229 this._actorCommandWindow.activate();2230};2231Scene_Battle.prototype.onSelectAction = function() {2232 var action = BattleManager.inputtingAction();2233 this._skillWindow.hide();2234 this._itemWindow.hide();2235 if (!action.needsSelection()) {2236 this.selectNextCommand();2237 } else if (action.isForOpponent()) {2238 this.selectEnemySelection();2239 } else {2240 this.selectActorSelection();2241 }2242};2243Scene_Battle.prototype.endCommandSelection = function() {2244 this._partyCommandWindow.close();2245 this._actorCommandWindow.close();2246 this._statusWindow.deselect();2247};2248//-----------------------------------------------------------------------------2249// Scene_Gameover2250//2251// The scene class of the game over screen.2252function Scene_Gameover() {2253 this.initialize.apply(this, arguments);2254}2255Scene_Gameover.prototype = Object.create(Scene_Base.prototype);2256Scene_Gameover.prototype.constructor = Scene_Gameover;2257Scene_Gameover.prototype.initialize = function() {2258 Scene_Base.prototype.initialize.call(this);2259};2260Scene_Gameover.prototype.create = function() {2261 Scene_Base.prototype.create.call(this);2262 this.playGameoverMusic();2263 this.createBackground();2264};2265Scene_Gameover.prototype.start = function() {2266 Scene_Base.prototype.start.call(this);2267 this.startFadeIn(this.slowFadeSpeed(), false);2268};2269Scene_Gameover.prototype.update = function() {2270 if (this.isActive() && !this.isBusy() && this.isTriggered()) {2271 this.gotoTitle();2272 }2273 Scene_Base.prototype.update.call(this);2274};2275Scene_Gameover.prototype.stop = function() {2276 Scene_Base.prototype.stop.call(this);2277 this.fadeOutAll();2278};2279Scene_Gameover.prototype.terminate = function() {2280 Scene_Base.prototype.terminate.call(this);2281 AudioManager.stopAll();2282};2283Scene_Gameover.prototype.playGameoverMusic = function() {2284 AudioManager.stopBgm();2285 AudioManager.stopBgs();2286 AudioManager.playMe($dataSystem.gameoverMe);2287};2288Scene_Gameover.prototype.createBackground = function() {2289 this._backSprite = new Sprite();2290 this._backSprite.bitmap = ImageManager.loadSystem('GameOver');2291 this.addChild(this._backSprite);2292};2293Scene_Gameover.prototype.isTriggered = function() {2294 return Input.isTriggered('ok') || TouchInput.isTriggered();2295};2296Scene_Gameover.prototype.gotoTitle = function() {2297 SceneManager.goto(Scene_Title);...
RadWindow.js
Source:RadWindow.js
1/************************************************2 *3 * Class RadWindow4 *5 ************************************************/6function RadWindow(id)7{8 this.IsIE = (null != document.all) && (window.opera == null); 9 this.IsQuirksMode = (document.all && !window.opera && "CSS1Compat" != document.compatMode);10 11 this.Id = id;12 this.Width = 0;13 this.Height = 0; 14 this.OnClientClosing = null;15 //Private members16 this.ContentWindow = null; 17 this.ContentWrapperTable = null;18 this.Caption = null;19 this.X = 0;20 this.Y = 0;21 this.ShowContentWhenMoving = true; 22 this.CanMove = true;23 this.CanResize = true;2425 this.DragMode = ""; // "move" "size"2627 // dialogs-related stuff28 this.IsModal = false;29 this.Container = null;30 this.Parent = null;3132 this.Argument = null;33 this.ReturnValue = null;34 this.ExitCode = null; // OK, CANCEL, etc.35 this.ZIndex = 0;36 this.AdjustPosInterval = -1;37 this.CallbackFunc = null; // signature: function CallbackFunc() { }38 this.OnLoadFunc = null;39 this.Param = null;4041 this.ModalSetCapture = false;4243 this.UseRadWindow = true;44 this.Window = null; // IHTMLWindow object - this.UseRadWindow == true45 this.InnerHTML = null;46 this._overImage = null;47}4849RadWindow.prototype.OnLoad = function()50{51 if (this.Window && "" != this.Window.document.title)52 {53 this.SetCaption(this.Window.document.title);54 }5556 if (this.OnLoadFunc)57 {58 this.OnLoadFunc();59 }60}6162RadWindow.prototype.SetCapture = function(bContainerCapture)63{64 if (this.UseRadWindow)65 {66 if (null != bContainerCapture)67 {68 this.bContainerCapture = bContainerCapture;69 }70 else if (null != this.bContainerCapture)71 {72 bContainerCapture = this.bContainerCapture;73 }74 else75 {76 bContainerCapture = false;77 }7879 if (this.ModalSetCapture && this.IsIE)80 {81 this.ContentWrapperTable.setCapture(bContainerCapture);82 }83 }84}8586RadWindow.prototype.ReleaseCapture = function()87{88 if (this.UseRadWindow)89 {90 if (this.ModalSetCapture && this.IsIE)91 {92 if (this.ContentWrapperTable)93 this.ContentWrapperTable.releaseCapture();94 }95 }96}9798RadWindow.prototype.SetZIndex = function(zIndex)99{100 this.ZIndex = zIndex;101 if (this.ContentWrapperTable)102 {103 this.ContentWrapperTable.style.zIndex = this.ZIndex;104 }105}106107RadWindow.prototype.ToggleContent = function()108{109 if (this.UseRadWindow && this.IsIE)110 {111 var displayStyle = "";112 if (parseInt(this.Height) == parseInt(this.ContentWrapperTable.style.height))113 {114 this.SetHeight(0);115 displayStyle = "none";116 }117 else118 {119 this.SetHeight(this.Height);120 displayStyle = "inline";121 } 122 }123}124125RadWindow.prototype.IsVisible = function()126{127 if (this.ContentWrapperTable)128 {129 return this.ContentWrapperTable.style.display == "";130 }131 return false;132}133134RadWindow.prototype.ShowWindow = function(show, x, y)135{136 if (null == show)137 {138 show = true;139 }140 var displayStyle = show ? "" : "none";141142 if (this.ContentWrapperTable)143 {144 this.ContentWrapperTable.style.display = displayStyle;145 }146147 if (show)148 { 149 if (null != x && null != y)150 {151 x += 10;152 if (this.ContentWrapperTable)153 {154 this.ContentWrapperTable.style.left = x + 'px';155 this.ContentWrapperTable.style.top = y + 'px';156 }157 } 158 }159160 if (this.Parent)161 {162 this.Parent.OnShowWindow(this, show);163 }164}165166RadWindow.prototype.Initialize2 = function(contentElem, show, containerElem, modal, zIndex)167{168 this.Initialize(contentElem, show);169170 this.IsModal = modal;171 this.Container = containerElem;172173 this.SetZIndex(zIndex);174}175176RadWindow.prototype.Initialize = function(contentElem, show)177{178 //Use the Id to get a reference to the ContentWindow179 if (this.Id)180 {181 this.ContentWrapperTable = document.getElementById("RadWindowContentWrapper" + this.Id);182 this.ContentWindow = document.getElementById("RadWindowContentWindow" + this.Id); 183 this.Caption = document.getElementById("RadWindowCaption" + this.Id);184 185 if (null == show)186 {187 var show = true;188 }189190 this.ShowWindow(show);191 }192 else193 {194 alert ("No window Id provided");195 }196};197198RadWindow.prototype.SetContentWindowSize = function (width, height)199{200 this.Width = width;201 this.Height = height; 202};203204RadWindow.prototype.SetContentVisible = function (visible)205{206 if (this.ContentWindow)207 {208 this.ContentWindow.style.visibility = visible ? "visible" : "hidden";209 }210};211212RadWindow.prototype.Close = function(exitCode, dialogCallbackFunction, execCallBack)213{214 if (null != this.OnClientClosing215 && (this.OnClientClosing(exitCode) == false))216 {217 return;218 }219220 this.ShowWindow(false);221222 this.ExitCode = exitCode;223224 if (this.AdjustPosInterval > -1)225 {226 window.clearInterval(this.AdjustPosInterval);227 this.AdjustPosInterval = -1;228 }229230 if (this.IsModal)231 this.ReleaseCapture();232233 try234 {235 if (this.CallbackFunc && false != execCallBack)236 this.CallbackFunc(this.ReturnValue, this.Param);237 if (dialogCallbackFunction)238 {239 dialogCallbackFunction(this.ReturnValue, this.Param);240 }241 }242 catch (ex)243 {244 }245246 if (this.Parent)247 this.Parent.DestroyWindow(this);248249 if (!this.UseRadWindow && this.Window)250 this.Window.close();251};252253RadWindow.prototype.ToggleCanMove = function(oDiv)254{255 if (!this.UseRadWindow)256 return;257258 this.CanMove = !this.CanMove;259260 oDiv.className = this.CanMove ? "RadERadWindowButtonPinOff" : "RadERadWindowButtonPinOn";261262 if (!this.CanMove)263 {264 if (this.IsIE)265 {266 this.TopOffset = parseInt(this.ContentWrapperTable.style.top) - RadGetScrollTop(document);267 this.StartUpdatePosTimer(100);268 }269 else270 {271 this.ContentWrapperTable.style.position = "fixed";272 }273 }274 else275 {276 if (this.IsIE)277 {278 window.clearInterval(this.AdjustPosInterval);279 this.TopOffset = null;280 }281 else282 {283 this.ContentWrapperTable.style.position = "absolute";284 }285 }286}287288RadWindow.prototype.StartUpdatePosTimer = function(iInterval)289{290 if (!this.UseRadWindow) return;291 this.AdjustPosInterval = window.setInterval("UpdateWindowPos('" + this.Id + "')", iInterval);292}293294function UpdateWindowPos(wndId)295{296 var wnd = GetEditorRadWindowManager().LookupWindow(wndId);297 if (wnd)298 wnd.SetPosition();299}300301RadWindow.prototype.CanDrag = function()302{303 if (!this.UseRadWindow)304 return true;305306 return ("move" == this.DragMode && this.CanMove)307 || ("size" == this.DragMode && this.CanResize);308}309310RadWindow.prototype.OnDragStart = function(e)311{312 this.SetActive(true); //RadWindowActiveWindow = this;313314 if (!this.CanDrag()) return;315316 this.X = (e.offsetX == null) ? e.layerX : e.offsetX;317 this.Y = (e.offsetY == null) ? e.layerY : e.offsetY;318319 MousePosX = e.clientX;320 MousePosY = e.clientY;321322 this.SetContentVisible(this.ShowContentWhenMoving);323 RadWindowDragStart();324};325326RadWindow.prototype.SetActive = function(activate)327{328 if (!this.UseRadWindow) return;329330 if (activate)331 {332 if (null != RadWindowActiveWindow && RadWindowActiveWindow != this)333 RadWindowActiveWindow.SetActive(false);334335 RadWindowActiveWindow = this;336337 if (this.Parent)338 this.Parent.ActivateWindow(this);339 }340 else341 {342 if (this == RadWindowActiveWindow)343 RadWindowActiveWindow = null;344 }345}346347RadWindow.prototype.HitTest = function(x, y)348{349 var left = parseInt(this.ContentWrapperTable.style.left);350 if (isNaN(left))351 return false;352353 var top = parseInt(this.ContentWrapperTable.style.top);354 if (isNaN(top))355 return false;356357 return left <= x358 && x <= (left + this.Width)359 && top <= y360 && y <= (top + this.Height);361}362363RadWindow.prototype.SetPosition = function(left, top)364{365 if (!this.UseRadWindow)366 {367 if (this.Window)368 {369 this.Window.dialogLeft = left;370 this.Window.dialogTop = top;371 }372 }373 else374 {375 if (!left)376 left = this.ContentWrapperTable.style.left;377378 if (!top)379 {380 if (this.TopOffset != null)381 top = parseInt(this.TopOffset) + RadGetScrollTop(document);382 else383 top = this.ContentWrapperTable.style.top;384 }385386 left = parseInt(left);387 top = parseInt(top);388389 if (!isNaN(left) && !isNaN(top))390 {391 if (left <= 0) left = 0;392 if (top <= 0) top = 0;393394 this.ContentWrapperTable.style.left = left + 'px';395 this.ContentWrapperTable.style.top = top + 'px';396 }397 }398}399400RadWindow.prototype.GetWidth = function()401{402 var width = 0;403 if (!this.UseRadWindow)404 {405 if (this.Window) width = this.Window.dialogWidth;406 }407 else408 {409 if (this.IsIE)410 {411 width = parseInt(this.ContentWrapperTable.clientWidth);412 }413 else414 {415 width = parseInt(this.ContentWrapperTable.scrollWidth);416 }417 418 if (isNaN(width)) width = 0; 419 }420 return width;421}422423RadWindow.prototype.SetWidth = function(width)424{425 width = parseInt(width);426 if (isNaN(width)) return;427428 if (!this.UseRadWindow)429 {430 if (this.Window)431 {432 if (this.Window.dialogWidth)433 {434 this.Window.dialogTop = this.Window.screenTop - 30;435 this.Window.dialogLeft = this.Window.screenLeft - 4;436437 this.Window.dialogWidth = width + "px";438 }439 else440 {441 this.Window.outerWidth = width;442 }443 }444 }445 else446 { 447 if (width) this.ContentWrapperTable.style.width = width + "px"; 448 }449}450451RadWindow.prototype.GetHeight = function()452{453 var height = 0;454 if (!this.UseRadWindow)455 {456 if (this.Window)457 height = this.Window.dialogHeight;458 }459 else460 {461 if (this.IsIE)462 {463 height = parseInt(this.ContentWrapperTable.clientHeight);464 if (isNaN(height)) height = 0; 465 }466 else467 {468 height = this.ContentWrapperTable.scrollHeight;469 }470 }471 return height;472}473474RadWindow.prototype.SetHeight = function(height)475{476 height = parseInt(height);477 if (isNaN(height))478 return;479480 if (!this.UseRadWindow)481 {482 if (this.Window)483 {484 if (this.Window.dialogWidth)485 {486 this.Window.dialogTop = this.Window.screenTop - 30;487 this.Window.dialogLeft = this.Window.screenLeft - 4;488 this.Window.dialogHeight = height + "px";489 }490 else491 {492 this.Window.outerHeight = height;493 }494 }495 }496 else497 {498 var oTable = this.ContentWrapperTable; 499 500 //IE HACK!501 var oFirstTable = oTable.getElementsByTagName("TABLE")[0]; 502 if (oFirstTable) oFirstTable.setAttribute("border","1");503 504 this.ContentWrapperTable.style.height = height + "px"; 505 506 //IE HACK!507 this.FixIeHeight(this.ContentWrapperTable, height); 508 oFirstTable.setAttribute("border","0"); 509 }510}511512RadWindow.prototype.FixIeHeight = function(oElem, height)//BUGS in IE in DOCTYPE strict mode513{514 if (this.IsIE && "CSS1Compat" == document.compatMode)515 { 516 var oHeight = oElem.offsetHeight;517 // ie table issue covered518 if (oHeight != 0 && oHeight != height) 519 {520 var difference = (oHeight - height);521 var newHeight = (height - difference);522 523 if (newHeight > 0) 524 {525 oElem.style.height = (newHeight + 4) + "px";//4 is because of the border526 }527 } 528 }529};530531function RadWindowUnInitializeDrag(targetWindow)532{533 var oSpan = RadWindowActiveWindowSpan;534 targetWindow.SetPosition(oSpan.style.left, oSpan.style.top); 535 536 //TEKI: Very quick ugly and dirty hack to handle the IE resizing problem with not taking into account borders when non-XHTML doctype is set 537 var extra = targetWindow.IsQuirksMode ? 6 : 0 ;538 extra += targetWindow.IsIE ? 2 : 0;539 extraHeight = extra;540 if (targetWindow.IsIE && !targetWindow.IsQuirksMode && extraHeight > 0) extraHeight -= 2;541 542 targetWindow.SetSize(extra + (oSpan.clientWidth ? oSpan.clientWidth : oSpan.offsetWidth),543 extraHeight + (oSpan.clientHeight ? oSpan.clientHeight: oSpan.offsetHeight) ); 544 545 if (RadWindowActiveWindowSpan)546 RadWindowActiveWindowSpan.style.visibility = "hidden";547}548549RadWindow.prototype.SetSize = function(width, height)550{551 //TEKI - Safari, etc 552 if (!this.UseRadWindow && !document.all && this.Window && this.Window.resizeTo)553 {554 this.Window.resizeTo(width, height); 555 }556 else557 {558 this.SetWidth(width);559 this.SetHeight(height); 560 }561562 if (width > 0)563 this.Width = width;564565 if (height > 0)566 this.Height = height;567}568569RadWindow.prototype.SetCaption = function(caption)570{571 if (this.Caption)572 {573 this.Caption.innerHTML = caption;574 }575}576577//-------------------------------------MOVEMENT RELATED---------------------------------//578var RadWindowActiveWindow = null; //Points to the active window579var RadWindowActiveWindowSpan = null;580var MousePosX = 0;581var MousePosY = 0;582583//Attach Event Handlers584function RadWindowDragStart()585{586 if (!RadWindowActiveWindow.CanDrag())587 return;588589 if (document.all && document.body.attachEvent)590 {591 document.body.setCapture();592 document.body.attachEvent ("onmousemove", RadWindowDrag);593 document.body.attachEvent ("onmouseup", RadWindowDragEnd);594 }595 else if (document.addEventListener)596 {597 document.addEventListener("mousemove", RadWindowDrag, false);598 document.addEventListener("mouseup", RadWindowDragEnd, false);599 }600601 RadWindowInitializeDrag(RadWindowActiveWindow);602}603604/*Detach Event Handlers*/605function RadWindowDragEnd()606{607 if (document.all && document.body.detachEvent)608 {609 document.body.detachEvent("onmousemove", RadWindowDrag);610 document.body.detachEvent("onmouseup", RadWindowDragEnd);611 document.body.releaseCapture();612 }613 else if (document.removeEventListener)614 {615 document.removeEventListener("mousemove", RadWindowDrag, false);616 document.removeEventListener("mouseup", RadWindowDragEnd, false);617 }618619 if (RadWindowActiveWindow.IsModal)620 RadWindowActiveWindow.SetCapture();621622 RadWindowUnInitializeDrag(RadWindowActiveWindow); 623 RadWindowActiveWindow.SetContentVisible(true);624}625626function RadWindowDrag(e)627{628 if (RadWindowActiveWindow.CanDrag())629 {630 switch (RadWindowActiveWindow.DragMode)631 {632 case "move": 633 RadWindowMove(e);634 break;635636 case "size": 637 RadWindowSize(e);638 break;639 }640 }641 e.cancelBubble = true;642 e.returnValue = false; 643 if (e.preventDefault) e.preventDefault();644645 MousePosX = e.clientX;646 MousePosY = e.clientY;647648 return false;649}650651function RadWindowInitializeDrag(targetWindow)652{653 if (!targetWindow) return;654655 if (!RadWindowActiveWindowSpan)656 {657 RadWindowActiveWindowSpan = document.createElement("DIV"); 658 RadWindowActiveWindowSpan.className = "RadETableWrapperResizeSpan"; 659 RadWindowActiveWindowSpan.style.position = "absolute";660 RadWindowActiveWindowSpan.style.zIndex = 50000;661 document.body.appendChild(RadWindowActiveWindowSpan);662 }663664 RadWindowActiveWindowSpan.style.visibility = "visible";665 RadWindowActiveWindowSpan.style.top = targetWindow.ContentWrapperTable.style.top;666 RadWindowActiveWindowSpan.style.left = targetWindow.ContentWrapperTable.style.left;667 RadWindowActiveWindowSpan.style.width = parseInt(targetWindow.GetWidth()) + "px";668 RadWindowActiveWindowSpan.style.height = parseInt(targetWindow.GetHeight()) + "px";669670 switch (targetWindow.DragMode)671 {672 case "move":673 RadWindowActiveWindowSpan.style.cursor = "default";674 break;675676 case "size":677 RadWindowActiveWindowSpan.style.cursor = "se-resize";678 break;679 }680}681682function RadWindowMove(e)683{684 var RadWindowX = RadWindowActiveWindow.X;685 var RadWindowY = RadWindowActiveWindow.Y;686687 var el = RadWindowActiveWindowSpan;688689 var left = 0;690 var top = 0;691692 if (document.all)693 {694 left = e.clientX * 1 + RadGetScrollLeft(document) - RadWindowX;695 top = e.clientY * 1 + RadGetScrollTop(document) - RadWindowY;696 }697 else698 {699 left = e.pageX * 1 - RadWindowX;700 top = e.pageY * 1 - RadWindowY;701 }702703 if (left < 0)704 {705 left = 0;706 }707708 if (top < 0)709 {710 top = 0;711 }712713 el.style.left = left + "px";714 el.style.top = top + "px";715}716717var minWidth = 155;718var minHeight = 43;719720function RadWindowSize(e)721{722 var offsetX = e.clientX - MousePosX;723 var offsetY = e.clientY - MousePosY;724725 var oSpan = RadWindowActiveWindowSpan;726 727 var width = oSpan.clientWidth ? oSpan.clientWidth : oSpan.offsetWidth;728 var height = oSpan.clientHeight ? oSpan.clientHeight : oSpan.offsetHeight;729 730 //IE HACK731 if (document.all && !window.opera && "CSS1Compat" != document.compatMode)732 {733 width = oSpan.offsetWidth;734 height = oSpan.offsetHeight;735 }736 737 width += offsetX;738 height += offsetY;739740 if (width < minWidth)741 width = minWidth;742743 if (height < minHeight)744 height = minHeight;745746 RadWindowActiveWindowSpan.style.width = width + "px"; 747 RadWindowActiveWindowSpan.style.height = height + "px";748}749750751function GetTopWindow()752{753 var topWindow = null;754755 var argumentsContainParentWindow = false;756 try757 {758 if (window.dialogArguments.parentWindow && argumentsContainParentWindow)759 {760 argumentsContainParentWindow = true;761 }762 }763 catch(ex)764 {765 argumentsContainParentWindow = false;766 }767 if (window.dialogArguments != null && argumentsContainParentWindow)768 {769 topWindow = window.dialogArguments.parentWindow;770 }771 else if (window.opener && !document.all && window.isRadWindow)772 { // NS773 topWindow = opener;774 }775 else776 {777 topWindow = window;778 }779780 var stopLoop = false;781 while (topWindow.parent && !stopLoop)782 {783 try784 {785 topWindowTagName = topWindow.parent.tagName.toUpperCase()786 }787 catch (exception)788 {789 topWindowTagName = "";790 }791792 if (topWindow.parent == topWindow)793 {794 break;795 }796797 try798 {799 /*This check is needed because of the Access denied error when cross-site scripting*/800 if (topWindow.parent.document.domain != window.document.domain)801 {802 break;803 }804 }805 catch(exc)806 {807 stopLoop = true;808 continue;809 }810811 try812 {813 if (topWindow.frameElement != null814 && (topWindow.frameElement.tagName != "IFRAME"815 || topWindow.frameElement.name != "RadWindowContent"))816 {817 break;818 }819 }820 catch(exc)821 {822 alert('in the Exception!');823 stopLoop = true;824 }825826 topWindow = topWindow.parent;827 }828 return topWindow;829}830831function Document_OnFocus(e)832{833 if (!e)834 {835 e = window.event;836 }837 GetEditorRadWindowManager().ActivateWindow();838}839840function Document_OnKeyDown(e)841{842 if (!e)843 {844 e = window.event;845 }846 return GetEditorRadWindowManager().OnKeyDown(e);847}848849function RadWindowInfo()850{851 this.IsIE = (null != document.all);852 this.ID = null;853 this.Url = "";854 this.InnerHtml = "";855 this.InnerObject = null;856 this.Width = 300;857 this.Height = 200;858 this.Caption = "";859 this.IsVisible = true;860 this.Argument = null;861 this.CallbackFunc = null;862 this.OnLoadFunc = null;863 this.Param = null; // callback func param864 this.Resizable = true;865 this.Movable = true;866 this.CloseHide = false; // true - close X hides the window; otherwise close it867 this.UseClassicDialogs = true;868}869870/***********************************************871 *872 * RadWindowManager873 *874 ***********************************************/875function GetEditorRadWindowManager()876{877 //SINGLETON878 var topWindow = GetTopWindow();879 if (!topWindow.radWindowManager)880 {881 topWindow.radWindowManager = new RadEditorWindowManager();882 }883 return topWindow.radWindowManager;884}885886887function RadEditorWindowManager()888{889 this.ChildWindows = new Array();890 this.ActiveWindow = null;891 this.TopWindowZIndex = 10001;892893 this.ContainerPool = new Array();894 this.IsIE = (null != document.all) && (window.opera == null);895896 this._overImage = null;897898 document.body.onfocus = Document_OnFocus;899900 if (this.IsIE && document.body.attachEvent)901 {902 document.body.attachEvent("onkeydown", Document_OnKeyDown);903 }904 else if (document.body.addEventListener)905 {906 document.body.addEventListener("keydown", Document_OnKeyDown, false);907 }908909 /*910 //TEKI - Add dispose mechanism to avoid memory leaks 911 var disposeWindows = function()912 { 913 var manager = GetEditorRadWindowManager();914 if (manager) //Destroy all windows and references915 {916 }917 }918 919 if (window.attachEvent)920 { 921 window.attachEvent("onunload", disposeWindows);922 }923 else if (document.addEventListener)924 {925 window.addEventListener("unload", disposeWindows, false); 926 }*/927}928929930RadEditorWindowManager.prototype.ShowModalWindow = function(radWindowInfo)931{932 var wnd = this.CreateWindow(true, radWindowInfo);933 return wnd;934}935936RadEditorWindowManager.prototype.ShowModallessWindow = function(radWindowInfo)937{938 var wnd = this.CreateWindow(false, radWindowInfo);939 return wnd;940}941942/////////////////////////////////////////////////943// WINDOWS OPERATIONS944RadEditorWindowManager.prototype.CreateWindow = function(bIsModal, radWindowInfo)945{946 if (!radWindowInfo)947 return null;948949 /* TEKI - Under Opera we should always display the classic dialogs because at present there are issues with the IFRAME - params are not passed correctly, the window does not move either.*/ 950 if (window.opera) radWindowInfo.UseClassicDialogs = true;951 952 /********* THIS CODE MAKES MOZILLA USE REGULAR WINDOWS INSTEAD OF RAD WINDOW *********/953 /*954 radWindowInfo.UseClassicDialogs = (this.IsIE && radWindowInfo.UseClassicDialogs)955 || (!this.IsIE && ((null != radWindowInfo.Url && "" != radWindowInfo.Url)956 || (null != radWindowInfo.InnerHtml && "" != radWindowInfo.InnerHtml && radWindowInfo.UseClassicDialogs)));957 */958959 var id = "";960 if (!radWindowInfo.ID || radWindowInfo.ID == "")961 {962 id = this.ChildWindows.length;963 }964 else965 {966 id = radWindowInfo.ID;967 }968969 var caption = "";970 if (null == radWindowInfo.Caption)971 {972 caption = "[" + id + "]";973 }974 else975 {976 caption = radWindowInfo.Caption;977 }978979 var radWindow = this.GetWindow(id);980981 radWindow.Argument = radWindowInfo.Argument;982 radWindow.Width = radWindowInfo.Width;983 radWindow.Height = radWindowInfo.Height;984 radWindow.CallbackFunc = radWindowInfo.CallbackFunc;985 radWindow.Param = radWindowInfo.Param;986 radWindow.CanResize = radWindowInfo.Resizable;987 radWindow.CanMove = radWindowInfo.Movable;988 radWindow.OnLoadFunc = radWindowInfo.OnLoadFunc;989 radWindow.UseRadWindow = !radWindowInfo.UseClassicDialogs;990991 if (radWindowInfo.UseClassicDialogs && this.IsIE)992 {993 var features = "status:no;"994 + "resizable:yes;"995 + "center:yes;"996 + "help:no;"997 + "minimize:no;"998 + "maximize:no;"999 + "scroll:no;"1000 + "border:thin;"1001 + "statusbar:no;"1002 + "dialogWidth:" + radWindowInfo.Width + "px;"1003 + "dialogHeight:" + radWindowInfo.Height + "px";10041005 if (radWindowInfo.InnerHtml && radWindowInfo.InnerHtml != "")1006 {1007 radWindow.InnerHTML = radWindowInfo.InnerHtml;1008 }10091010 if (!radWindowInfo.Url || "" == radWindowInfo.Url)1011 radWindowInfo.Url = "javascript:''";10121013 var dialogArguments = {1014 parentWindow : window1015 , radWindow : radWindow1016 ,IsRadWindowArgs : true //TEKI - A problem with mixing IE dialogAruments with our own!1017 };10181019 window.showModalDialog(radWindowInfo.Url, dialogArguments, features);1020 }1021 else if (radWindowInfo.UseClassicDialogs && !this.IsIE)1022 {1023 if (!radWindowInfo.Url || "" == radWindowInfo.Url)1024 radWindowInfo.Url = "javascript:''";1025 window.childRadWindow = radWindow;1026 radWindow.Window = window.open(radWindowInfo.Url1027 , "_blank"1028 , "status=no,toolbar=no,location=no,resizable=yes,menubar=no,width=" + radWindowInfo.Width + ",height=" + radWindowInfo.Height + ",modal=yes");1029 }1030 else if (!radWindowInfo.UseClassicDialogs)1031 {1032 var container = null;1033 if (this.ContainerPool.length > 0)1034 {1035 container = this.ContainerPool.pop();1036 }1037 else1038 {1039 container = document.createElement("SPAN"); 1040 document.body.appendChild(container);1041 }1042 var oHtml = this.BuildWrapperTableHtml(id1043 , radWindowInfo.Width1044 , radWindowInfo.Height1045 , caption1046 , bIsModal1047 , radWindowInfo.CloseHide);10481049 container.innerHTML = oHtml;1050 var contentElem = (null != radWindowInfo.InnerObject)1051 ? radWindowInfo.InnerObject1052 : document.getElementById("RadWindowContentFrame" + id);1053 radWindow.Initialize2(contentElem, true, container, bIsModal, ++this.TopWindowZIndex);1054 1055 var frm = document.getElementById("RadWindowContentFrame" + id);1056 1057 /*** NS toolbar when toolOnPage = false and content element is DIV ***/1058 radWindow.Window = null != frm ? frm.contentWindow : null;1059 1060 //IE CRASH1061 radWindow.Iframe = frm;1062 1063 if (radWindowInfo.InnerHtml && radWindowInfo.InnerHtml != "")1064 {1065 var doc = frm.contentWindow.document;10661067 doc.open();1068 doc.write(radWindowInfo.InnerHtml);1069 doc.close();1070 }1071 else if (radWindowInfo.Url && radWindowInfo.Url != "")1072 {1073 frm.src = radWindowInfo.Url;1074 }10751076 if (bIsModal)1077 {1078 this.SetCapture(radWindow, false);1079 }10801081 if (null == radWindowInfo.IsVisible)1082 {1083 radWindowInfo.IsVisible = false;1084 }10851086 var windowStartPosition = this.GetWindowStartPosition(radWindowInfo);10871088 radWindow.SetSize(radWindowInfo.Width, radWindowInfo.Height);1089 radWindow.ShowWindow(radWindowInfo.IsVisible, windowStartPosition.horizontal, windowStartPosition.vertical);1090 }10911092 return radWindow;1093}10941095RadEditorWindowManager.prototype.GetWindowStartPosition = function(radWindowInfo)1096{1097 var vcenterDeclination = parseInt(radWindowInfo.Height) / 2;1098 var hcenterDeclination = parseInt(radWindowInfo.Width) / 2;1099 var documentCenterPositions = this.GetDocumentVisibleCenter();11001101 return {1102 horizontal:documentCenterPositions.horizontal - hcenterDeclination,1103 vertical:documentCenterPositions.vertical - vcenterDeclination};1104};11051106RadEditorWindowManager.prototype.GetDocumentVisibleCenter = function()1107{1108 var innerWidth = 0;1109 var innerHeight = 0;1110 1111 var canvas = document.body;11121113 if (RadControlsNamespace.Browser.StandardsMode && !RadControlsNamespace.Browser.IsSafari)1114 {1115 canvas = document.documentElement;1116 }11171118 if (window.innerWidth) 1119 {1120 innerWidth = window.innerWidth;1121 innerHeight = window.innerHeight;1122 } 1123 else1124 {1125 innerWidth = canvas.clientWidth;1126 innerHeight = canvas.clientHeight;1127 }11281129 var documentVisibleCenterX = this.GetVisibleCenterCoordinate(canvas.scrollLeft, innerWidth);1130 var documentVisibleCenterY = this.GetVisibleCenterCoordinate(canvas.scrollTop, innerHeight);11311132 return {1133 horizontal:documentVisibleCenterX,1134 vertical:documentVisibleCenterY1135 };1136};11371138RadEditorWindowManager.prototype.GetVisibleCenterCoordinate = function(documentStartDeclination, visibleSize)1139{1140 var visibleAreaMiddle = parseInt(visibleSize) / 2;1141 return parseInt(documentStartDeclination) + visibleAreaMiddle;1142};11431144RadEditorWindowManager.prototype.DestroyWindow = function(childWindow)1145{1146 var nextWndToActivate = this.GetPrevWindow(childWindow.Id);11471148 this.UnregisterChild(childWindow);11491150 if (nextWndToActivate != childWindow)1151 {1152 this.ActivateWindow(nextWndToActivate);1153 }11541155 //IE CRASH - Force onunload1156 if (childWindow.Iframe)1157 {1158 childWindow.Iframe.src = "javascript:'';";1159 }11601161 eval(this.GetWindowVarName(childWindow.Id) + " = null;");11621163 if (childWindow.Container)1164 {1165 this.ContainerPool.push(childWindow.Container);1166 }1167}11681169RadEditorWindowManager.prototype.GetPrevWindow = function(id)1170{1171 var bNeedPrev = false;1172 var retWnd = null;1173 for (var i = this.ChildWindows.length - 1; i >= 0; i--)1174 {1175 var wnd = this.ChildWindows[i];1176 if (wnd && wnd.Id == id)1177 {1178 bNeedPrev = true;1179 }1180 else if (wnd && bNeedPrev)1181 {1182 return wnd;1183 }1184 else if (null == retWnd)1185 {1186 retWnd = wnd;1187 }1188 }1189 return retWnd;1190}11911192RadEditorWindowManager.prototype.CloseWindow = function(id)1193{1194 var wnd = this.LookupWindow(id);1195 if (wnd)1196 {1197 wnd.Close();1198 }1199}12001201RadEditorWindowManager.prototype.ActivateWindow = function(radWindow)1202{1203 if (!radWindow)1204 {1205 radWindow = this.ActiveWindow;1206 }1207 if (radWindow)1208 {1209 if (radWindow.IsModal)1210 {1211 this.SetCapture(radWindow, false);1212 }12131214 if (radWindow != this.ActiveWindow)1215 {1216 if (this.ActiveWindow)1217 {1218 this.ActiveWindow.SetZIndex(this.TopWindowZIndex - 1);1219 }1220 radWindow.SetZIndex(this.TopWindowZIndex);12211222 this.ActiveWindow = radWindow;1223 }12241225 if (radWindow.IsModal)1226 {1227 this.ShowOverImage(radWindow, true);1228 }1229 }1230}12311232RadEditorWindowManager.prototype.RegisterChild = function(childWindow)1233{1234 this.ChildWindows[this.ChildWindows.length] = childWindow;1235}12361237RadEditorWindowManager.prototype.UnregisterChild = function(childWindow)1238{1239 for (var i = 0; i < this.ChildWindows.length; i++)1240 {1241 var wnd = this.ChildWindows[i];1242 if (wnd == childWindow)1243 {1244 this.ChildWindows[i] = null;1245 return;1246 }1247 }1248}12491250RadEditorWindowManager.prototype.SetCapture = function(childWindow, bContainerCapture)1251{1252 try1253 {1254 if (childWindow)1255 {1256 childWindow.SetCapture(bContainerCapture);1257 }1258 }1259 catch (ex)1260 {1261 }1262}12631264RadEditorWindowManager.prototype.LookupWindow = function(id)1265{1266 for (var i = 0; i < this.ChildWindows.length; i++)1267 {1268 var wnd = this.ChildWindows[i];1269 if (wnd && id == wnd.Id)1270 {1271 return wnd;1272 }1273 }1274 return null; //this.ChildWindows[id];1275}12761277RadEditorWindowManager.prototype.LookupRadWindowByBrowserWindowRef = function(browserWindow)1278{1279 for (var i = 0; i < this.ChildWindows.length; i++)1280 {1281 var radWindow = this.ChildWindows[i];1282 if (null != radWindow && browserWindow == radWindow.Window)1283 {1284 return radWindow;1285 }1286 }1287 return null;1288}12891290RadEditorWindowManager.prototype.GetCurrentRadWindow = function(browserWindow)1291{1292 if (browserWindow.dialogArguments && (true == browserWindow.dialogArguments.IsRadWindowArgs))//TEKI - A problem with mixing IE dialogAruments with our own!1293 {1294 return browserWindow.dialogArguments.radWindow;1295 }1296 else if (browserWindow.opener != null && browserWindow.opener.childRadWindow != null)1297 {1298 return browserWindow.opener.childRadWindow;1299 }1300 else1301 {1302 var oLast = this.LookupRadWindowByBrowserWindowRef(browserWindow);1303 return oLast;1304 }1305}13061307// If already exists a window with same id - returns it;1308// Otherwise creates a new window and returns it1309RadEditorWindowManager.prototype.GetWindow = function(id)1310{1311 var wnd = this.LookupWindow(id);1312 if (!wnd)1313 {1314 var varName = this.GetWindowVarName(id);1315 eval(varName + " = new RadWindow('" + id + "');");1316 wnd = eval(varName);1317 wnd.Parent = this;13181319 this.RegisterChild(wnd);1320 }1321 return wnd;1322}13231324RadEditorWindowManager.prototype.GetWindowVarName = function(id)1325{1326 return "window.radWindow_" + id;1327}13281329RadEditorWindowManager.prototype.GetWindowFromPos = function(x, y)1330{1331 var wnd = null;1332 for (var i = 0; i < this.ChildWindows; i++)1333 {1334 var childWnd = this.ChildWindows[i];1335 if (childWnd && childWnd.HitText(x, y))1336 {1337 if (!wnd || wnd.ZIndex < childWnd.ZIndex)1338 {1339 wnd = childWnd;1340 }1341 }1342 }1343 return wnd;1344}13451346RadEditorWindowManager.prototype.OnShowWindow = function(childWindow, visible)1347{1348 if (visible)1349 {1350 this.ActiveWindow = childWindow;1351 }1352 else1353 {1354 if (this.ActiveWindow == childWindow)1355 {1356 this.ActiveWindow = null;1357 }1358 }13591360 if (childWindow.IsModal)1361 {1362 this.ShowOverImage(childWindow, visible);1363 }1364}13651366RadEditorWindowManager.prototype.OnKeyDown = function(evt)1367{1368 switch (evt.keyCode)1369 {1370 case 115: //F41371 if (evt.altKey && this.ActiveWindow)1372 {1373 //this.ActiveWindow.Close();1374 }1375 else if (evt.ctrlKey && this.ActiveWindow)1376 {1377 //alert("CTRL+F4");1378 }1379 evt.keyCode = 8;1380 break;13811382 case 27: //ESC1383 if (this.ActiveWindow)1384 {1385 this.ActiveWindow.Close();1386 }1387 break;13881389 default:1390 return;1391 }13921393 evt.cancelBubble = true;1394 evt.returnValue = false;1395}13961397RadEditorWindowManager.prototype.BuildWrapperTableHtml = function(id, width, height, caption, bIsModal, bHide)1398{1399 var url = document.all ? "javascript:'';" : "";14001401 var closeFunc = bHide ? "ShowWindow(false)" : "Close()";14021403 var html = "";1404 html += " <table border='0' id='RadWindowContentWrapper" + id + "' class='RadETableWrapper' style='width: " + width+ ";height:" + height + ";z-index:1000; position:absolute;' cellspacing='0' cellpadding='0' >\n"//width='" + width + "px' height='" + height + "px'1405 + " <tr style='height:1px;'>\n"1406 + " <td width='1' class='RadETableWrapperHeaderLeft' nowrap></td>\n"1407 + " <td width='100%' class='RadETableWrapperHeaderCenter' nowrap='true' onmousedown='radWindow_" + id + ".DragMode=\"move\"; return radWindow_" + id + ".OnDragStart(event);' onselectstart='return false;'>\n"1408 + " <span id='RadWindowCaption" + id + "' onselectstart='return false;' class='RadERadWindowHeader'>" + caption + "</span>\n"1409 + " </td>\n";141014111412 if (!bIsModal)1413 {1414 html += " <td width='1' class='RadETableWrapperHeaderCenter' nowrap>\n"1415 + " <span class='RadERadWindowButtonPinOff' id='ButtonPin' onclick='radWindow_" + id + ".ToggleCanMove(this)'> </span>"1416 + " </td>\n";1417 }14181419 html += " <td width='1' class='RadETableWrapperHeaderCenter' nowrap>\n"1420 + " <span class='RadERadWindowButtonClose' id='ButtonClose' onclick='radWindow_" + id + "." + closeFunc + "'> </span>\n"1421 + " </td>\n"1422 + " <td width='1' class='RadETableWrapperHeaderRight' nowrap></td>\n"1423 + " </tr>\n"1424 + " <tr style='height:100%' >\n"1425 + " <td style='height:100%;' colspan='5'>\n"1426 + " <table height='100%' style='height:100%' border='0' width='100%' cellspacing='0' cellpadding='0'>\n"1427 + " <tr style='height:100%'>\n"1428 + " <td width='1' class='RadETableWrapperBodyLeft' nowrap></td>\n"1429 + " <td id='RadWindowContentWindow" + id + "' style='height:100%;border:0px solid blue;' height='100%' width='100%' class='RadETableWrapperBodyCenter' align='left' valign='top' onselectstart='return false;'>\n" 1430 + " <iframe name='RadWindowContent' frameborder='0px' style='height:100%;width:100%;border:0px solid green' id='RadWindowContentFrame" + id + "' src='" + url + "' scrolling='no' border='no' ></iframe>\n"14311432 + " </td>\n"1433 + " <td width='1' class='RadETableWrapperBodyRight' nowrap></td>\n"1434 + " </tr>\n"1435 + " </table>\n"1436 + " </td>\n"1437 + " </tr>\n"1438 + " <tr style='height:1px;'>\n"1439 + " <td colspan='5' width='100%' style='height:1px;' >\n"1440 + " <table border='0' width='100%' height='1' cellspacing='0' cellpadding='0'>\n"1441 + " <tr>\n"1442 + " <td width='1' class='RadETableWrapperFooterLeft' nowrap> </td>\n"1443 + " <td colspan='3' id='BorderBottom' width='100%' class='RadETableWrapperFooterCenter' nowrap> </td> \n"1444 + " <td width='1' id='CornerBottomRight' class='RadETableWrapperFooterRight' onmousedown='radWindow_" + id + ".DragMode=\"size\"; return radWindow_" + id + ".OnDragStart(event);' onselectstart='return false;' nowrap> </td>\n"1445 + " </tr>\n"1446 + " </table>\n"1447 + " </td>\n"1448 + " </tr>\n"1449 + " </table>\n"; 1450 return html;1451}14521453RadEditorWindowManager.prototype.SetOverImage = function(imageId)1454{1455 this._overImage = document.getElementById(imageId);1456}14571458RadEditorWindowManager.prototype.GetOverImage = function()1459{1460 if (!this._overImage)1461 {1462 this._overImage = document.getElementById("OVER_IMG");1463 }1464 return this._overImage;1465}14661467RadEditorWindowManager.prototype.ShowOverImage = function(wnd, visible)1468{1469 var overImage = this.GetOverImage();1470 if (overImage)1471 {1472 if (wnd && visible)1473 {1474 var viewPortSize = RadControlsNamespace.Screen.GetViewPortSize();14751476 overImage.style.position = "absolute";1477 overImage.style.left = 0;1478 overImage.style.top = 0;14791480 overImage.style.width = viewPortSize.width + "px";1481 overImage.style.height = viewPortSize.height + "px";14821483 overImage.style.zIndex = wnd.ZIndex;1484 overImage.style.display = "";//block1485 }1486 else1487 {1488 overImage.style.display = "none";1489 }1490 }1491}14921493/*************************************************1494 *1495 * RadGetScrollTop1496 *1497 *************************************************/1498function RadGetScrollTop(oDocument)1499{1500 if (oDocument.documentElement1501 && oDocument.documentElement.scrollTop)1502 {1503 return oDocument.documentElement.scrollTop;1504 }1505 else1506 {1507 return oDocument.body.scrollTop;1508 }1509}15101511/*************************************************1512 *1513 * RadGetScrollLeft1514 *1515 *************************************************/1516function RadGetScrollLeft(oDocument)1517{1518 if (oDocument.documentElement1519 && oDocument.documentElement.scrollLeft)1520 {1521 return oDocument.documentElement.scrollLeft;1522 }1523 else1524 {1525 return oDocument.body.scrollLeft;1526 }1527}15281529function CloseDlg(returnValue, callbackFunction, execCallBack)1530{1531 if (window.radWindow)1532 {1533 window.radWindow.ReturnValue = returnValue;1534 window.radWindow.Close(null, callbackFunction, execCallBack);1535 }1536}153715381539/*1540* function InitializeRadWindow - called in a dialog to initialize the RadWindow objects1541*1542*/1543function InitializeRadWindow(editorID)1544{1545 window["GetDialogArguments"] = function(isInSpell)1546 {1547 if (window["radWindow"]) 1548 {1549 if (isInSpell)1550 {1551 return window["radWindow"].Argument.CustomArguments;1552 }1553 else1554 {1555 return window["radWindow"].Argument;1556 }1557 }1558 else1559 {1560 return null;1561 }1562 }15631564 window["isRadWindow"] = true;1565 window["radWindow"] = GetEditorRadWindowManager().GetCurrentRadWindow(window);1566 if (window["radWindow"])1567 { 1568 if (window.dialogArguments) 1569 { 1570 window["radWindow"].Window = window;1571 } 1572 window["radWindow"].OnLoad(); 1573 }15741575 var dialogArguments = GetDialogArguments();1576 if (dialogArguments)1577 { 1578 if (dialogArguments.HideEditorStatusBar)1579 {1580 dialogArguments.HideEditorStatusBar(editorID);1581 }1582 }15831584 /* NEW: In Mozilla, clicking on a button will submit the form by default! We want to avoid it!*/1585 if (document.addEventListener)1586 {1587 document.onclick = function(e)1588 {1589 var eventTarget = e.target;1590 if (eventTarget && (eventTarget.tagName == "BUTTON" || (eventTarget.tagName == "INPUT" && eventTarget.type.toLowerCase() == "button" )))1591 {1592 e.cancelBuble = true;1593 e.returnValue = false;1594 if (e.preventDefault) e.preventDefault();1595 return false;1596 }1597 };1598 }1599}
...
window.js
Source:window.js
1import { module, test } from "qunit";2import { buildOwner, runDestroy } from "test-utils";3import { setupStore } from "store-utils";4import sinon from "sinon";5import { run } from "@ember/runloop";6import Adapter from "ember-data/adapter";7import { EventEmitter } from "events";8import Window from "data/models/window/model";9import resetWindowInjector from "inject-loader!nwjs/Window/reset";10import windowInitializerInjector11// eslint-disable-next-line max-len12 from "inject-loader?config&nwjs/Window&nwjs/Window/reset&nwjs/Screen&utils/node/platform!init/instance-initializers/nwjs/window";13module( "init/instance-initializers/nwjs/window", {14 beforeEach() {15 this.owner = buildOwner();16 this.env = setupStore( this.owner );17 this.fakeTimer = sinon.useFakeTimers({18 //toFake: [ "Date", "setTimeout", "clearTimeout" ],19 target: window20 });21 const manifest = {22 window: {23 width: 960,24 height: 54025 }26 };27 const nwWindow = new EventEmitter();28 nwWindow.x = 0;29 nwWindow.y = 0;30 nwWindow.width = manifest.window.width;31 nwWindow.height = manifest.window.height;32 nwWindow.maximize = () => {33 nwWindow.emit( "maximize" );34 };35 nwWindow.minimize = () => {36 nwWindow.emit( "minimize" );37 };38 nwWindow.restore = () => {39 nwWindow.emit( "restore" );40 };41 nwWindow.moveTo = ( x, y ) => {42 nwWindow.x = x;43 nwWindow.y = y;44 nwWindow.emit( "move", x, y );45 };46 nwWindow.resizeTo = ( width, height ) => {47 nwWindow.width = width;48 nwWindow.height = height;49 nwWindow.emit( "resize", width, height );50 };51 const nwScreen = new EventEmitter();52 nwScreen.screens = [53 {54 bounds: {55 x: 0,56 y: 0,57 width: 1920,58 height: 108059 }60 },61 {62 bounds: {63 x: 1920,64 y: 0,65 width: 1920,66 height: 108067 }68 }69 ];70 this.nwWindow = nwWindow;71 this.nwScreen = nwScreen;72 this.saveStub = sinon.stub().callsFake( async function() {73 return this;74 });75 this.owner.register( "model:window", Window.extend({76 save: this.saveStub77 }) );78 const { default: resetWindow } = resetWindowInjector({79 "nwjs/App": { manifest },80 "nwjs/Window": nwWindow,81 "nwjs/Screen": nwScreen82 });83 this.subject = async ( findAll, isWin = false ) => {84 this.findAllStub = sinon.stub().callsFake( async () => findAll ? [ findAll ] : [] );85 this.owner.register( "adapter:window", Adapter.extend({86 findAll: this.findAllStub87 }) );88 const { default: windowInitializer } = windowInitializerInjector({89 "config": {90 "vars": {91 "time-window-event-debounce": 1000,92 "time-window-event-ignore": 200093 }94 },95 "nwjs/Window": nwWindow,96 "nwjs/Window/reset": resetWindow,97 "nwjs/Screen": nwScreen,98 "utils/node/platform": { isWin }99 });100 await windowInitializer( this.owner );101 };102 },103 afterEach() {104 runDestroy( this.owner );105 this.owner = this.env = this.nwWindow = this.nwScreen = null;106 this.fakeTimer.restore();107 }108});109test( "Non-existing window record", async function( assert ) {110 await this.subject();111 assert.ok( this.findAllStub.calledOnce, "Calls findAll once" );112 const windowRecord = this.env.store.peekRecord( "window", 1 );113 assert.propEqual(114 windowRecord.toJSON({ includeId: true }),115 {116 id: "1",117 x: null,118 y: null,119 width: null,120 height: null,121 maximized: false122 },123 "A window record has been created"124 );125 assert.strictEqual( this.nwWindow.x, 0, "x property has not been updated" );126 assert.strictEqual( this.nwWindow.y, 0, "y property has not been updated" );127 assert.strictEqual( this.nwWindow.width, 960, "width property has not been updated" );128 assert.strictEqual( this.nwWindow.height, 540, "height property has not been updated" );129});130test( "Existing window record with postition on first screen", async function( assert ) {131 const maximizeSpy = sinon.spy();132 const restoreSpy = sinon.spy();133 this.nwWindow.on( "maximize", maximizeSpy );134 this.nwWindow.on( "restore", restoreSpy );135 await this.subject({136 id: "1",137 x: 100,138 y: 100,139 width: 1440,140 height: 810,141 maximized: false142 });143 assert.ok( this.findAllStub.calledOnce, "Calls findAll once" );144 assert.notOk( maximizeSpy.called, "Doesn't call maximize" );145 assert.notOk( restoreSpy.called, "Doesn't call restore" );146 const windowRecord = this.env.store.peekRecord( "window", 1 );147 assert.propEqual(148 windowRecord.toJSON({ includeId: true }),149 {150 id: "1",151 x: 100,152 y: 100,153 width: 1440,154 height: 810,155 maximized: false156 },157 "A window record with id 1 exists"158 );159 assert.strictEqual( this.nwWindow.x, 100, "x property has been updated" );160 assert.strictEqual( this.nwWindow.y, 100, "y property has been updated" );161 assert.strictEqual( this.nwWindow.width, 1440, "width property has been updated" );162 assert.strictEqual( this.nwWindow.height, 810, "height property has been updated" );163 // move window off the screen164 run( () => this.nwWindow.moveTo( 481, 271 ) );165 // wait for the debounce time of the move event166 this.fakeTimer.tick( 1000 );167 assert.ok( this.saveStub.notCalled, "Doesn't update record if moved off the screen" );168 assert.propEqual(169 windowRecord.toJSON({ includeId: true }),170 {171 id: "1",172 x: 100,173 y: 100,174 width: 1440,175 height: 810,176 maximized: false177 },178 "The window record doesn't get updated if moved off the screen"179 );180 assert.strictEqual( this.nwWindow.x, 481, "x property has been updated" );181 assert.strictEqual( this.nwWindow.y, 271, "y property has been updated" );182 assert.strictEqual( this.nwWindow.width, 1440, "width property has been updated" );183 assert.strictEqual( this.nwWindow.height, 810, "height property has been updated" );184 // resize window so that parts of it are off the screen185 run( () => {186 this.nwWindow.x = this.nwWindow.y = 100;187 this.nwWindow.resizeTo( 1920, 1080 );188 });189 // wait for the debounce time of the resize event190 this.fakeTimer.tick( 1000 );191 assert.ok( this.saveStub.notCalled, "Doesn't update record if resized off the screen" );192 assert.propEqual(193 windowRecord.toJSON({ includeId: true }),194 {195 id: "1",196 x: 100,197 y: 100,198 width: 1440,199 height: 810,200 maximized: false201 },202 "The window record doesn't get updated if resized off the screen"203 );204 assert.strictEqual( this.nwWindow.x, 100, "x property has been updated" );205 assert.strictEqual( this.nwWindow.y, 100, "y property has been updated" );206 assert.strictEqual( this.nwWindow.width, 1920, "width property has been updated" );207 assert.strictEqual( this.nwWindow.height, 1080, "height property has been updated" );208});209test( "Existing window record with position on second screen", async function( assert ) {210 const maximizeSpy = sinon.spy();211 const restoreSpy = sinon.spy();212 this.nwWindow.on( "maximize", maximizeSpy );213 this.nwWindow.on( "restore", restoreSpy );214 await this.subject({215 id: "1",216 x: 2020,217 y: 100,218 width: 1440,219 height: 810,220 maximized: true221 });222 assert.ok( this.findAllStub.calledOnce, "Calls findAll once" );223 assert.ok( maximizeSpy.calledOnce, "Calls maximize once" );224 assert.notOk( restoreSpy.called, "Doesn't call restore" );225 const windowRecord = this.env.store.peekRecord( "window", 1 );226 assert.propEqual(227 windowRecord.toJSON({ includeId: true }),228 {229 id: "1",230 x: 2020,231 y: 100,232 width: 1440,233 height: 810,234 maximized: true235 },236 "A window record with id 1 exists"237 );238 assert.strictEqual( this.nwWindow.x, 2020, "x property has been updated" );239 assert.strictEqual( this.nwWindow.y, 100, "y property has been updated" );240 assert.strictEqual( this.nwWindow.width, 1440, "width property has been updated" );241 assert.strictEqual( this.nwWindow.height, 810, "height property has been updated" );242 // remove second screen (window is now out of bounds)243 const secondScreen = this.nwScreen.screens.pop();244 // require all three events to be triggered after triggering displayBoundsChanged245 let resolveMove, resolveResize;246 const promise = Promise.all([247 new Promise( r => resolveMove = r ),248 new Promise( r => resolveResize = r )249 ]);250 const moveStub = sinon.stub().callsFake( resolveMove );251 const resizeStub = sinon.stub().callsFake( resolveResize );252 this.nwWindow.once( "move", moveStub );253 this.nwWindow.once( "resize", resizeStub );254 run( () => this.nwScreen.emit( "displayBoundsChanged" ) );255 await promise;256 assert.ok( moveStub.calledOnce, "Emits move event once" );257 assert.ok( resizeStub.calledOnce, "Emits resize event once" );258 assert.notOk( this.saveStub.called, "Hasn't called updateRecord yet" );259 // wait for the debounce time of the events260 this.fakeTimer.tick( 1000 );261 assert.ok( this.saveStub.calledTwice, "Has called updateRecord twice (resize+move)" );262 assert.propEqual(263 windowRecord.toJSON({ includeId: true }),264 {265 id: "1",266 x: 480,267 y: 270,268 width: 960,269 height: 540,270 maximized: true271 },272 "Resets the window record if the screens change and the window is out of bounds"273 );274 assert.strictEqual( this.nwWindow.x, 480, "x property has been reset" );275 assert.strictEqual( this.nwWindow.y, 270, "y property has been reset" );276 assert.strictEqual( this.nwWindow.width, 960, "width property has been reset" );277 assert.strictEqual( this.nwWindow.height, 540, "height property has been reset" );278 this.saveStub.resetHistory();279 // move window between two screens280 this.nwScreen.screens.push( secondScreen );281 this.nwWindow.x = 1440;282 run( () => this.nwWindow.emit( "move", this.nwWindow.x, this.nwWindow.y ) );283 // wait for the debounce time of the move event284 this.fakeTimer.tick( 1000 );285 assert.notOk( this.saveStub.called, "Hasn't called updateRecord" );286 assert.propEqual(287 windowRecord.toJSON({ includeId: true }),288 {289 id: "1",290 x: 480,291 y: 270,292 width: 960,293 height: 540,294 maximized: true295 },296 "Doesn't upgrade the window record if the windows gets moved between two screens"297 );298 assert.strictEqual( this.nwWindow.x, 1440, "x property has been set" );299 assert.strictEqual( this.nwWindow.y, 270, "y property has been set" );300 assert.strictEqual( this.nwWindow.width, 960, "width property has been set" );301 assert.strictEqual( this.nwWindow.height, 540, "height property has been set" );302});303test( "Existing window record with position off screen", async function( assert ) {304 const maximizeSpy = sinon.spy();305 const restoreSpy = sinon.spy();306 this.nwWindow.on( "maximize", maximizeSpy );307 this.nwWindow.on( "restore", restoreSpy );308 await this.subject({309 id: "1",310 x: -10000,311 y: -10000,312 width: 1920,313 height: 1080,314 maximized: true315 });316 assert.ok( this.findAllStub.calledOnce, "Calls findAll once" );317 assert.ok( maximizeSpy.calledOnce, "Calls maximize once" );318 assert.notOk( restoreSpy.called, "Doesn't call restore" );319 assert.notOk( this.saveStub.called, "Hasn't called updateRecord" );320 // wait for the debounce time of the events321 this.fakeTimer.tick( 2000 );322 assert.ok( this.saveStub.calledTwice, "Has called updateRecord twice (move+resize)" );323 const windowRecord = this.env.store.peekRecord( "window", 1 );324 assert.propEqual(325 windowRecord.toJSON({ includeId: true }),326 {327 id: "1",328 x: 480,329 y: 270,330 width: 960,331 height: 540,332 maximized: true333 },334 "Resets the window record when resetting the application window"335 );336 assert.strictEqual( this.nwWindow.x, 480, "x property has been updated" );337 assert.strictEqual( this.nwWindow.y, 270, "y property has been updated" );338 assert.strictEqual( this.nwWindow.width, 960, "width property has been updated" );339 assert.strictEqual( this.nwWindow.height, 540, "height property has been updated" );340});341test( "Maximize and restore", async function( assert ) {342 await this.subject({343 id: "1",344 x: 480,345 y: 270,346 width: 960,347 height: 540,348 maximized: false349 });350 assert.ok( this.findAllStub.calledOnce, "Calls findAll once" );351 const windowRecord = this.env.store.peekRecord( "window", 1 );352 run( () => this.nwWindow.maximize() );353 assert.ok( this.saveStub.calledOnce, "Updates window record on maximize" );354 assert.propEqual(355 windowRecord.toJSON({ includeId: true }),356 {357 id: "1",358 x: 480,359 y: 270,360 width: 960,361 height: 540,362 maximized: true363 },364 "Saves maximized state on maximize"365 );366 this.saveStub.resetHistory();367 run( () => this.nwWindow.restore() );368 assert.ok( this.saveStub.calledOnce, "Updates window record on restore" );369 assert.propEqual(370 windowRecord.toJSON({ includeId: true }),371 {372 id: "1",373 x: 480,374 y: 270,375 width: 960,376 height: 540,377 maximized: false378 },379 "Saves maximized state on restore"380 );381});382test( "Debounce events", async function( assert ) {383 await this.subject({384 id: "1",385 x: 480,386 y: 270,387 width: 960,388 height: 540,389 maximized: false390 });391 assert.ok( this.findAllStub.calledOnce, "Calls findAll once" );392 for ( let i = 0; i < 3; i++ ) {393 run( () => {394 this.nwWindow.emit( "move", 0, 0 );395 this.nwWindow.emit( "resize", 1920, 1080 );396 });397 this.fakeTimer.tick( 999 );398 }399 assert.notOk( this.saveStub.called, "Hasn't called updateRecord yet" );400 this.fakeTimer.tick( 1 );401 assert.ok( this.saveStub.calledTwice, "Has called updateRecord twice (move+resize)" );402 const windowRecord = this.env.store.peekRecord( "window", 1 );403 assert.propEqual(404 windowRecord.toJSON({ includeId: true }),405 {406 id: "1",407 x: 0,408 y: 0,409 width: 1920,410 height: 1080,411 maximized: false412 },413 "Updates the window record only once for each event type"414 );415});416test( "Ignore events on minimize", async function( assert ) {417 await this.subject({418 id: "1",419 x: 480,420 y: 270,421 width: 960,422 height: 540,423 maximized: false424 });425 assert.ok( this.findAllStub.calledOnce, "Calls findAll once" );426 // minimize427 run( () => this.nwWindow.minimize() );428 assert.notOk( this.saveStub.called, "Hasn't called updateRecord yet" );429 // those events will be ignored430 run( () => {431 this.nwWindow.emit( "move", 0, 0 );432 this.nwWindow.emit( "resize", 1920, 1080 );433 });434 this.fakeTimer.tick( 1000 );435 assert.notOk( this.saveStub.called, "Hasn't called updateRecord yet" );436 // these events won't be ignored437 run( () => {438 this.nwWindow.emit( "move", 0, 0 );439 this.nwWindow.emit( "resize", 1920, 1080 );440 });441 this.fakeTimer.tick( 1000 );442 assert.ok( this.saveStub.calledTwice, "Has called updateRecord twice" );443 const windowRecord = this.env.store.peekRecord( "window", 1 );444 assert.propEqual(445 windowRecord.toJSON({ includeId: true }),446 {447 id: "1",448 x: 0,449 y: 0,450 width: 1920,451 height: 1080,452 maximized: false453 },454 "Updates the window record only after the event ignore time expires"455 );456});457test( "Ignore events on maximize", async function( assert ) {458 await this.subject({459 id: "1",460 x: 480,461 y: 270,462 width: 960,463 height: 540,464 maximized: false465 });466 assert.ok( this.findAllStub.calledOnce, "Calls findAll once" );467 // maximize (calls updateRecord() separately)468 run( () => this.nwWindow.maximize() );469 assert.ok( this.saveStub.calledOnce, "Has called updateRecord once" );470 // those events will be ignored471 run( () => {472 this.nwWindow.emit( "move", 0, 0 );473 this.nwWindow.emit( "resize", 1920, 1080 );474 });475 this.fakeTimer.tick( 1000 );476 assert.ok( this.saveStub.calledOnce, "Has called updateRecord still once" );477 // these events won't be ignored478 run( () => {479 this.nwWindow.emit( "move", 0, 0 );480 this.nwWindow.emit( "resize", 1920, 1080 );481 });482 this.fakeTimer.tick( 1000 );483 assert.ok( this.saveStub.calledThrice, "Has called updateRecord thrice" );484 const windowRecord = this.env.store.peekRecord( "window", 1 );485 assert.propEqual(486 windowRecord.toJSON({ includeId: true }),487 {488 id: "1",489 x: 0,490 y: 0,491 width: 1920,492 height: 1080,493 maximized: true494 },495 "Updates the window record only after the event ignore time expires"496 );497});498test( "Special window coordinates on Windows", async function( assert ) {499 this.nwScreen.screens = [500 {501 bounds: {502 x: -64000,503 y: -64000,504 width: 128000,505 height: 128000506 }507 }508 ];509 await this.subject({510 id: "1",511 x: 480,512 y: 270,513 width: 960,514 height: 540,515 maximized: false516 }, true );517 assert.ok( this.findAllStub.calledOnce, "Calls findAll once" );518 const windowRecord = this.env.store.peekRecord( "window", 1 );519 run( () => {520 this.nwWindow.x = -8;521 this.nwWindow.y = -8;522 this.nwWindow.emit( "move", this.nwWindow.x, this.nwWindow.y );523 });524 this.fakeTimer.tick( 1000 );525 assert.propEqual(526 windowRecord.toJSON({ includeId: true }),527 {528 id: "1",529 x: 480,530 y: 270,531 width: 960,532 height: 540,533 maximized: false534 },535 "Doesn't update the window record"536 );537 run( () => {538 this.nwWindow.x = -32000;539 this.nwWindow.y = -32000;540 this.nwWindow.emit( "move", this.nwWindow.x, this.nwWindow.y );541 });542 this.fakeTimer.tick( 1000 );543 assert.propEqual(544 windowRecord.toJSON({ includeId: true }),545 {546 id: "1",547 x: 480,548 y: 270,549 width: 960,550 height: 540,551 maximized: false552 },553 "Doesn't update the window record"554 );...
browserWindow.js
Source:browserWindow.js
1/*******************************************************************************2 * Copyright (c) 2008, 2009 IBM Corporation and others.3 * All rights reserved. This program and the accompanying materials4 * are made available under the terms of the Eclipse Public License v1.05 * which accompanies this distribution, and is available at6 * http://www.eclipse.org/legal/epl-v10.html7 *8 * Contributors:9 * IBM Corporation - initial API and implementation10 *******************************************************************************/11function BarProp(){};12BarProp.prototype = new Array();13/**14 * Object Window()15 * @super Global16 * @constructor17 * @since Common Usage, no standard18*/19function Window(){};20Window.prototype = new Global();21Window.prototype.self = new Window();22Window.prototype.window = new Window();23Window.prototype.frames = new Array();24/**25 * Property closed26 * @type Boolean27 * @memberOf Window28 */29Window.prototype.closed = new Boolean();30/**31 * Property defaultStatus32 * @type String33 * @memberOf Window34 */35Window.prototype.defaultStatus = "";36/**37 * Property document38 * @type Document39 * @memberOf Window40 */41Window.prototype.document= new HTMLDocument();42/**43 * Property history44 * @type History45 * @memberOf Window46 */47Window.prototype.history= new History();48/**49 * Property location50 * @type Location51 * @memberOf Window52 */53Window.prototype.location=new Location();54/**55 * Property name56 * @type String57 * @memberOf Window58 */59Window.prototype.name = "";60/**61 * Property navigator62 * @type Navigator63 * @memberOf Window64 */65Window.prototype.navigator = new Navigator();66/**67 * Property opener68 * @type Window69 * @memberOf Window70 */71Window.prototype.opener = new Window();72/**73 * Property outerWidth74 * @type Number75 * @memberOf Window76 */77Window.prototype.outerWidth = 0;78/**79 * Property outerHeight80 * @type Number81 * @memberOf Window82 */83Window.prototype.outerHeight = 0;84/**85 * Property pageXOffset86 * @type Number87 * @memberOf Window88 */89Window.prototype.pageXOffset = 0;90/**91 * Property pageYOffset92 * @type Number93 * @memberOf Window94 */95Window.prototype.pageYOffset = 0;96/**97 * Property parent98 * @type Window99 * @memberOf Window100 */101Window.prototype.parent = new Window();102/**103 * Property screen104 * @type Screen105 * @memberOf Window106 */107Window.prototype.screen = new Screen();108/**109 * Property status110 * @type String111 * @memberOf Window112 */113Window.prototype.status = "";114/**115 * Property top116 * @type Window117 * @memberOf Window118 */119Window.prototype.top = new Window();120/*121 * These properties may need to be moved into a browswer specific library.122 */123 /**124 * Property innerWidth125 * @type Number126 * @memberOf Window127 */128Window.prototype.innerWidth = 0;129/**130 * Property innerHeight131 * @type Number132 * @memberOf Window133 */134Window.prototype.innerHeight = 0;135/**136 * Property screenX137 * @type Number138 * @memberOf Window139 */140Window.prototype.screenX = 0;141/**142 * Property screenY143 * @type Number144 * @memberOf Window145 */146Window.prototype.screenY = 0;147/**148 * Property screenLeft149 * @type Number150 * @memberOf Window151 */152Window.prototype.screenLeft = 0;153/**154 * Property screenTop155 * @type Number156 * @memberOf Window157 */158Window.prototype.screenTop = 0;159//Window.prototype.event = new Event();160Window.prototype.length = 0;161Window.prototype.scrollbars= new BarProp();162Window.prototype.scrollX=0;163Window.prototype.scrollY=0;164Window.prototype.content= new Window();165Window.prototype.menubar= new BarProp();166Window.prototype.toolbar= new BarProp();167Window.prototype.locationbar= new BarProp();168Window.prototype.personalbar= new BarProp();169Window.prototype.statusbar= new BarProp();170Window.prototype.directories= new BarProp();171Window.prototype.scrollMaxX=0;172Window.prototype.scrollMaxY=0;173Window.prototype.fullScreen="";174Window.prototype.frameElement="";175Window.prototype.sessionStorage="";176/* End properites */177/**178 * function alert() 179 * @param {String} arg180 * @memberOf Window181 */182Window.prototype.alert = function(arg){};183/**184 * function blur() 185 * @memberOf Window186 */187Window.prototype.blur = function(){};188/**189 * function clearInterval(arg) 190 * @param arg191 * @memberOf Window192 */193Window.prototype.clearInterval = function(arg){};194/**195 * function clearTimeout(arg) 196 * @param arg197 * @memberOf Window198 */199Window.prototype.clearTimeout = function(arg){};200/**201 * function close() 202 * @memberOf Window203 */204Window.prototype.close = function(){};205/**206 * function confirm() 207 * @param {String} arg208 * @memberOf Window209 * @returns {Boolean}210 */211Window.prototype.confirm = function(arg){return false;};212/**213 * function focus() 214 * @memberOf Window215 */216Window.prototype.focus = function(){};217/**218 * function getComputedStyle(arg1, arg2) 219 * @param {Element} arg1220 * @param {String} arg2221 * @memberOf Window222 * @returns {Object}223 */224Window.prototype.getComputedStyle = function(arg1,arg2){return new Object();};225/**226 * function moveTo(arg1, arg2) 227 * @param {Number} arg1228 * @param {Number} arg2229 * @memberOf Window230 */231Window.prototype.moveTo = function(arg1,arg2){};232/**233 * function moveBy(arg1, arg2) 234 * @param {Number} arg1235 * @param {Number} arg2236 * @memberOf Window237 */238Window.prototype.moveBy = function(arg1,arg2){};239/**240 * function open(optionalArg1, optionalArg2, optionalArg3, optionalArg4) 241 * @param {String} optionalArg1242 * @param {String} optionalArg2243 * @param {String} optionalArg3244 * @param {Boolean} optionalArg4245 * @memberOf Window246 * @returns {Window}247 */248Window.prototype.open = function(optionalArg1, optionalArg2, optionalArg3, optionalArg4){return new Window();};249/**250 * function print() 251 * @memberOf Window252 */253Window.prototype.print = function(){};254/**255 * function prompt(arg1, arg2) 256 * @param {String} arg1257 * @param {String} arg2258 * @memberOf Window259 * @returns {String}260 */261Window.prototype.prompt = function(){return "";};262/**263 * function resizeTo(arg1, arg2) 264 * @param {Number} arg1265 * @param {Number} arg2266 * @memberOf Window267 */268Window.prototype.resizeTo=function(arg1,arg2){};269/**270 * function resizeBy(arg1, arg2) 271 * @param {Number} arg1272 * @param {Number} arg2273 * @memberOf Window274 */275Window.prototype.resizeBy=function(arg1,arg2){};276/**277 * function scrollTo(arg1, arg2) 278 * @param {Number} arg1279 * @param {Number} arg2280 * @memberOf Window281 */282Window.prototype.scrollTo=function(arg1,arg2){};283/**284 * function scrollBy(arg1, arg2) 285 * @param {Number} arg1286 * @param {Number} arg2287 * @memberOf Window288 */289Window.prototype.scrollBy=function(arg1,arg2){};290/**291 * function setInterval(arg1, arg2) 292 * @param {Object} arg1293 * @param {Number} arg2294 * @memberOf Window295 * @returns {Object}296 */297Window.prototype.setInterval=function(arg1, arg2){return new Object();};298/**299 * function setTimeout(arg1, arg2) 300 * @param {Object} arg1301 * @param {Number} arg2302 * @memberOf Window303 * @returns {Object}304 */305Window.prototype.setTimeout=function(arg1, arg2){return new Object();};306/**307 * function atob(arg) 308 * @param {String} arg309 * @memberOf Window310 * @returns {String}311 */312Window.prototype.atob=function(arg){return "";};313/**314 * function btoa(arg) 315 * @param {String} arg316 * @memberOf Window317 * @returns {String}318 */319Window.prototype.btoa=function(arg){return "";};320/**321 * function setResizable(arg) 322 * @param {Boolean} arg323 * @memberOf Window324 */325Window.prototype.setResizable=function(arg){};326Window.prototype.captureEvents=function(arg1){};327Window.prototype.releaseEvents=function(arg1){};328Window.prototype.routeEvent=function(arg1){};329Window.prototype.enableExternalCapture=function(){};330Window.prototype.disableExternalCapture=function(){};331Window.prototype.find=function(){};332Window.prototype.back=function(){};333Window.prototype.forward=function(){};334Window.prototype.home=function(){};335Window.prototype.stop=function(){};336Window.prototype.scroll=function(arg1,arg2){};337/*338 * These functions may need to be moved into a browser specific library.339 */340Window.prototype.dispatchEvent=function(arg1){};341Window.prototype.removeEventListener=function(arg1,arg2,arg3){};342/* End functions */343/**344 * Object History()345 * @super Object346 * @constructor347 * @since Common Usage, no standard348 */349function History(){};350History.prototype=new Object();351History.prototype.history = new History();352/**353 * Property length354 * @type Number355 * @memberOf History356 */357History.prototype.length = 0;358/**359 * function back()360 * @memberOf History361 */362History.prototype.back = function(){};363/**364 * function forward()365 * @memberOf History366 */367History.prototype.forward = function(){};368/**369 * function back()370 * @param arg371 * @memberOf History372 */373History.prototype.go = function(arg){};374/**375 * Object Location()376 * @super Object377 * @constructor378 * @since Common Usage, no standard379 */380function Location(){};381Location.prototype = new Object();382Location.prototype.location = new Location();383/**384 * Property hash385 * @type String386 * @memberOf Location387 */388Location.prototype.hash = "";389/**390 * Property host391 * @type String392 * @memberOf Location393 */394Location.prototype.host = "";395/**396 * Property hostname397 * @type String398 * @memberOf Location399 */400Location.prototype.hostname = "";401/**402 * Property href403 * @type String404 * @memberOf Location405 */406Location.prototype.href = "";407/**408 * Property pathname409 * @type String410 * @memberOf Location411 */412Location.prototype.pathname = "";413/**414 * Property port415 * @type String416 * @memberOf Location417 */418Location.prototype.port = "";419/**420 * Property protocol421 * @type String422 * @memberOf Location423 */424Location.prototype.protocol = "";425/**426 * Property search427 * @type String428 * @memberOf Location429 */430Location.prototype.search = "";431/**432 * function assign(arg)433 * @param {String} arg434 * @memberOf Location435 */436Location.prototype.assign = function(arg){};437/**438 * function reload(optionalArg)439 * @param {Boolean} optionalArg440 * @memberOf Location441 */442Location.prototype.reload = function(optionalArg){};443/**444 * function replace(arg)445 * @param {String} arg446 * @memberOf Location447 */448Location.prototype.replace = function(arg){};449/**450 * Object Navigator()451 * @super Object452 * @constructor453 * @since Common Usage, no standard454*/455function Navigator(){};456Navigator.prototype = new Object();457Navigator.prototype.navigator = new Navigator();458/**459 * Property appCodeName460 * @type String461 * @memberOf Navigator462 */463Navigator.prototype.appCodeName = "";464/**465 * Property appName466 * @type String467 * @memberOf Navigator468 */469Navigator.prototype.appName = "";470/**471 * Property appVersion472 * @type String473 * @memberOf Navigator474 */475Navigator.prototype.appVersion = "";476/**477 * Property cookieEnabled478 * @type Boolean479 * @memberOf Navigator480 */481Navigator.prototype.cookieEnabled = new Boolean();482/**483 * Property mimeTypes484 * @type Array485 * @memberOf Navigator486 */487Navigator.prototype.mimeTypes = new Array();488/**489 * Property platform490 * @type String491 * @memberOf Navigator492 */493Navigator.prototype.platform = "";494/**495 * Property plugins496 * @type Array497 * @memberOf Navigator498 */499Navigator.prototype.plugins = new Array();500/**501 * Property userAgent502 * @type String503 * @memberOf Navigator504 */505Navigator.prototype.userAgent = "";506/**507 * function javaEnabled()508 * @returns {Boolean}509 * @memberOf Navigator510 */511Navigator.prototype.javaEnabled = function(){return false;};512/**513 * Object Screen()514 * @super Object515 * @constructor516 * @since Common Usage, no standard517*/518function Screen(){};519Screen.prototype = new Object();520Screen.prototype.screen = new Screen();521/**522 * Property availHeight523 * @type Number524 * @memberOf Screen525 */526Navigator.prototype.availHeight = 0;527/**528 * Property availWidth529 * @type Number530 * @memberOf Screen531 */532Navigator.prototype.availWidth = 0;533/**534 * Property colorDepth535 * @type Number536 * @memberOf Screen537 */538Navigator.prototype.colorDepth = 0;539/**540 * Property height541 * @type Number542 * @memberOf Screen543 */544Navigator.prototype.height = 0;545/**546 * Property width547 * @type Number548 * @memberOf Screen549 */...
window-manager.es6
Source:window-manager.es6
1import _ from 'underscore';2import {app} from 'electron';3import WindowLauncher from './window-launcher';4const MAIN_WINDOW = "default"5const WORK_WINDOW = "work"6const SPEC_WINDOW = "spec"7const ONBOARDING_WINDOW = "onboarding"8// const CALENDAR_WINDOW = "calendar"9export default class WindowManager {10 constructor({devMode, benchmarkMode, safeMode, specMode, resourcePath, configDirPath, initializeInBackground, config}) {11 this.initializeInBackground = initializeInBackground;12 this._windows = {};13 const onCreatedHotWindow = (win) => {14 this._registerWindow(win);15 this._didCreateNewWindow(win);16 }17 this.windowLauncher = new WindowLauncher({devMode, benchmarkMode, safeMode, specMode, resourcePath, configDirPath, config, onCreatedHotWindow});18 }19 get(windowKey) {20 return this._windows[windowKey];21 }22 getOpenWindows() {23 const values = [];24 Object.keys(this._windows).forEach((key) => {25 const win = this._windows[key];26 if (win.windowType !== WindowLauncher.EMPTY_WINDOW) {27 values.push(win);28 }29 });30 const score = (win) =>31 (win.loadSettings().mainWindow ? 1000 : win.browserWindow.id);32 return values.sort((a, b) => score(b) - score(a));33 }34 getAllWindowDimensions() {35 const dims = {}36 Object.keys(this._windows).forEach((key) => {37 const win = this._windows[key];38 if (win.windowType !== WindowLauncher.EMPTY_WINDOW) {39 const {x, y, width, height} = win.browserWindow.getBounds()40 const maximized = win.browserWindow.isMaximized()41 const fullScreen = win.browserWindow.isFullScreen()42 dims[key] = {x, y, width, height, maximized, fullScreen}43 }44 });45 return dims46 }47 newWindow(options = {}) {48 const win = this.windowLauncher.newWindow(options);49 const existingKey = this._registeredKeyForWindow(win);50 if (existingKey) {51 delete this._windows[existingKey];52 }53 this._registerWindow(win);54 if (!existingKey) {55 this._didCreateNewWindow(win);56 }57 return win;58 }59 _registerWindow = (win) => {60 if (!win.windowKey) {61 throw new Error("WindowManager: You must provide a windowKey");62 }63 if (this._windows[win.windowKey]) {64 throw new Error(`WindowManager: Attempting to register a new window for an existing windowKey (${win.windowKey}). Use 'get()' to retrieve the existing window instead.`);65 }66 this._windows[win.windowKey] = win;67 }68 _didCreateNewWindow = (win) => {69 win.browserWindow.on("closed", () => {70 delete this._windows[win.windowKey];71 this.quitWinLinuxIfNoWindows();72 });73 // Let the applicationMenu know that there's a new window available.74 // The applicationMenu automatically listens to the `closed` event of75 // the browserWindow to unregister itself76 global.application.applicationMenu.addWindow(win.browserWindow);77 }78 _registeredKeyForWindow = (win) => {79 for (const key of Object.keys(this._windows)) {80 const otherWin = this._windows[key];81 if (win === otherWin) {82 return key;83 }84 }85 return null;86 }87 ensureWindow(windowKey, extraOpts) {88 const win = this._windows[windowKey];89 if (!win) {90 this.newWindow(this._coreWindowOpts(windowKey, extraOpts));91 return;92 }93 if (win.loadSettings().hidden) {94 return;95 }96 if (win.isMinimized()) {97 win.restore();98 win.focus();99 } else if (!win.isVisible()) {100 win.showWhenLoaded();101 } else {102 win.focus();103 }104 }105 sendToAllWindows(msg, {except}, ...args) {106 for (const windowKey of Object.keys(this._windows)) {107 const win = this._windows[windowKey];108 if (win.browserWindow === except) {109 continue;110 }111 if (!win.browserWindow.webContents) {112 continue;113 }114 win.browserWindow.webContents.send(msg, ...args);115 }116 }117 destroyAllWindows() {118 this.windowLauncher.cleanupBeforeAppQuit();119 for (const windowKey of Object.keys(this._windows)) {120 this._windows[windowKey].browserWindow.destroy();121 }122 this._windows = {}123 }124 cleanupBeforeAppQuit() {125 this.windowLauncher.cleanupBeforeAppQuit();126 }127 quitWinLinuxIfNoWindows() {128 // Typically, N1 stays running in the background on all platforms, since it129 // has a status icon you can use to quit it.130 // However, on Windows and Linux we /do/ want to quit if the app is somehow131 // put into a state where there are no visible windows and the main window132 // doesn't exist.133 // This /shouldn't/ happen, but if it does, the only way for them to recover134 // would be to pull up the Task Manager. Ew.135 if (['win32', 'linux'].includes(process.platform)) {136 this.quitCheck = this.quitCheck || _.debounce(() => {137 const visibleWindows = _.filter(this._windows, (win) => win.isVisible())138 const mainWindow = this.get(WindowManager.MAIN_WINDOW);139 const noMainWindowLoaded = !mainWindow || !mainWindow.isLoaded();140 if (visibleWindows.length === 0 && noMainWindowLoaded) {141 app.quit();142 }143 }, 25000);144 this.quitCheck();145 }146 }147 focusedWindow() {148 return _.find(this._windows, (win) => win.isFocused());149 }150 _coreWindowOpts(windowKey, extraOpts = {}) {151 const coreWinOpts = {}152 coreWinOpts[WindowManager.MAIN_WINDOW] = {153 windowKey: WindowManager.MAIN_WINDOW,154 windowType: WindowManager.MAIN_WINDOW,155 title: "Message Viewer",156 neverClose: true,157 bootstrapScript: require.resolve("../window-bootstrap"),158 mainWindow: true,159 width: 640, // Gets reset once app boots up160 height: 396, // Gets reset once app boots up161 center: true, // Gets reset once app boots up162 resizable: false, // Gets reset once app boots up163 initializeInBackground: this.initializeInBackground,164 };165 coreWinOpts[WindowManager.WORK_WINDOW] = {166 windowKey: WindowManager.WORK_WINDOW,167 windowType: WindowManager.WORK_WINDOW,168 coldStartOnly: true, // It's a secondary window, but not a hot window169 title: "Activity",170 hidden: true,171 neverClose: true,172 width: 800,173 height: 400,174 }175 coreWinOpts[WindowManager.ONBOARDING_WINDOW] = {176 windowKey: WindowManager.ONBOARDING_WINDOW,177 windowType: WindowManager.ONBOARDING_WINDOW,178 title: "Account Setup",179 hidden: true, // Displayed by PageRouter::_initializeWindowSize180 frame: false, // Always false on Mac, explicitly set for Win & Linux181 toolbar: false,182 resizable: false,183 width: 900,184 height: 600,185 }186 // The SPEC_WINDOW gets passed its own bootstrapScript187 coreWinOpts[WindowManager.SPEC_WINDOW] = {188 windowKey: WindowManager.SPEC_WINDOW,189 windowType: WindowManager.SPEC_WINDOW,190 title: "Specs",191 frame: true,192 hidden: true,193 isSpec: true,194 devMode: true,195 benchmarkMode: false,196 toolbar: false,197 }198 const defaultOptions = coreWinOpts[windowKey] || {};199 return Object.assign({}, defaultOptions, extraOpts);200 }201}202WindowManager.MAIN_WINDOW = MAIN_WINDOW;203WindowManager.WORK_WINDOW = WORK_WINDOW;204WindowManager.SPEC_WINDOW = SPEC_WINDOW;205// WindowManager.CALENDAR_WINDOW = CALENDAR_WINDOW;...
high-contrast-theme.js
Source:high-contrast-theme.js
1/* *2 *3 * (c) 2009-2019 Ãystein Moseng4 *5 * Default theme for Windows High Contrast Mode.6 *7 * License: www.highcharts.com/license8 *9 * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!10 *11 * */12'use strict';13var theme = {14 chart: {15 backgroundColor: 'window'16 },17 title: {18 style: {19 color: 'windowText'20 }21 },22 subtitle: {23 style: {24 color: 'windowText'25 }26 },27 colorAxis: {28 minColor: 'windowText',29 maxColor: 'windowText',30 stops: []31 },32 colors: ['windowText'],33 xAxis: {34 gridLineColor: 'windowText',35 labels: {36 style: {37 color: 'windowText'38 }39 },40 lineColor: 'windowText',41 minorGridLineColor: 'windowText',42 tickColor: 'windowText',43 title: {44 style: {45 color: 'windowText'46 }47 }48 },49 yAxis: {50 gridLineColor: 'windowText',51 labels: {52 style: {53 color: 'windowText'54 }55 },56 lineColor: 'windowText',57 minorGridLineColor: 'windowText',58 tickColor: 'windowText',59 title: {60 style: {61 color: 'windowText'62 }63 }64 },65 tooltip: {66 backgroundColor: 'window',67 borderColor: 'windowText',68 style: {69 color: 'windowText'70 }71 },72 plotOptions: {73 series: {74 lineColor: 'windowText',75 fillColor: 'window',76 borderColor: 'windowText',77 edgeColor: 'windowText',78 borderWidth: 1,79 dataLabels: {80 connectorColor: 'windowText',81 color: 'windowText',82 style: {83 color: 'windowText',84 textOutline: 'none'85 }86 },87 marker: {88 lineColor: 'windowText',89 fillColor: 'windowText'90 }91 },92 pie: {93 color: 'window',94 colors: ['window'],95 borderColor: 'windowText',96 borderWidth: 197 },98 boxplot: {99 fillColor: 'window'100 },101 candlestick: {102 lineColor: 'windowText',103 fillColor: 'window'104 },105 errorbar: {106 fillColor: 'window'107 }108 },109 legend: {110 backgroundColor: 'window',111 itemStyle: {112 color: 'windowText'113 },114 itemHoverStyle: {115 color: 'windowText'116 },117 itemHiddenStyle: {118 color: '#555'119 },120 title: {121 style: {122 color: 'windowText'123 }124 }125 },126 credits: {127 style: {128 color: 'windowText'129 }130 },131 labels: {132 style: {133 color: 'windowText'134 }135 },136 drilldown: {137 activeAxisLabelStyle: {138 color: 'windowText'139 },140 activeDataLabelStyle: {141 color: 'windowText'142 }143 },144 navigation: {145 buttonOptions: {146 symbolStroke: 'windowText',147 theme: {148 fill: 'window'149 }150 }151 },152 rangeSelector: {153 buttonTheme: {154 fill: 'window',155 stroke: 'windowText',156 style: {157 color: 'windowText'158 },159 states: {160 hover: {161 fill: 'window',162 stroke: 'windowText',163 style: {164 color: 'windowText'165 }166 },167 select: {168 fill: '#444',169 stroke: 'windowText',170 style: {171 color: 'windowText'172 }173 }174 }175 },176 inputBoxBorderColor: 'windowText',177 inputStyle: {178 backgroundColor: 'window',179 color: 'windowText'180 },181 labelStyle: {182 color: 'windowText'183 }184 },185 navigator: {186 handles: {187 backgroundColor: 'window',188 borderColor: 'windowText'189 },190 outlineColor: 'windowText',191 maskFill: 'transparent',192 series: {193 color: 'windowText',194 lineColor: 'windowText'195 },196 xAxis: {197 gridLineColor: 'windowText'198 }199 },200 scrollbar: {201 barBackgroundColor: '#444',202 barBorderColor: 'windowText',203 buttonArrowColor: 'windowText',204 buttonBackgroundColor: 'window',205 buttonBorderColor: 'windowText',206 rifleColor: 'windowText',207 trackBackgroundColor: 'window',208 trackBorderColor: 'windowText'209 }210};...
window-launcher.es6
Source:window-launcher.es6
1import NylasWindow from './nylas-window'2const DEBUG_SHOW_HOT_WINDOW = process.env.SHOW_HOT_WINDOW || false;3let winNum = 0;4/**5 * It takes a full second or more to bootup a Nylas window. Most of this6 * is due to sheer amount of time it takes to parse all of the javascript7 * and follow the require tree.8 *9 * Since popout windows need to be more responsive than that, we pre-load10 * "hot" windows in the background that have most of the code loaded. Then11 * all we need to do is load the handful of packages the window12 * requires and show it.13 */14export default class WindowLauncher {15 static EMPTY_WINDOW = "emptyWindow"16 constructor({devMode, benchmarkMode, safeMode, specMode, resourcePath, configDirPath, onCreatedHotWindow, config}) {17 this.defaultWindowOpts = {18 frame: process.platform !== "darwin",19 hidden: false,20 toolbar: true,21 devMode,22 safeMode,23 benchmarkMode,24 resizable: true,25 windowType: WindowLauncher.EMPTY_WINDOW,26 bootstrapScript: require.resolve("../secondary-window-bootstrap"),27 resourcePath,28 configDirPath,29 }30 this.config = config;31 this.onCreatedHotWindow = onCreatedHotWindow;32 if (specMode) return;33 this.createHotWindow();34 }35 newWindow(options) {36 const opts = Object.assign({}, this.defaultWindowOpts, options);37 let win;38 if (this._mustUseColdWindow(opts)) {39 win = new NylasWindow(opts)40 } else {41 // Check if the hot window has been deleted. This may happen when we are42 // relaunching the app43 if (!this.hotWindow) {44 this.createHotWindow()45 }46 win = this.hotWindow;47 const newLoadSettings = Object.assign({}, win.loadSettings(), opts)48 if (newLoadSettings.windowType === WindowLauncher.EMPTY_WINDOW) {49 throw new Error("Must specify a windowType")50 }51 // Reset the loaded state and update the load settings.52 // This will fire `NylasEnv::populateHotWindow` and reload the53 // packages.54 win.windowKey = opts.windowKey || `${opts.windowType}-${winNum}`;55 winNum += 1;56 win.windowType = opts.windowType;57 if (options.bounds) {58 win.browserWindow.setBounds(options.bounds);59 }60 if (options.width && options.height) {61 win.browserWindow.setSize(options.width, options.height);62 }63 win.setLoadSettings(newLoadSettings);64 setTimeout(() => {65 // We need to regen a hot window, but do it in the next event66 // loop to not hang the opening of the current window.67 this.createHotWindow();68 }, 0)69 }70 if (!opts.hidden && !opts.initializeInBackground) {71 // NOTE: In the case of a cold window, this will show it once72 // loaded. If it's a hotWindow, since hotWindows have a73 // `hidden:true` flag, nothing will show. When `setLoadSettings`74 // starts populating the window in `populateHotWindow` we'll show or75 // hide based on the windowOpts76 win.showWhenLoaded()77 }78 return win79 }80 createHotWindow() {81 this.hotWindow = new NylasWindow(this._hotWindowOpts());82 this.onCreatedHotWindow(this.hotWindow);83 if (DEBUG_SHOW_HOT_WINDOW) {84 this.hotWindow.showWhenLoaded();85 }86 }87 // Note: This method calls `browserWindow.destroy()` which closes88 // windows without waiting for them to load or firing window lifecycle89 // events. This is necessary for the app to quit promptly on Linux.90 // https://phab.nylas.com/T128291 cleanupBeforeAppQuit() {92 if (this.hotWindow != null) {93 this.hotWindow.browserWindow.destroy()94 }95 this.hotWindow = null96 }97 // Some properties, like the `frame` or `toolbar` can't be updated once98 // a window has been setup. If we detect this case we have to bootup a99 // plain NylasWindow instead of using a hot window.100 _mustUseColdWindow(opts) {101 const {bootstrapScript, frame} = this.defaultWindowOpts;102 const usesOtherBootstrap = opts.bootstrapScript !== bootstrapScript;103 const usesOtherFrame = (!!opts.frame) !== frame;104 const requestsColdStart = opts.coldStartOnly;105 return usesOtherBootstrap || usesOtherFrame || requestsColdStart;106 }107 _hotWindowOpts() {108 const hotWindowOpts = Object.assign({}, this.defaultWindowOpts);109 hotWindowOpts.packageLoadingDeferred = true;110 hotWindowOpts.hidden = DEBUG_SHOW_HOT_WINDOW;111 return hotWindowOpts112 }...
Using AI Code Generation
1const mb = require('mountebank');2const { createLogger, format, transports } = require('winston');3const { combine, timestamp, label, printf } = format;4const myFormat = printf(({ level, message, label, timestamp }) => {5 return `${timestamp} [${label}] ${level}: ${message}`;6});7const logger = createLogger({8 format: combine(9 label({ label: 'test' }),10 timestamp(),11 new transports.Console(),12 new transports.File({ filename: 'test.log' })13});14mb.create({15}, function (error, server) {16 if (error) {17 logger.error(error);18 }19 else {20 logger.info('Server started');21 }22});23[Mountebank](
Using AI Code Generation
1const mb = require('mountebank')2 {3 {4 {5 equals: {6 }7 }8 {9 is: {10 headers: {11 },12 body: {13 }14 }15 }16 }17 }18mb.create({port: port, pidfile: 'mb.pid', logfile: 'mb.log', imposters: imposters}, () => {19 console.log(`Running on port ${port}`)20})21const request = require('request-promise')22const mb = require('mountebank')23 {24 {25 {26 equals: {27 }28 }29 {30 is: {31 headers: {32 },33 body: {34 }35 }36 }37 }38 }39describe('Test', () => {40 beforeAll(() => {41 mb.create({port: port, pidfile: 'mb.pid', logfile: 'mb.log', imposters: imposters}, () => {42 console.log(`Running on port ${port}`)43 })44 })45 afterAll(() => {46 mb.delete({port: port}, () => {console.log('Done')})47 })48 it('should test', async () => {49 expect(result).toEqual('{"result":"test"}')50 })51})
Using AI Code Generation
1const mb = require('mountebank');2const port = 2525;3const protocol = 'http';4 {5 {6 {7 is: {8 headers: {9 },10 body: JSON.stringify({ foo: 'bar' })11 }12 }13 }14 }15];16mb.create({ port, protocol, imposters })17 .then(() => console.log('Mountebank started successfully'))18 .catch(error => console.error('Error starting mountebank', error));19const mb = require('mountebank');20const port = 2525;21const protocol = 'http';22 {23 {24 {25 is: {26 headers: {27 },28 body: JSON.stringify({ foo: 'bar' })29 }30 }31 }32 }33];34mb.start({ port, protocol, imposters })35 .then(() => console.log('Mountebank started successfully'))36 .catch(error => console.error('Error starting mountebank', error));
Using AI Code Generation
1const { createServer } = require('http');2const { createClient } = require('mbjs');3const mb = createClient({ host: 'localhost', port: 2525 });4const server = createServer((req, res) => {5 res.end('Hello World!');6});7mb.post('/imposters', {8 {9 predicates: [{ equals: { method: 'GET', path: '/' } }],10 responses: [{ is: { body: 'Hello from mountebank!' } }]11 }12})13 .then(() => server.listen(3000))14 .catch(error => {15 console.error('Something went wrong:', error);16 process.exit(1);17 });
Using AI Code Generation
1var mb = require('mountebank');2var mb = require('mountebank').create();3{4 {5 {6 "is": {7 "headers": {8 },9 }10 }11 }12}13var mb = require('mountebank').create();14mb.start().then(function () {15 return mb.post('/imposters', {16 {17 {18 is: {19 headers: {20 },21 }22 }23 }24 });25}).then(function () {26 return mb.get('/imposters', 2525);27}).then(function (response) {28 console.log(response.body);29}).finally(function () {30 mb.stop();31});32var mb = require('mountebank').create();33mb.start().then(function () {34 return mb.post('/imposters', {35 {36 {37 is: {38 headers: {39 },40 }41 }42 }43 });44}).then(function () {45 return mb.get('/imposters', 2525);46}).then(function (response) {47 console.log(response.body);48}).finally(function () {49 mb.stop();50});51var mb = require('mountebank').create();52mb.start().then(function () {53 return mb.post('/imposters', {54 {55 {56 is: {
Using AI Code Generation
1const { createServer } = require('https');2const { createClient } = require('mbjs');3const client = createClient({ port: 2525 });4const server = createServer((req, res) => {5 res.writeHead(200, { 'Content-Type': 'text/plain' });6 res.end('Hello World\n');7});8client.post('/imposters', {9 {10 {11 is: {12 headers: {13 },14 },15 },16 {17 equals: {18 },19 },20 },21})22 .then(() => server.listen(3000))23 .catch(error => console.error(error));
Using AI Code Generation
1const mb = require('mountebank');2const port = 2525;3const imposter = {4}5mb.create(port).then(() => {6 mb.post('/imposters', imposter).then(() => {7 console.log('Imposter created');8 }).catch((err) => {9 console.log(err);10 });11}).catch((err) => {12 console.log(err);13});
Using AI Code Generation
1var mb = require('mb-http');2var mb = mb.create({3});4mb.start()5 .then(function () {6 console.log('mb started');7 })8 .catch(function (error) {9 console.error('mb failed to start', error);10 });11mb.stop()12 .then(function () {13 console.log('mb stopped');14 })15 .catch(function (error) {16 console.error('mb failed to stop', error);17 });18mb.createImposter({19 {20 {21 is: {22 headers: {23 },24 body: JSON.stringify({ message: 'Hello world!' })25 }26 }27 }28})29 .then(function (imposter) {30 console.log('imposter created', imposter);31 })32 .catch(function (error) {33 console.error('imposter failed to create', error);34 });35mb.getImposters()36 .then(function (imposters) {37 console.log('imposters', imposters);38 })39 .catch(function (error) {40 console.error('failed to get imposters', error);41 });42mb.getImposter(3000)43 .then(function (imposter) {44 console.log('imposter', imposter);45 })46 .catch(function (error) {47 console.error('failed to get imposter', error);48 });49mb.deleteImposter(3000)50 .then(function () {51 console.log('imposter deleted');52 })53 .catch(function (error) {54 console.error('imposter failed to delete', error);55 });56mb.deleteAllImposters()57 .then(function () {58 console.log('imposters deleted');59 })
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!