@Override public void invoke(@NotNull Project project, Editor editor, @NotNull PsiElement element) throws IncorrectOperationException { final PsiNewExpression expression = PsiTreeUtil.getParentOfType(element, PsiNewExpression.class, false); if (expression == null) { return; } final PsiExpressionList arguments = expression.getArgumentList(); if (arguments == null) { return; } final PsiMethod constructor = expression.resolveConstructor(); if (constructor == null) { return; } final PsiExpressionList newArguments = createNewArguments( JavaPsiFacade.getElementFactory(project), constructor.getParameterList().getParameters(), arguments.getExpressions()); if (newArguments == null) { return; } arguments.replace(newArguments); }
@Override public void visitNewExpression(PsiNewExpression expression) { super.visitNewExpression(expression); final PsiJavaCodeReferenceElement classReference = expression.getClassReference(); if (classReference == null) { return; } final String name = classReference.getReferenceName(); if (!"BigDecimal".equals(name)) { return; } final PsiMethod constructor = expression.resolveConstructor(); if (constructor == null) { return; } final PsiParameterList parameterList = constructor.getParameterList(); final int length = parameterList.getParametersCount(); if (length != 1 && length != 2) { return; } final PsiParameter[] parameters = parameterList.getParameters(); final PsiParameter firstParameter = parameters[0]; final PsiType type = firstParameter.getType(); if (type != PsiType.DOUBLE) { return; } registerNewExpressionError(expression); }
@Override public void visitNewExpression(PsiNewExpression expression) { if (FileTypeUtils.isInServerPageFile(expression)) { return; } super.visitNewExpression(expression); final PsiClass containingClass = getContainingContextClass(expression); if (containingClass == null) { return; } final PsiMethod constructor = expression.resolveConstructor(); if (constructor == null) { final PsiJavaCodeReferenceElement classReference = expression.getClassOrAnonymousClassReference(); if (classReference == null) { return; } final PsiElement target = classReference.resolve(); if (!(target instanceof PsiClass)) { return; } final PsiClass aClass = (PsiClass) target; if (!aClass.hasModifierProperty(PsiModifier.PRIVATE)) { return; } if (aClass.equals(containingClass)) { return; } registerNewExpressionError(expression, aClass); } else { if (!constructor.hasModifierProperty(PsiModifier.PRIVATE)) { return; } final PsiClass aClass = constructor.getContainingClass(); if (containingClass.equals(aClass)) { return; } registerNewExpressionError(expression, aClass); } }
@Override public boolean isAvailable(@NotNull Project project, Editor editor, @NotNull PsiElement element) { if (!super.isAvailable(project, editor, element)) { return false; } final PsiNewExpression expression = PsiTreeUtil.getParentOfType(element, PsiNewExpression.class, false); if (expression == null) { return false; } final PsiExpressionList arguments = expression.getArgumentList(); if (arguments == null) { return false; } final PsiMethod constructor = expression.resolveConstructor(); if (constructor == null) { return false; } final PsiExpressionList newArguments = createNewArguments( JavaPsiFacade.getElementFactory(project), constructor.getParameterList().getParameters(), arguments.getExpressions()); if (newArguments == null) { return false; } setText( CodeInsightBundle.message( "intention.convert.color.representation.text", newArguments.getText())); return true; }
private static void makeConstructorPackageLocal(Project project, PsiElement element) { final PsiNewExpression newExpression = PsiTreeUtil.getParentOfType(element, PsiNewExpression.class); if (newExpression == null) { return; } final PsiMethod constructor = newExpression.resolveConstructor(); if (constructor != null) { final PsiModifierList modifierList = constructor.getModifierList(); modifierList.setModifierProperty(PsiModifier.PRIVATE, false); return; } final PsiJavaCodeReferenceElement referenceElement = (PsiJavaCodeReferenceElement) element; final PsiElement target = referenceElement.resolve(); if (!(target instanceof PsiClass)) { return; } final PsiClass aClass = (PsiClass) target; final PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(project); final PsiMethod newConstructor = elementFactory.createConstructor(); final PsiModifierList modifierList = newConstructor.getModifierList(); modifierList.setModifierProperty(PsiModifier.PACKAGE_LOCAL, true); aClass.add(newConstructor); }