diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/simpleparser/SimpleParser.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/simpleparser/SimpleParser.java index ea3719c90..1d2b346e1 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/simpleparser/SimpleParser.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/simpleparser/SimpleParser.java @@ -70,9 +70,8 @@ public interface SimpleParser { List variableSuggestions ) throws SimpleParseException, IOException, InterruptedException; - public static void fillSuggestionsOne( - List variableSuggestions, + List variableSuggestions, Map varNameToDefinition, Map positionToStatic, Map definitionToType, @@ -80,7 +79,7 @@ public interface SimpleParser { Map definitionToSubType, Map definitionToCallSubType, Set used - ) { + ) { for (Path p : varNameToDefinition.keySet()) { int definition = varNameToDefinition.get(p); if (definition >= 0) { @@ -97,16 +96,16 @@ public interface SimpleParser { } } } - - public static void fillSuggestions(List variableSuggestions, - Map varNameToDefinition1, - Map varNameToDefinition2, + + public static void fillSuggestions(List variableSuggestions, + Map varNameToDefinition1, + Map varNameToDefinition2, Map positionToStatic, Map definitionToType, Map definitionToCallType, Map definitionToSubType, Map definitionToCallSubType - ) { + ) { Set used = new HashSet<>(); if (varNameToDefinition1 != null) { fillSuggestionsOne(variableSuggestions, varNameToDefinition1, positionToStatic, definitionToType, definitionToCallType, definitionToSubType, definitionToCallSubType, used); @@ -116,7 +115,7 @@ public interface SimpleParser { } variableSuggestions.add(new Variable(true, new Path("--finish--"), 0)); } - + public static void parseVariablesList( List sharedVariables, Map> definitionPosToReferences, @@ -172,7 +171,7 @@ public interface SimpleParser { Path traitCallType = definitionToCallType.get(definition); Variable traitSubType = definitionToSubType.get(definition); Variable traitCallSubType = definitionToCallSubType.get(definition); - + Path cls = p.getParent(); String traitName = p.getLast().toString(); if (!localTypeTraits.containsKey(cls)) { @@ -191,13 +190,13 @@ public interface SimpleParser { if (caretPosition != null && variableSuggestions.isEmpty()) { if ((variables.isEmpty() || variables.get(variables.size() - 1).var.getPosition() <= caretPosition)) { - fillSuggestions(variableSuggestions, parentVarNameToDefinitionPosition, null, positionToStatic, definitionToType, definitionToCallType, definitionToSubType, definitionToCallSubType); + fillSuggestions(variableSuggestions, parentVarNameToDefinitionPosition, null, positionToStatic, definitionToType, definitionToCallType, definitionToSubType, definitionToCallSubType); } } if (!variableSuggestions.isEmpty()) { variableSuggestions.remove(variableSuggestions.size() - 1); - } + } } public static void parseVariablesList( @@ -348,14 +347,14 @@ public interface SimpleParser { } } } - + parseVariablesList(vs.getScopeItems(), definitionPosToReferences, referenceToDefinition, privateVarFullNameToDefinitionPosition, privateVarNameToDefinitionPosition, positionToStatic, subStatic, errors, vs, innerFunctionCanUseTraits, externalSimpleTypes, externalFullTypes, referenceToExternalTypeIndex, definitionToType, definitionToCallType, definitionToSubType, definitionToCallSubType, traitFullNameToDefinition, linkHandler, simpleExternalClassNameToFullClassName, referenceToExternalTraitKey, externalTraitKeyToReference, separatorPosToType, separatorIsStatic, caretPosition, variableSuggestions, vs.getPosition(), vs.getEndPosition()); } if (vt2 != null && caretPosition != null && variableSuggestions.isEmpty()) { if (vt.getPosition() <= caretPosition && vt2.getPosition() > caretPosition) { if (vt instanceof Variable) { - fillSuggestions(variableSuggestions, parentVarNameToDefinitionPosition, privateVarNameToDefinitionPosition, positionToStatic, definitionToType, definitionToCallType, definitionToSubType, definitionToCallSubType); + fillSuggestions(variableSuggestions, parentVarNameToDefinitionPosition, privateVarNameToDefinitionPosition, positionToStatic, definitionToType, definitionToCallType, definitionToSubType, definitionToCallSubType); } } } @@ -410,7 +409,7 @@ public interface SimpleParser { parentVarNameToDefinitionPosition.put(ct.getLastName(), ct.position); } if (v instanceof Scope) { - Scope s = (Scope) v; + Scope s = (Scope) v; findClassTraits(s.getScopeItems(), traitFullNameToDefinition, definitionPosToReferences, positionToStatic, definitionToType, definitionToCallType, definitionToSubType, definitionToCallSubType, parentVarFullNameToDefinitionPosition, parentVarNameToDefinitionPosition); } } diff --git a/src/com/jpexs/decompiler/flash/gui/editor/VariableMarker.java b/src/com/jpexs/decompiler/flash/gui/editor/VariableMarker.java index 3b0c6a019..915c4d706 100644 --- a/src/com/jpexs/decompiler/flash/gui/editor/VariableMarker.java +++ b/src/com/jpexs/decompiler/flash/gui/editor/VariableMarker.java @@ -521,11 +521,11 @@ public class VariableMarker implements SyntaxComponent, CaretListener, PropertyC tokenAt = sDoc.getPrevToken(tokenAt); } } - + boolean isDot = tokenAt != null && tokenAt.type == TokenType.OPERATOR ? ".".equals(sDoc.getText(tokenAt.start, tokenAt.length)) : false; sDoc.readUnlock(); if (isDot) { - int afterDot = tokenAt.start + 1; + int afterDot = tokenAt.start + 1; pane.getDocument().remove(afterDot, pane.getCaretPosition() - afterDot); pane.getDocument().insertString(afterDot, suggestion, null); } else { @@ -565,7 +565,7 @@ public class VariableMarker implements SyntaxComponent, CaretListener, PropertyC tokenAt = sDoc.getPrevToken(tokenAt); } } - + boolean isDot = tokenAt != null && tokenAt.type == TokenType.OPERATOR ? ".".equals(sDoc.getText(tokenAt.start, tokenAt.length)) : false; List suggestions = new ArrayList<>(); if (isDot) { @@ -578,7 +578,7 @@ public class VariableMarker implements SyntaxComponent, CaretListener, PropertyC if (!separatorPosToType.containsKey(pos)) { return; } - + if (separatorPosToType.containsKey(pos)) { Path type = separatorPosToType.get(pos); @@ -596,11 +596,11 @@ public class VariableMarker implements SyntaxComponent, CaretListener, PropertyC if (traitName.name.toString().equals(type.getLast().toString())) { continue; } - suggestions.add(traitName); - } + suggestions.add(traitName); + } } else { //type = externalTypes.get(referenceToExternalTypeIndex.get(pos)); - if(simpleExternalClassNameToFullClassName.containsKey(type)) { + if (simpleExternalClassNameToFullClassName.containsKey(type)) { type = simpleExternalClassNameToFullClassName.get(type); } List traitNames = ((LineMarkedEditorPane) pane).getLinkHandler().getClassTraits(type, true, true, true); @@ -615,20 +615,20 @@ public class VariableMarker implements SyntaxComponent, CaretListener, PropertyC suggestions.add(traitName); } } - } + } } else { - suggestions.addAll(variableSuggestions); + suggestions.addAll(variableSuggestions); } if (suggestions.isEmpty()) { codeCompletionPopup.setVisible(false); return; - } + } NaturalOrderComparator noc = new NaturalOrderComparator(); Collections.sort(suggestions, new Comparator() { @Override public int compare(Variable o1, Variable o2) { return noc.compare(o1.name.getLast().toString(), o2.name.getLast().toString()); - } + } }); if (!identText.isEmpty()) { for (int i = suggestions.size() - 1; i >= 0; i--) { @@ -638,18 +638,18 @@ public class VariableMarker implements SyntaxComponent, CaretListener, PropertyC } } } - + codeCompletionList.setSelectedIndex(-1); - + codeCompletionListModel.clear(); - + for (Variable s : suggestions) { codeCompletionListModel.addElement(new VariableListItem(s)); - } - + } + if (!codeCompletionPopup.isVisible() && !suggestions.isEmpty()) { Rectangle2D caretCoords = View.textComponentModelToView(pane, pane.getCaretPosition()); - codeCompletionPopup.show(pane, (int) caretCoords.getX(), (int) (caretCoords.getY() + caretCoords.getHeight())); + codeCompletionPopup.show(pane, (int) caretCoords.getX(), (int) (caretCoords.getY() + caretCoords.getHeight())); } codeCompletionPopup.setPopupSize(codeCompletionList.getPreferredSize().width + 32, 200); codeCompletionList.setSize(codeCompletionList.getPreferredSize().width, 200); @@ -1084,21 +1084,21 @@ public class VariableMarker implements SyntaxComponent, CaretListener, PropertyC errorsTimer = tim; markTokenAt(pane.getCaretPosition()); } - + private void documentUpdated() { Timer pTimer = parseTimer; if (pTimer != null) { pTimer.cancel(); } - pTimer = new Timer(); - + pTimer = new Timer(); + pTimer.schedule(new TimerTask() { @Override public void run() { reParse(); - } + } }, 100); - parseTimer = pTimer; + parseTimer = pTimer; } @Override @@ -1281,6 +1281,7 @@ public class VariableMarker implements SyntaxComponent, CaretListener, PropertyC } private class VariableListItem { + private Variable variable; public VariableListItem(Variable variable) { @@ -1297,12 +1298,12 @@ public class VariableMarker implements SyntaxComponent, CaretListener, PropertyC sb.append(variable.name.getLast().toString()); if (variable.callType != null) { sb.append("() : "); - sb.append(variable.callType.getLast().toString()); + sb.append(variable.callType.getLast().toString()); } else if (variable.type != null) { sb.append(" : "); sb.append(variable.type.getLast().toString()); } return sb.toString(); - } + } } }