Eclipse/プラグイン開発のTIPS集/org.eclipse.ui.dialogs.SelectionDialog
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
SelectionDialogは、ダイアログ上で選択したオブジェクトを取...
#ref(dialog.png)
こんな↑パッケージエクスプローラライクなビューワを配置して...
**しくみ [#ma0bd5ec]
このクラスで実装されている特徴的なメソッドは
protected void setResult(List newResult);
public Object[] getResult();
public void setInitialSelections(Object[] selectedElemen...
public void setInitialElementSelections(List selectedEle...
あたりです。setResultはユーザが選択したオブジェクトを格納...
setInitialSelections,setInitialElementSelectionsはあらか...
**やってみる [#cb986f97]
上のダイアログを実際に作ってみました。ソースの詳細は[[Pac...
***コンストラクタ [#e12d9297]
public PackageExplorerSelectionDialog(Shell parentShell,...
super(parentShell);
setTitle("リソースの選択");
this.root = root;
if (message != null) {
setMessage(message);
} else {
setMessage("リソースを選択します。");
}
setShellStyle(getShellStyle() | SWT.RESIZE);
}
コンストラクタで IAdaptable root を渡してもらいフィールド...
PackageExplorerSelectionDialog dialog = new PackageExplo...
getShell(), ResourcesPlugin.getWorkspace().getRo...
などとしてワークスペースを渡しています。
***ダイアログにTreeViewerを配置 [#t53239a3]
また
protected Control createDialogArea(Composite parent);
では普通(?)にTreeViewerを配置し、そこに
treeViewer.setInput(((IWorkspaceRoot) root).getProjects(...
とプロジェクトの配列を渡しています。setContentProvider、s...
あ、あと
treeViewer.addFilter(new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parentElem...
Object element) {
if (element instanceof IProject) {
IProject project = (IProject) element;
if (!project.isAccessible()) {
return false;
}
}
return true;
}
});
などとして、開いているプロジェクトだけをリストするように...
***Selectionの変更に反応するリスナ [#h6ccd318]
private ISelectionChangedListener listener = new ISelec...
public void selectionChanged(SelectionChangedEvent ev...
IStructuredSelection sselection = (IStructuredSelec...
.getSelection();
IResource firstElement = (IResource) sselection.get...
if (firstElement.getType() == IResource.FILE) {
getOkButton().setEnabled(true);
} else {
getOkButton().setEnabled(false);
}
}
};
を定義してビューワにリスナを追加し、IResource.FILEの場合...
***OKを押したときの処理 [#t8b36959]
protected void okPressed() {
IStructuredSelection selection = (IStructuredSelection...
.getSelection();
setResult(selection.toList());
super.okPressed();
}
と選択されたオブジェクト引数にsetResultを呼び出しています。
***呼び出し側の処理。 [#ubf54e39]
呼び出し側は、
PackageExplorerSelectionDialog dialog = new PackageExplo...
getShell(), ResourcesPlugin.getWorkspace().getRo...
のあとにdialogを開き、OKが押されたらオブジェクトをgetResu...
具体的には
if (dialog.open() == PackageExplorerSelectionDialog.OK) {
Object[] result = dialog.getResult();
if (result.length == 1) {
IFile file = (IFile) result[0];
}
}
とかですね。
このクラスを使えば、いちいちデータを取り出すメソッドや格...
----
この記事は
#vote(おもしろかった[5],そうでもない[0])
- ちなみに上でつくったダイアログはorg.eclipse.ui.dialogs....
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
終了行:
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
#contents
SelectionDialogは、ダイアログ上で選択したオブジェクトを取...
#ref(dialog.png)
こんな↑パッケージエクスプローラライクなビューワを配置して...
**しくみ [#ma0bd5ec]
このクラスで実装されている特徴的なメソッドは
protected void setResult(List newResult);
public Object[] getResult();
public void setInitialSelections(Object[] selectedElemen...
public void setInitialElementSelections(List selectedEle...
あたりです。setResultはユーザが選択したオブジェクトを格納...
setInitialSelections,setInitialElementSelectionsはあらか...
**やってみる [#cb986f97]
上のダイアログを実際に作ってみました。ソースの詳細は[[Pac...
***コンストラクタ [#e12d9297]
public PackageExplorerSelectionDialog(Shell parentShell,...
super(parentShell);
setTitle("リソースの選択");
this.root = root;
if (message != null) {
setMessage(message);
} else {
setMessage("リソースを選択します。");
}
setShellStyle(getShellStyle() | SWT.RESIZE);
}
コンストラクタで IAdaptable root を渡してもらいフィールド...
PackageExplorerSelectionDialog dialog = new PackageExplo...
getShell(), ResourcesPlugin.getWorkspace().getRo...
などとしてワークスペースを渡しています。
***ダイアログにTreeViewerを配置 [#t53239a3]
また
protected Control createDialogArea(Composite parent);
では普通(?)にTreeViewerを配置し、そこに
treeViewer.setInput(((IWorkspaceRoot) root).getProjects(...
とプロジェクトの配列を渡しています。setContentProvider、s...
あ、あと
treeViewer.addFilter(new ViewerFilter() {
@Override
public boolean select(Viewer viewer, Object parentElem...
Object element) {
if (element instanceof IProject) {
IProject project = (IProject) element;
if (!project.isAccessible()) {
return false;
}
}
return true;
}
});
などとして、開いているプロジェクトだけをリストするように...
***Selectionの変更に反応するリスナ [#h6ccd318]
private ISelectionChangedListener listener = new ISelec...
public void selectionChanged(SelectionChangedEvent ev...
IStructuredSelection sselection = (IStructuredSelec...
.getSelection();
IResource firstElement = (IResource) sselection.get...
if (firstElement.getType() == IResource.FILE) {
getOkButton().setEnabled(true);
} else {
getOkButton().setEnabled(false);
}
}
};
を定義してビューワにリスナを追加し、IResource.FILEの場合...
***OKを押したときの処理 [#t8b36959]
protected void okPressed() {
IStructuredSelection selection = (IStructuredSelection...
.getSelection();
setResult(selection.toList());
super.okPressed();
}
と選択されたオブジェクト引数にsetResultを呼び出しています。
***呼び出し側の処理。 [#ubf54e39]
呼び出し側は、
PackageExplorerSelectionDialog dialog = new PackageExplo...
getShell(), ResourcesPlugin.getWorkspace().getRo...
のあとにdialogを開き、OKが押されたらオブジェクトをgetResu...
具体的には
if (dialog.open() == PackageExplorerSelectionDialog.OK) {
Object[] result = dialog.getResult();
if (result.length == 1) {
IFile file = (IFile) result[0];
}
}
とかですね。
このクラスを使えば、いちいちデータを取り出すメソッドや格...
----
この記事は
#vote(おもしろかった[5],そうでもない[0])
- ちなみに上でつくったダイアログはorg.eclipse.ui.dialogs....
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}
ページ名: