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
Re[11]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 11:18
Оценка:
Здравствуйте, DSD, Вы писали:

еще,
в мозилле
table.insertRow(index)
row.insertCell(index)

сегда надо индекс передавать, иначе падает
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[18]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 11:22
Оценка:
Здравствуйте, DSD, Вы писали:

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


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

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

я не понимаю какая разметка должна быть чтобы док такой формы получился.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[18]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 11:33
Оценка:
Здравствуйте, DSD, Вы писали:


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


еще в mozille нету event:

function glob_mm( e ) {
    e = ensure_event_object(e);
    e.returnValue=false;
         
}
         
function ensure_event_object ( e )
{        
    if ( e == null ) e = window.event; 
    return e;
}
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[12]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 27.03.06 11:40
Оценка:
Здравствуйте, mogadanez, Вы писали:

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


M>еще,

M>в мозилле
M>table.insertRow(index)
M>row.insertCell(index)

M>сегда надо индекс передавать, иначе падает

дык уже сделал давно...
--
DSD
Re[19]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 27.03.06 11:41
Оценка:
Здравствуйте, mogadanez, Вы писали:


M>я не понимаю какая разметка должна быть чтобы док такой формы получился.


например сделай внутри текста SPAN, в который запихни три широких картинки, настолько широких, чтобы две картинки в один ряд не помещались в ширину экрана — вот и готово SPAN — не блочный элемент, он не будет, как DIV, всегда тянуться неразбиваемым прямоугольником. по крайней мере в IE.

вот зайди сейчас и посмотри
http://911.ru/to_rsdn/docking.html
докпанель в тексте сейчас у тебя так и должна выглядеть составной. и в мозиле тоже.
--
DSD
Re[19]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 11:43
Оценка:
Здравствуйте, mogadanez, Вы писали:

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



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


M>еще в mozille нету event:


M>
M>function glob_mm( e ) {
M>    e = ensure_event_object(e);
M>    e.returnValue=false;
         
M>}
         
M>function ensure_event_object ( e )
M>{        
M>    if ( e == null ) e = window.event; 
M>    return e;
M>}
M>


после этого осталось несовместимого:
* getBoundingClientRect
* getClientRects
* setCapture
* releseCapture
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[13]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 11:46
Оценка:
Здравствуйте, DSD, Вы писали:

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


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


M>>еще,

M>>в мозилле
M>>table.insertRow(index)
M>>row.insertCell(index)

M>>сегда надо индекс передавать, иначе падает

DSD>дык уже сделал давно...

не успеваю за обновлениями
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[20]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 11:51
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>например сделай внутри текста SPAN, в который запихни три широких картинки, настолько широких, чтобы две картинки в один ряд не помещались в ширину экрана — вот и готово SPAN — не блочный элемент, он не будет, как DIV, всегда тянуться неразбиваемым прямоугольником. по крайней мере в IE.


DSD>вот зайди сейчас и посмотри

DSD>http://911.ru/to_rsdn/docking.html
DSD>докпанель в тексте сейчас у тебя так и должна выглядеть составной. и в мозиле тоже.

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


с эвентами разобрался вроде. правда перевернул твой способ взад — пишу его насильно в window.event

M>после этого осталось несовместимого:

M>* getBoundingClientRect
M>* getClientRects
M>* setCapture
M>* releseCapture

от последних двух (*Capture) можно избавиться, если mousemove привязать к document.body.attachEvent и сделать таким образом глобальный перехват мыши.

getClientRects можно вычислять самому — геморно и не факт что быстро работать будет, а можно забить на него и цепляться только к getBoundingClientRect. а насчет него уж я и не знаю... есть ему замена в виде get_obj_client_rect() (см. в коде, я ее оставил) — но будет ли она везде работать и с какой производительностью?
--
DSD
Re[21]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 27.03.06 11:57
Оценка:
Здравствуйте, mogadanez, Вы писали:

DSD>>вот зайди сейчас и посмотри

DSD>>http://911.ru/to_rsdn/docking.html
DSD>>докпанель в тексте сейчас у тебя так и должна выглядеть составной. и в мозиле тоже.
M>угу, только когда туда чтонибудь перетягиваешь она сжимается по содержимому
а это потому что пока там нет доков — там есть картинки-растяжки, как док добавляешь — ее содержимое запоминается и вычищается.
если с нее убрать потом все доки — содержимое (растяжки) восстановится.
--
DSD
Re[21]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 12:00
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>от последних двух (*Capture) можно избавиться, если mousemove привязать к document.body.attachEvent и сделать таким образом глобальный перехват мыши.


