DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 23.03.06 11:57
Оценка: 44 (6)
Всем привет.
в общем, есть небольшая задумка реализовать в браузере поддержку настраиваемых тулбаров аля в MSOffice.
есть даже первые наметки под IE: http://911.ru/to_rsdn/docking.html

что там есть:
— dock/undock (drag&dock) на специальные "панели".
— запоминание позиции перед dock'ом для последующего восстановления там же.
— dock/undock по dblclick на заголовке тулбара.
— контроль положения слоя(zIndex).
— динамическое создание тулбаров(в коде в window.onload все видно).

много чего не сделано, например — докирование всегда происходит в "хвост" набора тулбаров на данной панели.
но это ведь пока только зарисовки...

в общем, интересует ваше мнение.
--
DSD
Re: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 23.03.06 15:10
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>в общем, интересует ваше мнение.


есть предложение оформить JS:
— в виде отдельных файлов
— чтото более менее напоминающее ООП. пример ООП JS библиотеки есть у нас в svn://rsdn.ru/SharedLibraries

в принципе довольно занятно, готов приложиться чем смогу, например отточкой на других браузерах.в т.ч. Safari
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[2]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 23.03.06 16:36
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>есть предложение оформить JS:

M>- в виде отдельных файлов
M>- чтото более менее напоминающее ООП. пример ООП JS библиотеки есть у нас в svn://rsdn.ru/SharedLibraries
в отдельный JS оформляться будет обязательно. я же сказал, это только наметки.
я обычно, пока отлаживаю, все пишу в одном HTML-файле — так проще — при ошибках четко говорится номер строки.
а в JS эту строку нужно еще найти.


M>в принципе довольно занятно, готов приложиться чем смогу, например отточкой на других браузерах.в т.ч. Safari

