13693261870
2022-09-16 354b3dbfbffb3df45212a2a44dbbf48b4acc2594
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*!
 * Ext JS Library 4.0
 * Copyright(c) 2006-2011 Sencha Inc.
 * licensing@sencha.com
 * http://www.sencha.com/license
 */
 
Ext.define('Ext.ux.desktop.StartMenu', {
    extend: 'Ext.panel.Panel',
 
    requires: [
        'Ext.menu.Menu',
        'Ext.toolbar.Toolbar'
    ],
 
    ariaRole: 'menu',
 
    cls: 'x-menu ux-start-menu',
 
    defaultAlign: 'bl-tl',
 
    iconCls: 'user',
 
    floating: true,
 
    shadow: true,
 
    // We have to hardcode a width because the internal Menu cannot drive our width.
    // This is combined with changing the align property of the menu's layout from the
    // typical 'stretchmax' to 'stretch' which allows the the items to fill the menu
    // area.
    width: 300,
 
    initComponent: function() {
        var me = this, menu = me.menu;
 
        me.menu = new Ext.menu.Menu({
            cls: 'ux-start-menu-body',
            border: false,
            floating: false,
            items: menu
        });
        me.menu.layout.align = 'stretch';
 
        me.items = [me.menu];
        me.layout = 'fit';
 
        Ext.menu.Manager.register(me);
        me.callParent();
        // TODO - relay menu events
 
        me.toolbar = new Ext.toolbar.Toolbar(Ext.apply({
            dock: 'right',
            cls: 'ux-start-menu-toolbar',
            vertical: true,
            width: 100,
            listeners: {
                add: function(tb, c) {
                    c.on({
                        click: function() {
                            me.hide();
                        }
                    });
                }
            }
        }, me.toolConfig));
 
        me.toolbar.layout.align = 'stretch';
        me.addDocked(me.toolbar);
 
        delete me.toolItems;
    },
 
    addMenuItem: function() {
        var cmp = this.menu;
        cmp.add.apply(cmp, arguments);
    },
 
    addToolItem: function() {
        var cmp = this.toolbar;
        cmp.add.apply(cmp, arguments);
    }
}); // StartMenu