support for few more types and also completion for array access

This commit is contained in:
Manindra Moharana
2013-07-15 01:51:56 +05:30
parent e928a0f37c
commit 588303e7f0
3 changed files with 56 additions and 11 deletions

View File

@@ -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;
}

View File

@@ -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 {