src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ListBox.js
changeset 69 a361355b55c7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/pyams_skin/resources/js/ext/tinymce/dev/classes/ui/ListBox.js	Wed Jun 17 10:00:10 2015 +0200
@@ -0,0 +1,143 @@
+/**
+ * ListBox.js
+ *
+ * Copyright, Moxiecode Systems AB
+ * Released under LGPL License.
+ *
+ * License: http://www.tinymce.com/license
+ * Contributing: http://www.tinymce.com/contributing
+ */
+
+/**
+ * Creates a new list box control.
+ *
+ * @-x-less ListBox.less
+ * @class tinymce.ui.ListBox
+ * @extends tinymce.ui.MenuButton
+ */
+define("tinymce/ui/ListBox", [
+	"tinymce/ui/MenuButton"
+], function(MenuButton) {
+	"use strict";
+
+	return MenuButton.extend({
+		/**
+		 * Constructs a instance with the specified settings.
+		 *
+		 * @constructor
+		 * @param {Object} settings Name/value object with settings.
+		 * @setting {Array} values Array with values to add to list box.
+		 */
+		init: function(settings) {
+			var self = this, values, selected, selectedText, lastItemCtrl;
+
+			function setSelected(menuValues) {
+				// Try to find a selected value
+				for (var i = 0; i < menuValues.length; i++) {
+					selected = menuValues[i].selected || settings.value === menuValues[i].value;
+
+					if (selected) {
+						selectedText = selectedText || menuValues[i].text;
+						self._value = menuValues[i].value;
+						break;
+					}
+
+					// If the value has a submenu, try to find the selected values in that menu
+					if (menuValues[i].menu) {
+						setSelected(menuValues[i].menu);
+					}
+				}
+			}
+
+			self._values = values = settings.values;
+			if (values) {
+				setSelected(values);
+
+				// Default with first item
+				if (!selected && values.length > 0) {
+					selectedText = values[0].text;
+					self._value = values[0].value;
+				}
+
+				settings.menu = values;
+			}
+
+			settings.text = settings.text || selectedText || values[0].text;
+
+			self._super(settings);
+			self.addClass('listbox');
+
+			self.on('select', function(e) {
+				var ctrl = e.control;
+
+				if (lastItemCtrl) {
+					e.lastControl = lastItemCtrl;
+				}
+
+				if (settings.multiple) {
+					ctrl.active(!ctrl.active());
+				} else {
+					self.value(e.control.settings.value);
+				}
+
+				lastItemCtrl = ctrl;
+			});
+		},
+
+		/**
+		 * Getter/setter function for the control value.
+		 *
+		 * @method value
+		 * @param {String} [value] Value to be set.
+		 * @return {Boolean/tinymce.ui.ListBox} Value or self if it's a set operation.
+		 */
+		value: function(value) {
+			var self = this, active, selectedText, menu;
+
+			function activateByValue(menu, value) {
+				menu.items().each(function(ctrl) {
+					active = ctrl.value() === value;
+
+					if (active) {
+						selectedText = selectedText || ctrl.text();
+					}
+
+					ctrl.active(active);
+
+					if (ctrl.menu) {
+						activateByValue(ctrl.menu, value);
+					}
+				});
+			}
+
+			function setActiveValues(menuValues) {
+				for (var i = 0; i < menuValues.length; i++) {
+					active = menuValues[i].value == value;
+
+					if (active) {
+						selectedText = selectedText || menuValues[i].text;
+					}
+
+					menuValues[i].active = active;
+
+					if (menuValues[i].menu) {
+						setActiveValues(menuValues[i].menu);
+					}
+				}
+			}
+
+			if (typeof value != "undefined") {
+				if (self.menu) {
+					activateByValue(self.menu, value);
+				} else {
+					menu = self.settings.menu;
+					setActiveValues(menu);
+				}
+
+				self.text(selectedText || this.settings.text);
+			}
+
+			return self._super(value);
+		}
+	});
+});