`

Console 控制台扩展(一)

 
阅读更多

一、在RCP 程序中加入Console View 的方法如下:

1.实现org.eclipse.ui.console.consoleFactories扩展点,并且添加相关依赖

在plugin.xml的Dependencies页中为Required Plug-ins增加org.eclipse.ui.console

 

2.写一个ConsoleFactory类实现IConsoleFactory

 

package com.fujitsu.eternussf.acm.ccm.ui.views;  
  
import java.io.PrintStream;  
  
import org.eclipse.ui.console.ConsolePlugin;  
import org.eclipse.ui.console.IConsole;  
import org.eclipse.ui.console.IConsoleFactory;  
import org.eclipse.ui.console.IConsoleManager;  
import org.eclipse.ui.console.MessageConsole;  
import org.eclipse.ui.console.MessageConsoleStream;  
  
import com.fujitsu.eternussf.acm.ccm.nls.Messages;  
  
public class ConsoleFactory implements IConsoleFactory {  
  
    public static MessageConsole console = new MessageConsole("Transfer Infomation",null);  
      
    public void openConsole() {  
        showConsole();  
    }  
  
    public static void showConsole(){  
        if (console != null){  
            IConsoleManager manager = ConsolePlugin.getDefault()  
                    .getConsoleManager();  
            IConsole[] existing = manager.getConsoles();  
            boolean exists = false;  
            for (int i = 0; i < existing.length; i++){  
                if (console == existing[i])  
                    exists = true;  
            }  
            if (!exists){  
                manager.addConsoles(new IConsole[]{ console });  
            }  
            manager.showConsoleView(console);  
  
            MessageConsoleStream stream = console.newMessageStream();  
            System.setOut(new PrintStream(stream));  
        }  
    }  
  
    public static void closeConsole(){  
        IConsoleManager manager = ConsolePlugin.getDefault()  
                .getConsoleManager();  
        if (console != null){  
            manager.removeConsoles(new IConsole[]{ console });  
        }  
    }  
  
    public static MessageConsole getConsole() {  
        return console;  
    }  
  
}  
 

3.把控制台添加到透视图当中去  

public void createInitialLayout(IPageLayout layout) {  
  
    String editorArea = layout.getEditorArea();  
          
    ConsoleFactory consoleFactory = new ConsoleFactory();  
    consoleFactory.openConsole();  
    IFolderLayout bottomArea = layout.createFolder("bottomArea", IPageLayout.BOTTOM, 0.75f, DetailView.ID);  
    bottomArea.addView(IConsoleConstants.ID_CONSOLE_VIEW);  
}
 

二、定制Console View的ToolBar.

 

去掉RCP Console View 中的Open Console和Select Console按钮


IWorkbenchPage page = PlatformUI.getWorkbench().getWorkbenchWindows()[0].getPages()[0];  
IViewPart viewpart = page.findView(IConsoleConstants.ID_CONSOLE_VIEW);  
IActionBars actionBar = viewpart.getViewSite().getActionBars();  
IToolBarManager toolbarMgr = actionBar.getToolBarManager();  
IContributionItem[] items = toolbarMgr.getItems();  
for (IContributionItem item : items) {  
    if (item instanceof ActionContributionItem) {  
        IAction action = ((ActionContributionItem) item).getAction();  
        String text = action.getText();  
        if (text.equals("Open Console") || text.equals("Select Console")) {  
            toolbarMgr.remove(item);  
        }  
    }  
}  
actionBar.updateActionBars();  
 

 

 

分享到:
评论
1 楼 zxjlwt 2015-04-22  
学习了。
http://surenpi.com

相关推荐

Global site tag (gtag.js) - Google Analytics