Comments 26
Спасибо, но раз нет демо — описали бы на словах сам эффект.
Добавил описание, еще можно скачать архив, в нем полностью работоспособное демо. Библиотеки дергаются с dev.sencha.com
«пока карма позволяет, спасибо плюсанувшим»
спасибо тебе, что правильно и со смыслом пишешь!
спасибо тебе, что правильно и со смыслом пишешь!
А почему бы не сделать плагином? Так можно будет к любому окну добавлять :)
Плагином не получилось, были свои сложности. С другой стороны вашему компоненту достаточно наследовать от TabWindow, вместо Window, результат будет тот же
А если этот компонент сторонний то что делать его менять по сути дела этот функционал к окну не чего не добавляет а просто связывает два компонента по этому можно и плагином я уверен.
Я хотел изначально сделать плагином, но были сложности с tools, я бы не смог кнопочку «прикрепить» сделать перед кнопками закрыть и развернуть на весь экран, поэтому что этого не позволяет сделать очередность вызовов initComponent, согласитесь, это не очень красиво. А извращаться например с position: absolute и координатами тоже не хотелось.
Вам не кажется что конкретно вкладки подразумевают переключение между одноразмерными страницами(любые вкладки что в ежедневнике, что в примерах extjs, jquery и т.п), ваше расширение меня например ввело в ступор. Оно не логично.
А переключение между окнами аля десктоп виндовс давно (года 3 точно) реализовано в примере dev.sencha.com/deploy/dev/examples/desktop/desktop.html
А переключение между окнами аля десктоп виндовс давно (года 3 точно) реализовано в примере dev.sencha.com/deploy/dev/examples/desktop/desktop.html
Мое приложение не аля десктоп. Главным компонентом там является TabPanel, куда прикажете сворачивать окна? :)
я о том. что если вы работаете с окнами таб панели немного не уместны, они подразумевают все-таки, что вы переключаете окна ограниченные бордером таб панели, а не окна в середине этого бордера. Имхо, есть разница между закругленным со всех сторон боттоном обозначающим окно(все-равно где он находится) и таб панелью.
>>конкретно вкладки подразумевают переключение между одноразмерными страницами
необязательно:

не всегда нужны большие окна
необязательно:

не всегда нужны большие окна
пример посмотрели?? никто не спорит что переключение бывает нужно. Но при переключении вкладок подразумевается что вкладка отгораживается по линии(на вашем скриншоте это светлосерая Install VMvare) соответственно googlemail по логике находится под ней. все-таки пример посмотрите, он малость логичнее.
На форуме extjs присутствует вот такая реализация
[code]
Ext.override(Ext.Panel, {
makeDockable: function() {
var o = this.ownerCt;
if (!o || !(o instanceof Ext.TabPanel)) {
return;
}
Ext.fly(o.getTabEl(this)).on(«dblclick», this.undock, this);
},
undock: function() {
var h = this.getEl().getHeight();
var w = this.getEl().getWidth();
var o = this.ownerCt;
o.remove(this);
var win;
win = new Ext.Window({
renderTo: Ext.getBody(),
title: this.title,
constrain: true,
items: this,
tools: [{
id: 'pin',
qtip: 'Redock to original parent',
handler: function() {
win.remove(this);
o.add(this);
o.setActiveTab(this);
o.doLayout();
win.destroy();
this.makeDockable(); // The tab selector is new.
},
scope: this
}]
});
win.setHeight(h);
win.setWidth(w);
o.doLayout();
win.show();
}
});
[/code]
[code]
Ext.override(Ext.Panel, {
makeDockable: function() {
var o = this.ownerCt;
if (!o || !(o instanceof Ext.TabPanel)) {
return;
}
Ext.fly(o.getTabEl(this)).on(«dblclick», this.undock, this);
},
undock: function() {
var h = this.getEl().getHeight();
var w = this.getEl().getWidth();
var o = this.ownerCt;
o.remove(this);
var win;
win = new Ext.Window({
renderTo: Ext.getBody(),
title: this.title,
constrain: true,
items: this,
tools: [{
id: 'pin',
qtip: 'Redock to original parent',
handler: function() {
win.remove(this);
o.add(this);
o.setActiveTab(this);
o.doLayout();
win.destroy();
this.makeDockable(); // The tab selector is new.
},
scope: this
}]
});
win.setHeight(h);
win.setWidth(w);
o.doLayout();
win.show();
}
});
[/code]
Моя не создает новых инстансов панелей или окошек:)
Да вышеприведенный пример делает тоже самое, создает новое окно ( в вашем случае это new Ext.Helper.TabWindow() ), и производит манипуляции с табпанелью (this.tabpanel.remove / o.remove и this.tabpanel.add / o.add для вашего и моего примера соответсвенно). Разворачиваться это окошко также может, при добавлении ему свойства maximizable. А вот свойство minimizable ни в вашем, ни в вышеприведенном примере увы не поддерживается, так что про сворачивание я не понял.
И да, моя сворачивается и разворачивается :)
Обновил ссылку depositfiles.com/ru/files/38gxue87l
Исходного кода под 400 строк, немного многовато :)
Исходного кода под 400 строк, немного многовато :)
Sign up to leave a comment.
TabWindow plugin, окно сворачиваемое/разворачиваемое в TabPanel