0
我正在開發一個使用eclipse插件開發的嚮導。Eclipse插件開發--- PopupMenuCreation
要求:
我要創建一個需要得到儘快用戶右鍵點擊在Java項目中的源文件夾中填充的上下文菜單。一旦用戶執行第一步,我的處理程序需要在我的嚮導中獲取選定的src文件夾。我的嚮導包含一個treeviewer,我需要將選定的src文件夾打包。
我的分析:
我有我的處理程序類,獲取所選套餐
SampleHandler.java
public Object execute(ExecutionEvent event) throws ExecutionException {
shell = HandlerUtil.getActiveShell(event);
// Initializing workbench window object
IWorkbenchWindow window = (IWorkbenchWindow) HandlerUtil.getActiveWorkbenchWindow(event);
ISelection sel = HandlerUtil.getActiveMenuSelection(event);
final IStructuredSelection selection = (IStructuredSelection) sel;
Object firstElement = selection.getFirstElement();
if (firstElement instanceof IPackageFragment) {
// Get the selected fragment
IPackageFragment packageFragment = (IPackageFragment) firstElement;
modelPackage = packageFragment.getElementName();
boolean a =!ProjectResourceHelper.isEntityBasePackage(modelPackage);
if(a == true){
MessageDialog.openInformation(shell, "Warning", "Please click from entity base package");
Shell shell = HandlerUtil.getActiveShell(event);
GreenWizard wizard = new GreenWizard();
WizardDialog dialog = new WizardDialog(part.getSite().getShell(), wizard);
dialog.create();
dialog.open();
return null;
}
try{
window.run(true, true, new IRunnableWithProgress(){
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
monitor.beginTask("Layer codes are being generated...", 1);
// Invocation of generate layers method
monitor.worked(1);
// Done with operation completion.
monitor.done();
}
});
}
catch(InvocationTargetException ite){
MessageDialog.openError(shell, "Greenfield Code Generation Exception", ite.getMessage());
}
catch (InterruptedException ie) {
MessageDialog.openError(shell, "Greenfield Code Generation Exception", ie.getMessage());
}
}
我有一個調用此方法中我的主要嚮導類。
GreenWizard wizard = new GreenWizard();
和我的主要嚮導回電話我的嚮導頁,我需要讓用戶在點擊右鍵進行選擇。
我Wizardpageclass
public GenerateGreenfieldLayer(IWorkbench workbench,
IStructuredSelection selection) {
super("Greenfield");
setImageDescriptor(ResourceManager
.getImageDescriptor("\\icons\\greenfield-new-wiz.png"));
setTitle("GreenField Generate layer");
setDescription("Select specfic class to grenerate Layers");
}
/**
* Create contents of the wizard.
*
* @param parent
*/
@Override
public void createControl(Composite parent) {
Composite container = new Composite(parent, SWT.NULL);
setControl(container);
container.setLayout(new GridLayout(2, false));
final CheckboxTreeViewer treeViewer = new CheckboxTreeViewer(container,
SWT.BORDER);
tree = treeViewer.getTree();
tree.setToolTipText("Choose package");
GridData gd_tree = new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1);
gd_tree.widthHint = 280;
gd_tree.heightHint = 140;
tree.setLayoutData(gd_tree);
treeViewer.setContentProvider(new GreenfieldTreeContentProvider());
treeViewer.setLabelProvider(new WorkbenchLabelProvider());
treeViewer.addSelectionChangedListener(new ISelectionChangedListener() {
public void selectionChanged(SelectionChangedEvent event) {
}
});
}
任何人都可以請指導我如何從對象方法的選擇,並通過在我的嚮導頁面的TreeViewer初始輸入。
如果我缺少任何步驟,請糾正我,因爲我對此很新。
在此先感謝
感謝您的回覆Stefan您可以請舉一個例子,以便我可以實現並瞭解它是如何工作的。由於我對此很新,所以我敦促尋求幫助...... –
運行示例請讓我知道,因爲我正在選擇對象作爲JAVA PACAKGE在我的項目中,並希望將它存儲在MYWIZARDPAGE TREEVIEWER CONTROL中。哪種方式最好。這個模型類將是最好的方法或直接。謝謝 –