GXT(Ext GWT)でのRTLインターフェイスのサポート

数年前から、東部ユーザー向けに1つの企業デスクトップアプリケーションを開発しています。 設計上の特徴は、ユーザーインターフェイスで右から左への方向(RTL)をサポートする必要があることです。



最近、機能がWebに少なくとも部分的に移行するという疑問が生じました。 開発ツールとして、GWTプラットフォームが選択されました。 この選択は、私がJavaを最も馴染みのあるテクノロジーと見なしているためです。 また、新しいモダンな開発プラットフォームを試してみたかったのです。



しばらくして、一連の標準コンポーネントでは、既存のデスクトップアプリケーションインターフェイスを複製するには明らかに不十分であることが判明しました。 短い検索の結果、GWTの2つのかなり強力な拡張機能が見つかりました:SmartGWTとExt GWT(GXT)。 いずれかのフレームワークのデモを見た後、どのフレームワークを停止するかについて混乱しました。 少しグーグルで、私はまだGXTにとどまることにしました。 利点の中で、ユーザーは、ほとんどのコンポーネントがJava言語を介して拡張できることに気付きました。 SmartGWTは、ほとんどの場合、JavaScriptコードの単なるシェルです。 私はそれをチェックしませんでした-私はそれについて私の言葉を取りました。



GXTフレームワークの非常に強力な機能にもかかわらず、その開発者は、右から左へのスペルでRTLインターフェイスおよび言語のサポートをバイパスすることを決定したことがすぐに明らかになりました。 公式フォーラムでは、ユーザーがGXTにRTLサポートを追加するように要求するいくつかのトピックが見つかりました。 しかし、開発者はどこでもそのようなサポートはまだ計画されていないと書いており、もしそれが計画されていれば、GXT 3.xのどこか、つまり すぐに。



しかし、ユーザーbetinsのトピックも見つかりました。ユーザーbetinsは怠け者ではなく、RTCサポートをGXTフレームワークにパブリックアクセス用に追加する作業をレイアウトしました。 1つの問題:GXTバージョン2.1.1にRTLサポートが追加されました。 当時、バージョン2.2.2はすでに関連していました。 また、bentins Desktopコンポーネントは注意を奪われました(OSデスクトップをエミュレートするコンポーネント)。



著者の作品を少しテストした後、GXT 2.2.2の現在のバージョンのRTLサポートの開発を開始することにしました。 ベンティンによる変更の検索と移植が始まりました。 最初は見つけるのが非常に困難でした。 しかし、Beyond Compareのディレクトリとファイルを比較するための非常に強力なユーティリティが助けになりました。 新しいツールを使用すると、作業がはるかに速くなりました。 バージョン2.2.2では、すべてのパッチが同様にうまく機能したわけではありません。 デスクトップを含む多くのコンポーネントに適応し、新しい修正を追加するために多くの作業が行われました。 最も難しいのは、TabPanelタブパネルにRTLサポートを追加することでした。 コンポーネントコードの多くの計算をやり直す必要がありました。



主な作業が完了した後、標準テーマの移植が始まりました。 独自のスタイルを作成し、RTLロケールの画像を再描画する必要がありました。 作業は日常的なものほど難しくありません。



長いダウンタイムで開発は非常にゆっくりと進行し、公式にGXTはバージョン2.2.4に到達しました。 幸いなことに、追加された変更はRTL機能にまったく影響せず、すぐにプロジェクトに追加されました。



残念ながら、プロジェクトはすべてのブラウザでテストできませんでした。 テストは、Chrome開発ビルド、FF 4/5、IE9に限定されていました。 また、すべてのエラーが修正されたわけではありません(ああIE)。 ただし、RTLサポートが必要なほとんどの場合、結果はすでに出発点として使用できます。



ベンティンの例に続いて、私はすべての開発をインターネットへのオープンアクセスに置くことにしました。 誰かがGXTで開発を開始することを考えていたが、RTLインターフェイスにフレームワークを使用できないことで彼が止められたなら、私がやった仕事が彼を助けることを願っています。 また、誰かが修正と開発でプロジェクトをサポートする準備ができている場合、私は喜んでいます。



デモ:

デスクトップRTL

Explorer RTL



ソース、インストール手順



All Articles