Eclipse/プラグイン開発のTIPS集/org.eclipse.ui.IViewPart(ビュー)
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
org.eclipse.ui.IViewPart はパースペクティブ内のひとつのビ...
#contents
***拡張ポイント [#bf717681]
org.eclipse.ui.views
***plugin.xmlのサンプル [#w6c2dfc7]
<extension point="org.eclipse.ui.views">
<category
name="サンプルMyView" <- viewが属するカテゴリ名
id="com.samples.myview"> <- カテゴリのID
</category>
<view
name="シンプルView" <- viewのバーのタイトル
category="com.samples.myview" <- viewが属するカテ...
class="com.samples.myview.SimpleView" <- viewを実...
id="com.samples.myview.simpleview"> <- viewのID
</view>
</extension>
***ポイント [#tf595522]
plugin.xmlを開いているときのプロパティビューより、classを...
ビューを画面に描画するとき((ウィンドウ >> ビューでこのビ...
**TIPS [#bba1b972]
***選択されたときに起動するメソッドsetFocus [#x05c0703]
自分が選択されたときに、ビュー内を更新したいときなどに使...
public void setFocus() {
ウィジェットの更新処理
}
など
***ISelectionListenerを実装する [#m70cb5e0]
ビューは選択しているオブジェクトの情報を表示することが多...
public void selectionChanged(IWorkbenchPart part,ISelect...
ウィジェットの更新処理
}
この場合、自分(this)を IWorkbenchPageインターフェースにat...
getViewSite().getPage().addSelectionListener(this);
とすればよいでしょう。もしくはinit(IViewSite site)で
site.getPage().addSelectionListener(this);
ですね。
このリスナですが、呼ばれるタイミングは、
-パッケージエクスプローラ内でなんかを選択した
-テキストエディタ内でドラッグした
などみたいですが、
-テキストエディタ内で文字列を入力とかした場合
は呼ばれないんですね。ようわからんです。
ちなみに引数のメソッドは
IWorkbenchPart part :選択されたビュー
ISelection selection :そのビューの中で、選択されたオブジ...
となっています。
***設定の保存とリストア [#qcaeab86]
設定の保存とリストアにはMementoパタンを用いています。たと...
org.eclipse.ui.views.markers.internal.TableView
の例だと
ビューの初期化時に
public void init(IViewSite site, IMemento memento) throw...
super.init(site, memento);
this.memento = memento;
}
として、createPartControlメソッドで
private void restoreColumnWidths(IMemento memento) {
if (memento == null) {
return;
}
columnLayouts = new ColumnLayoutData[getFields().len...
for (int i = 0; i < columnLayouts.length; i++) {
Integer width = memento.getInteger(TAG_COLUMN_WI...
if (width == null) {
columnLayouts = null;
break;
} else {
columnLayouts[i] = new ColumnPixelData(width...
}
}
}
とメソッドが呼ばれ、カラムの幅などが前回の値がリストアさ...
initメソッドでフィールドにセットされるmementoには、以前ビ...
public void saveState(IMemento memento) {
super.saveState(memento);
//save column widths
TableColumn[] columns = viewer.getTable().getColumns...
for (int i = 0; i < columns.length; i++) {
memento.putInteger(TAG_COLUMN_WIDTH + i, columns...
}
saveSelection(memento);
//save vertical position
Scrollable scrollable = (Scrollable) viewer.getContr...
ScrollBar bar = scrollable.getVerticalBar();
int position = (bar != null) ? bar.getSelection() : 0;
memento.putInteger(TAG_VERTICAL_POSITION, position);
//save horizontal position
bar = scrollable.getHorizontalBar();
position = (bar != null) ? bar.getSelection() : 0;
memento.putInteger(TAG_HORIZONTAL_POSITION, position);
}
----
この記事は
#vote(おもしろかった[8],そうでもない[0])
-保存とリストアについてですが、IMementoとorg.eclipse.jfac...
-RCPやってて気づいたのですが、デフォルトではこの機構はOFF...
- IMementoはView用、DialogSettingsはDialog用 と理解して...
- ところで、このinitとsaveStateをオーバーライドしても×ボ...
- saveStateはあくまで状態を保存するメソッドなので、Viewを...
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
org.eclipse.ui.IViewPart はパースペクティブ内のひとつのビ...
#contents
***拡張ポイント [#bf717681]
org.eclipse.ui.views
***plugin.xmlのサンプル [#w6c2dfc7]
<extension point="org.eclipse.ui.views">
<category
name="サンプルMyView" <- viewが属するカテゴリ名
id="com.samples.myview"> <- カテゴリのID
</category>
<view
name="シンプルView" <- viewのバーのタイトル
category="com.samples.myview" <- viewが属するカテ...
class="com.samples.myview.SimpleView" <- viewを実...
id="com.samples.myview.simpleview"> <- viewのID
</view>
</extension>
***ポイント [#tf595522]
plugin.xmlを開いているときのプロパティビューより、classを...
ビューを画面に描画するとき((ウィンドウ >> ビューでこのビ...
**TIPS [#bba1b972]
***選択されたときに起動するメソッドsetFocus [#x05c0703]
自分が選択されたときに、ビュー内を更新したいときなどに使...
public void setFocus() {
ウィジェットの更新処理
}
など
***ISelectionListenerを実装する [#m70cb5e0]
ビューは選択しているオブジェクトの情報を表示することが多...
public void selectionChanged(IWorkbenchPart part,ISelect...
ウィジェットの更新処理
}
この場合、自分(this)を IWorkbenchPageインターフェースにat...
getViewSite().getPage().addSelectionListener(this);
とすればよいでしょう。もしくはinit(IViewSite site)で
site.getPage().addSelectionListener(this);
ですね。
このリスナですが、呼ばれるタイミングは、
-パッケージエクスプローラ内でなんかを選択した
-テキストエディタ内でドラッグした
などみたいですが、
-テキストエディタ内で文字列を入力とかした場合
は呼ばれないんですね。ようわからんです。
ちなみに引数のメソッドは
IWorkbenchPart part :選択されたビュー
ISelection selection :そのビューの中で、選択されたオブジ...
となっています。
***設定の保存とリストア [#qcaeab86]
設定の保存とリストアにはMementoパタンを用いています。たと...
org.eclipse.ui.views.markers.internal.TableView
の例だと
ビューの初期化時に
public void init(IViewSite site, IMemento memento) throw...
super.init(site, memento);
this.memento = memento;
}
として、createPartControlメソッドで
private void restoreColumnWidths(IMemento memento) {
if (memento == null) {
return;
}
columnLayouts = new ColumnLayoutData[getFields().len...
for (int i = 0; i < columnLayouts.length; i++) {
Integer width = memento.getInteger(TAG_COLUMN_WI...
if (width == null) {
columnLayouts = null;
break;
} else {
columnLayouts[i] = new ColumnPixelData(width...
}
}
}
とメソッドが呼ばれ、カラムの幅などが前回の値がリストアさ...
initメソッドでフィールドにセットされるmementoには、以前ビ...
public void saveState(IMemento memento) {
super.saveState(memento);
//save column widths
TableColumn[] columns = viewer.getTable().getColumns...
for (int i = 0; i < columns.length; i++) {
memento.putInteger(TAG_COLUMN_WIDTH + i, columns...
}
saveSelection(memento);
//save vertical position
Scrollable scrollable = (Scrollable) viewer.getContr...
ScrollBar bar = scrollable.getVerticalBar();
int position = (bar != null) ? bar.getSelection() : 0;
memento.putInteger(TAG_VERTICAL_POSITION, position);
//save horizontal position
bar = scrollable.getHorizontalBar();
position = (bar != null) ? bar.getSelection() : 0;
memento.putInteger(TAG_HORIZONTAL_POSITION, position);
}
----
この記事は
#vote(おもしろかった[8],そうでもない[0])
-保存とリストアについてですが、IMementoとorg.eclipse.jfac...
-RCPやってて気づいたのですが、デフォルトではこの機構はOFF...
- IMementoはView用、DialogSettingsはDialog用 と理解して...
- ところで、このinitとsaveStateをオーバーライドしても×ボ...
- saveStateはあくまで状態を保存するメソッドなので、Viewを...
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: