【问题标题】:add an export wizard to eclipse RCP standalone Application将导出向导添加到 Eclipse RCP 独立应用程序
【发布时间】:2011-05-02 09:34:33
【问题描述】:

嗨 我正在尝试向独立的 RCP 应用程序添加一个导出向导,类似于 Eclipse 中可用的导出向导。 我将以下代码放入plugin.xml:

   <extension
     id="exportScript"
     point="org.eclipse.ui.exportWizards">
  <wizard
        class="com.myApplication.scriptGenerator.ExportWizard"
        id="com.myApplication.scriptGenerator.exid"
        name="Export as Script">
  </wizard>

但是在文件菜单条目中看不到向导。 我错过了什么?

谢谢:)

【问题讨论】:

    标签: java eclipse eclipse-plugin eclipse-rcp


    【解决方案1】:

    你必须做两件事:

    • 使用org.eclipse.ui.exportWizards 扩展点(您已经这样做了)

    • 在您的应用程序action bar advisor 类中,首先创建用于导出的标准工作台操作,然后将其添加到您的任何菜单中。

    代码片段

    // Creating and registering the action 
    IWorkbenchAction export = ActionFactory.EXPORT.create(window);
    register(export);
    
     // adding it to standard file menu
    fileMenu.add(export);
    

    >>完整代码 - ApplicationActionBarAdvisor

    package wiztest;
    
    import org.eclipse.jface.action.GroupMarker;
    import org.eclipse.jface.action.ICoolBarManager;
    import org.eclipse.jface.action.IMenuManager;
    import org.eclipse.jface.action.MenuManager;
    import org.eclipse.ui.IWorkbenchActionConstants;
    import org.eclipse.ui.IWorkbenchWindow;
    import org.eclipse.ui.actions.ActionFactory;
    import org.eclipse.ui.actions.ActionFactory.IWorkbenchAction;
    import org.eclipse.ui.application.ActionBarAdvisor;
    import org.eclipse.ui.application.IActionBarConfigurer;
    
    public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
    
        private IWorkbenchAction exitAction;
        private IWorkbenchAction export;
    
        public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
            super(configurer);
        }
    
        protected void makeActions(final IWorkbenchWindow window) {
    
            exitAction = ActionFactory.QUIT.create(window);
            register(exitAction);
    
    
            export = ActionFactory.EXPORT.create(window);
            register(export);
        }
    
        protected void fillMenuBar(IMenuManager menuBar) {
            MenuManager fileMenu = new MenuManager("&File", IWorkbenchActionConstants.M_FILE);
    
            menuBar.add(fileMenu);
            menuBar.add(new GroupMarker(IWorkbenchActionConstants.MB_ADDITIONS));
            fileMenu.add(export);
            fileMenu.add(exitAction);        
        }
    
        protected void fillCoolBar(ICoolBarManager coolBar) {
    
        }
    }
    

    >>菜单条目

    >>导出向导

    【讨论】:

    • 您好,感谢您的回复 :-) 不幸的是,我找不到 ApplicationActionBarAdvisor 类。我怀疑其原因是我的 RCP 实际上是(应该在前面提到过......)一个 GMF 应用程序。你知道在这种情况下该怎么做吗?
    • @Protostome:寻找扩展org.eclipse.ui.application.ActionBarAdvisor 的类。我提到的ApplicationActionBarAdvisor 来自我的虚拟应用程序。
    【解决方案2】:

    你应该在你的向导中实现这个接口 INewWizard,比如:

    公共类 LoadDataWizard 扩展向导实现 INewWizard{}

    并添加此扩展名:

    org.eclipse.ui.newWizards

    到你的 plugin.xml

    【讨论】:

      【解决方案3】:

      () 你没有在你的 plugin.xml 中指定文件的类别 () 如果您没有看到 File->New 项目本身,您需要通过 ActionFactory.NEW 或 ActionFactory.NEW_WIZARD_DROP_DOWN 操作或通过命令贡献它们来创建它们

      【讨论】:

        【解决方案4】:

        1.创建菜单

        2.在菜单上添加监听器

        示例:-

        mntmExportProject.addSelectionListener(
        new SelectionAdapter() {
        
                @Override
                public void widgetSelected(SelectionEvent e) {
                    ImportExportWizard wizard = new ImportExportWizard(ImportExportWizard.EXPORT);
                    IStructuredSelection selectionToPass = new StructuredSelection(treeViewer.getSelection());
        
                    wizard.init(PlatformUI.getWorkbench(), selectionToPass);
                    IDialogSettings workbenchSettings = WorkbenchPlugin.getDefault().getDialogSettings();
                    IDialogSettings wizardSettings = workbenchSettings.getSection("ImportExportAction"); //$NON-NLS-1$
                    if (wizardSettings == null) {
                        wizardSettings = workbenchSettings.addNewSection("ImportExportAction"); //$NON-NLS-1$
                    }
                    wizard.setDialogSettings(wizardSettings);
                    wizard.setForcePreviousAndNextButtons(true);
                    Shell parent = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
                    WizardDialog dialog = new WizardDialog(parent, wizard);
                    dialog.create();
                    dialog.getShell().setSize(Math.max(470, dialog.getShell().getSize().x), 550);
                    dialog.open();
                }
            });
        

        【讨论】:

          猜你喜欢
          • 2011-02-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-04-13
          • 1970-01-01
          • 1970-01-01
          • 2022-11-11
          • 1970-01-01
          相关资源
          最近更新 更多