Eclipse RCP 프로그램에서 Console 뷰 사용하기

Eclipse RCP 로 무언가를 만들어보려는데, 콘솔에 출력되는 내용 (System.out 으로 출력되는 내용)을 UI 에 표시하는 기능이 필요했다. 이미 Eclipse 에 Console 뷰가 있으므로 이걸 써먹기 위해 인터넷을 열심히 뒤진 결과 쓰는 방법을 알아냈다.
아래 예제는 특정 뷰에서 텍스트를 System.out 에 출력하면 그 내용이 Console 뷰에 보이게 하는 프로그램이다.
  1. rcp 프로젝트를 만든 후 플러그인 설정 파일 편집화면에서  dependencies 에 org.eclipse.ui.console 을 추가한다.
  2. 타겟 RCP 의 plugins 디렉토리에 아래의 플러그인 파일이 있는지 보고 없으면 다른 곳에서 복사해 넣는다. (Eclipse 에는 포함되어 있다.)
    • org.eclipse.ui.console
    • org.eclipse.jface.text
    • org.eclipse.core.variables
    • org.eclipse.text
    • org.eclipse.ui.workbench.texteditor
  3. IPerspectiveFactory 구현클래스를 아래처럼 만든다.
    import java.io.PrintStream;

    import org.eclipse.ui.IPageLayout;
    import org.eclipse.ui.IPerspectiveFactory;
    import org.eclipse.ui.console.ConsolePlugin;
    import org.eclipse.ui.console.IConsole;
    import org.eclipse.ui.console.IConsoleConstants;
    import org.eclipse.ui.console.MessageConsole;
    import org.eclipse.ui.console.MessageConsoleStream;

    public class Perspective implements IPerspectiveFactory {

        public void createInitialLayout(IPageLayout layout) {
            MessageConsole console = new MessageConsole("Console" , null) ;
            ConsolePlugin.getDefault().getConsoleManager()
                           .addConsoles(new IConsole[]{
    console});
            MessageConsoleStream stream = console.newMessageStream();
           
            PrintStream myS = new PrintStream(stream);
            System.setOut(myS);
            System.setErr(myS);

            String editorArea = layout.getEditorArea();
            layout.setEditorAreaVisible(false);
            layout.setFixed(false);
           
            layout.addView(InputBox.ID,   IPageLayout.LEFT, 1.0f, editorArea);
            layout.addView(IConsoleConstants.ID_CONSOLE_VIEW, 
                                      IPageLayout.BOTTOM, 0.4f, InputBox.ID);

        }
    }
  4. 텍스트를 입력할 수 있는 간단한 뷰를 만든다.
    import org.eclipse.swt.SWT;
    import org.eclipse.swt.events.SelectionAdapter;
    import org.eclipse.swt.events.SelectionEvent;
    import org.eclipse.swt.layout.FillLayout;
    import org.eclipse.swt.widgets.Button;
    import org.eclipse.swt.widgets.Composite;
    import org.eclipse.swt.widgets.Text;
    import org.eclipse.ui.part.ViewPart;

    public class InputBox extends ViewPart {
        public static final String ID = "test.consoleview.view";

        private Text text;

        public void createPartControl(Composite parent) {
            Composite panel = new Composite(parent, SWT.NONE);
            panel.setLayout(new FillLayout());
            this.text = new Text(panel, SWT.MULTI);
            Button btn = new Button(panel, SWT.PUSH);
            btn.setText("click !!!");
            btn.addSelectionListener(new SelectionAdapter() {
                @Override
                public void widgetDefaultSelected(SelectionEvent e) {
                    printString();
                }
                @Override
                public void widgetSelected(SelectionEvent e) {
                    printString();
                }
                private void printString() {
                    System.out.println(text.getText());
                    text.setText("");
                }
            });
        }

        public void setFocus() {
            this.text.setFocus();
        }
    }
  5. Overview 페이지의  Launch an Eclipse Application 링크를 클릭하여 실행시켜본다.
  6. 잘 안되면 Run 메뉴의 Run Configurations 의 해당 항목의 Plug-ins 탭에서 Add Required Plug-ins 버튼을 클릭하고 다시 실행해본다.
  7. 이래도 안 될 경우 Validate Plug-ins 버튼을 클릭하여 필요한 플러그인이 모두 있는지 확인한다.
정상적인 경우 아래와 비슷한 창이 뜰 것이다. 위쪽 텍스트 박스에 입력후 버튼을 누르면 아래쪽 Console 뷰에 내용이 출력된다.
rcpConsoleView.png

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com


다만 아쉬운 것은 Eclipse 에서는 System.err 에 출력되는 것은 빨간색으로 표시되는데, 내가 테스트해본 바로는 System.err 에 출력해도 검은색 글자로 표시된다. 뭔가 바꾸는 방법이 있겠지만 귀찮아서...

  참고한 곳 : http://jprog.blogspot.com/2005/09/using-eclipse-console-view-in-rcp.html

 

 

[출처] http://lispholic.tistory.com/23

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
29 Creating a TreeViewer 졸리운_곰 2015.08.06 207
28 SWT Tree Simple Demo file 졸리운_곰 2015.08.06 207
27 Create TreeView based on your own tree node structure : TreeViewer « SWT « Java Tutorial 졸리운_곰 2015.08.05 238
26 The general way to use a TreeViewer: 졸리운_곰 2015.08.05 205
25 Demonstrates TreeViewer file 졸리운_곰 2015.08.05 393
24 https://xerces.apache.org/xerces2-j/faq-dom.html#faq-4 file 졸리운_곰 2015.07.28 223
23 Use of Java2D on SWT or Draw2D graphical context : 2D « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 277
22 SWT 2D Chart: Flowchart : 2D « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 332
21 SWT Paint Example : 2D « SWT JFace Eclipse « Java 졸리운_곰 2015.07.28 236
20 Draw an X using AWT Graphics : SWT Swing AWT « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 243
19 Demonstrates a Canvas : Canvas « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 207
18 GC example: draw a thick line : 2D « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 234
17 SWT Draw 2D : 2D « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 158
16 SWT Button Action : Button « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 146
15 SWT Button : Button « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 193
14 SWT XML Editor: Modify DOM : Text « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 259
13 Demonstrates TreeEditor : Tree « SWT JFace Eclipse « Java file 졸리운_곰 2015.07.28 218
12 [SWING] 분석에 도전해볼만한 오픈소스 WebHarvest Java WebCrawler GUI file 졸리운_곰 2015.05.20 778
11 JAVA SWT XML EDITOR sample : 자바 SWT XML 에디터 예제 file 졸리운_곰 2015.05.12 379
10 JAVA SWT 대화상자 예제 : 동적으로 컨트롤을 추가하고 삭제하는 예제 졸리운_곰 2015.05.11 345
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED