当前位置: 首页 > 知识库问答 >
问题:

Eclipse插件-如何在命令处理程序中打开向导页面?

双恩
2023-03-14

我为Eclipse编写了一个插件。我在工具栏菜单中有一个按钮。我想要按下它-一个向导页面对话框将被打开。我已经写了一个扩展wizard和实现IWizardPage的类,我还写了所有5个相关的页面,我只是没有找到任何方法在命令处理程序中打开它。

下面是我的代码片段:

public class AddProjectHandler extends AbstractHandler {

    @Override
    public Object execute(ExecutionEvent event) throws ExecutionException {

        return null;
    }
}
public class NewProjectWizardManager extends Wizard implements INewWizard {


    private NewProjectWizardPage1 _page1;
    private NewProjectWizardPage2 _page2;
    private NewProjectWizardPage3 _page3;
    private NewProjectWizardPage4 _page4;
    private NewProjectWizardPage5 _page5;

    // constructor
    public NewProjectWizardManager() {
        super();
        setWindowTitle("New Project");
    }

    @Override
    public void init(IWorkbench workbench, IStructuredSelection selection) {
    }

    @Override
    public boolean performCancel() {

        return true;
    }

    @Override
    public void addPages() {
        super.addPages();
        _page1 = new NewProjectWizardPage1();
        addPage(_page1);
        _page2 = new NewProjectWizardPage2(_page1);
        addPage(_page2);
        _page3 = new NewProjectWizardPage3(_page1);
        addPage(_page3);
        _page4 = new NewProjectWizardPage4();
        addPage(_page4);
        _page5 = new NewProjectWizardPage5(_page1);
        addPage(_page5);
    }

    @Override
    public boolean canFinish() {
        IWizardContainer container = getContainer();
        if (_page5.equals(container.getCurrentPage())) {
            return true;
        } else {
            return false;
        }
    }

    @Override
    public IWizardPage getNextPage(IWizardPage page) {
        IWizardPage nextPage = super.getNextPage(page);
        IWizardContainer container = getContainer();
        if (nextPage != null) {
            if (_page2.equals(container.getCurrentPage()) && _page2.isCheckFinishChecked())
                nextPage = super.getNextPage(super.getNextPage(nextPage));
        }
        return nextPage;
    }

    @Override
    public boolean performFinish() {
}
}

plugin.xml部分:

<command
                categoryId="com.commands.category"
                description="Add new Project"
                id="com.commands.AddProject"
                name="Add new Project">
</command>


<handler
                class="com.handlers.AddProjectHandler"
                commandId="com.commands.AddProject">
</handler>

你有什么想法吗?

共有1个答案

韩宜春
2023-03-14

使用WizardDialog/code>显示向导。类似于:

public Object execute(ExecutionEvent event) throws ExecutionException
{
  Shell activeShell = HandlerUtil.getActiveShell(event);

  IWizard wizard = new NewProjectWizardManager();

  WizardDialog dialog = new WizardDialog(activeShell, wizard);

  dialog.open();

  return null;
}

 类似资料:
  • 我试图按教程创建基本的Axon/Spring应用程序,但面临奇怪的错误,如:noHandlerforCommandException:没有处理程序被订阅到命令。似乎Axon看不到@CommandHandler注释。 这里是我的文件: 我的建筑。Gradle

  • 问题内容: 如果我期望像001或999这样的东西(这次让我们将期望值限制为001 … 999范围),并且传递了其他一些参数,并且想忽略任何意外内容,那么这将是处理命令行参数的简单表达式? 我知道,例如,如果我需要确定是否在参数之间传递了“ debug”,它将像这样: 如何确定是否通过了009或575? 所有这些都是预期的电话: 在这一点上,我不在乎这样的电话: …第一个-由于存在多个“数字”参数;

  • 我想运行一个批处理文件A,它调用/启动另一个批处理文件B,后者打开一个新的cmd窗口。然后,我想在这个新的cmd窗口中运行一个用户定义的命令。这个命令只有在运行文件B之后或者在这个新的cmd-window中才能被识别,但是命令本身的调用应该是写在文件A中的(文件B是设置好的,不能更改)。我该怎么做? 就我所理解的行为而言,我不能访问由另一个批处理文件打开的cmd窗口。我写了一个简单的测试用例来向你

  • 问题内容: 我需要自动化Eclipse Classic的安装并添加两个“插件”: CDT(不确定是否可以将其称为“插件”) 佩德夫 安装Eclipse Classic(仅下载): 然后如何安装CDT和PyDev作为系统插件(而不是用户的插件)? 问题答案: 安装新下载的Eclipse Classic: 要安装所需的CDT功能(使用Eclipse的“帮助>安装新软件”工具找到的引用) C / C +

  • 问题内容: 我想为我正在使用的开源代码库生成javadocs。但是Eclipse Generate JavaDoc向导要求我提供“ Javadoc命令”,并且该帮助未解释这意味着什么。是否需要javadoc binary / jar或其他路径? 问题答案: 是的,大概它想要JDK随附的命令行工具的路径(在bin目录中,与和相同)。 Eclipse应该能够自动找到它。您是否可能在JRE上运行它?那将

  • 主要内容:一、Sql流程,二、源码分析,四、总结一、Sql流程 MySql是数据库,这次就分析一下一条SQL语句的流程,流程可能不会全面展开分析,当后面遇到具体的模块时,再由各个模块深入学习。如果使用过MySql的客户端(任意一种都可以),基本的形式就是在客户端写一条SQL语句,然后点击运行,正常的情况下,就会返回这条SQL执行后的结果。 可能学习Sql源码的人不少,但学习编译器知识的人就少多了。在SQL语句的执行过程中,其实SQL语句就是一门