How to use ownerFrame method in Playwright Internal

Best JavaScript code snippet using playwright-internal

TitleBar.js

Source:TitleBar.js Github

copy

Full Screen

1//==============================================================================2//3// TOBESOFT Co., Ltd.4// Copyright 2014 TOBESOFT Co., Ltd.5// All Rights Reserved.6//7// NOTICE: TOBESOFT permits you to use, modify, and distribute this file 8// in accordance with the terms of the license agreement accompanying it.9//10// Readme URL: http://www.nexacro.co.kr/legal/nexacro-public-license-readme-1.0.html 11//12//==============================================================================13if (!nexacro.TitleBar) {14 nexacro.TitleBar_Style = function (target) {15 this.icon = null;16 this._target = target || null;17 };18 var _pTitleBarStyle = nexacro._createPrototype(nexacro.Style, nexacro.TitleBar_Style);19 nexacro.TitleBar_Style.prototype = _pTitleBarStyle;20 eval(nexacro._createValueAttributeEvalStr("_pTitleBarStyle", "icon"));21 _pTitleBarStyle.__custom_emptyObject = function () {22 this.icon = null;23 };24 _pTitleBarStyle.__get_custom_style_value = function () {25 var val = "";26 if (this.icon && !this.icon._is_empty) {27 val += "icon:" + this.icon._value + "; ";28 }29 return val;30 };31 nexacro.TitleBar_CurrentStyle = function () {32 this.icon = null;33 };34 var _pTitleBarCurrentStyle = nexacro._createPrototype(nexacro.CurrentStyle, nexacro.TitleBar_CurrentStyle);35 nexacro.TitleBar_CurrentStyle.prototype = _pTitleBarCurrentStyle;36 _pTitleBarCurrentStyle.__custom_emptyObject = _pTitleBarStyle.__custom_emptyObject;37 _pTitleBarCurrentStyle.__get_custom_style_value = _pTitleBarStyle.__get_custom_style_value;38 delete _pTitleBarStyle;39 delete _pTitleBarCurrentStyle;40 nexacro.TitleBar = function (id, position, left, top, width, height, right, bottom, parent) {41 nexacro.Form.call(this, id, position, left, top, width, height, right, bottom, parent);42 this.minbutton = null;43 this.normalbutton = null;44 this.maxbutton = null;45 this.closebutton = null;46 this._state_openstatus = 0;47 if (parent && parent._is_frame && parent._is_window) {48 this._is_track = false;49 }50 else {51 this._is_track = true;52 }53 this._icon_elem = null;54 this._text_elem = null;55 this._titletext = "";56 this._is_verticalmin = false;57 this._absolute_style = 0;58 this._iconwidth = 0;59 this._iconheight = 0;60 this._is_scrollable = false;61 this._is_nc_control = true;62 this._is_focus_accept = false;63 };64 var _pTitleBar = nexacro._createPrototype(nexacro.Form, nexacro.TitleBar);65 nexacro.TitleBar.prototype = _pTitleBar;66 _pTitleBar._type_name = "TitleBar";67 nexacro.TitleBar._default_align = nexacro.Component._default_left_align;68 nexacro.TitleBar._default_icon = null;69 _pTitleBar.on_create_custom_style = function () {70 return new nexacro.TitleBar_Style(this);71 };72 _pTitleBar.on_create_custom_currentStyle = function () {73 return new nexacro.TitleBar_CurrentStyle();74 };75 _pTitleBar.on_apply_custom_pseudo = function (pseudo) {76 var curstyle = this.currentstyle;77 var font = this.on_find_CurrentStyle_font(pseudo);78 if (curstyle.font != font) {79 curstyle.font = font;80 this.on_apply_style_font(font);81 }82 var color = this.on_find_CurrentStyle_color(pseudo);83 if (curstyle.color != color) {84 curstyle.color = color;85 this.on_apply_style_color(color);86 }87 var icon = this.on_find_CurrentStyle_icon(pseudo);88 if (icon != curstyle.icon) {89 curstyle.icon = icon;90 this.on_apply_style_icon(icon);91 }92 var padding = this.on_find_CurrentStyle_padding(pseudo);93 if (curstyle.padding != padding) {94 curstyle.padding = padding;95 this.on_apply_style_padding(padding);96 }97 var rtlimagemirroring = this.on_find_CurrentStyle_rtlimagemirroring(pseudo);98 if (rtlimagemirroring != curstyle.rtlimagemirroring) {99 curstyle.rtlimagemirroring = rtlimagemirroring;100 this.on_apply_style_rtlimagemirroring(rtlimagemirroring);101 }102 };103 _pTitleBar.on_find_CurrentStyle_icon = function (pseudo) {104 var icon = this._find_pseudo_obj("icon", pseudo, "value");105 return icon ? icon : nexacro.TitleBar._default_icon;106 };107 _pTitleBar.on_update_style_icon = function () {108 this.on_apply_style_icon(this.currentstyle.icon = this.on_find_CurrentStyle_icon(this._pseudo));109 };110 _pTitleBar.on_update_style_padding = function () {111 var padding = this.currentstyle.padding = this.on_find_CurrentStyle_padding(this._pseudo);112 if (this._control_element) {113 this._control_element.setElementPadding(padding);114 this._updateClientSize(this._control_element);115 }116 };117 _pTitleBar.on_apply_style_padding = function (padding) {118 if (this._control_element) {119 this._control_element.setElementPadding(padding);120 }121 };122 _pTitleBar.on_apply_style_icon = function (icon) {123 if (this._icon_elem) {124 var ownerframe = this.getOwnerFrame();125 if (ownerframe && ownerframe.currentstyle.icon && !ownerframe.currentstyle.icon._is_empty) {126 icon = ownerframe.currentstyle.icon;127 }128 if (icon == null) {129 icon = this.currentstyle.icon;130 }131 var iconsize = nexacro._getImageSize(icon.value, this._on_loadicon, this, this._getRefFormBaseUrl());132 if (iconsize) {133 if ((iconsize.width > 0) && (iconsize.height > 0)) {134 this._iconwidth = iconsize.width;135 this._iconheight = iconsize.height;136 }137 }138 if (ownerframe.showtitleicon == false) {139 this._icon_elem.setElementImageUrl("");140 }141 else {142 this._icon_elem.setElementImageUrl(icon.value);143 }144 this._updateControlPosition();145 }146 };147 _pTitleBar.on_apply_style_font = function (font) {148 if (this._text_elem) {149 this._text_elem.setElementFont(font);150 }151 };152 _pTitleBar.on_apply_style_color = function (color) {153 if (this._text_elem) {154 this._text_elem.setElementColor(color);155 }156 };157 _pTitleBar.on_apply_style_align = function (align) {158 if (this._text_elem) {159 this._text_elem.setElementAlign(align);160 }161 };162 _pTitleBar.on_apply_style_rtlimagemirroring = function (rtlimagemirroring) {163 var control_elem = this._control_element;164 var img_elem = this._img_elem;165 if (this.minbutton) {166 this.minbutton.on_apply_style_rtlimagemirroring(rtlimagemirroring);167 }168 if (this.maxbutton) {169 this.maxbutton.on_apply_style_rtlimagemirroring(rtlimagemirroring);170 }171 if (this.normalbutton) {172 this.normalbutton.on_apply_style_rtlimagemirroring(rtlimagemirroring);173 }174 if (this.closebutton) {175 this.closebutton.on_apply_style_rtlimagemirroring(rtlimagemirroring);176 }177 };178 _pTitleBar.on_create_contents = function () {179 var control_elem = this.getElement();180 if (control_elem) {181 var ownerframe = this.getOwnerFrame();182 var curstyle = this.currentstyle;183 var iconElem = this._icon_elem = new nexacro.AlignImageElement(control_elem);184 iconElem.setElementAlignXY("center", "middle");185 var textElem = this._text_elem = new nexacro.TextBoxElement(control_elem);186 if (this._titletext) {187 textElem.setElementText(this._titletext);188 }189 textElem.setElementAlign(curstyle.align ? curstyle.align : nexacro.TitleBar._default_align);190 textElem.setElementFont(curstyle.font);191 textElem.setElementColor(curstyle.color);192 var minBtn = this.minbutton = new nexacro.ImageButtonCtrl("minbutton", "absolute", 0, 0, 0, 0, null, null, this);193 var maxBtn = this.maxbutton = new nexacro.ImageButtonCtrl("maxbutton", "absolute", 0, 0, 0, 0, null, null, this);194 var normalBtn = this.normalbutton = new nexacro.ImageButtonCtrl("normalbutton", "absolute", 0, 0, 0, 0, null, null, this);195 var closeBtn = this.closebutton = new nexacro.ImageButtonCtrl("closebutton", "absolute", 0, 0, 0, 0, null, null, this);196 normalBtn.set_visible(false);197 if (ownerframe) {198 minBtn._setEventHandler("onclick", ownerframe.on_minbutton_click, ownerframe);199 maxBtn._setEventHandler("onclick", ownerframe.on_maxbutton_click, ownerframe);200 normalBtn._setEventHandler("onclick", ownerframe.on_normalbutton_click, ownerframe);201 closeBtn._setEventHandler("onclick", ownerframe.on_closebutton_click, ownerframe);202 this._setEventHandler("ondblclick", ownerframe._on_titlebar_dblclick, ownerframe);203 }204 var icon;205 if (ownerframe && ownerframe.currentstyle.icon && !ownerframe.currentstyle.icon._is_empty) {206 icon = ownerframe.currentstyle.icon;207 }208 else {209 icon = this.currentstyle.icon;210 }211 if (icon) {212 var val = nexacro._getURIValue(icon._value);213 val = nexacro._getImageLocation(val, this._getRefFormBaseUrl());214 if (ownerframe.showtitleicon != false) {215 iconElem.setElementImageUrl(icon.value);216 }217 var iconsize = nexacro._getImageSize(val, this._on_loadicon, this, this._getRefFormBaseUrl());218 if (iconsize) {219 if ((iconsize.width > 0) && (iconsize.height > 0)) {220 this._iconwidth = iconsize.width;221 this._iconheight = iconsize.height;222 if (this._icon_elem) {223 this._updateControlPosition(this._client_width, this._client_height);224 }225 var frame = this.parent;226 if (frame && frame._is_window) {227 var _window = frame._getWindow();228 if (_window) {229 nexacro._setWindowHandleIcon(_window._handle, val);230 }231 }232 }233 }234 }235 this._updateControlPosition(this._client_width, this._client_height);236 minBtn.createComponent();237 maxBtn.createComponent();238 normalBtn.createComponent();239 closeBtn.createComponent();240 }241 };242 _pTitleBar.on_created_contents = function () {243 this._icon_elem.create();244 this._text_elem.create();245 this.minbutton.on_created();246 this.maxbutton.on_created();247 this.normalbutton.on_created();248 this.closebutton.on_created();249 if (this._pseudo) {250 var rtlimagemirroring = this.on_find_CurrentStyle_rtlimagemirroring(this._pseudo);251 this.on_apply_style_rtlimagemirroring(rtlimagemirroring);252 }253 };254 _pTitleBar.on_destroy_contents = function () {255 var iconElem = this._icon_elem;256 var textElem = this._text_elem;257 var minBtn = this.minbutton;258 var maxBtn = this.maxbutton;259 var normalBtn = this.normalbutton;260 var closeBtn = this.closebutton;261 if (iconElem) {262 iconElem.destroy();263 this._icon_elem = null;264 }265 if (textElem) {266 textElem.destroy();267 this._text_elem = null;268 }269 if (minBtn) {270 minBtn.destroy();271 this.minbutton = null;272 }273 if (maxBtn) {274 maxBtn.destroy();275 this.maxbutton = null;276 }277 if (normalBtn) {278 normalBtn.destroy();279 this.normalbutton = null;280 }281 if (closeBtn) {282 closeBtn.destroy();283 this.closebutton = null;284 }285 };286 _pTitleBar.on_change_containerRect = function (width, height) {287 this._updateControlPosition(width, height);288 };289 _pTitleBar.set_titletext = function (v) {290 this._titletext = v;291 if (this._text_elem) {292 this._text_elem.setElementText(v);293 }294 };295 _pTitleBar.on_minbutton_click = function (obj, e) {296 var ownerframe = this.getOwnerFrame();297 if (ownerframe) {298 ownerframe.on_minbutton_click(obj, e);299 }300 };301 _pTitleBar.on_maxbutton_click = function (obj, e) {302 var ownerframe = this.getOwnerFrame();303 if (ownerframe) {304 ownerframe.on_maxbutton_click(obj, e);305 }306 };307 _pTitleBar.on_normalbutton_click = function (obj, e) {308 var ownerframe = this.getOwnerFrame();309 if (ownerframe) {310 ownerframe.on_normalbutton_click(obj, e);311 }312 };313 _pTitleBar.on_closebutton_click = function (obj, e) {314 var ownerframe = this.getOwnerFrame();315 if (ownerframe) {316 ownerframe.on_closebutton_click(obj, e);317 }318 };319 _pTitleBar._on_starttrack = function () {320 if (!this._is_alive) {321 return;322 }323 var ownerframe = this.getOwnerFrame();324 if (ownerframe) {325 ownerframe._on_titlebar_starttrack();326 }327 };328 _pTitleBar._on_endtrack = function (x, y, dragdata) {329 if (!this._is_alive) {330 return;331 }332 var ownerframe = this.getOwnerFrame();333 if (ownerframe) {334 ownerframe._on_titlebar_endtrack(x, y, dragdata);335 }336 };337 _pTitleBar._on_movetrack = function (x, y, dragdata) {338 if (!this._is_alive) {339 return;340 }341 var ownerframe = this.getOwnerFrame();342 if (ownerframe) {343 ownerframe._on_titlebar_movetrack(x, y, dragdata);344 }345 };346 _pTitleBar._on_loadicon = function (url, w, h) {347 if ((w < 1) || (h < 1)) {348 return;349 }350 this._iconwidth = w;351 this._iconheight = h;352 if (this._icon_elem) {353 this._updateControlPosition(this._client_width, this._client_height);354 }355 var frame = this.parent;356 if (frame && frame._is_window) {357 var _window = frame._getWindow();358 if (_window) {359 nexacro._setWindowHandleIcon(_window._handle, url);360 }361 }362 };363 _pTitleBar._updateControlPosition = function (width, height) {364 if (!width || !height) {365 width = this._client_width;366 height = this._client_height;367 }368 var iconleftgap = 10;369 var iconrightgap = 6;370 var buttonwidth = 22;371 var buttonheight = 20;372 var buttongap = 1;373 var rightgap = 2;374 var display_as_minimize = ((this._state_openstatus == 2) || this._is_verticalmin);375 if (!this._is_verticalmin) {376 var itemsize = 24;377 var top = ((height - buttonheight) / 2) | 0;378 if (top < 0) {379 top = 0;380 }381 var curleft = width - (rightgap);382 curleft -= buttonwidth;383 this.closebutton.move(curleft, top, buttonwidth, buttonheight);384 curleft -= buttongap;385 curleft -= buttonwidth;386 this.maxbutton.move(curleft, top, buttonwidth, buttonheight);387 if (!display_as_minimize) {388 this.normalbutton.move(curleft, top, buttonwidth, buttonheight);389 }390 curleft -= buttongap;391 curleft -= buttonwidth;392 this.minbutton.move(curleft, top, buttonwidth, buttonheight);393 if (display_as_minimize) {394 this.normalbutton.move(curleft, top, buttonwidth, buttonheight);395 }396 var curright = curleft;397 curleft = iconleftgap;398 var iconElem = this._icon_elem;399 var iconwidth = this._iconwidth;400 var iconheight = this._iconheight;401 top = ((height - iconheight) / 2) | 0;402 var new_left = this._convertLeftForRtlLayout(curleft, iconwidth);403 iconElem.setElementPosition(new_left, top);404 iconElem.setElementSize(iconwidth, iconheight);405 curleft += iconwidth;406 curleft += iconrightgap;407 var textwidth = (curright - curleft);408 if (textwidth < 0) {409 textwidth = 0;410 }411 var textheight = itemsize;412 top = ((height - textheight) / 2) | 0;413 new_left = this._convertLeftForRtlLayout(curleft, textwidth);414 this._text_elem.setElementPosition(new_left, top);415 this._text_elem.setElementSize(textwidth, textheight);416 }417 else {418 var itemsize = 24;419 var left = ((width - buttonwidth) / 2) | 0;420 if (left < 0) {421 left = 0;422 }423 var curtop = height - (rightgap);424 curtop -= buttonwidth;425 this.closebutton.move(left, curtop, buttonwidth, buttonheight);426 curtop -= buttongap;427 curtop -= buttonwidth;428 this.maxbutton.move(left, curtop, buttonwidth, buttonheight);429 if (!display_as_minimize) {430 this.normalbutton.move(left, curtop, buttonwidth, buttonheight);431 }432 curtop -= buttongap;433 curtop -= buttonwidth;434 this.minbutton.move(left, curtop, buttonwidth, buttonheight);435 if (display_as_minimize) {436 this.normalbutton.move(left, curtop, buttonwidth, buttonheight);437 }438 var curbottom = curtop;439 curtop = iconleftgap;440 var iconElem = this._icon_elem;441 var iconwidth = this._iconwidth;442 var iconheight = this._iconheight;443 left = ((width - iconwidth) / 2) | 0;444 var new_left = this._convertLeftForRtlLayout(left, iconwidth);445 iconElem.setElementPosition(new_left, curtop);446 iconElem.setElementSize(iconwidth, iconheight);447 curtop += iconwidth;448 curtop += iconrightgap;449 var textwidth = (curbottom - curtop);450 if (textwidth < 0) {451 textwidth = 0;452 }453 var textheight = itemsize;454 left = ((width - textheight) / 2) | 0;455 new_left = this._convertLeftForRtlLayout(left, textwidth);456 this._text_elem.setElementPosition(new_left, curtop);457 this._text_elem.setElementSize(textwidth, textheight);458 }459 };460 _pTitleBar._change_state_OpenStatus = function (cur) {461 var pre = this._prestate_openstatus = this._state_openstatus;462 this._state_openstatus = cur;463 if (this._is_verticalmin) {464 cur = 2;465 }466 if (pre != cur) {467 switch (cur) {468 case 0:469 if ((this._absolute_style & 0x0001) == 0) {470 this.minbutton.set_visible(true);471 }472 if ((this._absolute_style & 0x0002) == 0) {473 this.maxbutton.set_visible(true);474 }475 if ((this._absolute_style & 0x0008) == 0) {476 this.closebutton.set_visible(true);477 }478 this.normalbutton.set_visible(false);479 break;480 case 1:481 break;482 case 2:483 this.minbutton.set_visible(false);484 if ((this._absolute_style & 0x0002) == 0) {485 this.maxbutton.set_visible(true);486 }487 if ((this._absolute_style & 0x0008) == 0) {488 this.closebutton.set_visible(true);489 }490 if ((this._absolute_style & 0x0004) == 0) {491 this.normalbutton.set_visible(true);492 }493 break;494 case 3:495 if ((this._absolute_style & 0x0001) == 0) {496 this.minbutton.set_visible(true);497 }498 this.maxbutton.set_visible(false);499 if ((this._absolute_style & 0x0008) == 0) {500 this.closebutton.set_visible(true);501 }502 if ((this._absolute_style & 0x0004) == 0) {503 this.normalbutton.set_visible(true);504 }505 break;506 }507 var control_elem = this.getElement();508 if (control_elem) {509 this.on_change_containerRect(control_elem.client_width, control_elem.client_height);510 }511 }512 };513 _pTitleBar._setVerticalMin = function (v) {514 if (this._is_verticalmin == v) {515 return;516 }517 var pre = -1;518 if (v == false) {519 pre = 2;520 }521 this._is_verticalmin = v;522 var real_openstatus = this._state_openstatus;523 if (pre != (-1)) {524 this._state_openstatus = pre;525 }526 this._change_state_OpenStatus(real_openstatus);527 if (this._control_element) {528 this._updateControlPosition();529 }530 };531 _pTitleBar._setDragMove = function (v, is_windowframe) {532 if (v && is_windowframe) {533 this._hittest_type = "caption";534 }535 else {536 this._hittest_type = "none";537 }538 if (this._control_element) {539 this._control_element.setElementHittestType(this._hittest_type);540 }541 };542 _pTitleBar._setAbsoluteStyle = function (_add, _remove, _apply) {543 this._absolute_style &= ~(_remove);544 this._absolute_style |= _add;545 if (_apply == undefined || _apply == true) {546 this._applyAbsoluteStyle();547 }548 };549 _pTitleBar.on_apply_prop_enable = function (v) {550 nexacro.Component.prototype.on_apply_prop_enable.call(this, v);551 if (this.minbutton && !((this._absolute_style & 0x0010) > 0)) {552 this.minbutton._setEnable(v);553 }554 };555 _pTitleBar._applyAbsoluteStyle = function () {556 if (this.minbutton) {557 if ((this._absolute_style & 0x0001) > 0) {558 this.minbutton.set_visible(false);559 }560 else if ((this._absolute_style & 0x0100) > 0) {561 this.minbutton.set_visible(true);562 }563 if ((this._absolute_style & 0x0010) > 0) {564 this.minbutton.set_enable(false);565 }566 else if ((this._absolute_style & 0x1000) > 0) {567 this.minbutton.set_enable(true);568 }569 }570 if (this.maxbutton) {571 if ((this._absolute_style & 0x0002) > 0) {572 this.maxbutton.set_visible(false);573 }574 else if ((this._absolute_style & 0x0200) > 0) {575 this.maxbutton.set_visible(true);576 }577 if ((this._absolute_style & 0x0020) > 0) {578 this.maxbutton.set_enable(false);579 }580 else if ((this._absolute_style & 0x2000) > 0) {581 this.maxbutton.set_enable(true);582 }583 }584 if (this.normalbutton) {585 if ((this._absolute_style & 0x0004) > 0) {586 this.normalbutton.set_visible(false);587 }588 else if ((this._absolute_style & 0x0400) > 0) {589 this.normalbutton.set_visible(true);590 }591 if ((this._absolute_style & 0x0040) > 0) {592 this.normalbutton.set_enable(false);593 }594 else if ((this._absolute_style & 0x4000) > 0) {595 this.normalbutton.set_enable(true);596 }597 }598 if (this.closebutton) {599 if ((this._absolute_style & 0x0008) > 0) {600 this.closebutton.set_visible(false);601 }602 else if ((this._absolute_style & 0x08) > 0) {603 this.closebutton.set_visible(true);604 }605 if ((this._absolute_style & 0x0080) > 0) {606 this.closebutton.set_enable(false);607 }608 else if ((this._absolute_style & 0x8000) > 0) {609 this.closebutton.set_enable(true);610 }611 }612 };613 _pTitleBar.on_apply_prop_rtldirection = function () {614 nexacro.Component.prototype.on_apply_prop_rtldirection.call(this);615 var _rtldirection = this._rtldirection;616 var control_element = this._control_element;617 if (control_element) {618 this._updateControlPosition(control_element.client_width, control_element.client_height);619 var pseudo = this._pseudo;620 var align = this.on_find_CurrentStyle_align(pseudo);621 this.on_apply_style_align(align);622 }623 if (this.minbutton) {624 this.minbutton._setRtlDirection(_rtldirection);625 }626 if (this.maxbutton) {627 this.maxbutton._setRtlDirection(_rtldirection);628 }629 if (this.normalbutton) {630 this.normalbutton._setRtlDirection(_rtldirection);631 }632 if (this.closebutton) {633 this.closebutton._setRtlDirection(_rtldirection);634 }635 };636 delete _pTitleBar;637 nexacro.TitleBarCtrl = function (id, position, left, top, width, height, right, bottom, parent) {638 nexacro.TitleBar.call(this, id, position, left, top, width, height, right, bottom, parent);639 this._is_subcontrol = true;640 };641 var _pTitleBarCtrl = nexacro._createPrototype(nexacro.TitleBar, nexacro.TitleBarCtrl);642 nexacro.TitleBarCtrl.prototype = _pTitleBarCtrl;643 _pTitleBarCtrl._type_name = "TitleBarControl";644 nexacro._setForTypedControlStyleFinder(_pTitleBarCtrl);645 delete _pTitleBarCtrl;...

