ソースファイルを表示

win/sample/win2.htm

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1" /> <title>ウィンドウクラスの拡張</title> <link rel="stylesheet" charset="UTF-8" href="win.css" /> <script type="text/javascript" charset="UTF-8" src="win.js"></script> <style type="text/css"> div#root {     position: absolute;     top:0; left:0; right:0; bottom:0; } #w-win-wWin1 { /* 左上画面(メイン) */     background: #e7f7e7; } #w-win-wWin2 { /* 右下画面(サブ) */     background: #e7f7e7;     flex: 1 1 50px; } .wMenu { /* プルダウンメニュー */     position: absolute;     top: 12px; left: 12px; } .wTool { /* ツールボックス */     position: absolute;     top: 12px; right: 12px; } h2 {     margin: 0px; padding: 14px 0px 6px 0px;     width: 100%;     font-size: 20px;     text-align: center; } p {     margin: 0px; padding: 6px 8px; } </style> <script type="text/javascript" charset="UTF-8"> var wWin1; // 左上画面(メイン) var wWin2; // 右下画面(サブ) var myWin1; // 左上画面(メイン)のウィンドウ var myWin2; // 右下画面(サブ)のウィンドウ function init() { // 初期処理     wWin1 = W.mainWin('wWin1', 'root');     wWin2 = W.subWin('wWin2', wWin1, {closeBtn: 'off'});     myWin1 = myWin('myWin1', 'wWin1');     myWin2 = myWin('myWin2', 'wWin2'); } var menu31 = [ // サブメニュー51定義     {txt: '項目311', cmd: 'cmd311', opt: 'opt311'},     {txt: '項目312', cmd: 'cmd312', opt: 'opt312'} ]; var menu3 = [ // サブメニュー5定義     {txt: '項目31 >', menu: menu31},     {txt: '項目32', cmd: 'cmd32', opt: 'opt32'},     {txt: '項目33', cmd: 'cmd33', opt: 'opt33'} ]; var menu2 = [ // サブメニュー3定義     {txt: '項目21', cmd: 'cmd21', opt: 'opt21'},     {txt: '項目22', cmd: 'cmd22', opt: 'opt22'} ]; var menu = [ // メニュー定義     {txt: '項目1', cmd: 'cmd1', opt: 'opt1'},     {txt: '項目2 >', menu: menu2},     {txt: '項目3 >', menu: menu3} ]; function keydownCB(event) { // キーボード入力時の処理     alert(this.id + '.keydown: key=' + event.keyCode); } function menuCB() { // メニュー選択時の処理     let win = W.getElemWin(this);     let cmd = this.getAttribute('w-cmd');     let opt = this.getAttribute('w-opt');     alert(win.id + ".menu: " + cmd + ", " + opt); } var toolMenu = [{ // ツールボックスメニュー処理     icon: 'str2',     str: 'サブ',     func: function(e) {         let win = W.getElemWin(this);         win.dispSub();     } },{     icon: 'str2',     str: 'DLG',     func: function(e) {         let wDlg = W.dialog('ダイアログ');         wDlg.win.innerHTML = '<p>ダイアログは、画面を占有してメッセージを表示します。</p>';     } }]; class MyWin extends W.MainWin { // 拡張ウィンドウクラス     sub = null;     constructor(id, pid, opt={}) {         super(id, pid, opt);         this.win.innerHTML = '<h2>メイン (' + this.win.id + ')</h2>';         this.keydownCB = keydownCB; // キーボード入力時の処理         let wMenu = this.addMenu({menu: menu, func: menuCB}); // 左側のメニューを登録         wMenu.classList.add('wMenu');         let wTool = this.addToolbox(toolMenu); // 右側のツールボックスを登録         wTool.classList.add('wTool');     }     dispSub() {         if (this.sub == null) { // リストを表示             let id = this.id + 'Sub';             this.sub = mySub(id, this);         } else { // リストを消去             this.sub.remove();             this.sub = null;         }     } } myWin = function(id, pid, opt={}) { // 小文字で始まるショートカットの定義     return new MyWin(id, pid, opt); } MySub = class extends W.SubWin { // サブウィンドウ表示クラス     constructor(id, main, opt={}) {         super(id, main, opt);         this.win.innerHTML = '<h2>サブ (' + this.win.id + ')</h2>';         this.keydownCB = keydownCB; // キーボード入力時の処理     } } mySub = function(id, main, opt={}) { // 小文字で始まるショートカットの定義     return new MySub(id, main, opt); } </script> </head> <body onload="init()"> <div id="root"></div> </body> </html>