Плагином не получилось, были свои сложности. С другой стороны вашему компоненту достаточно наследовать от TabWindow, вместо Window, результат будет тот же
А если этот компонент сторонний то что делать его менять по сути дела этот функционал к окну не чего не добавляет а просто связывает два компонента по этому можно и плагином я уверен.
Я хотел изначально сделать плагином, но были сложности с tools, я бы не смог кнопочку «прикрепить» сделать перед кнопками закрыть и развернуть на весь экран, поэтому что этого не позволяет сделать очередность вызовов initComponent, согласитесь, это не очень красиво. А извращаться например с position: absolute и координатами тоже не хотелось.
Вам не кажется что конкретно вкладки подразумевают переключение между одноразмерными страницами(любые вкладки что в ежедневнике, что в примерах extjs, jquery и т.п), ваше расширение меня например ввело в ступор. Оно не логично.
А переключение между окнами аля десктоп виндовс давно (года 3 точно) реализовано в примере dev.sencha.com/deploy/dev/examples/desktop/desktop.html
я о том. что если вы работаете с окнами таб панели немного не уместны, они подразумевают все-таки, что вы переключаете окна ограниченные бордером таб панели, а не окна в середине этого бордера. Имхо, есть разница между закругленным со всех сторон боттоном обозначающим окно(все-равно где он находится) и таб панелью.
На самом деле задача была вполне конкретной, сворачивать окна в табпанель, трансформируя при этом окно во вкладку (обычную панель прикрепленную к табпанели). Поэтому, раз моему начальству потребовалась реализация этой задачи на практике, возможно и еще кому-то пригодится.
пример посмотрели?? никто не спорит что переключение бывает нужно. Но при переключении вкладок подразумевается что вкладка отгораживается по линии(на вашем скриншоте это светлосерая Install VMvare) соответственно googlemail по логике находится под ней. все-таки пример посмотрите, он малость логичнее.
Да вышеприведенный пример делает тоже самое, создает новое окно ( в вашем случае это new Ext.Helper.TabWindow() ), и производит манипуляции с табпанелью (this.tabpanel.remove / o.remove и this.tabpanel.add / o.add для вашего и моего примера соответсвенно). Разворачиваться это окошко также может, при добавлении ему свойства maximizable. А вот свойство minimizable ни в вашем, ни в вышеприведенном примере увы не поддерживается, так что про сворачивание я не понял.
Разобрался… Ну у меня в расширении при включении/выключении окна в табпанель, не создается каждый раз инстанс окна. У меня по сути окно трансформируется в панель и обратно из панели в окно.
TabWindow plugin, окно сворачиваемое/разворачиваемое в TabPanel