将Eclipse的console插件加入到自己的RCP应用程序中

打开plugins.xml,

在Dependencies项中,点击add,加入org.eclipse.ui.console 依赖项。

在extensions项中点击add,添加org.eclipse.ui.console .consolefactories, 然后再该插件上点击右键,New-->consoleFactory ,在label想中填入控制台的名称,class中填入需要放置控制台工厂的 类名,如com.test.ui.ConsoleFactory,单击class会进入ConsoleFactory的代码编辑区,在代码编辑区中写入以 下代码。

Java代码



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;

public   class  ConsoleFactory  implements  IConsoleFactory  {
    
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 ;
    }

}

RCP 的Perspective.java中写入

Java代码



public   void  createInitialLayout(IPageLayout layout)  {
        String editArea 
=  layout.getEditorArea();
                                           ConsoleFactory cf 
=   new  ConsoleFactory();
        cf.openConsole();
        layout.setEditorAreaVisible(
false );
        layout.addView(IAppConstant.PIC_VIEW, IPageLayout.TOP, 
0.50f , editArea);
        
        IFolderLayout up
= layout.createFolder( " up " ,IPageLayout.BOTTOM, 0.5f ,editArea);
                                          up.addPlaceholder(IConsoleConstants.ID_CONSOLE_VIEW);
                                          up.addView(IConsoleConstants.ID_CONSOLE_VIEW);

    }

运行,哈哈,已经有console 了。

如果报错:

!MESSAGE Missing Constraint : Require-Bundle: org.eclipse.ui.console; bundle-version="3.4.0"
... ...

解决方法是在运行配置"Open Run Dialog ... "里找到相应的运行项, 然后在"Plug-ins "里先按下"Validate Plug-ins "按钮, 会提示你缺少Bundle项, 然后按下"Add Required Plug-ins "按钮, 这样就会把运行时需要的plug-ins给自动添加上去(在这个例子里是org.eclipse.ui.console 这个插件).

打开plugins.xml,

在Dependencies项中,点击add,加入org.eclipse.ui.console 依赖项。

在extensions项中点击add,添加org.eclipse.ui.console .consolefactories, 然后再该插件上点击右键,New-->consoleFactory ,在label想中填入控制台的名称,class中填入需要放置控制台工厂的 类名,如com.test.ui.ConsoleFactory,单击class会进入ConsoleFactory的代码编辑区,在代码编辑区中写入以 下代码。

Java代码



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;

public   class  ConsoleFactory  implements  IConsoleFactory  {
    
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 ;
    }

}

RCP 的Perspective.java中写入

Java代码



public   void  createInitialLayout(IPageLayout layout)  {
        String editArea 
=  layout.getEditorArea();
                                           ConsoleFactory cf 
=   new  ConsoleFactory();
        cf.openConsole();
        layout.setEditorAreaVisible(
false );
        layout.addView(IAppConstant.PIC_VIEW, IPageLayout.TOP, 
0.50f , editArea);
        
        IFolderLayout up
= layout.createFolder( " up " ,IPageLayout.BOTTOM, 0.5f ,editArea);
                                          up.addPlaceholder(IConsoleConstants.ID_CONSOLE_VIEW);
                                          up.addView(IConsoleConstants.ID_CONSOLE_VIEW);

    }

运行,哈哈,已经有console 了。

如果报错:

!MESSAGE Missing Constraint : Require-Bundle: org.eclipse.ui.console; bundle-version="3.4.0"
... ...

解决方法是在运行配置"Open Run Dialog ... "里找到相应的运行项, 然后在"Plug-ins "里先按下"Validate Plug-ins "按钮, 会提示你缺少Bundle项, 然后按下"Add Required Plug-ins "按钮, 这样就会把运行时需要的plug-ins给自动添加上去(在这个例子里是org.eclipse.ui.console 这个插件).

猜你喜欢

转载自marsvaadin.iteye.com/blog/1463174