mirror of
https://github.com/processing/processing4.git
synced 2026-02-26 08:44:39 +01:00
support for few more types and also completion for array access
This commit is contained in:
@@ -56,6 +56,8 @@ import org.eclipse.jdt.core.JavaCore;
|
||||
import org.eclipse.jdt.core.dom.AST;
|
||||
import org.eclipse.jdt.core.dom.ASTNode;
|
||||
import org.eclipse.jdt.core.dom.ASTParser;
|
||||
import org.eclipse.jdt.core.dom.ArrayAccess;
|
||||
import org.eclipse.jdt.core.dom.ArrayType;
|
||||
import org.eclipse.jdt.core.dom.Block;
|
||||
import org.eclipse.jdt.core.dom.CompilationUnit;
|
||||
import org.eclipse.jdt.core.dom.Expression;
|
||||
@@ -66,6 +68,7 @@ import org.eclipse.jdt.core.dom.MethodDeclaration;
|
||||
import org.eclipse.jdt.core.dom.MethodInvocation;
|
||||
import org.eclipse.jdt.core.dom.Name;
|
||||
import org.eclipse.jdt.core.dom.NodeFinder;
|
||||
import org.eclipse.jdt.core.dom.ParameterizedType;
|
||||
import org.eclipse.jdt.core.dom.PrimitiveType;
|
||||
import org.eclipse.jdt.core.dom.QualifiedName;
|
||||
import org.eclipse.jdt.core.dom.SimpleName;
|
||||
@@ -247,9 +250,9 @@ public class ASTGenerator {
|
||||
return;
|
||||
jtree.setModel(new DefaultTreeModel(codeTree));
|
||||
((DefaultTreeModel) jtree.getModel()).reload();
|
||||
// if (!frame2.isVisible()) {
|
||||
// frame2.setVisible(true);
|
||||
// }
|
||||
if (!frame2.isVisible()) {
|
||||
frame2.setVisible(true);
|
||||
}
|
||||
// if (!frameAutoComp.isVisible()) {
|
||||
//
|
||||
// frameAutoComp.setVisible(true);
|
||||
@@ -676,6 +679,9 @@ public class ASTGenerator {
|
||||
}
|
||||
|
||||
}
|
||||
case ASTNode.ARRAY_ACCESS:
|
||||
ArrayAccess arac = (ArrayAccess)astNode;
|
||||
return resolveExpression3rdParty(nearestNode, arac.getArray(), noCompare);
|
||||
default:
|
||||
System.out.println("Unaccounted type " + getNodeAsString(astNode));
|
||||
break;
|
||||
@@ -700,6 +706,8 @@ public class ASTGenerator {
|
||||
return ((QualifiedName) expression).getName();
|
||||
}else if (expression instanceof MethodInvocation) {
|
||||
return ((MethodInvocation) expression).getName();
|
||||
}else if(expression instanceof ArrayAccess){
|
||||
return ((ArrayAccess)expression).getArray();
|
||||
}
|
||||
System.out.println(" getChildExpression returning NULL for "
|
||||
+ getNodeAsString(expression));
|
||||
@@ -716,6 +724,8 @@ public class ASTGenerator {
|
||||
return ((QualifiedName) expression).getQualifier();
|
||||
} else if (expression instanceof MethodInvocation) {
|
||||
return ((MethodInvocation) expression).getExpression();
|
||||
}else if(expression instanceof ArrayAccess){
|
||||
return ((ArrayAccess)expression).getArray();
|
||||
}
|
||||
System.out.println("getParentExpression returning NULL for "
|
||||
+ getNodeAsString(expression));
|
||||
@@ -2652,11 +2662,31 @@ public class ASTGenerator {
|
||||
* @return
|
||||
*/
|
||||
public static SimpleType extracTypeInfo(ASTNode node) {
|
||||
if (node == null)
|
||||
if (node == null) {
|
||||
return null;
|
||||
Type t = extracTypeInfo2(node);
|
||||
if (t instanceof PrimitiveType)
|
||||
return null;
|
||||
}
|
||||
Type t = extracTypeInfo2(node);
|
||||
if (t instanceof PrimitiveType) {
|
||||
return null;
|
||||
} else if (t instanceof ArrayType) {
|
||||
ArrayType at = (ArrayType) t;
|
||||
System.out.println(at.getComponentType() + " <-comp type, ele type-> "
|
||||
+ at.getElementType() + ", "
|
||||
+ at.getElementType().getClass().getName());
|
||||
if (at.getElementType() instanceof PrimitiveType) {
|
||||
return null;
|
||||
} else if (at.getElementType() instanceof SimpleType) {
|
||||
return (SimpleType) at.getElementType();
|
||||
} else
|
||||
return null;
|
||||
} else if (t instanceof ParameterizedType) {
|
||||
ParameterizedType pmt = (ParameterizedType) t;
|
||||
System.out.println(pmt.getType() + ", " + pmt.getType().getClass());
|
||||
if (pmt.getType() instanceof SimpleType) {
|
||||
return (SimpleType) pmt.getType();
|
||||
} else
|
||||
return null;
|
||||
}
|
||||
return (SimpleType) t;
|
||||
}
|
||||
|
||||
|
||||
@@ -251,7 +251,7 @@ public class TextArea extends JEditTextArea {
|
||||
private String fetchPhrase(KeyEvent evt) {
|
||||
char keyChar = evt.getKeyChar();
|
||||
if (keyChar == KeyEvent.VK_ENTER) {
|
||||
System.out.println("Enter consumed.");
|
||||
//System.out.println("Enter keypress.");
|
||||
return null;
|
||||
}
|
||||
// if (keyChar == KeyEvent.VK_BACK_SPACE || keyChar == KeyEvent.VK_DELETE)
|
||||
@@ -306,7 +306,7 @@ public class TextArea extends JEditTextArea {
|
||||
if (x1 >= 0) {
|
||||
// if (s.charAt(x1) != ';' && s.charAt(x1) != ',' && s.charAt(x1) != '(')
|
||||
if (Character.isLetterOrDigit(s.charAt(x1)) || s.charAt(x1) == '_'
|
||||
|| s.charAt(x1) == '.' || s.charAt(x1) == ')') {
|
||||
|| s.charAt(x1) == '.' || s.charAt(x1) == ')' || s.charAt(x1) == ']') {
|
||||
|
||||
if (s.charAt(x1) == ')') {
|
||||
word = s.charAt(x1--) + word;
|
||||
@@ -319,7 +319,20 @@ public class TextArea extends JEditTextArea {
|
||||
closeB++;
|
||||
x1--;
|
||||
}
|
||||
} else {
|
||||
}
|
||||
else if (s.charAt(x1) == ']') {
|
||||
word = s.charAt(x1--) + word;
|
||||
closeB++;
|
||||
while (x1 >= 0 && closeB > 0) {
|
||||
word = s.charAt(x1) + word;
|
||||
if (s.charAt(x1) == '[')
|
||||
closeB--;
|
||||
if (s.charAt(x1) == ']')
|
||||
closeB++;
|
||||
x1--;
|
||||
}
|
||||
}
|
||||
else {
|
||||
word = s.charAt(x1--) + word;
|
||||
}
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user