с этим тоже не просто... тогда надо юзать http://rsdn.ru/Forum/Message.aspx?mid=394656&amp;only=1
Автор: Andir
Дата: 27.09.03


с координатами потыркаюсь
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[22]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 12:01
Оценка:
Здравствуйте, DSD, Вы писали:

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


DSD>>>вот зайди сейчас и посмотри

DSD>>>http://911.ru/to_rsdn/docking.html
DSD>>>докпанель в тексте сейчас у тебя так и должна выглядеть составной. и в мозиле тоже.
M>>угу, только когда туда чтонибудь перетягиваешь она сжимается по содержимому
DSD>а это потому что пока там нет доков — там есть картинки-растяжки, как док добавляешь — ее содержимое запоминается и вычищается.
DSD>если с нее убрать потом все доки — содержимое (растяжки) восстановится.

а зачем тогда нужны прямоугольники? по идее тогда важен только верхний левый угол?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[22]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 12:03
Оценка:
Здравствуйте, mogadanez, Вы писали:

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


DSD>>от последних двух (*Capture) можно избавиться, если mousemove привязать к document.body.attachEvent и сделать таким образом глобальный перехват мыши.


еще в моззиле есть
http://www.mozilla.org/docs/dom/domref/dom_window_ref6.html#1016868
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[23]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 27.03.06 12:10
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>а зачем тогда нужны прямоугольники? по идее тогда важен только верхний левый угол?

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

DSD>вот возьми в IE и поиграйся с доками — ты можешь "тасовать" их мышью на панели.

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

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


M>>а зачем тогда нужны прямоугольники? по идее тогда важен только верхний левый угол?

DSD>да нет, нужно точно знать, когда мышь находится именно над панелью при перетаскивании.

а вот это уже лучше... =)
т.е. задача определить принадлежит ли координата элементу или нет?

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


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

M>т.е. задача определить принадлежит ли координата элементу или нет?

фактически да, но расширяется она все равно в задачу получить координаты панели(лей) и задачу получить координаты дока(ов).

M>но ведь в этом случае панель уже прямоугольная?

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

хотя в контексте того, о чем мы сейчас(о тасовании доков) это не важно — на этом этапе сравниваются уже исключительно координаты доков, координаты панели уже не учавствуют в момент "броска" на нее. они учавствовали во время таскания над ней дока.
--
DSD
Re[11]: DHTML docking toolbars
От: anonymous Россия http://denis.ibaev.name/
Дата: 27.03.06 12:37
Оценка:
Здравствуйте, DSD, Вы писали:

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


var all = document.getElementsByTagName('*');
Re[12]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 27.03.06 12:45
Оценка:
Здравствуйте, anonymous, Вы писали:

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


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


A>
A>var all = document.getElementsByTagName('*');
A>


a wildcard '*' переносим?
--
DSD
Re[13]: DHTML docking toolbars
От: anonymous Россия http://denis.ibaev.name/
Дата: 27.03.06 12:48
Оценка: 13 (2)
Здравствуйте, DSD, Вы писали:

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

A>>
A>>var all = document.getElementsByTagName('*');
A>>

DSD>a wildcard '*' переносим?

В IE и Gecko работает, про остальных не знаю. Такие вещи проверять удобно например здесь: http://www.squarefree.com/shell/shell.html
Re[21]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 13:51
Оценка:
Здравствуйте, DSD, Вы писали:

DSD>от последних двух (*Capture) можно избавиться, если mousemove привязать к document.body.attachEvent и сделать таким образом глобальный перехват мыши.


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

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


DSD>>от последних двух (*Capture) можно избавиться, если mousemove привязать к document.body.attachEvent и сделать таким образом глобальный перехват мыши.


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

