2011-07-11 12 views
3

CTabFolderコンポーネントを使用するUIを提供するEclipseプラグインを作成しました。CTabItemの境界を正しくスタイルする方法

App screenshot

エクリプスによって提供CTabItemsがアクティブブルー境界を有し、白い境界場合、非アクティブ(CTabItemは、Eclipseビューである場合は灰色)。

私が作成したCTabItemsは常に白で縁取りされ、アクティブなタブのテキストには下線が引かれています。

どのように私のCTabItemsのスタイルをより厳密にEclipseのタブに一致させるように制御できますか?

EDIT:

私は、アクティブなEclipseのテーマから正しい色を抽出し、次のコードが出ています。

IWorkbench workBench = PlatformUI.getWorkbench(); 
ITheme theme = workBench.getThemeManager().getCurrentTheme(); 
ColorRegistry colreg = theme.getColorRegistry(); 

Color c1 = colreg.get(IWorkbenchThemeConstants.ACTIVE_TAB_BG_START); 
Color c2 = colreg.get(IWorkbenchThemeConstants.ACTIVE_TAB_BG_END); 

IWorkbenchThemeConstantsは、Eclipse UI内部パッケージ内にあるようしかし、これは理想的ではありません。

これらの内部IWorkbenchThemeConstantsで参照される同じ色を参照する代替のパブリックな方法はありますか?

答えて

11

選択済みおよび非選択のCTabFolder項目でグラデーションを定義する方法を使用できます。例えば

CTabFolder folder = new CTabFolder(shell, SWT.BORDER); 
folder.setBackground(new Color[]{display.getSystemColor(SWT.COLOR_YELLOW), display.getSystemColor(SWT.COLOR_RED)}, new int[]{100}, true); 
folder.setSelectionBackground(new Color[]{display.getSystemColor(SWT.COLOR_WHITE), display.getSystemColor(SWT.COLOR_BLUE)}, new int[]{100}, true); 

意志がこの(醜い)タブ

colored SWT CTabFolder

ですから、ちょうど持っている日食右の色をヒットする必要があり..

それとも、CTabFolderRendererあなた自身を書くことができを生成し、 CTabFolderインスタンスに設定します。 Eclipseの色については

EDIT

folder.setSelectionBackground(new Color[]{new Color(display, new RGB(242, 244, 247)), new Color(display, new RGB(157, 167, 195))}, new int[]{100}, true); 

enter image description here

EDIT

が正しく

をそれを行うにはどのような方法を見つけてみてください
folder.setSelectionBackground(new Color[]{display.getSystemColor(SWT.COLOR_TITLE_INACTIVE_BACKGROUND_GRADIENT), display.getSystemColor(SWT.COLOR_TITLE_BACKGROUND)}, new int[]{100}, true); 
+2

新しいCTabFolderRendererを書くことは本当に重い選択肢です;-)プレゼンテーションファクトリの作成のようなものです。これは非常に最後の手段です。 –

+0

もちろん、これはオプションの1つです。完全性のためだけにそこにあります;] – Sorceror

+0

Eclipseが使用する正しい色をどのように見つけたらよいでしょうか? – mchr

関連する問題