Full Screen

Full Screen

StatusBar.js

Source:StatusBar.js Github

copy

Full Screen

1//==============================================================================2//3// TOBESOFT Co., Ltd.4// Copyright 2017 TOBESOFT Co., Ltd.5// All Rights Reserved.6//7// NOTICE: TOBESOFT permits you to use, modify, and distribute this file 8// in accordance with the terms of the license agreement accompanying it.9//10// Readme URL: http://www.nexacro.co.kr/legal/nexacro17-public-license-readme-1.1.html11//12//==============================================================================13if (!nexacro.StatusBarControl) {14 nexacro.StatusBarControl = function (id, left, top, width, height, right, bottom, minwidth, maxwidth, minheight, maxheight, parent) {15 nexacro.Form.call(this, id, left, top, width, height, right, bottom, minwidth, maxwidth, minheight, maxheight, parent);16 };17 var _pStatusBarControl = nexacro._createPrototype(nexacro.Form, nexacro.StatusBarControl);18 nexacro.StatusBarControl.prototype = _pStatusBarControl;19 _pStatusBarControl._type_name = "StatusBarControl";20 _pStatusBarControl.statustext = null;21 _pStatusBarControl.progressbar = null;22 _pStatusBarControl.resizegrip = null;23 _pStatusBarControl.resizable = false;24 _pStatusBarControl.progressbardirection = "forward";25 _pStatusBarControl.progressbargap = undefined;26 _pStatusBarControl.progressbarsize = undefined;27 _pStatusBarControl._progressbargap = 1;28 _pStatusBarControl._progressbarsize = 200;29 _pStatusBarControl.progressbarsmooth = false;30 _pStatusBarControl._is_nc_control = true;31 _pStatusBarControl._is_scrollable = false;32 _pStatusBarControl._is_subcontrol = true;33 nexacro.StatusBarControl._default_progressbarwidth = 200;34 nexacro.StatusBarControl._default_progressbarheight = 19;35 nexacro.StatusBarControl._default_progressbargap = 1;36 _pStatusBarControl.set_progressbarsize = function (val) {37 if (this.progressbarsize != val) {38 this.progressbarsize = val;39 this._progressbarsize = parseInt(val);40 if (this._progressbarsize < 0) {41 this._progressbarsize = 0;42 }43 this.on_apply_progressbar();44 }45 };46 _pStatusBarControl.set_progressbargap = function (val) {47 if (this.progressbargap != val) {48 this.progressbargap = val;49 this._progressbargap = parseInt(val);50 if (this._progressbargap < 0) {51 this._progressbargap = 0;52 }53 this.on_apply_progressbar();54 }55 };56 _pStatusBarControl.on_apply_progressbar = function () {57 var progressbar = this.progressbar;58 if (progressbar && progressbar.visible && this._is_created) {59 this._recalcLayout(this._getClientWidth(), this._getClientHeight());60 }61 };62 _pStatusBarControl.set_progressbardirection = function (val) {63 if (this.progressbardirection != val) {64 this.progressbardirection = val;65 this.on_apply_progressbardirection(val);66 }67 };68 _pStatusBarControl.on_apply_progressbardirection = function (v) {69 var progressbar = this.progressbar;70 if (progressbar) {71 progressbar.set_direction(v);72 }73 };74 _pStatusBarControl.set_progressbarsmooth = function (val) {75 if (this.progressbarsmooth != val) {76 this.progressbarsmooth = val;77 this.on_apply_progressbarsmooth(val);78 }79 };80 _pStatusBarControl.on_apply_progressbarsmooth = function (v) {81 var progressbar = this.progressbar;82 if (progressbar) {83 progressbar.set_smooth(v);84 }85 };86 _pStatusBarControl.set_resizable = function (val) {87 val = nexacro._toBoolean(val);88 if (this.resizable != val) {89 this.resizable = val;90 this.on_apply_resizable(val);91 }92 };93 _pStatusBarControl._createResizeGrip = function () {94 var resizegrip = this.resizegrip = new nexacro._Icon("resizegrip", 0, 0, 0, 0, null, null, null, null, null, null, this);95 resizegrip._on_starttrack = this._on_starttrack;96 resizegrip._on_movetrack = this._on_movetrack;97 resizegrip._on_endtrack = this._on_endtrack;98 resizegrip._setControl();99 resizegrip.createComponent();100 return resizegrip;101 };102 _pStatusBarControl.on_apply_resizable = function (resizable) {103 var resizegrip = this.resizegrip;104 var ownerframe = this.getOwnerFrame();105 if (this._is_created && resizable && !resizegrip) {106 resizegrip = this._createResizeGrip();107 resizegrip.on_created(this._getWindow());108 }109 if (ownerframe && resizegrip) {110 resizegrip._is_track = resizable;111 resizegrip.set_cursor(resizable ? "se-resize" : "arrow");112 var resizegrip_controlelem = resizegrip.getElement();113 if (resizegrip_controlelem) {114 resizegrip_controlelem.setElementHittestType(resizable && ownerframe._is_window ? "resizingborder_bottomright" : undefined);115 }116 }117 this._recalcLayout(this._getClientWidth(), this._getClientHeight());118 };119 _pStatusBarControl.on_create_contents = function () {120 var control_elem = this.getElement();121 if (control_elem) {122 var statustext = this.statustext = new nexacro.Static("statustext", 0, 0, 0, 0, null, null, null, null, null, null, this);123 statustext._setControl();124 if (this._displaytext) {125 statustext.set_text(this._displaytext);126 }127 statustext.createComponent();128 var progressbar = this.progressbar = new nexacro.ProgressBar("progressbar", 0, 0, 0, 0, null, null, null, null, null, null, this);129 progressbar._setControl();130 progressbar.createComponent();131 this._createResizeGrip();132 }133 };134 _pStatusBarControl.on_created_contents = function (win) {135 this.on_apply_resizable(this.resizable);136 this.statustext.on_created(win);137 this.progressbar.on_created(win);138 this.resizegrip.on_created(win);139 };140 _pStatusBarControl.on_destroy_contents = function (callremovechild) {141 var statustext = this.statustext;142 var progressbar = this.progressbar;143 var resizegrip = this.resizegrip;144 if (statustext) {145 statustext.destroy(callremovechild);146 this.statustext = null;147 }148 if (progressbar) {149 progressbar.destroy(callremovechild);150 this.progressbar = null;151 }152 if (resizegrip) {153 resizegrip.destroy(callremovechild);154 this.resizegrip = null;155 }156 };157 _pStatusBarControl.on_change_containerRect = function (width, height) {158 if (this._is_created_contents) {159 nexacro.Form.prototype.on_change_containerRect.call(this, width, height);160 this._recalcLayout(width, height);161 }162 };163 _pStatusBarControl.on_apply_text = function (text) {164 if (this.statustext) {165 this.statustext.set_text(text);166 }167 };168 _pStatusBarControl._on_load_resizegripicon = function () {169 };170 _pStatusBarControl._recalcLayout = function (width, height) {171 var left = width;172 var top = this._getClientTop();173 var resizegrip = this.resizegrip;174 if (resizegrip) {175 var resizegripwidth = 0;176 if (this.resizable) {177 var padding = resizegrip._getCurrentStylePadding();178 var border = resizegrip._getCurrentStyleBorder();179 var icon = resizegrip.icon ? resizegrip.icon : resizegrip._getCSSStyleValue("icon");180 if (border) {181 resizegripwidth = border._getBorderWidth();182 }183 if (padding) {184 resizegripwidth += padding.left + padding.right;185 }186 if (icon) {187 var iconsize = nexacro._getImageSize(icon.value, this._on_load_resizegripicon, this);188 if (iconsize) {189 resizegripwidth += iconsize.width;190 }191 }192 left = width - resizegripwidth;193 }194 resizegrip.move(left, top, resizegripwidth, height);195 }196 var progressbar = this.progressbar;197 if (progressbar) {198 var progressbarwidth = this._progressbarsize;199 left -= (this._progressbargap + progressbarwidth);200 progressbar.move(left, top, progressbarwidth, height);201 }202 var statustext = this.statustext;203 if (statustext) {204 statustext.move(this._getClientLeft(), top, left, height);205 }206 };207 _pStatusBarControl._on_starttrack = function () {208 var ownerframe = this.parent.getOwnerFrame();209 ownerframe._on_border_starttrack(this.cursor);210 };211 _pStatusBarControl._on_endtrack = function (x, y, dragdata) {212 var ownerframe = this.parent.getOwnerFrame();213 ownerframe._on_border_endtrack(x, y, dragdata);214 };215 _pStatusBarControl._on_movetrack = function (x, y, dragdata) {216 var ownerframe = this.parent.getOwnerFrame();217 ownerframe._on_border_movetrack(x, y, dragdata);218 };219 delete _pStatusBarControl;...

