Skip to content

Commit 2651a82

Browse files
hansonrhansonr
authored andcommitted
working on j2sMenu
1 parent 2661842 commit 2651a82

File tree

1 file changed

+31
-11
lines changed
  • sources/net.sf.j2s.java.core/src/swingjs/jquery

1 file changed

+31
-11
lines changed

sources/net.sf.j2s.java.core/src/swingjs/jquery/j2sMenu.js

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,20 @@ if (J2S.isResourceLoaded("swingjs/jquery/j2sMenu.js", true))return;
2121

2222
if (!jQuery.ui.menu)
2323
try{
24+
25+
var delayMe = function(element, f, ms) {
26+
var id = element._delay(f, ms);
27+
System.out.println([ms, id, f]);
28+
return id;
29+
};
30+
31+
var clearMe = function(id) {
32+
System.out.println("j2sm clear " + id)
33+
return clearTimeout(id);
34+
};
35+
36+
37+
2438
(function(e,t){var n=!1;e.widget("ui.menu",{
2539
version:"1.9.2",
2640
defaultElement:"<ul>",
@@ -51,13 +65,13 @@ try{
5165
// BH 12/20/2018 adds persistence for JMenu clicks
5266

5367
if (this.active && this.active[0].attributes.name && this.active[0].attributes.name.value == "javax.swing.JMenu") {
54-
clearTimeout(this.timer);
68+
clearMe(this.timer);
5569
return
5670
}
5771

5872
var r=e(t.target).closest(".ui-menu-item");
5973

60-
!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))
74+
!n&&r.not(".ui-state-disabled").length&&(n=!0,this.select(t),r.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearMe(this.timer)))
6175

6276
; $(".ui-menu").hide();
6377

@@ -77,7 +91,8 @@ var r=e(t.target).closest(".ui-menu-item");
7791
mouseleave:"collapseAll",
7892
"mouseleave .ui-menu": "collapseAll",
7993
focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},
80-
blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},
94+
blur:function(t){
95+
delayMe(this, function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},
8196
keydown:"_keydown"
8297
}),
8398
this.refresh(),
@@ -94,7 +109,8 @@ var r=e(t.target).closest(".ui-menu-item");
94109
.children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover")
95110
.removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")
96111
},
97-
_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},
112+
_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearMe(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,
113+
this.filterTimer=delayMe(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},
98114
_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},
99115
refresh:function(){
100116
var t,n=this.options.icons.submenu,role=this.options.role,
@@ -117,7 +133,7 @@ var r=e(t.target).closest(".ui-menu-item");
117133
r.attr("id")),
118134
this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),
119135
e&&e.type==="keydown"?this._close():
120-
this.timer=this._delay(function(){this._close()},this.delay),
136+
this.timer=delayMe(this, function(){this._close()},this.delay),
121137
n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)
122138
&&this._startOpening(n),this.activeMenu=t.parent(),
123139
this._trigger("focus",e,{item:t})},
@@ -129,15 +145,18 @@ this._trigger("focus",e,{item:t})},
129145
}
130146

131147

132-
t||clearTimeout(this.timer);if(!this.active)return;
148+
t||clearMe(this.timer);if(!this.active)return;
133149

134150
this.active
135151
//.children("a")
136-
.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},
137-
_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},
138-
_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},
152+
.removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})
153+
},
154+
_startOpening:function(e){clearMe(this.timer);if(e.attr("aria-hidden")!=="true")return;
155+
this.timer=delayMe(this, function(){this._close(),this._open(e)},this.delay)},
156+
_open:function(t){var n=e.extend({of:this.active},this.options.position);clearMe(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},
139157
collapseAll:function(t,n){
140-
clearTimeout(this.timer),this.timer=this._delay(
158+
clearMe(this.timer),
159+
this.timer=delayMe(this,
141160
function(){
142161
var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));
143162
r.length||(r=this.element),
@@ -163,7 +182,8 @@ e.find(".ui-menu")
163182
collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),
164183
this.focus(e,t))
165184
},
166-
expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},
185+
expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),
186+
delayMe(this,function(){this.focus(e,t)}))},
167187
next:function(e){this._move("next","first",e)},
168188
previous:function(e){this._move("prev","last",e)},
169189
isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},

0 commit comments

Comments
 (0)