1. нельзя приаттачиваться к панелям потому что события мыши над ней будут возникать только когда непосредственно мышь будет находиться непосредственно над видимой частью панели. а если мышь в это время тащит док, что происходит? правильно, док перекрывает собой панель и до панели события мыши не дойдут.
2. если имелся ввиду док — т.е. приаттачиваться к его событиям(как сейчас и сделано), то без setCapture и при интенсивном движении мыши док постоянно теряет ее из виду и доставка событий прекращается.(в смысле не успеваешь при таскании док двигать за мышью — мышь быстрее ).
--
DSD
Re[23]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 14:06
Оценка:
Здравствуйте, DSD, Вы писали:

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


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


DSD>>>от последних двух (*Capture) можно избавиться, если mousemove привязать к document.body.attachEvent и сделать таким образом глобальный перехват мыши.


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

DSD>1. нельзя приаттачиваться к панелям потому что события мыши над ней будут возникать только когда непосредственно мышь будет находиться непосредственно над видимой частью панели. а если мышь в это время тащит док, что происходит? правильно, док перекрывает собой панель и до панели события мыши не дойдут.

а как же баблинг?

DSD>2. если имелся ввиду док — т.е. приаттачиваться к его событиям(как сейчас и сделано), то без setCapture и при интенсивном движении мыши док постоянно теряет ее из виду и доставка событий прекращается.(в смысле не успеваешь при таскании док двигать за мышью — мышь быстрее ).


ясно.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[23]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 27.03.06 14:11
Оценка:
DSD>2. если имелся ввиду док — т.е. приаттачиваться к его событиям(как сейчас и сделано), то без setCapture и при интенсивном движении мыши док постоянно теряет ее из виду и доставка событий прекращается.(в смысле не успеваешь при таскании док двигать за мышью — мышь быстрее ).

setCapture используется только чтобы Move отлавливать? или на все события?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[24]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 28.03.06 07:52
Оценка:
Здравствуйте, mogadanez, Вы писали:

DSD>>2. если имелся ввиду док — т.е. приаттачиваться к его событиям(как сейчас и сделано), то без setCapture и при интенсивном движении мыши док постоянно теряет ее из виду и доставка событий прекращается.(в смысле не успеваешь при таскании док двигать за мышью — мышь быстрее ).


M>setCapture используется только чтобы Move отлавливать? или на все события?

move и последующий up
--
DSD
Re[24]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 28.03.06 07:55
Оценка:
Здравствуйте, mogadanez, Вы писали:

DSD>>1. нельзя приаттачиваться к панелям потому что события мыши над ней будут возникать только когда непосредственно мышь будет находиться непосредственно над видимой частью панели. а если мышь в это время тащит док, что происходит? правильно, док перекрывает собой панель и до панели события мыши не дойдут.

M>а как же баблинг?
и куда мне его засунуть?
представь. ты тащишь док над панелью, и не просто над панелью, а над другим доком, лежащим на панели(а над ним еще один док просто "висит"). мне cancelBubble во всех наслоенных доках прописывать, чтобы в конечном итоге до панели дошло, что над ней чего-то там тащат?
--
DSD
Re[14]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 28.03.06 09:01
Оценка:
Здравствуйте, anonymous, Вы писали:


A>В IE и Gecko работает, про остальных не знаю. Такие вещи проверять удобно например здесь: http://www.squarefree.com/shell/shell.html


классная штука только в сафари не работает
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[15]: DHTML docking toolbars
От: Kigorw  
Дата: 31.03.06 09:01
Оценка:
В ие выглядит неплохо... но код это что то с чем то...
Советую взять как пример кода библиотеку Rico.js(она юзает prototype.js) там довольно таки красивый ООП(использую JSON). Я для своих джс контролов взял за пример их код, и prototype.js тоже дал мне немало удобства.
Re[25]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 31.03.06 09:51
Оценка:
Здравствуйте, DSD, Вы писали:

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


DSD>>>2. если имелся ввиду док — т.е. приаттачиваться к его событиям(как сейчас и сделано), то без setCapture и при интенсивном движении мыши док постоянно теряет ее из виду и доставка событий прекращается.(в смысле не успеваешь при таскании док двигать за мышью — мышь быстрее ).


M>>setCapture используется только чтобы Move отлавливать? или на все события?

DSD>move и последующий up

на неделе времени было не много, надеюсь на выходных займусь.
если есть изменения, выложи их на сайт
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re: DHTML docking toolbars
От: Neron Германия  
Дата: 31.03.06 15:46
Оценка:
Здравствуйте, DSD, Вы писали:

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


