在Eclipse控制台中添加终止按钮

4
我应该怎样在eclipse控制台工具栏添加终止按钮?我是这样创建控制台的:
IOConsole console = new IOConsole( name, null, null, true );
ConsolePlugin.getDefault().getConsoleManager().addConsoles( new IConsole[]{console} );
1个回答

5

我找到了解决方案。以下是代码:

   <extension
         point="org.eclipse.ui.console.consolePageParticipants">
      <consolePageParticipant
            class="com.plugin.console.ConsoleActions"
            id="com.plugin.console.PageParticipant">
         <enablement>
            <instanceof value="com.plugin.console.Console"/>
         </enablement>
      </consolePageParticipant>
   </extension>

控制台类:

public class Console extends IOConsole {

    public Console(String name, ImageDescriptor imageDescriptor) {
        super(name, imageDescriptor);

    }

    public Console(String name, String consoleType, ImageDescriptor imageDescriptor, boolean autoLifeCycle) {
        super(name, consoleType, imageDescriptor, autoLifeCycle);
    }

}

控制台参与者类:

public class ConsoleActions implements IConsolePageParticipant {

    private IPageBookViewPage page;
    private Action remove, stop;
    private IActionBars bars;
    private IConsole console;

    @Override
    public void init(final IPageBookViewPage page, final IConsole console) {
        this.console = console;
        this.page = page;
        IPageSite site = page.getSite();
        this.bars = site.getActionBars();

        createTerminateAllButton();
        createRemoveButton();

        bars.getMenuManager().add(new Separator());
        bars.getMenuManager().add(remove);

        IToolBarManager toolbarManager = bars.getToolBarManager();

        toolbarManager.appendToGroup(IConsoleConstants.LAUNCH_GROUP, stop);
        toolbarManager.appendToGroup(IConsoleConstants.LAUNCH_GROUP,remove);

        bars.updateActionBars();

    }

    private void createTerminateAllButton() {
        ImageDescriptor imageDescriptor = ImageDescriptor.createFromFile(getClass(), "/icons/stop_all_active.gif");
        this.stop = new Action("Terminate all", imageDescriptor) {
            public void run() {
                //code to execute when button is pressed
            }
        };

    }

    private void createRemoveButton() {
        ImageDescriptor imageDescriptor = ImageDescriptor.createFromFile(getClass(), "/icons/remove_active.gif");
        this.remove= new Action("Remove console", imageDescriptor) {
            public void run() {
                //code to execute when button is pressed
            }
        };
    }

    @Override
    public void dispose() {
        remove= null;
        stop = null;
        bars = null;
        page = null;
    }

    @Override
    public Object getAdapter(Class adapter) {
        return null;
    }

    @Override
    public void activated() {
        updateVis();
    }

    @Override
    public void deactivated() {
        updateVis();
    }

    private void updateVis() {

        if (page == null)
            return;
        boolean isEnabled = true;
        stop.setEnabled(isEnabled);
        remove.setEnabled(isEnabled);
        bars.updateActionBars();
    }

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接