2016-06-14 10 views
0

Eclipse e4 RCP 응용 프로그램에서 구문 색칠을 구현하기 위해 SourceViewer 컨트롤을 포함하는 파트로 기본 플러그인 프로젝트를 만들었습니다.Eclipse e4 RCP SourceViewer 구문 색 지정

public class SyntaxColoringTest { 

    /** The SourceViewer control to create the editor. */ 
    public SourceViewer sv = null; 

    @Inject 
    public SyntaxColoringTest() { 
    } 

    @PostConstruct 
    public void postConstruct(Composite parent) { 
      IVerticalRuler verticalRuler = new VerticalRuler(10); 
      OverviewRuler overviewRuler = new OverviewRuler(null, 20, null); 
      sv = new SourceViewer(parent, verticalRuler, overviewRuler, true, SWT.MULTI | SWT.V_SCROLL |SWT.H_SCROLL); 
      sv.configure(new TestSourceViewerConf()); 
    } 
} 

존재 TestSourceViewerConf는 다음과 같이

public class TestSourceViewerConf extends SourceViewerConfiguration { 
    public ITokenScanner tokenScanner; 
    public IRule patternRule; 
    public IRule endOfLineRule; 

    public TestSourceViewerConf(){ 
     tokenScanner = createTokenScanner(); 
    } 
    public IPresentationReconciler getPresentationReconciler(ISourceViewer viewer) { 
     PresentationReconciler reconciler= new PresentationReconciler(); 
     DefaultDamagerRepairer defDamagerRepairer= new DefaultDamagerRepairer(tokenScanner); 
     reconciler.setDamager(defDamagerRepairer, IDocument.DEFAULT_CONTENT_TYPE); 
     reconciler.setRepairer(defDamagerRepairer, IDocument.DEFAULT_CONTENT_TYPE); 
     return reconciler; 
    } 
    private ITokenScanner createTokenScanner() { 
     RuleBasedScanner scanner= new RuleBasedScanner(); 
     scanner.setRules(createRules()); 
     return scanner; 
    } 
    private IRule[] createRules() { 
     Display display = Display.getCurrent(); 
     Color blue = display.getSystemColor(SWT.COLOR_BLUE); 
     IToken tokenA= new Token(new TextAttribute(blue)); 
     IToken tokenB= new Token(new TextAttribute(blue)); 
     patternRule= new PatternRule("<", ">", tokenA, '\\', false); 
     endOfLineRule = new EndOfLineRule("++ ", tokenB); 
     return new IRule[] {patternRule, endOfLineRule}; 
    } 
} 

은 "++"후 또는이 코드가 작동 > < 사이 감사

답변

2

에 입력 할 때 착색하는 응용 프로그램의 아무것도 실행하지 않는 경우 내 자신의 e4 편집자 중 한 명에게 테스트 해 보겠습니다.

표시되지 않은 내용은 소스 뷰어에 대한 문서의 설정입니다. 문서를 설정하지 않으면 내 테스트에 표시되는 동작이 표시됩니다. 로 문서를 설정합니다 contents이 문서의 초기 내용입니다

IDocument doc = new Document(contents); 

sv.setDocument(doc); 

.

+0

이제 제안대로 문서를 설정하면됩니다. 다시 박수. –