Вот уже несколько лет я являюсь разработчиком корпоративного десктопного приложения для восточных пользователей.
Особенностью разработки является необходимость обеспечить поддержку ориентации справа налево (RTL) в пользовательском интерфейсе.
Недавно встал вопрос о хотя бы частичном переносе функционала в веб.
В качестве инструмента разработки была выбрана платформа GWT. Выбор обусловлен тем, что я считаю Java наиболее привычной для себя технологией.
Еще мне очень хотелось попробовать какую-нибудь современную платформу разработки, которая была бы для меня новой.
Спустя довольно короткое время выяснилось, что набора стандартных компонентов явно недостаточно для дублирования уже существующего интерфейса десктопного приложения.
В результате недолгих поисков были найдены 2 довольно мощных расширения для GWT: SmartGWT и Ext GWT (GXT).
Посмотрев демо и того, и другого фреймворка, я несколько растерялся, какой из них выбрать.
Немного погуглив, я наконец решил выбрать GXT. Среди преимуществ пользователи отметили возможность расширения большинства компонентов с помощью языка Java. SmartGWT в большинстве случаев — это просто оболочка над кодом JavaScript. Я не проверял - поверил ему на слово.
Довольно быстро выяснилось, что, несмотря на всю огромную мощь фреймворка GXT, его разработчики решили игнорировать поддержку RTL-интерфейсов и языков, написанных справа налево.
На официальном форуме было обнаружено несколько тем, в которых пользователи просили добавить поддержку RTL в GXT. Но разработчики везде писали, что такая поддержка пока не планируется, а если и планируется, то возможно где-то в GXT 3.x, т.е.
не очень скоро.
Но и его нашли тема пользователь bentins, который не поленился и выложил в публичный доступ свою работу по добавлению поддержки RTL в фреймворк GXT. Одна проблема: поддержка RTL была добавлена в GXT версии 2.1.1. На тот момент уже была актуальна версия 2.2.2. Бентинс также пренебрег компонентом Desktop (компонент, эмулирующий рабочий стол ОС).
Немного протестировав работу автора, было решено начать разработку поддержки RTL для актуальной на тот момент версии GXT 2.2.2. Начался поиск и портирование изменений, внесенных бентинами.
Поначалу их было очень трудно найти.
Но тут на помощь пришла очень мощная утилита для сравнения каталогов и файлов Beyond Compare. С новым инструментом работа пошла намного быстрее.
Не все патчи работали одинаково хорошо в версии 2.2.2. Была проделана большая работа по адаптации и добавлению новых исправлений для многих компонентов, включая Desktop. Самым сложным было добавить поддержку RTL для панели вкладок TabPanel, потому что… многие вычисления в коде компонента пришлось переделывать.
После завершения основной работы началось портирование стандартных тем.
Пришлось создать свои стили, а также перерисовать некоторые изображения для локалей RTL. Работа не столько сложная, сколько рутинная.
Разработка шла довольно медленно с длительными простоями, и GXT официально удалось достичь версии 2.2.4. К счастью, внесенные изменения никак не повлияли на возможности RTL и были сразу добавлены в проект. К сожалению, проект тестировался не во всех браузерах.
Тестирование ограничивалось девелоперской сборкой Chrome, FF 4/5, IE9. Кроме того, не все ошибки были исправлены (о IE).
Но полученный результат уже можно использовать как отправную точку в большинстве случаев, когда необходима поддержка RTL. По примеру бентинов я решил выложить все разработки в открытый доступ в Интернете.
Если кто-то думал начать разработку на GXT, но его остановило отсутствие возможности использовать фреймворк для RTL-интерфейсов, надеюсь, проделанная мной работа ему поможет. Так же, если кто-то готов поддержать проект своими исправлениями и доработками, буду только рад. Демо: Настольный RTL Проводник РТЛ Исходники, инструкция по установке Теги: #GXT #ext-gwt #rtl #gwt #ExtJS/Библиотека Sencha
-
Google Решил Похоронить Rss?
19 Oct, 24 -
Chrome Linker (Связывание Для Chrome)
19 Oct, 24