开发者

Implemention Class proposal mechanism in SWT field

i know how to implement it,using field assist and search pattern, but the mechanism each time triggers a new sear开发者_开发百科ch. I am not sure, how the mechanism is implemented in Open Type for example ( i think with indexes). How to use this cache to make in time classpath search

This almost my entire solution. Each time a call createProposalData

private TreeSet<String> data;
private SearchParticipant[] participants = new SearchParticipant[] { SearchEngine
        .getDefaultSearchParticipant() };
private SearchPattern pattern;
private IJavaProject prj;
private JavaSearchScope scope;
private SearchEngine searchEngine = new SearchEngine();
private SearchRequestor requestor = new SearchRequestor() {

    @Override
    public void acceptSearchMatch(SearchMatch match) throws CoreException {
        String text = getText(match.getElement());

        if (text != null) {
            data.add(text);
        }

    }
    public String getText(Object element) {
        ...
        }
};

public ProposalEngine(IJavaProject prj) {
    super();
    this.prj = prj;
    scope = new JavaSearchScope();
    try {
        scope.add(prj);
    } catch (JavaModelException e) {
        //
    }
}

public Collection<String> createProposalData(final String patternText) {
    data = new TreeSet<String>();
    try {
        pattern = getPatternForSeach(patternText);
        searchEngine.search(pattern, participants, scope, requestor, null);
    } catch (Exception e) {
        // skip
    }
    return data;
}

protected SearchPattern getPatternForSeach(String patternText) {
    return SearchPattern.createPattern(patternText,
            IJavaSearchConstants.CLASS_AND_INTERFACE,
            IJavaSearchConstants.DECLARATIONS,
            SearchPattern.R_CAMELCASE_MATCH);
}


I believe that you are doing exactly what the Open Type dialog is doing. Indexing to speed up search happens underneath JDT API.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