Супер!
Re: линки в тему
От: marx paul Германия Провести онлайн-опрос
Дата: 04.04.06 20:52
Оценка:
subj.

http://webfx.eae.net/dhtml/dockbar/dockbar.html
http://webfx.eae.net/dhtml/dockbar/dockbar3.html
Провести онлайн-опрос
Online-Umfrage erstellen
Re[2]: линки в тему
От: DSD Россия http://911.ru/cv
Дата: 05.04.06 20:36
Оценка:
Здравствуйте, marx paul, Вы писали:

MP>http://webfx.eae.net/dhtml/dockbar/dockbar.html

MP>http://webfx.eae.net/dhtml/dockbar/dockbar3.html
да, забавно, но там чел изначально в задумке урезал функционал и упростил задачу, что печально.
--
DSD
Re[3]: линки в тему
От: DSD Россия http://911.ru/cv
Дата: 05.04.06 21:38
Оценка: 6 (1)
Здравствуйте, DSD, Вы писали:

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


MP>>http://webfx.eae.net/dhtml/dockbar/dockbar.html

MP>>http://webfx.eae.net/dhtml/dockbar/dockbar3.html
DSD>да, забавно, но там чел изначально в задумке урезал функционал и упростил задачу, что печально.
в принципе, коль уж ты мне напомнил этими ссылками, у себя я таки реализовал hotspot-autosnap. это когда тащишь док и при приближении к краю окна на определенное расстояние активируется соответствующая боковая панель.

без этих ссылок руки бы не скоро еще дошли
--
DSD
Re[4]: линки в тему
От: marx paul Германия Провести онлайн-опрос
Дата: 05.04.06 21:48
Оценка:
Здравствуйте, DSD, Вы писали:

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


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


MP>>>http://webfx.eae.net/dhtml/dockbar/dockbar.html

MP>>>http://webfx.eae.net/dhtml/dockbar/dockbar3.html
DSD>>да, забавно, но там чел изначально в задумке урезал функционал и упростил задачу, что печально.
DSD>в принципе, коль уж ты мне напомнил этими ссылками, у себя я таки реализовал hotspot-autosnap. это когда тащишь док и при приближении к краю окна на определенное расстояние активируется соответствующая боковая панель.

DSD>без этих ссылок руки бы не скоро еще дошли


с нетерпением ожидаю кроссбраузерной реализации!
какой бы линк сюда запостить, чтобы ускорить процесс адаптации?
Провести онлайн-опрос
Online-Umfrage erstellen
Re[5]: линки в тему
От: DSD Россия http://911.ru/cv
Дата: 05.04.06 21:59
Оценка:
Здравствуйте, marx paul, Вы писали:

MP>с нетерпением ожидаю кроссбраузерной реализации!

MP>какой бы линк сюда запостить, чтобы ускорить процесс адаптации?
ну, адаптирую не я, а mogadanez в основном
линки постить не нужно. с моей стороны мне осталось для совместимости избавиться от setCapture/releaseCapture, склепать более-менее нормальные аналоги IE-шных функций для вычисления координат объектов и оформить это все для вырезания в отдельный JS-модуль. так же упакую все в автосоздаваемый объект dock_manager — таким образом все переменные и методы локализуются и не будут засорять global scope. сделаю, как руки дойдут — времени свободного сейчас не очень много.

дальше дело за mogadanez — приведение всего этого барахла в нормально отображающийся во всех браузерах интерфейс.
--
DSD
Re[6]: линки в тему
От: mogadanez Чехия  
Дата: 10.04.06 13:45
Оценка:
Здравствуйте, DSD, Вы писали:


DSD>дальше дело за mogadanez — приведение всего этого барахла в нормально отображающийся во всех браузерах интерфейс.


угу, в процессе...
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[6]: линки в тему
От: mogadanez Чехия  
Дата: 10.04.06 13:57
Оценка:
Здравствуйте, DSD, Вы писали:


DSD>...и оформить это все для вырезания в отдельный JS-модуль. так же упакую все в автосоздаваемый объект dock_manager — таким образом все переменные и методы локализуются и не будут засорять global scope. сделаю, как руки дойдут — времени свободного сейчас не очень много.


еще раз предлагаю нашу модель JS модулей. =)

