タブブラウザにするためにカスタムウィジェットのカスタムタブを使用しますのでその説明をします。
今回作成したプラグインはこちらからダウンロードできます。→browser_0.0.7.zip
ソースも入っていますのでダウンロードして参考にしながら説明を読んでください。
1.カスタムタブ(CTabFolder)
コンストラクタ
CTabFolderはEclipseのエディタやビューで使用されているようなタブを実現します。
インスタンスを作成するときに以下のようにすると閉じるための「×」アイコンが表示されません。。
CTabFolder tabFolder = new CTabFolder(this, SWT.NONE);
そこでSWT.CLOSEを指定することにより閉じるアイコンを表示できます。
CTabFolder tabFolder = new CTabFolder(this, SWT.CLOSE);
タブの色づけ
タブに色をつけるにはsetSelectionBackground()を使用します。第1引数には、グラデーションで使用する2色の色を配列で渡します。第2引数は始めの色を何%表示してグラデーションするかを指定します。第3引数は縦方向のグラデーションの場合にtrueにします。
tabFolder.setSelectionBackground(new Color[] {
getDisplay().getSystemColor(SWT.COLOR_TITLE_BACKGROUND),
getDisplay().getSystemColor(SWT.COLOR_TITLE_BACKGROUND_GRADIENT)
}, new int[] { 80 }, true);タブのテキストの色づけ
タブのテキストに色をつけるには、setSelectionForeground()を使用します。引数には使用したい色を指定します。
tabFolder.setSelectionForeground(
getDisplay().getSystemColor(SWT.COLOR_WHITE));
新しいタブを追加
新しいタブを追加するためにはCTabFolderを親にしてCTabItemのオブジェクトを作成します。
CTabItem tabItem = new CTabItem(tabFolder, SWT.CLOSE);
タブを選択されたときのイベント
タブを選択されたときのイベントを処理するためにaddSelectionListener()でイベントリスナを登録します。登録するリスナはSelectionListenerをしようするか、以下の例のようにアダプタSelectionAdapterを使用します。
tabFolder.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent event) {
Browser browser = getSelectionBrowser();
if (browser != null) {
textUrl.setText(browser.getUrl());
}
}
});タブを閉じられたときのイベント
タブを閉じられたときのイベントを処理するためにaddDisposeListener()でイベントリスナDisposeListenerを登録します。以下の例では
使用しなくなったブラウザは破棄する必要があるためタブを閉じるときに処理をしています。
tabItem.addDisposeListener(new DisposeListener() {
public void widgetDisposed(DisposeEvent e) {
// ブラウザを破棄する
browser.dispose();
}
});2.ブラウザ(Browser)
タブブラウザにするときにブラウザのイベント処理を追加しました。使用したイベント処理の説明します。
タイトルが変更されたときのイベント
タイトルが変更されたときはaddTitleListener()でリスナを登録します。以下の例はタイトルが変更されたときにタブのテキストを変更しています。
browser.addTitleListener(new TitleListener() {
public void changed(TitleEvent event) {
tabItem.setText(event.title);
}
});新しいウィンドウを開くイベント
HTMLのリンクをクリックしたときに新しいウィンドウを開く必要がある場合にはaddOpenWindowListener()でリスナを登録します。以下の例は新しいイベントが発生したときに新しいタブを開いています。
browser.addOpenWindowListener(new OpenWindowListener() {
public void open(WindowEvent event) {
Browser browser = null;
browser = new Browser(tabFolder, SWT.NONE);
event.browser = browser;
createBrowser(event.browser);
}
});ウィンドウを閉じるイベント
開くイベント同様に閉じるイベントもあります。これはaddCloseWindowListener()でリスナを登録します。
browser.addCloseWindowListener(new CloseWindowListener() {
public void close(WindowEvent event) {
tabItem.dispose();
}
});タブブラウザにしてそこそこ使えるプラグインになってきたのかなと思っています^^
今回作成したプラグインはこちらからダウンロードできます。→browser_0.0.7.zip
では、また。

