eclipse中console使用2

来源:互联网 发布:华尔街英语微课堂软件 编辑:程序博客网 时间:2024/06/06 07:08

一不小心搜索到一篇文章,原来别人对console的使用早就研究过了,而且更深入,更详细。真郁闷下面是代码,略有修改actionfinal String msg1 = "This is the first message\n";        final String msg2 = "This is the second message\n";        final String msg3 = "This is the third message\n";                final String linkText1 = "GO Google\n";        final String linkURL1 = "http://www.google.com";                final MyHyperLink link1= new MyHyperLink( linkURL1,linkText1);                Color color_blue = Display.getDefault().getSystemColor(SWT.COLOR_BLUE);        MyConsole myConsole = MyConsole.getMyConsole();        myConsole.addMsgToConsole(msg1, null);        myConsole.addMsgToConsole(msg2, color_blue);        myConsole.addLinkToConsole(link1, null);        myConsole.addMsgToConsole(msg3, null);linkpublic class MyHyperLink implements IHyperlink {private String text;private URL url; public MyHyperLink(String urlStr){   try {    this.url = new URL(urlStr);    this.text = urlStr;   } catch (MalformedURLException e) {    e.printStackTrace();    this.url = null;    this.text = null;    }}public MyHyperLink(String urlStr,String text){   try {    this.url = new URL(urlStr);    this.text = text;   } catch (MalformedURLException e) {    e.printStackTrace();    this.url = null;    this.text = null;   }}public String getText(){   return text;}public boolean valid(){   return url!=null;}@Overridepublic void linkActivated() {   if(url!=null){    try {     PlatformUI.getWorkbench().getBrowserSupport().createBrowser(text).openURL(url);    } catch (PartInitException e) {     e.printStackTrace();    }   }}@Overridepublic void linkEntered(){System.out.println("link enter");}@Overridepublic void linkExited() {System.out.println("link exit");} }consolepublic class MyConsole extends MessageConsole {final public static String MYCONSOLE_NAME = "console.MyMessageConsole";int addStrLen;static class DocChangeListener implements IDocumentListener {   int lenBeforeChange;   int expectedlen;   final MyConsole myConsole;   final MyHyperLink myLink;   public DocChangeListener(MyConsole console, MyHyperLink link,int lenWanted) {    myConsole = console;    myLink = link;    expectedlen = lenWanted;   }   public void documentAboutToBeChanged(DocumentEvent event) {   }   public void documentChanged(final DocumentEvent event) {    int strLenAfterChange = event.getDocument().getLength();    if (strLenAfterChange >= expectedlen) {     Job job = new Job("MyMessageConsole.addLinkToConsole") {      public IStatus run(IProgressMonitor monitor) {       try {        myConsole.addHyperlink(myLink, expectedlen          - myLink.getText().length(), myLink          .getText().length());       } catch (Exception e) {        e.printStackTrace();       }       return Status.OK_STATUS;      }     };     job.schedule();     event.getDocument().removeDocumentListener(this);    }   }}public MyConsole() {   super(MYCONSOLE_NAME, null);   addStrLen = 0;}public void clearConsole() {   super.clearConsole();   this.addStrLen = 0;}public void addMsgToConsole(final String msg, final Color color) {   final MessageConsoleStream stream = this.newMessageStream();   if (color != null)    stream.setColor(color);   addStrLen += msg.length();   stream.print(msg); // "\n" will take length 1, so use print, not println}public void addLinkToConsole(final MyHyperLink link, Color color) {   if (link.valid()) {    try {     final MyConsole console = this;     final int currentStrLen = addStrLen;     addMsgToConsole(link.getText(), color);     console.getDocument().addDocumentListener(       new DocChangeListener(console, link, currentStrLen+ link.getText().length()));    } catch (Exception e) {     e.printStackTrace();    }   }}public static MyConsole getMyConsole() {   IConsoleManager manager = ConsolePlugin.getDefault()     .getConsoleManager();   IConsole[] curConsoles = manager.getConsoles();   for (IConsole co : curConsoles) {    if (co.getName().equals(MYCONSOLE_NAME))     return (MyConsole) co;   }   MyConsole myConsole = new MyConsole();   manager.addConsoles(new IConsole[] { myConsole });   return myConsole;}}


	
				
		
原创粉丝点击