Full Screen

Full Screen

findRangeIterator.js

Source:findRangeIterator.js Github

copy

Full Screen

1var EXPORTED_SYMBOLS = ['FindRangeIterator'];2var TEST = false;3var Cc = Components.classes;4var Ci = Components.interfaces;5var Cu = Components.utils;6Cu.import('resource://gre/modules/Services.jsm');7 8Cu.import('resource://xulmigemo-modules/constants.jsm');9Cu.import('resource://xulmigemo-modules/core/docUtils.js');10Cu.import('resource://xulmigemo-modules/log.jsm');11function log(...aArgs) { MigemoLog('findRangeIterator', ...aArgs); }12function FindRangeIterator(aRootDocShell, aStartPoint, aBackward, aTraverseFrames)13{14 log('new FindRangeIterator');15 this.backward = aBackward;16 this.traverseFrames = aTraverseFrames;17 this.mRootDocShell = aRootDocShell;18 if (aStartPoint) {19 this.mStartPoint = aStartPoint.cloneRange();20 this.mStartPoint.collapse(!this.backward);21 }22 else {23 let doc = MigemoDocumentUtils.getDocumentFromDocShell(aRootDocShell);24 this.mStartPoint = this.createAnchorInDocument(doc);25 }26 this.mAnchor = this.mStartPoint.cloneRange();27 log(' mStartPoint = '+this.mStartPoint.startContainer+'/'+this.mStartPoint.startOffset);28 this.wrappedCount = 0;29}30FindRangeIterator.prototype = {31 mRootDocShell : null,32 backward : false,33 wrapped : false,34 looped : false,35 36 get document()37 {38 return MigemoDocumentUtils.getOwnerDocumentFromRange(this.mAnchor);39 },40 get view()41 {42 return this.document.defaultView;43 },44 get docShell()45 {46 return MigemoDocumentUtils.getDocShellFromDocument(this.document);47 },48 get body() 49 {50 return MigemoDocumentUtils.getDocumentBody(this.document);51 },52 getWholeFindRangeFromRangeInEditable : function(aRange) 53 {54 var owner = MigemoDocumentUtils.getParentEditableFromRange(aRange);55 if (!owner)56 return null;57 var lastContainer = aRange.startContainer;58 while (lastContainer.parentNode != owner)59 {60 lastContainer = lastContainer.parentNode;61 }62 var range = lastContainer.ownerDocument.createRange();63 range.selectNodeContents(lastContainer);64 return range;65 },66 createAnchorInDocument : function(aDocument)67 {68 let point = aDocument.createRange();69 point.selectNodeContents(MigemoDocumentUtils.getDocumentBody(aDocument));70 point.collapse(!this.backward);71 return point;72 },73 74 iterateNext : function() 75 {76 log('iterateNext');77 if (this.looped)78 return {};79 this.wrapped = false;80 var doc = this.document;81 var editableRange = this.getWholeFindRangeFromRangeInEditable(this.mAnchor);82 if (this.backward) {83 if (this.mWillWrapBackward) {84 this.wrapped = true;85 this.wrappedCount++;86 this.mWillWrapBackward = false;87 log('backward: wrapped');88 }89 if (editableRange) {90 log('backward: move into editable range');91 editableRange.setEnd(this.mAnchor.startContainer, this.mAnchor.startOffset);92 let editable = MigemoDocumentUtils.getParentEditableFromRange(this.mAnchor);93 this.mAnchor = doc.createRange();94 this.mAnchor.selectNode(editable);95 this.mAnchor.collapse(true);96 this.checkLoop(editableRange);97 return this.createRangeSet(editableRange);98 }99 if (this.traverseFrames) {100 let previousFrame = MigemoDocumentUtils.getPreviousFrame(doc, this.mAnchor);101 log('backward: traverse frames, previousFrame = '+previousFrame);102 if (previousFrame) {103 let range = this.mAnchor.cloneRange();104 range.setStartBefore(previousFrame);105 this.mAnchor = this.createAnchorInDocument(previousFrame.contentDocument);106 this.checkLoop(range);107 return this.createRangeSet(range);108 }109 }110 let root = MigemoDocumentUtils.getDocumentBody(doc);111 let range = this.mAnchor.cloneRange();112 range.setStartBefore(root.firstChild || root);113 if (this.traverseFrames) {114 let ownerFrame = MigemoDocumentUtils.getOwnerFrameFromContentDocument(doc);115 log('backward: traverse frames, ownerFrame = '+ownerFrame);116 if (ownerFrame) {117 this.mAnchor = ownerFrame.ownerDocument.createRange();118 this.mAnchor.selectNode(ownerFrame);119 this.mAnchor.collapse(true);120 this.checkLoop(range);121 return this.createRangeSet(range);122 }123 }124 log('backward: select to first');125 doc = MigemoDocumentUtils.getDocumentFromDocShell(this.mRootDocShell);126 this.mAnchor = this.createAnchorInDocument(doc);127 this.mWillWrapBackward = true;128 this.checkLoop(range);129 return this.createRangeSet(range);130 }131 else {132 if (this.mWillWrapForward) {133 this.wrapped = true;134 this.wrappedCount++;135 this.mWillWrapForward = false;136 log('forward: wrapped');137 }138 if (editableRange) {139 log('forward: move into editable range');140 editableRange.setStart(this.mAnchor.endContainer, this.mAnchor.endOffset);141 let editable = MigemoDocumentUtils.getParentEditableFromRange(this.mAnchor);142 this.mAnchor = doc.createRange();143 this.mAnchor.selectNode(editable);144 this.mAnchor.collapse(false);145 this.checkLoop(editableRange);146 return this.createRangeSet(editableRange);147 }148 if (this.traverseFrames) {149 let nextFrame = MigemoDocumentUtils.getNextFrame(doc, this.mAnchor);150 log('forward: traverse frames, nextFrame = '+nextFrame);151 if (nextFrame) {152 let range = this.mAnchor.cloneRange();153 range.setEndBefore(nextFrame);154 log(' range => '+range.toString()+'('+range.toString().length+')');155 this.mAnchor = this.createAnchorInDocument(nextFrame.contentDocument);156 this.checkLoop(range);157 return this.createRangeSet(range);158 }159 }160 let root = MigemoDocumentUtils.getDocumentBody(doc);161 let range = this.mAnchor.cloneRange();162 range.setEndAfter(root.lastChild || root);163 if (this.traverseFrames) {164 let ownerFrame = MigemoDocumentUtils.getOwnerFrameFromContentDocument(doc);165 log('forward: traverse frames, ownerFrame = '+ownerFrame);166 if (ownerFrame) {167 this.mAnchor = ownerFrame.ownerDocument.createRange();168 this.mAnchor.selectNode(ownerFrame);169 this.mAnchor.collapse(false);170 this.checkLoop(range);171 return this.createRangeSet(range);172 }173 }174 log('forward: select to last');175 doc = MigemoDocumentUtils.getDocumentFromDocShell(this.mRootDocShell);176 this.mAnchor = this.createAnchorInDocument(doc);177 this.mWillWrapForward = true;178 this.checkLoop(range);179 return this.createRangeSet(range);180 }181 },182 createRangeSet : function(aFindRange)183 {184 var rangeSet = {185 range : aFindRange,186 start : aFindRange.cloneRange(),187 end : aFindRange.cloneRange()188 };189 rangeSet.start.collapse(!this.backward);190 rangeSet.end.collapse(this.backward);191 rangeSet.doc = MigemoDocumentUtils.getOwnerDocumentFromRange(aFindRange);192 if (Services.prefs.getBoolPref(MigemoConstants.BASE+'debug.findRangeIterator.markers'))193 MigemoDocumentUtils.insertMarkers('iteration', rangeSet);194 return rangeSet;195 },196 checkLoop : function(aNextFindRange)197 {198 if (this.looped ||199 this.wrappedCount === 0)200 return;201 var startDoc = MigemoDocumentUtils.getOwnerDocumentFromRange(this.mStartPoint);202 var anchorDoc = MigemoDocumentUtils.getOwnerDocumentFromRange(this.mAnchor);203 var anchorPassed = false;204 if (startDoc == anchorDoc) {205 if (this.backward) {206 anchorPassed = this.mAnchor.compareBoundaryPoints(this.mAnchor.START_TO_END, this.mStartPoint) <= 0;207 }208 else {209 anchorPassed = this.mAnchor.compareBoundaryPoints(this.mAnchor.END_TO_START, this.mStartPoint) >= 0;210 }211 }212 var findDoc = MigemoDocumentUtils.getOwnerDocumentFromRange(aNextFindRange);213 var findRangePassed = (214 (startDoc == findDoc) &&215 (216 aNextFindRange.compareBoundaryPoints(aNextFindRange.START_TO_START, this.mStartPoint) <= 0 &&217 aNextFindRange.compareBoundaryPoints(aNextFindRange.END_TO_END, this.mStartPoint) >= 0218 )219 );220 this.looped = anchorPassed || findRangePassed;221 },222 223 destroy : function() 224 {225 delete this.backward;226 delete this.mRootDocShell;227 delete this.mStartPoint;228 delete this.mAnchor;229 delete this.wrapped;230 }231 ...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const ownerFrame = require('playwright/lib/internal/frames').ownerFrame;2const { chromium } = require('playwright');3(async () => {4 const browser = await chromium.launch();5 const context = await browser.newContext();6 const page = await context.newPage();7 const frame = page.frames()[1];8 const frameElement = ownerFrame(frame)._elementHandle;9 await frameElement.click();10 await browser.close();11})();12const frameElement = frame._parentFrame._elementHandle;13const frameElement = page.frames()[0]._elementHandle;14const frameElement = page.mainFrame()._elementHandle;15const frameElement = page.mainFrame().childFrames()[0]._elementHandle;16const frameElement = page.mainFrame().childFrames()[0].childFrames()[0]._elementHandle;17const frameElement = page.mainFrame().childFrames()[0].childFrames()[0].childFrames()[0]._elementHandle;18const frameElement = page.mainFrame().childFrames()[0].childFrames()[0].childFrames()[0].childFrames()[0]._elementHandle;19const frameElement = page.mainFrame().childFrames()[0].child

Full Screen

Using AI Code Generation

copy

Full Screen

1const { chromium } = require('playwright');2(async () => {3 const browser = await chromium.launch();4 const context = await browser.newContext();5 const page = await context.newPage();6 const element = await page.$('#search_input_react');7 const ownerFrame = await element.ownerFrame();8 console.log(ownerFrame);9 await page.screenshot({ path: `screenshot.png` });10 await browser.close();11})();12const { chromium } = require('playwright');13(async () => {14 const browser = await chromium.launch();15 const context = await browser.newContext();16 const page = await context.newPage();17 const element = await page.$('#search_input_react');18 const ownerFrame = await element.ownerFrame();19 console.log(ownerFrame);20 await page.screenshot({ path: `screenshot.png` });21 await browser.close();22})();

Full Screen

Using AI Code Generation

copy

Full Screen

1const { ownerFrame } = require('@playwright/test/lib/server/frames');2const { test } = require('@playwright/test');3test('test', async ({ page }) => {4 const frame = await page.frames()[1];5 const owner = await ownerFrame(page, frame);6});

Full Screen

Using AI Code Generation

copy

Full Screen

1const { ownerFrame } = require('playwright/lib/server/dom');2const { ownerFrame } = require('playwright/lib/server/dom');3const { chromium } = require('playwright');4(async () => {5 const browser = await chromium.launch({ headless: false });6 const page = await browser.newPage();7 const elementHandle = await page.$('a');8 const frame = ownerFrame(elementHandle);9 console.log(frame.url());10 await browser.close();11})();12const { ownerFrame } = require('playwright/lib/server/dom');13const { chromium } = require('playwright');14(async () => {15 const browser = await chromium.launch({ headless: false });16 const page = await browser.newPage();17 const frame = await page.evaluate((selector) => {18 const element = document.querySelector(selector);19 return ownerFrame(element);20 }, 'a');21 console.log(frame.url());22 await browser.close();23})();24const { ownerFrame } = require('playwright/lib/server/dom');25const { chromium } = require('playwright');26(async () => {27 const browser = await chromium.launch({ headless: false });28 const page = await browser.newPage();29 const frame = await page.frames()[0].evaluate((selector) => {30 const element = document.querySelector(selector);31 return ownerFrame(element);32 }, 'a');33 console.log(frame.url());34 await browser.close();35})();36const { ownerFrame } = require('playwright/lib/server/dom');37const { chromium } = require('playwright');38(async () => {39 const browser = await chromium.launch({ headless: false });

Full Screen

Using AI Code Generation

copy

Full Screen

1const { ownerFrame } = require('playwright/lib/server/dom');2const { getFrameElement } = require('playwright/lib/server/dom');3const { getFrameElementHandle } = require('playwright/lib/server/dom');4const { chromium } = require('playwright');5(async () => {6 const browser = await chromium.launch();7 const context = await browser.newContext();8 const page = await context.newPage();9 const frame = page.frames()[1];10 const frameElement = ownerFrame(frame);11 console.log(frameElement);12 const frameElementHandle = await getFrameElementHandle(frame);13 console.log(frameElementHandle);14 const frameElement2 = await getFrameElement(frame);15 console.log(frameElement2);16 await browser.close();17})();

Full Screen

Playwright tutorial

LambdaTest’s Playwright tutorial will give you a broader idea about the Playwright automation framework, its unique features, and use cases with examples to exceed your understanding of Playwright testing. This tutorial will give A to Z guidance, from installing the Playwright framework to some best practices and advanced concepts.

Chapters:

  1. What is Playwright : Playwright is comparatively new but has gained good popularity. Get to know some history of the Playwright with some interesting facts connected with it.
  2. How To Install Playwright : Learn in detail about what basic configuration and dependencies are required for installing Playwright and run a test. Get a step-by-step direction for installing the Playwright automation framework.
  3. Playwright Futuristic Features: Launched in 2020, Playwright gained huge popularity quickly because of some obliging features such as Playwright Test Generator and Inspector, Playwright Reporter, Playwright auto-waiting mechanism and etc. Read up on those features to master Playwright testing.
  4. What is Component Testing: Component testing in Playwright is a unique feature that allows a tester to test a single component of a web application without integrating them with other elements. Learn how to perform Component testing on the Playwright automation framework.
  5. Inputs And Buttons In Playwright: Every website has Input boxes and buttons; learn about testing inputs and buttons with different scenarios and examples.
  6. Functions and Selectors in Playwright: Learn how to launch the Chromium browser with Playwright. Also, gain a better understanding of some important functions like “BrowserContext,” which allows you to run multiple browser sessions, and “newPage” which interacts with a page.
  7. Handling Alerts and Dropdowns in Playwright : Playwright interact with different types of alerts and pop-ups, such as simple, confirmation, and prompt, and different types of dropdowns, such as single selector and multi-selector get your hands-on with handling alerts and dropdown in Playright testing.
  8. Playwright vs Puppeteer: Get to know about the difference between two testing frameworks and how they are different than one another, which browsers they support, and what features they provide.
  9. Run Playwright Tests on LambdaTest: Playwright testing with LambdaTest leverages test performance to the utmost. You can run multiple Playwright tests in Parallel with the LammbdaTest test cloud. Get a step-by-step guide to run your Playwright test on the LambdaTest platform.
  10. Playwright Python Tutorial: Playwright automation framework support all major languages such as Python, JavaScript, TypeScript, .NET and etc. However, there are various advantages to Python end-to-end testing with Playwright because of its versatile utility. Get the hang of Playwright python testing with this chapter.
  11. Playwright End To End Testing Tutorial: Get your hands on with Playwright end-to-end testing and learn to use some exciting features such as TraceViewer, Debugging, Networking, Component testing, Visual testing, and many more.
  12. Playwright Video Tutorial: Watch the video tutorials on Playwright testing from experts and get a consecutive in-depth explanation of Playwright automation testing.

Run Playwright Internal automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful