]> git.sur5r.net Git - bacula/bacula/blob - gui/baculum/debian/missing-sources/framework/Web/Javascripts/source/tinymce-405/classes/ui/Menu.js
baculum: Add missing-sources directory in debian metadata structure
[bacula/bacula] / gui / baculum / debian / missing-sources / framework / Web / Javascripts / source / tinymce-405 / classes / ui / Menu.js
1 /**
2  * Menu.js
3  *
4  * Copyright, Moxiecode Systems AB
5  * Released under LGPL License.
6  *
7  * License: http://www.tinymce.com/license
8  * Contributing: http://www.tinymce.com/contributing
9  */
10
11 /**
12  * Creates a new menu.
13  *
14  * @-x-less Menu.less
15  * @class tinymce.ui.Menu
16  * @extends tinymce.ui.FloatPanel
17  */
18 define("tinymce/ui/Menu", [
19         "tinymce/ui/FloatPanel",
20         "tinymce/ui/KeyboardNavigation",
21         "tinymce/ui/MenuItem",
22         "tinymce/util/Tools"
23 ], function(FloatPanel, KeyboardNavigation, MenuItem, Tools) {
24         "use strict";
25
26         var Menu = FloatPanel.extend({
27                 Defaults: {
28                         defaultType: 'menuitem',
29                         border: 1,
30                         layout: 'stack',
31                         role: 'menu'
32                 },
33
34                 /**
35                  * Constructs a instance with the specified settings.
36                  *
37                  * @constructor
38                  * @param {Object} settings Name/value object with settings.
39                  */
40                 init: function(settings) {
41                         var self = this;
42
43                         settings.autohide = true;
44                         settings.constrainToViewport = true;
45
46                         if (settings.itemDefaults) {
47                                 var items = settings.items, i = items.length;
48
49                                 while (i--) {
50                                         items[i] = Tools.extend({}, settings.itemDefaults, items[i]);
51                                 }
52                         }
53
54                         self._super(settings);
55                         self.addClass('menu');
56
57                         self.keyNav = new KeyboardNavigation({
58                                 root: self,
59                                 enableUpDown: true,
60                                 enableLeftRight: true,
61
62                                 leftAction: function() {
63                                         if (self.parent() instanceof MenuItem) {
64                                                 self.keyNav.cancel();
65                                         }
66                                 },
67
68                                 onCancel: function() {
69                                         self.fire('cancel', {}, false);
70                                         self.hide();
71                                 }
72                         });
73                 },
74
75                 /**
76                  * Repaints the control after a layout operation.
77                  *
78                  * @method repaint
79                  */
80                 repaint: function() {
81                         this.toggleClass('menu-align', true);
82
83                         this._super();
84
85                         this.getEl().style.height = '';
86                         this.getEl('body').style.height = '';
87
88                         return this;
89                 },
90
91                 /**
92                  * Hides/closes the menu.
93                  *
94                  * @method cancel
95                  */
96                 cancel: function() {
97                         var self = this;
98
99                         self.hideAll();
100                         self.fire('cancel');
101                         self.fire('select');
102                 },
103
104                 /**
105                  * Hide menu and all sub menus.
106                  *
107                  * @method hideAll
108                  */
109                 hideAll: function() {
110                         var self = this;
111
112                         this.find('menuitem').exec('hideMenu');
113
114                         return self._super();
115                 },
116
117                 /**
118                  * Invoked before the menu is rendered.
119                  *
120                  * @method preRender
121                  */
122                 preRender: function() {
123                         var self = this;
124
125                         self.items().each(function(ctrl) {
126                                 var settings = ctrl.settings;
127
128                                 if (settings.icon || settings.selectable) {
129                                         self._hasIcons = true;
130                                         return false;
131                                 }
132                         });
133
134                         return self._super();
135                 }
136         });
137
138         return Menu;
139 });