Eclipse/プラグイン開発のTIPS集/GooglePlugin/前回の状態を復元する処理
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**概要 [#z69fd4c1]
さて[[検索結果一覧を表示するビューの作成>Eclipse/プラグイ...
**前回の状態を保存する場所 org.eclipse.ui.IMemento [#kd26...
Eclipseのビューにはあらかじめ前回の状態を保存したり復元し...
ビューの初期化時は
public void init(IViewSite site, IMemento memento) throw...
が呼び出されます。このメソッドの引数のmementoは前回書き込...
また状態を保存しなくてはいけないときは、
public void saveState(IMemento memento);
が呼び出されるので、このメソッド内でたとえばカラム幅など...
**情報を保存する処理を実装する [#l2822429]
GoogleResultViewで
public void init(IViewSite site, IMemento memento) throw...
public void saveState(IMemento memento);
をOverrideします。
public void init(IViewSite site, IMemento memento) throw...
super.init(site, memento);
this.memento = memento;
}
ここではとりあえず初期化時にmementoをフィールドに保持して...
public void saveState(IMemento memento) {
super.saveState(memento);
saveColumnWidth(memento);
}
private void saveColumnWidth(IMemento memento) {
TableColumn[] columns = viewer.getTable().getColumns...
for (int i = 0; i < columns.length; i++) {
memento.putInteger(TAG_COLUMN_WIDTH + i, columns...
}
}
saveStateはTableViewer内の各カラムのインスタンスを取り出...
memento.putInteger(TAG_COLUMN_WIDTH + i, columns[i].getW...
と一定のPrefixでカラム幅をputIntegerしています。このputIn...
-/.metadata/.plugins/org.eclipse.ui.workbench/workbench.x...
<view id="nu.mine.kino.plugin.google.ui.views.GoogleResu...
<viewState columnWidth0="328" columnWidth1="200" colum...
</view>
というようにxmlデータとして保存されているのが分かると思い...
**前回の情報を復元する処理を実装する [#o843821c]
さて復元に関してですが、createPartControl内でinitTableと...
ColumnLayoutData[] columnLayouts = getColumnLayouts();
という処理がありましたが、このメソッドを以下のように変更...
private ColumnLayoutData[] getColumnLayouts() {
ColumnPixelData[] result = new ColumnPixelData[DEFAU...
for (int i = 0; i < DEFAULT_COLUMN_LAYOUTS.length; i...
int width = DEFAULT_COLUMN_LAYOUTS[i].width;
if (memento != null) {
// メメントから、前回の幅を取得している
Integer widthInt = memento.getInteger(TAG_CO...
if (widthInt != null && widthInt.intValue() ...
width = widthInt.intValue();
}
}
result[i] = new ColumnPixelData(width);
}
return result;
// return DEFAULT_COLUMN_LAYOUTS;
}
このようにフィールドのmementoがnullでなかったら、前回の幅...
以上で前回の状態をリストアするということができるようにな...
----
この記事は
#vote(おもしろかった[6],そうでもない[2])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
**概要 [#z69fd4c1]
さて[[検索結果一覧を表示するビューの作成>Eclipse/プラグイ...
**前回の状態を保存する場所 org.eclipse.ui.IMemento [#kd26...
Eclipseのビューにはあらかじめ前回の状態を保存したり復元し...
ビューの初期化時は
public void init(IViewSite site, IMemento memento) throw...
が呼び出されます。このメソッドの引数のmementoは前回書き込...
また状態を保存しなくてはいけないときは、
public void saveState(IMemento memento);
が呼び出されるので、このメソッド内でたとえばカラム幅など...
**情報を保存する処理を実装する [#l2822429]
GoogleResultViewで
public void init(IViewSite site, IMemento memento) throw...
public void saveState(IMemento memento);
をOverrideします。
public void init(IViewSite site, IMemento memento) throw...
super.init(site, memento);
this.memento = memento;
}
ここではとりあえず初期化時にmementoをフィールドに保持して...
public void saveState(IMemento memento) {
super.saveState(memento);
saveColumnWidth(memento);
}
private void saveColumnWidth(IMemento memento) {
TableColumn[] columns = viewer.getTable().getColumns...
for (int i = 0; i < columns.length; i++) {
memento.putInteger(TAG_COLUMN_WIDTH + i, columns...
}
}
saveStateはTableViewer内の各カラムのインスタンスを取り出...
memento.putInteger(TAG_COLUMN_WIDTH + i, columns[i].getW...
と一定のPrefixでカラム幅をputIntegerしています。このputIn...
-/.metadata/.plugins/org.eclipse.ui.workbench/workbench.x...
<view id="nu.mine.kino.plugin.google.ui.views.GoogleResu...
<viewState columnWidth0="328" columnWidth1="200" colum...
</view>
というようにxmlデータとして保存されているのが分かると思い...
**前回の情報を復元する処理を実装する [#o843821c]
さて復元に関してですが、createPartControl内でinitTableと...
ColumnLayoutData[] columnLayouts = getColumnLayouts();
という処理がありましたが、このメソッドを以下のように変更...
private ColumnLayoutData[] getColumnLayouts() {
ColumnPixelData[] result = new ColumnPixelData[DEFAU...
for (int i = 0; i < DEFAULT_COLUMN_LAYOUTS.length; i...
int width = DEFAULT_COLUMN_LAYOUTS[i].width;
if (memento != null) {
// メメントから、前回の幅を取得している
Integer widthInt = memento.getInteger(TAG_CO...
if (widthInt != null && widthInt.intValue() ...
width = widthInt.intValue();
}
}
result[i] = new ColumnPixelData(width);
}
return result;
// return DEFAULT_COLUMN_LAYOUTS;
}
このようにフィールドのmementoがnullでなかったら、前回の幅...
以上で前回の状態をリストアするということができるようにな...
----
この記事は
#vote(おもしろかった[6],そうでもない[2])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: