1.1 --- a/php.smarty/manifest.mf Mon Jun 21 15:27:52 2010 +0200
1.2 +++ b/php.smarty/manifest.mf Wed Jun 23 13:21:51 2010 +0200
1.3 @@ -2,5 +2,5 @@
1.4 OpenIDE-Module: org.netbeans.modules.php.smarty
1.5 OpenIDE-Module-Layer: org/netbeans/modules/php/smarty/resources/layer.xml
1.6 OpenIDE-Module-Localizing-Bundle: org/netbeans/modules/php/smarty/resources/Bundle.properties
1.7 -OpenIDE-Module-Specification-Version: 1.31
1.8 +OpenIDE-Module-Specification-Version: 1.33
1.9
2.1 --- a/php.smarty/src/org/netbeans/modules/php/smarty/editor/completion/CodeCompletionUtils.java Mon Jun 21 15:27:52 2010 +0200
2.2 +++ b/php.smarty/src/org/netbeans/modules/php/smarty/editor/completion/CodeCompletionUtils.java Wed Jun 23 13:21:51 2010 +0200
2.3 @@ -38,6 +38,8 @@
2.4 */
2.5 package org.netbeans.modules.php.smarty.editor.completion;
2.6
2.7 +import java.util.ArrayList;
2.8 +import java.util.Collections;
2.9 import java.util.Locale;
2.10 import javax.swing.text.BadLocationException;
2.11 import javax.swing.text.Document;
2.12 @@ -96,7 +98,7 @@
2.13 tokenSequence.move(offset);
2.14 if (tokenSequence.moveNext() || tokenSequence.movePrevious()) {
2.15 Object tokenID = tokenSequence.token().id();
2.16 - if (tokenID == TplTopTokenId.T_HTML || tokenID == TplTopTokenId.T_SMARTY_CLOSE_DELIMITER) {
2.17 + if (tokenID == TplTopTokenId.T_HTML || tokenID == TplTopTokenId.T_PHP || tokenID == TplTopTokenId.T_COMMENT) {
2.18 return false;
2.19 }
2.20 }
2.21 @@ -121,26 +123,38 @@
2.22 return false;
2.23 }
2.24
2.25 - static String afterSmartyCommand(Document doc, int offset) {
2.26 + static ArrayList<String> afterSmartyCommand(Document doc, int offset) {
2.27 int readLength = (SCANNING_MAX_FILTER_LENGHT > offset) ? offset : SCANNING_MAX_FILTER_LENGHT;
2.28 try {
2.29 - return getLastKeyword(doc.getText(offset - readLength, readLength), SmartyFramework.getOpenDelimiter(NbEditorUtilities.getFileObject(doc)));
2.30 + return getLastKeywords(doc.getText(offset - readLength, readLength), SmartyFramework.getOpenDelimiter(NbEditorUtilities.getFileObject(doc)));
2.31 } catch (BadLocationException ex) {
2.32 Exceptions.printStackTrace(ex);
2.33 }
2.34 - return "";
2.35 + return new ArrayList();
2.36 }
2.37
2.38 - public static String getLastKeyword(String area, String openDelimiter) {
2.39 + public static ArrayList<String> getLastKeywords(String area, String openDelimiter) {
2.40 int delimiterPosition = area.lastIndexOf(openDelimiter);
2.41 String searchingContent = (delimiterPosition > -1) ? area.substring(delimiterPosition + openDelimiter.length()) : area;
2.42 - String[] keywords = searchingContent.split(" ");
2.43 - String lastKeyword = "";
2.44 + String[] keywords = searchingContent.split("[ =]");
2.45 + ArrayList<String> availableItems = new ArrayList<String>();
2.46 for (String string : keywords) {
2.47 if (SmartyCodeCompletionOffer.getFunctionParameters().get(string) != null) {
2.48 - lastKeyword = string;
2.49 + if (availableItems.isEmpty()) {
2.50 + availableItems.add(string);
2.51 + }
2.52 + else {
2.53 + availableItems.set(0, string);
2.54 + }
2.55 + }
2.56 + if (!availableItems.isEmpty()) {
2.57 + for (TplCompletionItem completionItem : SmartyCodeCompletionOffer.getFunctionParameters().get(availableItems.get(0))) {
2.58 + if (completionItem.getItemText().equals(string)) {
2.59 + availableItems.add(string);
2.60 + }
2.61 + }
2.62 }
2.63 }
2.64 - return lastKeyword;
2.65 + return availableItems;
2.66 }
2.67 }
3.1 --- a/php.smarty/src/org/netbeans/modules/php/smarty/editor/completion/TplCompletionProvider.java Mon Jun 21 15:27:52 2010 +0200
3.2 +++ b/php.smarty/src/org/netbeans/modules/php/smarty/editor/completion/TplCompletionProvider.java Wed Jun 23 13:21:51 2010 +0200
3.3 @@ -41,10 +41,10 @@
3.4 package org.netbeans.modules.php.smarty.editor.completion;
3.5
3.6 import java.lang.String;
3.7 -import java.util.Collection;
3.8 -import java.util.Collections;
3.9 import java.net.URL;
3.10 import java.util.ArrayList;
3.11 +import java.util.HashSet;
3.12 +import java.util.Set;
3.13 import javax.swing.Action;
3.14 import javax.swing.text.BadLocationException;
3.15 import javax.swing.text.Document;
3.16 @@ -89,7 +89,7 @@
3.17
3.18 private static class Query extends AbstractQuery {
3.19
3.20 - private volatile Collection<? extends CompletionItem> items = Collections.emptyList();
3.21 + private volatile Set<TplCompletionItem> items = new HashSet<TplCompletionItem>();
3.22 private JTextComponent component;
3.23
3.24 @Override
3.25 @@ -101,21 +101,19 @@
3.26 protected void doQuery(CompletionResultSet resultSet, Document doc, int caretOffset) {
3.27 try {
3.28 TplCompletionQuery.CompletionResult result = new TplCompletionQuery(doc, caretOffset).query();
3.29 - String command = ""; boolean inSmarty = false;
3.30 + ArrayList<String> commands; boolean inSmarty = false;
3.31 if (CodeCompletionUtils.insideSmartyCode(doc, caretOffset)) {
3.32 if (CodeCompletionUtils.inVariableModifiers(doc, caretOffset)) {
3.33 - items = result.getVariableModifiers();
3.34 + items.addAll(result.getVariableModifiers());
3.35 inSmarty = true;
3.36 }
3.37 - if (!(command = CodeCompletionUtils.afterSmartyCommand(doc, caretOffset)).equals("")) {
3.38 - items = new ArrayList<CompletionItem>(result.getParamsForCommand(command));
3.39 + if (!(commands = CodeCompletionUtils.afterSmartyCommand(doc, caretOffset)).isEmpty()) {
3.40 + items.addAll(result.getParamsForCommand(commands));
3.41 inSmarty = true;
3.42 }
3.43 if (!inSmarty) {
3.44 - if (result == null){
3.45 - items = Collections.emptyList();
3.46 - } else {
3.47 - items = result.getFunctions();
3.48 + if (result != null){
3.49 + items.addAll(result.getFunctions());
3.50 }
3.51 }
3.52 }
3.53 @@ -132,6 +130,7 @@
3.54 if (component.getText(component.getCaretPosition() - 1, 1).toString().equals("|")) {
3.55 return false;
3.56 }
3.57 +
3.58 } catch (BadLocationException ex) {
3.59 return false;
3.60 }
4.1 --- a/php.smarty/src/org/netbeans/modules/php/smarty/editor/completion/TplCompletionQuery.java Mon Jun 21 15:27:52 2010 +0200
4.2 +++ b/php.smarty/src/org/netbeans/modules/php/smarty/editor/completion/TplCompletionQuery.java Wed Jun 23 13:21:51 2010 +0200
4.3 @@ -41,6 +41,7 @@
4.4 package org.netbeans.modules.php.smarty.editor.completion;
4.5
4.6 import java.util.*;
4.7 +import java.util.ArrayList;
4.8 import javax.swing.text.Document;
4.9 import org.netbeans.modules.parsing.api.ParserManager;
4.10 import org.netbeans.modules.parsing.api.ResultIterator;
4.11 @@ -49,7 +50,6 @@
4.12 import org.netbeans.modules.parsing.api.UserTask;
4.13 import org.netbeans.modules.parsing.spi.ParseException;
4.14 import org.netbeans.modules.php.smarty.editor.completion.entries.SmartyCodeCompletionOffer;
4.15 -import org.netbeans.spi.editor.completion.CompletionItem;
4.16
4.17 /**
4.18 *
4.19 @@ -93,27 +93,40 @@
4.20
4.21 public static class CompletionResult {
4.22
4.23 - private Collection<? extends CompletionItem> functions;
4.24 - private Collection<? extends CompletionItem> variableModifiers;
4.25 - private HashMap<String, Collection<? extends CompletionItem>> functionParams;
4.26 + private ArrayList<TplCompletionItem> functions;
4.27 + private ArrayList<TplCompletionItem> variableModifiers;
4.28 + private HashMap<String, ArrayList<TplCompletionItem>> functionParams;
4.29
4.30 - CompletionResult(Collection<? extends CompletionItem> functions, Collection<? extends CompletionItem>
4.31 - variableModifiers, HashMap<String, Collection<? extends CompletionItem>> functionParams) {
4.32 + CompletionResult(ArrayList<TplCompletionItem> functions, ArrayList<TplCompletionItem>
4.33 + variableModifiers, HashMap<String, ArrayList<TplCompletionItem>> functionParams) {
4.34 this.functions = functions;
4.35 this.variableModifiers = variableModifiers;
4.36 this.functionParams = functionParams;
4.37 }
4.38
4.39 - public Collection<? extends CompletionItem> getFunctions() {
4.40 + public ArrayList<TplCompletionItem> getFunctions() {
4.41 return functions;
4.42 }
4.43
4.44 - public Collection<? extends CompletionItem> getVariableModifiers() {
4.45 + public ArrayList<TplCompletionItem> getVariableModifiers() {
4.46 return variableModifiers;
4.47 }
4.48
4.49 - public Collection<? extends CompletionItem> getParamsForCommand(String command) {
4.50 - return functionParams.get(command);
4.51 + public ArrayList<TplCompletionItem> getParamsForCommand(ArrayList<String> commands) {
4.52 + // first command contain main keyword
4.53 + ArrayList<TplCompletionItem> availableItems = new ArrayList<TplCompletionItem>(functionParams.get(commands.get(0)));
4.54 + // rest of them is just removed from codecompletion
4.55 + Iterator it = availableItems.iterator();
4.56 + while (it.hasNext()) {
4.57 + TplCompletionItem tplCompletionItem = (TplCompletionItem)it.next();
4.58 + for (String command : commands) {
4.59 + if (tplCompletionItem.getItemText().equals(command)) {
4.60 + it.remove();
4.61 + break;
4.62 + }
4.63 + }
4.64 + }
4.65 + return availableItems;
4.66 }
4.67
4.68
5.1 --- a/php.smarty/src/org/netbeans/modules/php/smarty/editor/completion/entries/CodeCompletionEntryMetadata.java Mon Jun 21 15:27:52 2010 +0200
5.2 +++ b/php.smarty/src/org/netbeans/modules/php/smarty/editor/completion/entries/CodeCompletionEntryMetadata.java Wed Jun 23 13:21:51 2010 +0200
5.3 @@ -40,9 +40,8 @@
5.4
5.5 import java.util.ArrayList;
5.6 import java.util.Collection;
5.7 -import java.util.Collections;
5.8 +import org.netbeans.modules.php.smarty.editor.completion.TplCompletionItem;
5.9 import org.netbeans.modules.php.smarty.editor.completion.TplCompletionItem.FunctionParametersCompletionItem;
5.10 -import org.netbeans.spi.editor.completion.CompletionItem;
5.11
5.12 /**
5.13 *
5.14 @@ -53,7 +52,7 @@
5.15 private String keyword;
5.16 private String help;
5.17 private String helpUrl;
5.18 - private Collection<CompletionItem> params = new ArrayList<CompletionItem>();
5.19 + private ArrayList<TplCompletionItem> params = new ArrayList<TplCompletionItem>();
5.20
5.21 public CodeCompletionEntryMetadata(String keyword, String help, String helpUrl,
5.22 Collection<CodeCompletionParamMetadata> params) {
5.23 @@ -81,7 +80,7 @@
5.24 return helpUrl;
5.25 }
5.26
5.27 - public Collection<? extends CompletionItem> getParameters() {
5.28 + public ArrayList<TplCompletionItem> getParameters() {
5.29 return params;
5.30 }
5.31 }
6.1 --- a/php.smarty/src/org/netbeans/modules/php/smarty/editor/completion/entries/SmartyCodeCompletionOffer.java Mon Jun 21 15:27:52 2010 +0200
6.2 +++ b/php.smarty/src/org/netbeans/modules/php/smarty/editor/completion/entries/SmartyCodeCompletionOffer.java Wed Jun 23 13:21:51 2010 +0200
6.3 @@ -45,9 +45,7 @@
6.4 import org.netbeans.modules.php.smarty.editor.completion.TplCompletionItem;
6.5 import org.netbeans.modules.php.smarty.editor.completion.TplCompletionItem.BuiltInFunctionsCompletionItem;
6.6 import org.netbeans.modules.php.smarty.editor.completion.TplCompletionItem.CustomFunctionsCompletionItem;
6.7 -import org.netbeans.modules.php.smarty.editor.completion.TplCompletionItem.FunctionParametersCompletionItem;
6.8 import org.netbeans.modules.php.smarty.editor.completion.TplCompletionItem.VariableModifiersCompletionItem;
6.9 -import org.netbeans.spi.editor.completion.CompletionItem;
6.10 import org.openide.util.Exceptions;
6.11
6.12 /**
6.13 @@ -56,24 +54,24 @@
6.14 */
6.15 public class SmartyCodeCompletionOffer {
6.16
6.17 - private final static Collection<TplCompletionItem> completionItemsFunctions = new ArrayList<TplCompletionItem>();
6.18 - private final static Collection<TplCompletionItem> completionItemsModifiers = new ArrayList<TplCompletionItem>();
6.19 - private final static HashMap<String, Collection<? extends CompletionItem>> completionItemsFunctionParams = new HashMap<String, Collection<? extends CompletionItem>>();
6.20 + private final static ArrayList<TplCompletionItem> completionItemsFunctions = new ArrayList<TplCompletionItem>();
6.21 + private final static ArrayList<TplCompletionItem> completionItemsModifiers = new ArrayList<TplCompletionItem>();
6.22 + private final static HashMap<String, ArrayList<TplCompletionItem>> completionItemsFunctionParams = new HashMap<String, ArrayList<TplCompletionItem>>();
6.23
6.24 static {
6.25 loadFunctions(new String[]{"built-in-functions", "custom-functions"});
6.26 loadModifiers("variable-modifiers");
6.27 }
6.28
6.29 - public static Collection<TplCompletionItem> getFunctions() {
6.30 + public static ArrayList<TplCompletionItem> getFunctions() {
6.31 return completionItemsFunctions;
6.32 }
6.33
6.34 - public static Collection<TplCompletionItem> getVariableModifiers() {
6.35 + public static ArrayList<TplCompletionItem> getVariableModifiers() {
6.36 return completionItemsModifiers;
6.37 }
6.38
6.39 - public static HashMap<String, Collection<? extends CompletionItem>> getFunctionParameters() {
6.40 + public static HashMap<String, ArrayList<TplCompletionItem>> getFunctionParameters() {
6.41 return completionItemsFunctionParams;
6.42 }
6.43
6.44 @@ -109,10 +107,7 @@
6.45
6.46 try {
6.47 Collection<CodeCompletionEntryMetadata> ccData = CodeCompletionEntries.readAllCodeCompletionEntriesFromXML(inputStream, filePath);
6.48 - for (CodeCompletionEntryMetadata codeCompletionEntryMetadata : ccData) {
6.49 - ccList.add(codeCompletionEntryMetadata);
6.50 - }
6.51 -// ccList.addAll(ccData);
6.52 + ccList.addAll(ccData);
6.53 } catch (Exception ex) {
6.54 Exceptions.printStackTrace(ex);
6.55 }