вот это я только ЗА! а то так сложилось, что эксперт я только в IE просто у меня никогда не было необходимости писать под другие браузеры.
в таком случае проект можно даже развить до чего-то подобного VCL в Delphi.(правда я знаю, что JS-framework'и уже существуют в немалых количествах и до нас )

P.S. а svn:// протокол — это чего такое?
--
DSD
Re[3]: DHTML docking toolbars
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 23.03.06 17:39
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>P.S. а svn:// протокол — это чего такое?


Это VCS такая — Subversion.
[ posted via RSDN@Home 1.1.4 stable SR1 r568, accompanied by silence ]
- Искренне ваш, Поросенок Пафнутий
Re[3]: DHTML docking toolbars
От: Mamut Швеция http://dmitriid.com
Дата: 23.03.06 18:58
Оценка:
DSD>я обычно, пока отлаживаю, все пишу в одном HTML-файле — так проще — при ошибках четко говорится номер строки.
DSD>а в JS эту строку нужно еще найти.

Можно пользоваться Файрфоксом и Венкманом

Хотя, каждому свое
... << RSDN@Home 1.2.0 alpha rev. 647>> ... <<James Last — Yesterday>> ...


dmitriid.comGitHubLinkedIn
Re[3]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 24.03.06 10:56
Оценка:
Здравствуйте, DSD, Вы писали:

M>>в принципе довольно занятно, готов приложиться чем смогу, например отточкой на других браузерах.в т.ч. Safari

DSD>вот это я только ЗА! а то так сложилось, что эксперт я только в IE просто у меня никогда не было необходимости писать под другие браузеры.
DSD>в таком случае проект можно даже развить до чего-то подобного VCL в Delphi.(правда я знаю, что JS-framework'и уже существуют в немалых количествах и до нас )

тогда если ты не против, я попробую преобразовать твой код в в ООП подобный, и запустить его под FF.

DSD>P.S. а svn:// протокол — это чего такое?


http://rsdn.ru/projects/SharedLibraries/ArticleRus.xml
последний абзац.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[4]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 24.03.06 11:56
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>тогда если ты не против, я попробую преобразовать твой код в в ООП подобный, и запустить его под FF.

да нет, не простив. был бы против, не выкладывал бы сюда
единственно, что я этот код обновляю периодически — в свободное время чегото дорабатываю.
--
DSD
Re[5]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 24.03.06 11:59
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, mogadanez, Вы писали:


M>>тогда если ты не против, я попробую преобразовать твой код в в ООП подобный, и запустить его под FF.

DSD>да нет, не простив. был бы против, не выкладывал бы сюда
DSD>единственно, что я этот код обновляю периодически — в свободное время чегото дорабатываю.

поэтому удобно его держать где нить в соурс контроле... Если есть желание можно в нашем.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[6]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 24.03.06 12:00
Оценка:
Здравствуйте, mogadanez, Вы писали:

DSD>>единственно, что я этот код обновляю периодически — в свободное время чегото дорабатываю.


M>поэтому удобно его держать где нить в соурс контроле... Если есть желание можно в нашем.

ну, это чуть позже. сделаю нормальную стабильную реализацию(которую по моим понятиям смогу назвать v1.0), тогда можно и в общий репозитарий для дальнейших правок.
--
DSD
Re[7]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 24.03.06 12:09
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, mogadanez, Вы писали:


DSD>>>единственно, что я этот код обновляю периодически — в свободное время чегото дорабатываю.


M>>поэтому удобно его держать где нить в соурс контроле... Если есть желание можно в нашем.

DSD>ну, это чуть позже. сделаю нормальную стабильную реализацию(которую по моим понятиям смогу назвать v1.0), тогда можно и в общий репозитарий для дальнейших правок.

Ок.. а тут у тебя всегда последняя версия?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[8]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 24.03.06 12:22
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>Здравствуйте, DSD, Вы писали:


DSD>>Здравствуйте, mogadanez, Вы писали:


DSD>>>>единственно, что я этот код обновляю периодически — в свободное время чегото дорабатываю.


M>>>поэтому удобно его держать где нить в соурс контроле... Если есть желание можно в нашем.

DSD>>ну, это чуть позже. сделаю нормальную стабильную реализацию(которую по моим понятиям смогу назвать v1.0), тогда можно и в общий репозитарий для дальнейших правок.

M>Ок.. а тут у тебя всегда последняя версия?

почти в смысле, да, всегда последняя публичная. именно этот урл и будет обновляться.
--
DSD
Re[9]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 06:23
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>почти в смысле, да, всегда последняя публичная. именно этот урл и будет обновляться.


пока не стал перелопачивать весь твой код. мбо ты наверное сам его правишь.
замечания по мультибраузерности. чтобы проше потом было переводить.

obj.children -> obj.childNodes
obj.parent -> obj.parentNode

document.all -> document.getDocumnetById — тут самые большие сложности. ибо у тебя местами завязано чтото на индексе в коллекции all например тут: dock_get_panels()
пояснри смысл этго метода?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[10]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 27.03.06 10:13
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>Здравствуйте, DSD, Вы писали:


DSD>>почти в смысле, да, всегда последняя публичная. именно этот урл и будет обновляться.


M>пока не стал перелопачивать весь твой код. мбо ты наверное сам его правишь.

M>замечания по мультибраузерности. чтобы проше потом было переводить.

M>obj.children -> obj.childNodes

поправил.

M>obj.parent -> obj.parentNode

не нашел такого. там в одном месте только и изначально parentNode да и то — в отладочном комментарии.

M>document.all -> document.getDocumnetById — тут самые большие сложности. ибо у тебя местами завязано чтото на индексе в коллекции all например тут: dock_get_panels()

M>пояснри смысл этго метода?
вызывается он в основном перед началом Drag. суть его — получить координаты всех прямоугольников "принимающих" панелей, чтобы при таскании объекта над панелью вовремя ловить, когда и над какой именно панелью находится объект.

почему я перечитываю координаты именно при начале перетаскивания — оптимальная производительность. если перечитывать на каждый onmousemove — будет тормозить. если один раз при загрузке страницы — координаты будут неактуальными.

раньше я в onmousemove ловил панель через elementFromPoint(), но это тормознуто и некорректно, т.к. он возвращает верхий(topmost) элемент, а их может быть наслоение.

возможно этот метод будет переписан для улучшения производительности.

насчет document.all: по идее пробежку по всей иерархии можно вынести в onload, чтобы за один проход получить массив панелей, а в onmousedown только пробегаться по этому массиву и обновлять координаты. единственно — как отлавливать динамическое добавление панелей? но это решаемо.

вот собственно и вопрос: как пробежаться по иерархии "переносимым" способом, без document.all ?
--
DSD
Re[11]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 10:18
Оценка:
Здравствуйте, DSD, Вы писали:

M>>obj.parent -> obj.parentNode

DSD>не нашел такого. там в одном месте только и изначально parentNode да и то — в отладочном комментарии.

это я так, на всякий случай.


DSD>насчет document.all: по идее пробежку по всей иерархии можно вынести в onload, чтобы за один проход получить массив панелей, а в onmousedown только пробегаться по этому массиву и обновлять координаты. единственно — как отлавливать динамическое добавление панелей? но это решаемо.


DSD>вот собственно и вопрос: как пробежаться по иерархии "переносимым" способом, без document.all ?


а пенель это всегда DIV? или произвольтный элемент?
если да, то
var all  = getElementsByTagName( "div" );
//и далее по тексту
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[12]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 27.03.06 10:31
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>а пенель это всегда DIV? или произвольтный элемент?

M>если да, то
M>
M>var all  = getElementsByTagName( "div" );
M>//и далее по тексту
M>


произвольный — я думаю, пользователь данной библиотеки вправе сам решать, что и где будет у него являться "принимающими" панелями.
от document.all я только что избавился. dock_get_panels переписал через рекурсию по childNodes(хоть и не люблю рекурсию, мож перепишу потом через стек-массив ).
--
DSD
Re[13]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 27.03.06 10:34
Оценка:
Здравствуйте, DSD, Вы писали:

мне интересно, как ты будешь выкручиваться со специфическими функциями IE, такими как getClientRects().
или в других браузерах это тоже работает?
--
DSD
Re[14]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 10:52
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>Здравствуйте, DSD, Вы писали:


DSD>мне интересно, как ты будешь выкручиваться со специфическими функциями IE, такими как getClientRects().

DSD>или в других браузерах это тоже работает?

придется реализовавать свою логику для них видимо.
какой имменно прямоугольник они возвращают?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[15]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 27.03.06 11:00
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>Здравствуйте, DSD, Вы писали:


DSD>>Здравствуйте, DSD, Вы писали:


DSD>>мне интересно, как ты будешь выкручиваться со специфическими функциями IE, такими как getClientRects().

DSD>>или в других браузерах это тоже работает?

M> придется реализовавать свою логику для них видимо.

M> какой имменно прямоугольник они возвращают?

смотрим сюда: http://911.ru/to_rsdn/docking/dock_1.gif
это исходник — такой сложной формы может быть док-панель.

а теперь сюда: http://911.ru/to_rsdn/docking/dock_2.gif
здесь я в паинте порисовал немного

panel.getBoundingClientRect() — возвращает красный прямоугольник — точнее 4 координаты, описывающие его.

panel.getClientRects() — вернет в данной ситуации массив из 3х синих прямоугольников.

все это в пикселях в клиентских координатах окна.
--
DSD
Re[16]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 11:05
Оценка:
Здравствуйте, DSD, Вы писали:



DSD>смотрим сюда: http://911.ru/to_rsdn/docking/dock_1.gif

DSD>это исходник — такой сложной формы может быть док-панель.


DSD>а теперь сюда: http://911.ru/to_rsdn/docking/dock_2.gif

DSD>здесь я в паинте порисовал немного

DSD>panel.getBoundingClientRect() — возвращает красный прямоугольник — точнее 4 координаты, описывающие его.


DSD>panel.getClientRects() — вернет в данной ситуации массив из 3х синих прямоугольников.


хм... а у какой ноды ты это вызываешь что тебе такое вернет?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[17]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 27.03.06 11:14
Оценка:
Здравствуйте, mogadanez, Вы писали:

DSD>>panel.getBoundingClientRect() — возвращает красный прямоугольник — точнее 4 координаты, описывающие его.

DSD>>panel.getClientRects() — вернет в данной ситуации массив из 3х синих прямоугольников.
M>хм... а у какой ноды ты это вызываешь что тебе такое вернет?
и у панелей и у самих доков. в MSDN есть описание этих методов. они аппликабельны почти к каждому визуальному элементу.

только что добил отношения с childNodes — теперь запускается и в файрфоксе. правда пока ничего не таскается, но сами доки создаются, уже радует
--
DSD
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.