如何检测SourceViewer中是否打开了内容辅助

时间:2016-06-21 20:55:12

标签: eclipse jface

我正在使用SourceViewer ContentAssistant配置如下:

public class MySourceViewerConfiguration extends TextSourceViewerConfiguration {
  @Override
  public IContentAssistant getContentAssistant(ISourceViewer sourceViewer) {
    ContentAssistant assistant= new ContentAssistant();
    ...
    return assistant;
  }
}

SourceViewer sourceViewer = ...
sourceViewer.configure( new MySourceViewer() );

如何确定内容辅助当前是否处于活动状态,即提案弹出窗口是否已打开?

1 个答案:

答案 0 :(得分:0)

似乎没有办法直接查询SourceViewer内容辅助是否有效。

但是,如果在SourceViewer投入使用之前足够早地安装了完成侦听器,则可以使用它来跟踪辅助会话

例如:

class ContentAssistListener implements ICompletionListener {

  boolean contentAssistActive;

  @Override
  public void assistSessionStarted( ContentAssistEvent event ) {
    contentAssistActive = true;
  }

  @Override
  public void assistSessionEnded( ContentAssistEvent event ) {
    contentAssistActive = false;
  }

  @Override
  public void selectionChanged( ICompletionProposal proposal, boolean smartToggle ) {
  }
}

如果内容辅助目前处于有效状态,则contentAssistActive字段将为true,否则为false