2016-11-04 11 views
0

5つの列を持つJFace TableViewerがあります。 1つの列に長い文字列を含めることができます。このテストは、getText(Object element)メソッドを呼び出すことによってColumnLabelProviderで設定されます。JFace TableViewerは、ColumnLabelProviderテキストを切り捨てて展開します。

現在、文字列の最後で文字列が切り捨てられ、ユーザーが列幅のサイズを調整したときにテキストに文字を追加する "..."で終わります。

私はこの動作をしたいと思いますが、テキスト文字列の中央に "..."があるので、ユーザーはテキストの最初の部分とテキストの最後を見ることができます現在の列が設定されます。

たとえば私の列が現在「this is a long piece of text larger than the column width」 に「this is a long piece of text larger...

を切り捨て、私はそれが

this is a long piece ... column width」 だけでなく、このテキストは時に途中から拡大持つことを表示したいと思います列幅が縮小すると列幅が拡大して再び収縮する。

RCP E4アプリケーションでJface Tableviewerを使用してこれを達成する方法について考えてみませんか?

テキスト文字列の最後にあるテキストを切り捨てる既存のメソッドをオーバーライドすることができればいいと思います。

+0

これは、テーブルが使用するネイティブコントロールによって決まり、OSによって異なります(たとえばmacOSでは発生しません)。これは変更するのが難しいです。あなたはおそらくOwnerDrawLabelProviderでそれを行うことができます –

答えて

0

最後に、フルテキストとカラム幅を取るカラムラベルプロバイダ内のメソッドを作成する必要がありました。カラムの現在の幅を測定し、ラベルプロバイダ内のテキストの長さをとり、カラムの幅に合わせます。列が部分文字列1を展開し、部分文字列2が拡大するにつれて、頭にsubstring1、真ん中に省略記号をつけてtailringにsubstring2を置く。それは効率的なコードからは遠いが、我々の目的のために働く。 ControlListenerをColumnに追加し、ControlResized(ControlEvent e)メソッドの@Overrideを実行しました。このメソッドは、列のサイズ変更時に列が存在するビューアを更新します。

関連する問題