--- a/php.editor/src/org/netbeans/modules/php/editor/PHPCodeTemplateFilter.java +++ a/php.editor/src/org/netbeans/modules/php/editor/PHPCodeTemplateFilter.java @@ -42,8 +42,13 @@ package org.netbeans.modules.php.editor; import java.util.Collections; +import java.util.concurrent.Callable; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; +import java.util.concurrent.FutureTask; +import java.util.concurrent.RunnableFuture; +import javax.swing.SwingUtilities; import javax.swing.text.JTextComponent; -import org.netbeans.editor.BaseDocument; import org.netbeans.lib.editor.codetemplates.api.CodeTemplate; import org.netbeans.lib.editor.codetemplates.spi.CodeTemplateFilter; import org.netbeans.modules.csl.spi.ParserResult; @@ -57,7 +62,6 @@ import org.openide.util.Exceptions; import org.openide.util.RequestProcessor; import static org.netbeans.modules.php.editor.CompletionContextFinder.CompletionContext; -import org.openide.util.RequestProcessor.Task; /** * @@ -69,34 +73,40 @@ private int caretOffset; private CompletionContext context; private static final RequestProcessor requestProcessor = new RequestProcessor("PHPCodeTemplateFilter");//NOI18N - private final Task postedTask; + private final Future> future; public PHPCodeTemplateFilter(final JTextComponent component, final int offset) { this.caretOffset = offset; - postedTask = requestProcessor.post(new Runnable() { - public void run() { - parseDocument(component); + future = requestProcessor.submit(new Callable>() { + @Override + public Future call() { + try { + return parseDocument(component); + } catch (ParseException ex) { + Exceptions.printStackTrace(ex); + } + return null; } }); } public boolean accept(CodeTemplate template) { try { - if (postedTask.waitFinished(300)) { - if (context == CompletionContext.CLASS_CONTEXT_KEYWORDS) { - return template.getAbbreviation().equals("fnc"); //NOI18N - } - return accept; - } else { - postedTask.cancel(); + future.get().get(); + if (context == CompletionContext.CLASS_CONTEXT_KEYWORDS) { + return template.getAbbreviation().equals("fnc"); //NOI18N } + return accept; + } catch (InterruptedException ex) { + } catch (ExecutionException ee) { } return false; } @Override public void run(ResultIterator resultIterator) throws Exception { + System.out.println("EXECUTED!!!!!"); ParserResult parameter = null; String mimeType = resultIterator.getSnapshot().getMimeType(); if (!mimeType.equals(FileUtils.PHP_MIME_TYPE)) { @@ -131,11 +141,7 @@ } } - private void parseDocument(final JTextComponent component) { - try { - ParserManager.parseWhenScanFinished(Collections.singleton(Source.create(component.getDocument())), this); - } catch (ParseException ex) { - Exceptions.printStackTrace(ex); - } + private Future parseDocument(final JTextComponent component) throws ParseException { + return ParserManager.parseWhenScanFinished(Collections.singleton(Source.create(component.getDocument())), this); } }