Search
Write a publication
Pull to refresh

TabWindow plugin, окно сворачиваемое/разворачиваемое в TabPanel

Reading time2 min
Views1.5K

Ext.Helper.TabWindow


Выкладываю расширение (пока карма позволяет, спасибо плюсанувшим) Ext.Window -> Ext.Helper.TabWindow, которое вполне себе может сворачиваться в TabPanel ну и соответственно разворачиваться обратно в окно.


UPD. В краце, те кто знаком с компонентом TabPanel (панель реализующая мультивкладки, как любой современный браузер например), знают что в качестве вкладок TabPanel выступает компонент Panel, в свою очередь Window расширяет Panel. Передо мной стояла задача закрепить на TabPanel — Window инстансы, с этой целью и был расширен компонент Window.

Сразу скажу что не претендую на приз за clear style code, знания по extjs у меня есть, но не такие как хотелось бы, поэтому расширение прежде всего работает, а код… Ну я старался, честно.



Для данного эффекта пришлось расширять как Ext.Window, так и Ext.TabPanel, поэтому в архиве ниже вы найдете еще и класс Ext.ExtendTabPanel

Сначала пытался оформить в качестве плагина, но были свои ограничения, поэтому плюнул и переписал под расширение.

Кода достаточно много, поэтому не знаю даже выкладывать его сюда или нет… Пожалуй весь не буду…

Ext.namespace('Ext.Helper');

Ext.Helper.TabWindow = Ext.extend(Ext.Window, {

   tabpanel    : null,     //Ссылка на extendtabpanel Этот параметр обязателен, ибо крепится к чему-то ведь должно, 

   bindable    : false,   //true, чтобы вообще была возможность крепить
   
   autobinding : false, //Передается в качестве параметра, если true, то соответсвенно крепится на tabpanel   автоматом
   
   isTab : function() {}, //возвращает true - если в TabPanel, иначе false
   
   bind : function() {},  //закрепить на панель
         
   unbind : function() {}, //открепить
});

Ext.reg('tabwindow', Ext.Helper.TabWindow);


Пример:

new Ext.Helper.TabWindow({
       tabpanel     : tabpanel,
      width        : 400,
      height       : 300,
      title        : 'bind window ' ,
      maximizable  : true,
      bindable     : true
}).show();


UPD: В архиве полностью рабочий пример, поэтому кому надо и так разберется, спасибо за внимание!

P.S. Если вдруг архива не окажется там где нужно, пишите, восстановлю…
Tags:
Hubs:
Total votes 29: ↑27 and ↓2+25
Comments26

Articles