Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 97517 Details for
Bug 209467
[quick assist] Qualify simple type reference
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
second try
qualify.txt (text/plain), 7.62 KB, created by
utilisateur_768
on 2008-04-24 15:43:04 EDT
(
hide
)
Description:
second try
Filename:
MIME Type:
Creator:
utilisateur_768
Created:
2008-04-24 15:43:04 EDT
Size:
7.62 KB
patch
obsolete
>Index: ui/org/eclipse/jdt/internal/ui/text/correction/AdvancedQuickAssistProcessor.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/AdvancedQuickAssistProcessor.java,v >retrieving revision 1.53 >diff -u -r1.53 AdvancedQuickAssistProcessor.java >--- ui/org/eclipse/jdt/internal/ui/text/correction/AdvancedQuickAssistProcessor.java 28 Nov 2007 13:25:38 -0000 1.53 >+++ ui/org/eclipse/jdt/internal/ui/text/correction/AdvancedQuickAssistProcessor.java 24 Apr 2008 19:37:32 -0000 >@@ -27,6 +27,7 @@ > import org.eclipse.jdt.core.ICompilationUnit; > import org.eclipse.jdt.core.dom.AST; > import org.eclipse.jdt.core.dom.ASTNode; >+import org.eclipse.jdt.core.dom.AbstractTypeDeclaration; > import org.eclipse.jdt.core.dom.Assignment; > import org.eclipse.jdt.core.dom.Block; > import org.eclipse.jdt.core.dom.BooleanLiteral; >@@ -55,8 +56,10 @@ > import org.eclipse.jdt.core.dom.PrefixExpression; > import org.eclipse.jdt.core.dom.PrimitiveType; > import org.eclipse.jdt.core.dom.QualifiedName; >+import org.eclipse.jdt.core.dom.QualifiedType; > import org.eclipse.jdt.core.dom.ReturnStatement; > import org.eclipse.jdt.core.dom.SimpleName; >+import org.eclipse.jdt.core.dom.SimpleType; > import org.eclipse.jdt.core.dom.SingleVariableDeclaration; > import org.eclipse.jdt.core.dom.Statement; > import org.eclipse.jdt.core.dom.StringLiteral; >@@ -123,7 +126,8 @@ > || getReplaceIfElseWithConditionalProposals(context, coveringNode, null) || getReplaceConditionalWithIfElseProposals(context, coveringNode, null) > || getInverseLocalVariableProposals(context, coveringNode, null) || getPushNegationDownProposals(context, coveringNode, null) > || getPullNegationUpProposals(context, coveredNodes, null) || getJoinIfListInIfElseIfProposals(context, coveringNode, coveredNodes, null) >- || getConvertSwitchToIfProposals(context, coveringNode, null) || GetterSetterCorrectionSubProcessor.addGetterSetterProposal(context, coveringNode, null, null); >+ || getConvertSwitchToIfProposals(context, coveringNode, null) || GetterSetterCorrectionSubProcessor.addGetterSetterProposal(context, coveringNode, null, null) >+ || getQualifyTypenameProposals(context, coveringNode, null); > } > return false; > } >@@ -161,6 +165,7 @@ > getJoinIfListInIfElseIfProposals(context, coveringNode, coveredNodes, resultingCollections); > getConvertSwitchToIfProposals(context, coveringNode, resultingCollections); > GetterSetterCorrectionSubProcessor.addGetterSetterProposal(context, coveringNode, locations, resultingCollections); >+ getQualifyTypenameProposals(context, coveringNode, resultingCollections); > } > > return (IJavaCompletionProposal[]) resultingCollections.toArray(new IJavaCompletionProposal[resultingCollections.size()]); >@@ -785,6 +790,68 @@ > return parenthesizedExpression; > } > >+ private static boolean getQualifyTypenameProposals(IInvocationContext context, ASTNode node, Collection resultingCollections) { >+ if (!(node instanceof SimpleName)) >+ return false; >+ SimpleName simpleName = (SimpleName) node; >+ ASTNode parent= simpleName.getParent(); >+ // part of a qualified name >+ if (parent instanceof Name) >+ return false; >+ // part of a qualified type >+ if (parent instanceof SimpleType >+ && ((SimpleType)parent).getParent() instanceof QualifiedType >+ && ((QualifiedType)((SimpleType)parent).getParent()).getName() == parent >+ || parent instanceof QualifiedType >+ && ((QualifiedType)parent).getName() == simpleName) >+ return false; >+ if (parent instanceof AbstractTypeDeclaration >+ && ((AbstractTypeDeclaration)parent).getName() == simpleName) >+ return false; >+ IBinding binding= simpleName.resolveBinding(); >+ if (!(binding instanceof ITypeBinding)) >+ return false; >+ ITypeBinding typeBinding= (ITypeBinding) binding; >+ if (typeBinding.isArray()) >+ typeBinding= typeBinding.getElementType(); >+ if (typeBinding == null) >+ return false; >+ // no local type !!! >+ if (typeBinding.isPrimitive() || typeBinding.isNullType() >+ || typeBinding.isAnonymous() || typeBinding.isLocal()) >+ return false; >+ if (typeBinding.isGenericType() || typeBinding.isTypeVariable()) >+ return false; >+ // we only want to add "left" information >+ String pkg= typeBinding.getPackage().getName(); >+ if (pkg.length() == 0) >+ return false; >+ if (resultingCollections == null) { >+ return true; >+ } >+ StringBuffer buf = new StringBuffer(); >+ if (typeBinding.getDeclaringClass() != null) >+ buf.append(typeBinding.getDeclaringClass().getQualifiedName()); >+ else >+ buf.append(pkg); >+ buf.append('.'); >+ if (typeBinding.isParameterizedType()) >+ buf.append(typeBinding.getErasure().getName()); >+ else >+ buf.append(typeBinding.getName()); >+ String qn= buf.toString(); >+ AST ast = simpleName.getAST(); >+ ASTRewrite rewrite= ASTRewrite.create(ast); >+ ASTNode newQName= rewrite.createStringPlaceholder(qn, ASTNode.QUALIFIED_NAME); >+ rewrite.replace(simpleName, newQName, null); >+ // add correction proposal >+ String label= CorrectionMessages.AdvancedQuickAssistProcessor_qualifyTypename_description; >+ Image image= JavaPluginImages.get(JavaPluginImages.IMG_CORRECTION_CHANGE); >+ ASTRewriteCorrectionProposal proposal= new ASTRewriteCorrectionProposal(label, context.getCompilationUnit(), rewrite, 1, image); >+ resultingCollections.add(proposal); >+ return true; >+ } >+ > private static boolean getSplitAndConditionProposals(IInvocationContext context, ASTNode node, Collection resultingCollections) { > Operator andOperator= InfixExpression.Operator.CONDITIONAL_AND; > // check that user invokes quick assist on infix expression >Index: ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.java,v >retrieving revision 1.72 >diff -u -r1.72 CorrectionMessages.java >--- ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.java 18 Mar 2008 00:45:04 -0000 1.72 >+++ ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.java 24 Apr 2008 19:37:32 -0000 >@@ -305,6 +305,7 @@ > public static String AdvancedQuickAssistProcessor_joinWithOr_description; > public static String AdvancedQuickAssistProcessor_splitOrCondition_description; > public static String AdvancedQuickAssistProcessor_exchangeOperands_description; >+ public static String AdvancedQuickAssistProcessor_qualifyTypename_description; > public static String AddTypeParameterProposal_method_label; > public static String AddTypeParameterProposal_type_label; > >Index: ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.properties >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.properties,v >retrieving revision 1.247 >diff -u -r1.247 CorrectionMessages.properties >--- ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.properties 18 Mar 2008 00:45:04 -0000 1.247 >+++ ui/org/eclipse/jdt/internal/ui/text/correction/CorrectionMessages.properties 24 Apr 2008 19:37:33 -0000 >@@ -375,6 +375,8 @@ > AdvancedQuickAssistProcessor_joinWithOr_description=Join selected 'if' statements with || > AdvancedQuickAssistProcessor_splitOrCondition_description=Split || condition > AdvancedQuickAssistProcessor_exchangeOperands_description=Exchange left and right operands for infix expression >+AdvancedQuickAssistProcessor_qualifyTypename_description=Qualify type name >+ > > AddTypeParameterProposal_method_label=Add type parameter ''{0}'' to ''{1}'' > AddTypeParameterProposal_type_label=Add type parameter ''{0}'' to ''{1}''
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 209467
:
95736
| 97517