PageRenderTime 54ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/trunk/src/JQuery.Base/JQuery.cs

#
C# | 1515 lines | 1188 code | 295 blank | 32 comment | 4 complexity | 47ae79fbe7fd81d15dff39adcadf1e28 MD5 | raw file
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Web.Script.Serialization;
  4. using System.Collections.Specialized;
  5. namespace JQueryControlToolkit
  6. {
  7. public class JQuery : DomResult
  8. {
  9. static StringDictionary OperationsMapping;
  10. public static string GetPlugInMethod(string operation)
  11. {
  12. return OperationsMapping[operation];
  13. }
  14. static JQuery()
  15. {
  16. OperationsMapping = new StringDictionary();
  17. OperationsMapping.Add("JQuery:Each", "each");
  18. OperationsMapping.Add("JQuery:Eq", "eq");
  19. OperationsMapping.Add("JQuery:Queue", "queue");
  20. OperationsMapping.Add("JQuery:Dequeue", "dequeue");
  21. OperationsMapping.Add("JQuery:Ready", "ready");
  22. OperationsMapping.Add("JQuery:Bind", "bind");
  23. OperationsMapping.Add("JQuery:One", "one");
  24. OperationsMapping.Add("JQuery:Trigger", "trigger");
  25. OperationsMapping.Add("JQuery:TriggerHandler", "triggerHandler");
  26. OperationsMapping.Add("JQuery:Unbind", "unbind");
  27. OperationsMapping.Add("JQuery:Live", "live");
  28. OperationsMapping.Add("JQuery:Die", "die");
  29. OperationsMapping.Add("JQuery:Hover", "hover(@over, @out)");
  30. OperationsMapping.Add("JQuery:Toggle", "toggle");
  31. OperationsMapping.Add("JQuery:Blur", "Blur");
  32. OperationsMapping.Add("JQuery:Change", "change");
  33. OperationsMapping.Add("JQuery:Click", "click");
  34. OperationsMapping.Add("JQuery:DblClick", "dblClick");
  35. OperationsMapping.Add("JQuery:Error", "error");
  36. OperationsMapping.Add("JQuery:Focus", "focus");
  37. OperationsMapping.Add("JQuery:KeyDown", "keydown");
  38. OperationsMapping.Add("JQuery:KeyPress", "keypress");
  39. OperationsMapping.Add("JQuery:KeyUp", "keyup");
  40. OperationsMapping.Add("JQuery:MouseDown", "mousedown");
  41. OperationsMapping.Add("JQuery:MouseMove", "mousemove");
  42. OperationsMapping.Add("JQuery:MouseOut", "mouseout");
  43. OperationsMapping.Add("JQuery:MouseOver", "mouseover");
  44. OperationsMapping.Add("JQuery:MouseUp", "mouseup");
  45. OperationsMapping.Add("JQuery:Resize", "resize");
  46. OperationsMapping.Add("JQuery:Scroll", "scroll");
  47. OperationsMapping.Add("JQuery:Select", "select");
  48. OperationsMapping.Add("JQuery:Submit", "submit");
  49. OperationsMapping.Add("JQuery:Unload", "unload");
  50. OperationsMapping.Add("JQuery:Animate", "animate");
  51. OperationsMapping.Add("JQuery:FadeIn", "fadeIn");
  52. OperationsMapping.Add("JQuery:FadeOut", "fadeOut");
  53. OperationsMapping.Add("JQuery:FadeTo", "fadeTo");
  54. OperationsMapping.Add("JQuery:Hide", "hide");
  55. OperationsMapping.Add("JQuery:Show", "show");
  56. OperationsMapping.Add("JQuery:SlideDown", "slideDown");
  57. OperationsMapping.Add("JQuery:SlideToggle", "slideToggle");
  58. OperationsMapping.Add("JQuery:SlideUp", "slideUp");
  59. OperationsMapping.Add("JQuery:Stop", "stop");
  60. OperationsMapping.Add("JQuery:Attr", "attr");
  61. OperationsMapping.Add("JQuery:RemoveAttr", "removeAttr");
  62. OperationsMapping.Add("JQuery:AddClass", "addClass");
  63. OperationsMapping.Add("JQuery:RemoveClass", "removeClass");
  64. OperationsMapping.Add("JQuery:ToggleClass", "toggleClass");
  65. OperationsMapping.Add("JQuery:Html", "html");
  66. OperationsMapping.Add("JQuery:Text", "text");
  67. OperationsMapping.Add("JQuery:Val", "val");
  68. OperationsMapping.Add("JQuery:Filter", "filter");
  69. OperationsMapping.Add("JQuery:Map", "map");
  70. OperationsMapping.Add("JQuery:Not", "not");
  71. OperationsMapping.Add("JQuery:Slice", "slice");
  72. OperationsMapping.Add("JQuery:Add", "add");
  73. OperationsMapping.Add("JQuery:Children", "children");
  74. OperationsMapping.Add("JQuery:Contents", "contents");
  75. OperationsMapping.Add("JQuery:Find", "find");
  76. OperationsMapping.Add("JQuery:Next", "next");
  77. OperationsMapping.Add("JQuery:NextAll", "nextAll");
  78. OperationsMapping.Add("JQuery:Parent", "parent");
  79. OperationsMapping.Add("JQuery:Parents", "parents");
  80. OperationsMapping.Add("JQuery:Prev", "prev");
  81. OperationsMapping.Add("JQuery:PrevAll", "prevAll");
  82. OperationsMapping.Add("JQuery:Siblings", "siblings");
  83. OperationsMapping.Add("JQuery:AndSelf", "andSelf");
  84. OperationsMapping.Add("JQuery:End", "end");
  85. OperationsMapping.Add("JQuery:Append", "append");
  86. OperationsMapping.Add("JQuery:AppendTo", "appendTo");
  87. OperationsMapping.Add("JQuery:Prepend", "prepend");
  88. OperationsMapping.Add("JQuery:PrependTo", "prependTo");
  89. OperationsMapping.Add("JQuery:After", "after");
  90. OperationsMapping.Add("JQuery:Before", "before");
  91. OperationsMapping.Add("JQuery:InsertAfter", "insertAfter");
  92. OperationsMapping.Add("JQuery:InsertBefore", "insertBefore");
  93. OperationsMapping.Add("JQuery:Wrap", "wrap");
  94. OperationsMapping.Add("JQuery:WrapAll", "wrapAll");
  95. OperationsMapping.Add("JQuery:WrapInner", "wrapInner");
  96. OperationsMapping.Add("JQuery:ReplaceAll", "replaceAll");
  97. OperationsMapping.Add("JQuery:ReplaceWith", "replaceWith");
  98. OperationsMapping.Add("JQuery:Empty", "empty");
  99. OperationsMapping.Add("JQuery:Remove", "remove");
  100. OperationsMapping.Add("JQuery:Clone", "clone");
  101. OperationsMapping.Add("JQuery:Css", "css");
  102. OperationsMapping.Add("JQuery:Height", "height");
  103. OperationsMapping.Add("JQuery:Width", "width");
  104. OperationsMapping.Add("JQuery:Load", "load");
  105. OperationsMapping.Add("JQuery:DisableSelection", "disableSelection");
  106. OperationsMapping.Add("JQuery:EnableSelection", "enableSelection");
  107. }
  108. private JSObject _selector;
  109. JavaScriptSerializer serializer = new JavaScriptSerializer();
  110. public static DomResult Call(string pluginName, params object[] parameters)
  111. {
  112. var domResult = new DomResult();
  113. domResult.AddOperation(pluginName, parameters, "$." + pluginName);
  114. return domResult;
  115. }
  116. public JQuery(string selector) : this(new JSString(selector), false) { }
  117. public JQuery(JSObject selector) : this(selector, false) { }
  118. internal JQuery(JSObject selector, bool isParameter)
  119. {
  120. _selector = selector;
  121. if (_selector != null)
  122. {
  123. if (isParameter)
  124. {
  125. AddParameter(selector.ToString());
  126. AddOperation("JQuery:$With", selector, "$(" + selector + ")");
  127. }
  128. else
  129. {
  130. AddOperation("JQuery:$", selector, "$");
  131. }
  132. }
  133. else
  134. {
  135. }
  136. }
  137. public JSObject Selector
  138. {
  139. get
  140. {
  141. return _selector;
  142. }
  143. }
  144. #region Core
  145. // See http://docs.jquery.com/Core
  146. public JQuery Each(string callback)
  147. {
  148. return CallPlugIn("JQuery:Each", "each", callback);
  149. }
  150. public JQuery Each(DomResult jquery)
  151. {
  152. return CallPlugIn("JQuery:Each", "each", jquery);
  153. }
  154. public JQuery Eq(int index)
  155. {
  156. return CallPlugIn("JQuery:Eq", "eq", index);
  157. }
  158. //TODO: Queue(string name), Queue(string name, string jquery)
  159. public JQuery Queue(string callback)
  160. {
  161. return CallPlugIn("JQuery:Queue", "queue", callback);
  162. }
  163. public JQuery Queue(JQuery jquery)
  164. {
  165. return CallPlugIn("JQuery:Queue", "queue", jquery);
  166. }
  167. //TODO: Dequeue(string name)
  168. public JQuery Dequeue()
  169. {
  170. return CallPlugIn("JQuery:Dequeue", "dequeue", (object)null);
  171. }
  172. #endregion
  173. #region Events
  174. public JQuery Ready(string callback)
  175. {
  176. return CallPlugIn("JQuery:Ready", "ready", callback);
  177. }
  178. public JQuery Ready(JQuery jquery)
  179. {
  180. return CallPlugIn("JQuery:Ready", "ready", jquery);
  181. }
  182. public JQuery Bind(string type, string callback)
  183. {
  184. return CallPlugIn("JQuery:Bind", "bind", type, callback);
  185. }
  186. public JQuery Bind(string type, JQuery jquery)
  187. {
  188. return CallPlugIn("JQuery:Bind", "bind", type, jquery);
  189. }
  190. public JQuery Bind(string type, Dictionary<string, object> data, string callback)
  191. {
  192. return Bind(type, data, callback);
  193. }
  194. public JQuery Bind(string type, object data, string callback)
  195. {
  196. return CallPlugIn("JQuery:Bind", "bind", type, new JavaScriptSerializer().Serialize(data), callback);
  197. }
  198. public JQuery Bind(string type, object data, JQuery jquery)
  199. {
  200. return CallPlugIn("JQuery:Bind", "bind", type, new JavaScriptSerializer().Serialize(data), jquery);
  201. }
  202. public JQuery One(string type, string callback)
  203. {
  204. return CallPlugIn("JQuery:One", "one", type, callback);
  205. }
  206. public JQuery One(string type, JQuery jquery)
  207. {
  208. return One(type, jquery.ToScript());
  209. }
  210. public JQuery One(string type, Dictionary<string, object> data, string callback)
  211. {
  212. return One(type, data, callback);
  213. }
  214. public JQuery One(string type, object data, string callback)
  215. {
  216. return CallPlugIn("JQuery:One", "one",
  217. new Dictionary<string, object>() { { "Type", type }, { "Data", serializer.Serialize(data) }, { "Callback", callback } });
  218. }
  219. public JQuery One(string type, object data, JQuery jquery)
  220. {
  221. return One(type, data, jquery.ToScript());
  222. }
  223. public JQuery Trigger(string type)
  224. {
  225. return CallPlugIn("JQuery:Trigger", "trigger", type);
  226. }
  227. public JQuery Trigger(string type, Dictionary<string, object> data)
  228. {
  229. return Trigger(type, data);
  230. }
  231. public JQuery Trigger(string type, object data)
  232. {
  233. return CallPlugIn("JQuery:Trigger", "trigger",
  234. new Dictionary<string, object>() { { "Type", type }, { "Data", new JavaScriptSerializer().Serialize(data) } });
  235. }
  236. public JQuery TriggerHandler(string type)
  237. {
  238. return CallPlugIn("JQuery:TriggerHandler", "triggerHandler", type);
  239. }
  240. public JQuery TriggerHandler(string type, Dictionary<string, object> data)
  241. {
  242. return TriggerHandler(type, data);
  243. }
  244. public JQuery TriggerHandler(string type, object data)
  245. {
  246. return CallPlugIn("JQuery:TriggerHandler", "triggerHandler",
  247. new Dictionary<string, object>() { { "Type", type }, { "Data", new JavaScriptSerializer().Serialize(data) } });
  248. }
  249. public JQuery Unbind()
  250. {
  251. return CallPlugIn("JQuery:Unbind", "unbind");
  252. }
  253. public JQuery Unbind(string type)
  254. {
  255. return CallPlugIn("JQuery:Unbind", "unbind", type);
  256. }
  257. public JQuery Unbind(string type, string data)
  258. {
  259. return CallPlugIn("JQuery:Unbind", "unbind", type, data);
  260. }
  261. public JQuery Live(string type, JQuery jquery)
  262. {
  263. return Live(type, Extensions.ToFunctionExpression(jquery));
  264. }
  265. public JQuery Live(string type, JSFunction jsFunction)
  266. {
  267. return CallPlugIn("JQuery:Live", "live", type, jsFunction);
  268. }
  269. public JQuery Live(string type, string callback)
  270. {
  271. return CallPlugIn("JQuery:Live", "live",
  272. new Dictionary<string, object>() { { "Type", type }, { "Callback", callback } });
  273. }
  274. public JQuery Die()
  275. {
  276. return CallPlugIn("JQuery:Die", "die");
  277. }
  278. public JQuery Die(string type)
  279. {
  280. return CallPlugIn("JQuery:Die", "die", type);
  281. }
  282. public JQuery Die(string type, JQuery jquery)
  283. {
  284. return Die(type, Extensions.ToFunctionExpression(jquery));
  285. }
  286. public JQuery Die(string type, JSFunction callback)
  287. {
  288. return CallPlugIn("JQuery:Die", "die",
  289. new Dictionary<string, object>() { { "Type", type }, { "Callback", callback } });
  290. }
  291. public JQuery Hover(string overHandler, string outHandler)
  292. {
  293. AddOperation("JQuery:TriggerHandler", null, ".hover(" + overHandler + "," + outHandler + ")");
  294. return this;
  295. }
  296. public JQuery Toggle(ToggleEffect effect)
  297. {
  298. return CallPlugIn("JQuery:Toggle", "toggle", effect.ToString().ToLower());
  299. }
  300. public JQuery Toggle(params string[] handlers)
  301. {
  302. if (handlers.Length < 2)
  303. {
  304. throw new ArgumentException("Too few handlers. There must be at least two.", "handlers");
  305. }
  306. return CallPlugIn("JQuery:Toggle", "triggetHandler", string.Join(",", handlers));
  307. }
  308. public JQuery Blur()
  309. {
  310. return CallPlugIn("JQuery:Blur", "blur");
  311. }
  312. public JQuery Blur(string callback)
  313. {
  314. return CallPlugIn("JQuery:Blur", "blur", callback);
  315. }
  316. public JQuery Blur(JQuery jquery)
  317. {
  318. return Blur(jquery.ToScript());
  319. }
  320. public JQuery Change()
  321. {
  322. return CallPlugIn("JQuery:Change", "change");
  323. }
  324. public JQuery Change(JSFunction callback)
  325. {
  326. return CallPlugIn("JQuery:Change", "change", callback);
  327. }
  328. public JQuery Change(JQuery jquery)
  329. {
  330. return Change(Extensions.ToFunctionExpression(jquery));
  331. }
  332. public JQuery Click()
  333. {
  334. return CallPlugIn("JQuery:Click", "click");
  335. }
  336. public JQuery Click(string callback)
  337. {
  338. return CallPlugIn("JQuery:Click", "click", callback);
  339. }
  340. public JQuery Click(JQuery callback)
  341. {
  342. return CallPlugIn("JQuery:Click", "click", Extensions.ToFunctionExpression(callback));
  343. }
  344. public JQuery DblClick()
  345. {
  346. return CallPlugIn("JQuery:DblClick", "dblclick");
  347. }
  348. public JQuery DblClick(string callback)
  349. {
  350. return CallPlugIn("JQuery:DblClick", "dblclick", callback);
  351. }
  352. public JQuery DblClick(JQuery jquery)
  353. {
  354. return CallPlugIn("JQuery:DblClick", "dblclick", jquery);
  355. }
  356. public JQuery Error()
  357. {
  358. return CallPlugIn("JQuery:Error", "error");
  359. }
  360. public JQuery Error(string callback)
  361. {
  362. return CallPlugIn("JQuery:Error", "error", callback);
  363. }
  364. public JQuery Error(JQuery jquery)
  365. {
  366. return CallPlugIn("JQuery:Error", "error", Extensions.ToFunctionExpression(jquery));
  367. }
  368. public JQuery Focus()
  369. {
  370. return CallPlugIn("JQuery:Focus", "focus");
  371. }
  372. public JQuery Focus(string callback)
  373. {
  374. return CallPlugIn("JQuery:Focus", "focus", callback);
  375. }
  376. public JQuery Focus(JQuery jquery)
  377. {
  378. return CallPlugIn("JQuery:Focus", "focus", Extensions.ToFunctionExpression(jquery));
  379. }
  380. public JQuery KeyDown()
  381. {
  382. return CallPlugIn("JQuery:KeyDown", "keydown");
  383. }
  384. public JQuery KeyDown(string callback)
  385. {
  386. return CallPlugIn("JQuery:KeyDown", "keydown", callback);
  387. }
  388. public JQuery KeyDown(JQuery jquery)
  389. {
  390. return CallPlugIn("JQuery:KeyDown", "keydown", Extensions.ToFunctionExpression(jquery));
  391. }
  392. public JQuery KeyPress()
  393. {
  394. return CallPlugIn("JQuery:KeyPress", "keypress");
  395. }
  396. public JQuery KeyPress(string callback)
  397. {
  398. return CallPlugIn("JQuery:KeyPress", "keypress", callback);
  399. }
  400. public JQuery KeyPress(JQuery jquery)
  401. {
  402. return CallPlugIn("JQuery:KeyPress", "keypress", Extensions.ToFunctionExpression(jquery));
  403. }
  404. public JQuery KeyUp()
  405. {
  406. return KeyUp((string)null);
  407. }
  408. public JQuery KeyUp(string callback)
  409. {
  410. return CallPlugIn("JQuery:KeyUp", "keyup", callback);
  411. }
  412. public JQuery KeyUp(JQuery jquery)
  413. {
  414. return CallPlugIn("JQuery:KeyUp", "keyup", Extensions.ToFunctionExpression(jquery));
  415. }
  416. public JQuery LoadEvent(string callback)
  417. {
  418. return CallPlugIn("JQuery:LoadEvent", "load", callback);
  419. }
  420. public JQuery MouseDown()
  421. {
  422. return CallPlugIn("JQuery:MouseDown", "mousedown");
  423. }
  424. public JQuery MouseMove(string callback)
  425. {
  426. return CallPlugIn("JQuery:MouseMove", "mousemove", callback);
  427. }
  428. public JQuery MouseMove(JQuery jquery)
  429. {
  430. return CallPlugIn("JQuery:MouseMove", "mousemove", Extensions.ToFunctionExpression(jquery));
  431. }
  432. public JQuery MouseOut(JSFunction callback)
  433. {
  434. return CallPlugIn("JQuery:MouseOut", "mouseout", callback);
  435. }
  436. public JQuery MouseOut(JQuery jquery)
  437. {
  438. return MouseOut(Extensions.ToFunctionExpression(jquery));
  439. }
  440. public JQuery MouseOver(JSFunction callback)
  441. {
  442. return CallPlugIn("JQuery:MouseOver", "mouseover", callback);
  443. }
  444. public JQuery MouseOver(JQuery jquery)
  445. {
  446. return MouseOver(Extensions.ToFunctionExpression(jquery));
  447. }
  448. public JQuery MouseUp(JSFunction callback)
  449. {
  450. return CallPlugIn("JQuery:MouseUp", "mouseup", callback);
  451. }
  452. public JQuery MouseUp(JQuery jquery)
  453. {
  454. return CallPlugIn("JQuery:MouseUp", "mouseup", Extensions.ToFunctionExpression(jquery));
  455. }
  456. public JQuery Resize(JSFunction callback)
  457. {
  458. return CallPlugIn("JQuery:Resize", "resize", callback);
  459. }
  460. public JQuery Resize(JQuery jquery)
  461. {
  462. return Resize(Extensions.ToFunctionExpression(jquery));
  463. }
  464. public JQuery Scroll(JSFunction callback)
  465. {
  466. return CallPlugIn("JQuery:Scroll", "scroll", callback);
  467. }
  468. public JQuery Scroll(JQuery jquery)
  469. {
  470. return Scroll(Extensions.ToFunctionExpression(jquery));
  471. }
  472. public JQuery Select()
  473. {
  474. return CallPlugIn("JQuery:Select", "select");
  475. }
  476. public JQuery Select(JSFunction callback)
  477. {
  478. return CallPlugIn("JQuery:Select", "select", callback);
  479. }
  480. public JQuery Select(JQuery jquery)
  481. {
  482. return Select(Extensions.ToFunctionExpression(jquery));
  483. }
  484. public JQuery Submit()
  485. {
  486. return CallPlugIn("JQuery:Submit", "submit");
  487. }
  488. public JQuery Submit(JSFunction callback)
  489. {
  490. return CallPlugIn("JQuery:Submit", "submit", callback);
  491. }
  492. public JQuery Submit(JQuery jquery)
  493. {
  494. return Submit(Extensions.ToFunctionExpression(jquery));
  495. }
  496. public JQuery Unload(JSFunction callback)
  497. {
  498. return CallPlugIn("JQuery:Unload", "unload", callback);
  499. }
  500. public JQuery Unload(JQuery jquery)
  501. {
  502. return CallPlugIn("JQuery:Unload", "unload", Extensions.ToFunctionExpression(jquery));
  503. }
  504. #endregion
  505. #region Effects
  506. public JQuery Animate(object parameters, object options)
  507. {
  508. return CallPlugIn("JQuery:Animate", "animate", parameters, options);
  509. }
  510. public JQuery Animate(object parameters, int duration)
  511. {
  512. return CallPlugIn("JQuery:Animate", "animate", parameters, duration);
  513. }
  514. public JQuery Animate(object parameters, string duration)
  515. {
  516. return CallPlugIn("JQuery:Animate", "animate", parameters, duration);
  517. }
  518. public JQuery Animate(object parameters, int duration, string easing)
  519. {
  520. return CallPlugIn("JQuery:Animate", "animate", parameters, duration, easing);
  521. }
  522. public JQuery Animate(object parameters, string duration, string easing)
  523. {
  524. return CallPlugIn("JQuery:Animate", "animate", parameters, duration, easing);
  525. }
  526. public JQuery Animate(object parameters, int duration, string easing, string callback)
  527. {
  528. return CallPlugIn("JQuery:Animate", "animate", parameters, duration, easing, callback);
  529. }
  530. public JQuery Animate(object parameters, string duration, string easing, string callback)
  531. {
  532. return CallPlugIn("JQuery:Animate", "animate", parameters, duration, easing, callback);
  533. }
  534. public JQuery Animate(object parameters, int duration, string easing, JQuery callback)
  535. {
  536. return Animate(parameters, duration, easing, Extensions.ToFunctionExpression(callback.ToScript()));
  537. }
  538. public JQuery Animate(object parameters, string duration, string easing, JQuery callback)
  539. {
  540. return Animate(parameters, duration, easing, Extensions.ToFunctionExpression(callback.ToScript()));
  541. }
  542. public JQuery Delay(int duration)
  543. {
  544. return CallPlugIn("JQuery:Delay", "delay", duration);
  545. }
  546. #region FadeIn
  547. public JQuery FadeIn(int duration)
  548. {
  549. return CallPlugIn("JQuery:FadeIn", "fadeIn", duration);
  550. }
  551. public JQuery FadeIn(string speed)
  552. {
  553. return CallPlugIn("JQuery:FadeIn", "fadeIn", speed);
  554. }
  555. public JQuery FadeIn(int duration, string callback)
  556. {
  557. return FadeIn(duration, new JSFunctionString(callback));
  558. }
  559. public JQuery FadeIn(string speed, string callback)
  560. {
  561. return CallPlugIn("JQuery:FadeIn", "fadeIn",
  562. new List<object>() { { speed }, { callback } });
  563. }
  564. public JQuery FadeIn(string speed, JSObject callback)
  565. {
  566. return CallPlugIn("JQuery:FadeIn", "fadeIn",
  567. new List<object>() { { speed }, { callback } });
  568. }
  569. public JQuery FadeIn(int duration, JSObject callback)
  570. {
  571. return CallPlugIn("JQuery:FadeIn", "fadeIn",
  572. new List<object>() { { duration }, { callback } });
  573. }
  574. public JQuery FadeIn(int duration, JQuery callback)
  575. {
  576. return FadeIn(duration, callback.ToFunctionExpression());
  577. }
  578. public JQuery FadeIn(string speed, JQuery callback)
  579. {
  580. return FadeIn(speed, callback.ToFunctionExpression());
  581. }
  582. #endregion
  583. #region FadeOut
  584. public JQuery FadeOut(int duration)
  585. {
  586. return CallPlugIn("JQuery:FadeOut", "fadeOut", duration);
  587. }
  588. public JQuery FadeOut(string speed)
  589. {
  590. return CallPlugIn("JQuery:FadeOut", "fadeOut", speed);
  591. }
  592. public JQuery FadeOut(int duration, string callback)
  593. {
  594. return FadeOut(duration, new JSFunctionString(callback));
  595. }
  596. public JQuery FadeOut(string speed, string callback)
  597. {
  598. return FadeOut(speed, new JSFunctionString(callback));
  599. }
  600. public JQuery FadeOut(int duration, JSObject callback)
  601. {
  602. return CallPlugIn("JQuery:FadeOut", "fadeOut",
  603. new List<object>() { { duration }, { callback } });
  604. }
  605. public JQuery FadeOut(string speed, JSObject callback)
  606. {
  607. return CallPlugIn("JQuery:FadeOut", "fadeOut",
  608. new List<object>() { { speed }, { callback } });
  609. }
  610. public JQuery FadeOut(int duration, JQuery callback)
  611. {
  612. return FadeOut(duration, callback.ToFunctionExpression());
  613. }
  614. public JQuery FadeOut(string speed, JQuery callback)
  615. {
  616. return FadeOut(speed, callback.ToFunctionExpression());
  617. }
  618. #endregion
  619. #region FadeTo
  620. public JQuery FadeTo(int duration, double opacity)
  621. {
  622. return CallPlugIn("JQuery:FadeTo", "fadeTo",
  623. new List<object>() { { duration }, { opacity } });
  624. }
  625. public JQuery FadeTo(string speed, double opacity)
  626. {
  627. return CallPlugIn("JQuery:FadeTo", "fadeTo",
  628. new List<object>() { { speed }, { opacity } });
  629. }
  630. public JQuery FadeTo(int duration, double opacity, string callback)
  631. {
  632. return FadeTo(duration, opacity, new JSFunctionString(callback));
  633. }
  634. public JQuery FadeTo(string speed, double opacity, string callback)
  635. {
  636. return FadeTo(speed, opacity, new JSFunctionString(callback));
  637. }
  638. public JQuery FadeTo(int duration, double opacity, JSObject callback)
  639. {
  640. return CallPlugIn("JQuery:FadeTo", "fadeTo",
  641. new List<object>() { { duration }, { opacity }, { callback } });
  642. }
  643. public JQuery FadeTo(string speed, double opacity, JSObject callback)
  644. {
  645. return CallPlugIn("JQuery:FadeTo", "fadeTo",
  646. new List<object>() { { speed }, { opacity }, { callback } });
  647. }
  648. public JQuery FadeTo(int duration, double opacity, JQuery callback)
  649. {
  650. return FadeTo(duration, opacity, callback.ToFunctionExpression());
  651. }
  652. public JQuery FadeTo(string speed, double opacity, JQuery callback)
  653. {
  654. return FadeTo(speed, opacity, callback.ToFunctionExpression());
  655. }
  656. #endregion
  657. public JQuery Hide()
  658. {
  659. return CallPlugIn("JQuery:Hide", "hide");
  660. }
  661. public JQuery Hide(int duration)
  662. {
  663. return CallPlugIn("JQuery:Hide", "hide", duration);
  664. }
  665. public JQuery Hide(string speed)
  666. {
  667. return CallPlugIn("JQuery:Hide", "hide", speed);
  668. }
  669. public JQuery Hide(int duration, string callback)
  670. {
  671. return CallPlugIn("JQuery:Hide", "hide",
  672. new Dictionary<string, object>() { { "Val", duration }, { "Callback", callback } });
  673. }
  674. public JQuery Hide(string speed, string callback)
  675. {
  676. return CallPlugIn("JQuery:Hide", "hide",
  677. new Dictionary<string, object>() { { "Val", speed }, { "Callback", callback } });
  678. }
  679. public JQuery Hide(int duration, JQuery callback)
  680. {
  681. return Hide(duration, Extensions.ToFunctionExpression(callback.ToScript()));
  682. }
  683. public JQuery Hide(string speed, JQuery callback)
  684. {
  685. return Hide(speed, Extensions.ToFunctionExpression(callback.ToScript()));
  686. }
  687. public JQuery Show()
  688. {
  689. return CallPlugIn("JQuery:Show", "show");
  690. }
  691. public JQuery Show(int duration)
  692. {
  693. return CallPlugIn("JQuery:Show", "show", duration);
  694. }
  695. public JQuery Show(string speed)
  696. {
  697. return CallPlugIn("JQuery:Show", "show", speed);
  698. }
  699. public JQuery Show(int duration, string callback)
  700. {
  701. return CallPlugIn("JQuery:Show", "show",
  702. new Dictionary<string, object>() { { "Val", duration }, { "Callback", callback } });
  703. }
  704. public JQuery Show(string speed, string callback)
  705. {
  706. return CallPlugIn("JQuery:Show", "show",
  707. new Dictionary<string, object>() { { "Val", speed }, { "Callback", callback } });
  708. }
  709. public JQuery SlideDown(int duration)
  710. {
  711. return CallPlugIn("JQuery:SlideDown", "slideDown", duration);
  712. }
  713. public JQuery SlideDown(string speed)
  714. {
  715. return CallPlugIn("JQuery:SlideDown", "slideDown", speed);
  716. }
  717. public JQuery SlideDown(int duration, string callback)
  718. {
  719. return CallPlugIn("JQuery:SlideDown", "slideDown",
  720. new Dictionary<string, object>() { { "Val", duration }, { "Callback", callback } });
  721. }
  722. public JQuery SlideDown(string speed, string callback)
  723. {
  724. return CallPlugIn("JQuery:SlideDown", "slideDown",
  725. new Dictionary<string, object>() { { "Val", speed }, { "Callback", callback } });
  726. }
  727. public JQuery SlideDown(int duration, JQuery callback)
  728. {
  729. return SlideDown(duration, Extensions.ToFunctionExpression(callback.ToScript()));
  730. }
  731. public JQuery SlideDown(string speed, JQuery callback)
  732. {
  733. return SlideDown(speed, Extensions.ToFunctionExpression(callback.ToScript()));
  734. }
  735. #region SlideToggle
  736. public JQuery SlideToggle(int duration)
  737. {
  738. return CallPlugIn("JQuery:SlideToggle", "slideToggle", duration);
  739. }
  740. public JQuery SlideToggle(string speed)
  741. {
  742. return CallPlugIn("JQuery:SlideToggle", "slideToggle", speed);
  743. }
  744. public JQuery SlideToggle(int duration, string callback)
  745. {
  746. return SlideToggle(duration, new JSFunctionString(callback));
  747. }
  748. public JQuery SlideToggle(string speed, string callback)
  749. {
  750. return SlideToggle(speed, new JSFunctionString(callback));
  751. }
  752. public JQuery SlideToggle(int duration, JSObject callback)
  753. {
  754. return CallPlugIn("JQuery:SlideToggle", "slideToggle",
  755. new List<object>() { { duration }, { callback } });
  756. }
  757. public JQuery SlideToggle(string speed, JSObject callback)
  758. {
  759. return CallPlugIn("JQuery:SlideToggle", "slideToggle",
  760. new List<object>() { { speed }, { callback } });
  761. }
  762. public JQuery SlideToggle(int duration, JQuery callback)
  763. {
  764. return SlideToggle(duration, callback.ToFunctionExpression());
  765. }
  766. public JQuery SlideToggle(string speed, JQuery callback)
  767. {
  768. return SlideToggle(speed, callback.ToFunctionExpression());
  769. }
  770. #endregion
  771. public JQuery SlideUp(int duration)
  772. {
  773. return CallPlugIn("JQuery:SlideUp", "slideUp", duration);
  774. }
  775. public JQuery SlideUp(string speed)
  776. {
  777. return CallPlugIn("JQuery:SlideUp", "slideUp", speed);
  778. }
  779. public JQuery SlideUp(int duration, string callback)
  780. {
  781. return CallPlugIn("JQuery:SlideUp", "slideUp",
  782. new Dictionary<string, object>() { { "Val", duration }, { "Callback", callback } });
  783. }
  784. public JQuery SlideUp(string speed, string callback)
  785. {
  786. return CallPlugIn("JQuery:SlideUp", "slideUp",
  787. new Dictionary<string, object>() { { "Val", speed }, { "Callback", callback } });
  788. }
  789. public JQuery SlideUp(int duration, JQuery callback)
  790. {
  791. return SlideUp(duration, Extensions.ToFunctionExpression(callback.ToScript()));
  792. }
  793. public JQuery SlideUp(string speed, JQuery callback)
  794. {
  795. return SlideUp(speed, Extensions.ToFunctionExpression(callback.ToScript()));
  796. }
  797. public JQuery Stop()
  798. {
  799. return CallPlugIn("JQuery:Stop", "stop");
  800. }
  801. public JQuery Toggle()
  802. {
  803. return CallPlugIn("JQuery:Toggle", "toggle");
  804. }
  805. public JQuery CallPlugIn(string operationType, string plugin, Dictionary<string, object> parameters)
  806. {
  807. AddOperation(operationType, parameters, "." + plugin);
  808. return this;
  809. }
  810. public JQuery CallPlugIn(string plugin, params object[] parameters)
  811. {
  812. return CallPlugIn("JQuery:PlugIn:" + plugin, plugin, parameters);
  813. }
  814. public JQuery CallPlugIn(string operationType, string plugin, params object[] parameters)
  815. {
  816. AddOperation(operationType, parameters, "." + plugin);
  817. return this;
  818. }
  819. public JQuery CallPlugIn(string operationType, string plugin, object singleParameterValue)
  820. {
  821. AddOperation(operationType, singleParameterValue, "." + plugin);
  822. return this;
  823. }
  824. public JQuery CallPlugIn(string plugin, Dictionary<string, object> parameters)
  825. {
  826. return CallPlugIn("JQuery:PlugIn:" + plugin, plugin, parameters);
  827. }
  828. public JQuery CallPlugIn(string plugin, object singleParameterValue)
  829. {
  830. return CallPlugIn("JQuery:PlugIn:" + plugin, plugin, singleParameterValue);
  831. }
  832. #endregion
  833. #region Attributes
  834. // See http://docs.jquery.com/Attributes
  835. public JQuery Attr(string name, string value)
  836. {
  837. return CallPlugIn("JQuery:Attr", "attr",
  838. new Dictionary<string, object>() { { "Name", name }, { "Value", value } });
  839. }
  840. public JQuery RemoveAttr(string name)
  841. {
  842. return CallPlugIn("JQuery:RemoveAttr", "removeAttr", name);
  843. }
  844. public JQuery AddClass(string name)
  845. {
  846. return CallPlugIn("JQuery:AddClass", "addClass", name);
  847. }
  848. //TODO: HasClass(string class)
  849. public JQuery RemoveClass()
  850. {
  851. return CallPlugIn("JQuery:RemoveClass", "removeClass");
  852. }
  853. public JQuery RemoveClass(string name)
  854. {
  855. return CallPlugIn("JQuery:RemoveClass", "removeClass", name);
  856. }
  857. public JQuery ToggleClass(string name)
  858. {
  859. return CallPlugIn("JQuery:ToggleClass", "toggleClass", name);
  860. }
  861. public JQuery Html()
  862. {
  863. return CallPlugIn("JQuery:Html", "html");
  864. }
  865. public JQuery Html(string val)
  866. {
  867. return CallPlugIn("JQuery:Html", "html", val);
  868. }
  869. public JQuery Html(DomResult val)
  870. {
  871. return CallPlugIn("JQuery:Html", "html", val);
  872. }
  873. //TODO: string Text()
  874. /*
  875. public string Text() // hmm, will this work? :-~
  876. {
  877. return CallPlugIn("JQuery:Text", String.Empty,
  878. ".text()");
  879. return Owner.ToScript();;
  880. }
  881. */
  882. public JQuery Text(string val)
  883. {
  884. return CallPlugIn("JQuery:Text", "text", val);
  885. }
  886. public DomResult Val()
  887. {
  888. return CallPlugIn("JQuery:Val", "val");
  889. }
  890. public JQuery Val(string value)
  891. {
  892. return CallPlugIn("JQuery:Val", "val", value);
  893. }
  894. #endregion
  895. #region Traversing
  896. // See http://docs.jquery.com/Traversing
  897. public JQuery Filter(string expr)
  898. {
  899. return CallPlugIn("JQuery:Filter", "filter", expr);
  900. }
  901. public JQuery FilterFunction(string callback)
  902. {
  903. return CallPlugIn("JQuery:FilterFunction", "filter", callback);
  904. }
  905. //TODO: Is()
  906. public JQuery Map(string callback)
  907. {
  908. return CallPlugIn("JQuery:Map", "map", callback);
  909. }
  910. public JQuery Not(string expr)
  911. {
  912. return CallPlugIn("JQuery:Not", "not", expr);
  913. }
  914. public JQuery Slice(int start, int end)
  915. {
  916. return CallPlugIn("JQuery:Slice", "slice",
  917. new Dictionary<string, object>() { { "Start", start }, { "End", end } });
  918. }
  919. public JQuery Add(string expr)
  920. {
  921. return CallPlugIn("JQuery:Add", "add", expr);
  922. }
  923. public JQuery Children()
  924. {
  925. return CallPlugIn("JQuery:Children", "children");
  926. }
  927. public JQuery Children(string expr)
  928. {
  929. return CallPlugIn("JQuery:Children", "children", expr);
  930. }
  931. //TODO: Closest
  932. public JQuery Contents()
  933. {
  934. return CallPlugIn("JQuery:Contents", "contents");
  935. }
  936. public JQuery Find(string expr)
  937. {
  938. return CallPlugIn("JQuery:Find", "find", expr);
  939. }
  940. public JQuery Next()
  941. {
  942. return CallPlugIn("JQuery:Next", "next");
  943. }
  944. public JQuery Next(string expr)
  945. {
  946. return CallPlugIn("JQuery:Next", "next", expr);
  947. }
  948. public JQuery NextAll()
  949. {
  950. return CallPlugIn("JQuery:NextAll", "nextAll");
  951. }
  952. public JQuery NextAll(string expr)
  953. {
  954. return CallPlugIn("JQuery:NextAll", "nextAll", expr);
  955. }
  956. public JQuery Parent()
  957. {
  958. return CallPlugIn("JQuery:Parent", "parent");
  959. }
  960. public JQuery Parent(string expr)
  961. {
  962. return CallPlugIn("JQuery:Parent", "parent", expr);
  963. }
  964. public JQuery Parents()
  965. {
  966. return CallPlugIn("JQuery:Parents", "parents");
  967. }
  968. public JQuery Parents(string expr)
  969. {
  970. return CallPlugIn("JQuery:Parents", "parents", expr);
  971. }
  972. public JQuery Prev()
  973. {
  974. return CallPlugIn("JQuery:Prev", "prev");
  975. }
  976. public JQuery Prev(string expr)
  977. {
  978. return CallPlugIn("JQuery:Prev", "prev", expr);
  979. }
  980. public JQuery PrevAll()
  981. {
  982. return CallPlugIn("JQuery:PrevAll", "prevAll");
  983. }
  984. public JQuery PrevAll(string expr)
  985. {
  986. return CallPlugIn("JQuery:PrevAll", "prevAll", expr);
  987. }
  988. public JQuery Siblings()
  989. {
  990. return CallPlugIn("JQuery:Siblings", "siblings");
  991. }
  992. public JQuery Siblings(string expr)
  993. {
  994. return CallPlugIn("JQuery:Siblings", "siblings", expr);
  995. }
  996. public JQuery AndSelf()
  997. {
  998. return CallPlugIn("JQuery:AndSelf", "andSelf");
  999. }
  1000. public JQuery End()
  1001. {
  1002. return CallPlugIn("JQuery:End", "end");
  1003. }
  1004. #endregion
  1005. #region Manipulation
  1006. // See http://docs.jquery.com/Manipulation
  1007. // Html and Text are under Attributes
  1008. public JQuery Append(string expr)
  1009. {
  1010. return CallPlugIn("JQuery:Append", "append", expr);
  1011. }
  1012. public JQuery Append(JQuery jquery)
  1013. {
  1014. return CallPlugIn("JQuery:Append", "append", jquery);
  1015. }
  1016. public JQuery AppendTo(string expr)
  1017. {
  1018. return CallPlugIn("JQuery:AppendTo", "appendTo", expr);
  1019. }
  1020. public JQuery Prepend(string expr)
  1021. {
  1022. return CallPlugIn("JQuery:Prepend", "prepend", expr);
  1023. }
  1024. public JQuery Prepend(JQuery jquery)
  1025. {
  1026. return CallPlugIn("JQuery:Prepend", "prepend", jquery);
  1027. }
  1028. public JQuery PrependTo(string expr)
  1029. {
  1030. return CallPlugIn("JQuery:PrependTo", "prependTo", expr);
  1031. }
  1032. public JQuery After(string expr)
  1033. {
  1034. return CallPlugIn("JQuery:After", "after", expr);
  1035. }
  1036. public JQuery After(JQuery jquery)
  1037. {
  1038. return CallPlugIn("JQuery:After", "after", jquery);
  1039. }
  1040. public JQuery Before(string expr)
  1041. {
  1042. return CallPlugIn("JQuery:Before", "before", expr);
  1043. }
  1044. public JQuery Before(JQuery jquery)
  1045. {
  1046. return CallPlugIn("JQuery:Before", "before", jquery);
  1047. }
  1048. public JQuery InsertAfter(string expr)
  1049. {
  1050. return CallPlugIn("JQuery:InsertAfter", "insertAfter", expr);
  1051. }
  1052. public JQuery InsertBefore(string expr)
  1053. {
  1054. return CallPlugIn("JQuery:InsertBefore", "insertBefore", expr);
  1055. }
  1056. public JQuery Wrap(string html)
  1057. {
  1058. return CallPlugIn("JQuery:Wrap", "wrap", html);
  1059. }
  1060. public JQuery WrapAll(string html)
  1061. {
  1062. return CallPlugIn("JQuery:WrapAll", "wrapAll", html);
  1063. }
  1064. public JQuery WrapInner(string html)
  1065. {
  1066. return CallPlugIn("JQuery:WrapInner", "wrapInner", html);
  1067. }
  1068. public JQuery ReplaceAll(string expr)
  1069. {
  1070. return CallPlugIn("JQuery:ReplaceAll", "replaceAll", expr);
  1071. }
  1072. public JQuery ReplaceAll(JQuery jquery)
  1073. {
  1074. return CallPlugIn("JQuery:ReplaceAll", "replaceAll", jquery);
  1075. }
  1076. public JQuery ReplaceWith(string expr)
  1077. {
  1078. return CallPlugIn("JQuery:ReplaceWith", "replaceWith", expr);
  1079. }
  1080. public JQuery ReplaceWith(JQuery jquery)
  1081. {
  1082. return CallPlugIn("JQuery:ReplaceWith", "replaceWith", jquery);
  1083. }
  1084. public JQuery Empty()
  1085. {
  1086. return CallPlugIn("JQuery:Empty", "empty");
  1087. }
  1088. public JQuery Remove()
  1089. {
  1090. return CallPlugIn("JQuery:Remove", "remove");
  1091. }
  1092. public JQuery Remove(string expr)
  1093. {
  1094. return CallPlugIn("JQuery:Remove", "remove", expr);
  1095. }
  1096. public JQuery Clone()
  1097. {
  1098. return Clone(false);
  1099. }
  1100. public JQuery Clone(bool cloneEvents)
  1101. {
  1102. return CallPlugIn("JQuery:Clone", "clone", cloneEvents);
  1103. }
  1104. public JSObject Value
  1105. {
  1106. get { return CallPlugIn("JQuery:Value", "val", (object)null); }
  1107. set { CallPlugIn("JQuery:Value", "val", value); }
  1108. }
  1109. #endregion
  1110. #region CSS
  1111. public JQuery Css(object properties)
  1112. {
  1113. return CallPlugIn("JQuery:Css", "css", new JavaScriptSerializer().Serialize(properties));
  1114. }
  1115. public JQuery Css(Dictionary<string, object> properties)
  1116. {
  1117. return Css(properties);
  1118. }
  1119. public JQuery Css(string name, string value)
  1120. {
  1121. return CallPlugIn("JQuery:Css", "css",
  1122. new Dictionary<string, object>() { { "Name", name }, { "Value", value } });
  1123. }
  1124. //TODO: ScrollTop and ScrollLeft
  1125. public JQuery Height(string val)
  1126. {
  1127. return CallPlugIn("JQuery:Height", "height", val);
  1128. }
  1129. public JQuery Height(int val)
  1130. {
  1131. return CallPlugIn("JQuery:Height", "height", val);
  1132. }
  1133. public JQuery Width(string val)
  1134. {
  1135. return CallPlugIn("JQuery:Width", "width", val);
  1136. }
  1137. public JQuery Width(int val)
  1138. {
  1139. return CallPlugIn("JQuery:Width", "width", val);
  1140. }
  1141. #endregion
  1142. #region Ajax
  1143. public JQuery Load(string url)
  1144. {
  1145. return CallPlugIn("JQuery:Load", "load", url);
  1146. }
  1147. public JQuery Load(string url, Dictionary<string, object> data)
  1148. {
  1149. return Load(url, data);
  1150. }
  1151. public JQuery Load(string url, object data)
  1152. {
  1153. return CallPlugIn("JQuery:Load", "load",
  1154. new Dictionary<string, object>() { { "Url", url }, { "Data", serializer.Serialize(data) } });
  1155. }
  1156. public JQuery Load(string url, Dictionary<string, object> data, string callback)
  1157. {
  1158. return Load(url, (object)data, callback);
  1159. }
  1160. public JQuery Load(string url, object data, string callback)
  1161. {
  1162. return CallPlugIn("JQuery:Load", "load",
  1163. new Dictionary<string, object>() { { "Url", url }, { "Data", serializer.Serialize(data) }, { "Callback", callback } });
  1164. }
  1165. #endregion
  1166. #region Utilities
  1167. // See http://docs.jquery.com/Utilities
  1168. #endregion
  1169. public JQuery DisableSelection()
  1170. {
  1171. return CallPlugIn("JQuery:DisableSelection", "disableSelection");
  1172. }
  1173. public JQuery EnableSelection()
  1174. {
  1175. return CallPlugIn("JQuery:EnableSelection", "enableSelection");
  1176. }
  1177. public JSFunction ToFunctionExpression()
  1178. {
  1179. return Extensions.ToFunctionExpression(this);
  1180. }
  1181. public static AjaxQuery Ajax()
  1182. {
  1183. return new AjaxQuery();
  1184. }
  1185. public static JQuery Tmpl(string template, object data)
  1186. {
  1187. var jq = new JQuery((JSObject)null);
  1188. jq.AddOperation("tmpl", new object[] { template, data }, "$.tmpl");
  1189. return jq;
  1190. }
  1191. public override string ToString()
  1192. {
  1193. return ToScript();
  1194. }
  1195. }
  1196. //public static class JQueryExtensions
  1197. //{
  1198. // public static JQuery JQuery(DomResult domResult, string query)
  1199. // {
  1200. // return new JQuery(domResult, query);
  1201. // }
  1202. // public static JQuery JQueryWith(DomResult domResult, string parameterName)
  1203. // {
  1204. // return new JQuery(domResult, parameterName, true);
  1205. // }
  1206. //}
  1207. public enum ToggleEffect
  1208. {
  1209. Blind,
  1210. Clip,
  1211. Drop,
  1212. Explode,
  1213. Fold,
  1214. Puff,
  1215. Slide,
  1216. Scale,
  1217. Size,
  1218. Pulsate
  1219. }
  1220. }