выглядит это примерно так:

core.js.register_module( "proofs.controls.file_comments.client.round_box", function() 
{
    core.js.import_module( "components.webcontrols.client.client.base_view_object" )
    core.js.import_module( "core.js.build_class2" )
    core.js.import_module( "components.webcontrols.client.client.workarounds" )
        core.js.import_module( "core.lists.map" )
    
    var workarounds = components.webcontrols.client.client.workarounds;
    var round_box = core.js.build_class2( "", function()
        {
        this.__base_classes__ = [ components.webcontrols.client.client.base_view_object ];
        this.__constructor__ = function( node_id )
            {
            this.base_view_object( node_id ); 
            }
            
        this.methods.init_form_elements = function ( self )
            {
            this.set_onclick( this.nodes.lnk_new_comment, function( e ) { return self.on_new_comment( e );  } );
            this.set_onclick( this.nodes.lnk_new_review, function( e ) { return self.on_new_review( e );  } );
            this.set_onclick( this.nodes.btn_edit, function( e ) { return self.on_edit( e );  } );
            this.set_onclick( this.nodes.btn_cancel, function( e ) { return self.on_cancel( e );  } );
            }
            
         this.methods.get_nodes_map = function()
            {
            return { lnk_new_comment            : "lnk_new_comment", 
                     lnk_new_review             : "lnk_new_review",
                     btn_edit                   : "btn_edit",
                     btn_cancel                 : "btn_cancel",
                     post_comment_div           : "post_comment_div"                    
                      };
            }
        this.methods.on_edit = function ( e )
            {
            ...
            }

        this.methods.on_cancel = function ( e )
            {
            ...
            }

        this.methods.on_new_comment = function ( e )
            {
            ...
            }

        this.methods.on_new_review = function ( e )
            {
            ...
            }
        } );

    return { round_box: round_box };
} );
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[7]: линки в тему
От: DSD Россия http://911.ru/cv
Дата: 10.04.06 22:08
Оценка:
Здравствуйте, mogadanez, Вы писали:

M>еще раз предлагаю нашу модель JS модулей. =)

M>выглядит это примерно так:
[skip]

боюсь, "ниасилю"
я уж лучше по своему, по-простому, а ты уж потом к сиплюсплюсу приведешь, ок?
--
DSD
Re[8]: линки в тему
От: mogadanez Чехия  
Дата: 11.04.06 06:38
Оценка:
DSD>боюсь, "ниасилю"
DSD>я уж лучше по своему, по-простому, а ты уж потом к сиплюсплюсу приведешь, ок?

а где тут сиплюсплюс
это чистый JS, со всеми своими достоинствами
Re[9]: линки в тему
От: DSD Россия http://911.ru/cv
Дата: 11.04.06 07:08
Оценка:
Здравствуйте, mogadanez, Вы писали:


M>а где тут сиплюсплюс

M>это чистый JS, со всеми своими достоинствами
да я про синтаксис вроде этого: this.__constructor__
--
DSD
Re: DHTML docking toolbars
От: marx paul Германия Провести онлайн-опрос
Дата: 17.04.06 19:24
Оценка:
Здравствуйте, DSD, Вы писали:
DSD>в общем, интересует ваше мнение.

таки как прогресс?
Провести онлайн-опрос
Online-Umfrage erstellen
Re[2]: DHTML docking toolbars
От: DSD Россия http://911.ru/cv
Дата: 18.04.06 12:31
Оценка:
Здравствуйте, marx paul, Вы писали:

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

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

MP>таки как прогресс?

таки заглох до ближайшей пятницы. основной работы много.
--
DSD
Re[3]: DHTML docking toolbars
От: mogadanez Чехия  
Дата: 19.04.06 14:35
Оценка:
Здравствуйте, DSD, Вы писали:

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


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

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

MP>>таки как прогресс?

DSD>таки заглох до ближайшей пятницы. основной работы много.

аналогично
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Re[18]: DHTML docking toolbars
От: Аноним  
Дата: 24.04.06 12:26
Оценка:
DSD>только что добил отношения с childNodes — теперь запускается и в файрфоксе. правда пока ничего не таскается,

Таскалок дофига на www.cross-browser.com

Вот чтоыб куда-то дропать — вроде там такого не было.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.