commandselectmenu.js 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /**
  2. * @fileOverview
  3. *
  4. * 生成与指定命令绑定的下拉选框
  5. *
  6. * @author: techird
  7. * @copyright: Baidu FEX, 2014
  8. */
  9. KityMinder.registerUI('widget/commandselectmenu', function(minder) {
  10. function mapValueWidget(command, valueList) {
  11. return valueList.map(function(value) {
  12. var text = minder.getLang([command, value].join('.')) || value;
  13. return {
  14. clazz: 'Button',
  15. label: text,
  16. text: text,
  17. value: value,
  18. className: [command, value].join(' ')
  19. };
  20. });
  21. }
  22. function generate(command, valueList, column) {
  23. var $selectMenu = new FUI.SelectMenu({
  24. widgets: typeof(valueList[0]) == 'object' ? valueList : mapValueWidget(command, valueList),
  25. className: ['command-widget', 'command-selectmenu', command].join(' '),
  26. column: column || 3
  27. });
  28. $selectMenu.bindExecution('change', function() {
  29. minder.execCommand(command, $selectMenu.getValue());
  30. });
  31. $selectMenu.bindCommandState(minder, command, function(value) {
  32. if (value !== undefined) this.selectByValue(value);
  33. });
  34. return $selectMenu;
  35. }
  36. return {
  37. generate: generate
  38. };
  39. });