+++ /dev/null
-/**
- * Toolbar with menus providing quick access to class members.
- */
-Ext.define('Docs.view.cls.Toolbar', {
- extend: 'Ext.toolbar.Toolbar',
- requires: [
- 'Docs.view.HoverMenuButton',
- 'Docs.Settings'
- ],
-
- dock: 'top',
- cls: 'member-links',
- padding: '3 5',
-
- /**
- * @cfg {Object} docClass
- * Documentation for a class.
- */
- docClass: {},
-
- initComponent: function() {
- this.items = [];
- this.memberButtons = {};
-
- var memberTitles = {
- cfg: "Configs",
- property: "Properties",
- method: "Methods",
- event: "Events"
- };
- for (var type in memberTitles) {
- var members = this.docClass.members[type];
- if (members.length) {
- var btn = this.createMemberButton({
- text: memberTitles[type],
- type: type,
- members: members
- });
- this.memberButtons[type] = btn;
- this.items.push(btn);
- }
- }
-
- if (this.docClass.subclasses.length) {
- this.items.push(this.createClassListButton("Sub Classes", this.docClass.subclasses));
- }
- if (this.docClass.mixedInto.length) {
- this.items.push(this.createClassListButton("Mixed Into", this.docClass.mixedInto));
- }
-
- this.items = this.items.concat([
- { xtype: 'tbfill' },
- {
- boxLabel: 'Hide inherited',
- boxLabelAlign: 'before',
- xtype: 'checkbox',
- margin: '0 5 0 0',
- padding: '0 0 5 0',
- checked: Docs.Settings.get("hideInherited"),
- handler: function(el) {
- this.hideInherited(el.checked);
- },
- scope: this
- },
- {
- xtype: 'button',
- iconCls: 'expandAllMembers',
- tooltip: "Expand all",
- handler: function() {
- Ext.Array.forEach(Ext.query('.side.expandable'), function(el) {
- Ext.get(el).parent().addCls('open');
- });
- }
- },
- {
- xtype: 'button',
- iconCls: 'collapseAllMembers',
- tooltip: "Collapse all",
- handler: function() {
- Ext.Array.forEach(Ext.query('.side.expandable'), function(el) {
- Ext.get(el).parent().removeCls('open');
- });
- }
- }
- ]);
-
- this.callParent(arguments);
- },
-
- createMemberButton: function(cfg) {
- var data = Ext.Array.map(cfg.members, function(m) {
- return this.createLinkRecord(this.docClass.name, m);
- }, this);
-
- return Ext.create('Docs.view.HoverMenuButton', {
- text: cfg.text,
- cls: 'icon-'+cfg.type,
- store: this.createStore(data),
- showCount: true,
- listeners: {
- click: function() {
- this.up('classoverview').scrollToEl("#m-" + cfg.type);
- },
- scope: this
- }
- });
- },
-
- createClassListButton: function(text, classes) {
- var data = Ext.Array.map(classes, function(cls) {
- return this.createLinkRecord(cls);
- }, this);
-
- return Ext.create('Docs.view.HoverMenuButton', {
- text: text,
- cls: 'icon-subclass',
- showCount: true,
- store: this.createStore(data)
- });
- },
-
- // creates store tha holds link records
- createStore: function(records) {
- var store = Ext.create('Ext.data.Store', {
- fields: ['id', 'cls', 'url', 'label', 'inherited']
- });
- store.add(records);
- return store;
- },
-
- // Creates link object referencing a class (and optionally a class member)
- createLinkRecord: function(cls, member) {
- return {
- cls: cls,
- url: member ? cls+"-"+member.tagname+"-"+member.name : cls,
- label: member ? member.name : cls,
- inherited: member ? member.owner !== cls : false
- };
- },
-
- /**
- * Hides or unhides inherited members.
- * @param {Boolean} hide
- */
- hideInherited: function(hide) {
- Docs.Settings.set("hideInherited", hide);
-
- // show/hide all inherited members
- Ext.Array.forEach(Ext.query('.member.inherited'), function(m) {
- Ext.get(m).setStyle({display: hide ? 'none' : 'block'});
- });
-
- // Remove all first-child classes
- Ext.Array.forEach(Ext.query('.member.first-child'), function(m) {
- Ext.get(m).removeCls('first-child');
- });
-
- Ext.Array.forEach(['cfg', 'property', 'method', 'event'], function(type) {
- var sectionId = '#m-' + type;
-
- // Hide the section completely if all items in it are inherited
- if (Ext.query(sectionId+' .member.not-inherited').length === 0) {
- var section = Ext.query(sectionId)[0];
- section && Ext.get(section).setStyle({display: hide ? 'none' : 'block'});
- }
-
- // add first-child class to first member in section
- var sectionMembers = Ext.query(sectionId+' .member' + (hide ? ".not-inherited" : ""));
- if (sectionMembers.length > 0) {
- Ext.get(sectionMembers[0]).addCls('first-child');
- }
-
- if (this.memberButtons[type]) {
- var store = this.memberButtons[type].getStore();
- if (hide) {
- store.filterBy(function(m) { return !m.get("inherited"); });
- }
- else {
- store.clearFilter();
- }
- }
- }, this);
- }
-});