From 7b026b7a9d1f7d834e8e1be4782a6d6e648f40e7 Mon Sep 17 00:00:00 2001 From: Maxim Medvedev Date: Mon, 28 Dec 2009 16:32:18 +0300 Subject: [PATCH] =?utf8?q?IDEADEV-42131:=20dynamic=20properties=20for=20gr?= =?utf8?q?oovy=20scripts=20broken=20in=209=E2=80=8B.=E2=80=8B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../intentions/dynamic/elements/DItemElement.java | 16 +++++--- .../dynamic/elements/DMethodElement.java | 15 ++------ .../intentions/dynamic/ui/DynamicDialog.form | 10 ++--- .../intentions/dynamic/ui/DynamicDialog.java | 44 +++++++++++----------- .../GroovyInspectionBundle.properties | 4 +- 5 files changed, 41 insertions(+), 48 deletions(-) diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/elements/DItemElement.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/elements/DItemElement.java index 7693d886ad..98c98b5315 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/elements/DItemElement.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/elements/DItemElement.java @@ -17,8 +17,6 @@ package org.jetbrains.plugins.groovy.annotator.intentions.dynamic.elements; import com.intellij.psi.PsiManager; import com.intellij.psi.PsiNamedElement; -import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.elements.DNamedElement; -import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.elements.DTypedElement; import org.jetbrains.annotations.NotNull; /** @@ -30,7 +28,7 @@ import org.jetbrains.annotations.NotNull; * Base class for Dynamic property and method */ -public abstract class DItemElement implements DNamedElement, DTypedElement { +public abstract class DItemElement implements DNamedElement, DTypedElement, Comparable { public String myType = null; public Boolean myStatic = false; public String myName = null; @@ -56,7 +54,7 @@ public abstract class DItemElement implements DNamedElement, DTypedElement { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; - DItemElement that = (DItemElement) o; + DItemElement that = (DItemElement)o; if (myName != null ? !myName.equals(that.myName) : that.myName != null) return false; if (myType != null ? !myType.equals(that.myType) : that.myType != null) return false; @@ -93,7 +91,7 @@ public abstract class DItemElement implements DNamedElement, DTypedElement { } public Boolean isStatic() { - return myStatic; + return myStatic; } public void setStatic(Boolean aStatic) { @@ -101,6 +99,14 @@ public abstract class DItemElement implements DNamedElement, DTypedElement { clearCache(); } + public int compareTo(Object o) { + if (!(o instanceof DItemElement)) return 0; + final DItemElement otherProperty = (DItemElement)o; + + return getName().compareTo(otherProperty.getName()) + getType().compareTo(otherProperty.getType()); + } + + @NotNull public abstract PsiNamedElement getPsi(PsiManager manager, String containingClassName); } \ No newline at end of file diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/elements/DMethodElement.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/elements/DMethodElement.java index 496b988fa3..ade4225f74 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/elements/DMethodElement.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/elements/DMethodElement.java @@ -15,18 +15,18 @@ */ package org.jetbrains.plugins.groovy.annotator.intentions.dynamic.elements; +import com.intellij.psi.PsiElement; import com.intellij.psi.PsiManager; import com.intellij.psi.PsiMethod; import com.intellij.psi.PsiModifier; -import com.intellij.psi.PsiElement; import com.intellij.util.IncorrectOperationException; +import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.groovy.annotator.intentions.QuickfixUtil; -import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.MyPair; import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.DynamicManager; +import org.jetbrains.plugins.groovy.annotator.intentions.dynamic.MyPair; import org.jetbrains.plugins.groovy.lang.psi.GroovyPsiElementFactory; import org.jetbrains.plugins.groovy.lang.psi.api.statements.typedef.members.GrMethod; import org.jetbrains.plugins.groovy.lang.psi.impl.synthetic.GrDynamicImplicitMethod; -import org.jetbrains.annotations.NotNull; import java.util.ArrayList; import java.util.List; @@ -35,7 +35,7 @@ import java.util.List; * User: Dmitry.Krasilschikov * Date: 12.02.2008 */ -public class DMethodElement extends DItemElement implements Comparable { +public class DMethodElement extends DItemElement { public List myPairs = new ArrayList(); private PsiMethod myImplicitMethod; @@ -83,11 +83,4 @@ public class DMethodElement extends DItemElement implements Comparable { }; return myImplicitMethod; } - - public int compareTo(Object o) { - if (!(o instanceof DMethodElement)) return 0; - final DMethodElement otherMethod = (DMethodElement)o; - - return getName().compareTo(otherMethod.getName()) + getType().compareTo(otherMethod.getType()); - } } \ No newline at end of file diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ui/DynamicDialog.form b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ui/DynamicDialog.form index f81480e578..d141f13c96 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ui/DynamicDialog.form +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ui/DynamicDialog.form @@ -36,7 +36,7 @@ - + @@ -49,15 +49,11 @@ + - + - - - - - diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ui/DynamicDialog.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ui/DynamicDialog.java index 0a0b028e44..7049f596e1 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ui/DynamicDialog.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/annotator/intentions/dynamic/ui/DynamicDialog.java @@ -56,6 +56,7 @@ import javax.swing.event.EventListenerList; import java.awt.*; import java.awt.event.*; import java.util.EventListener; +import java.util.List; /** * User: Dmitry.Krasilschikov @@ -126,7 +127,7 @@ public abstract class DynamicDialog extends DialogWrapper { } private void setUpStatusLabel() { - if (!isTypeChekerPanelEnable()) { + if (!isTypeCheckerPanelEnable()) { myTypeStatusPanel.setVisible(false); return; } @@ -139,12 +140,18 @@ public abstract class DynamicDialog extends DialogWrapper { } final PsiType type = typeElement.getType(); - setStatusTextAndIcon(IconLoader.getIcon("/compiler/information.png"), GroovyInspectionBundle.message("resolved.type.status", type.getPresentableText())); + if (type instanceof PsiClassType && ((PsiClassType)type).resolve() == null) { + setStatusTextAndIcon(IconLoader.getIcon("/compiler/warning.png"), + GroovyInspectionBundle.message("unresolved.type.status", type.getPresentableText())); + return; + } + setStatusTextAndIcon(null, ""); } private void setStatusTextAndIcon(final Icon icon, final String text) { myTypeStatusLabel.setIcon(icon); myTypeStatusLabel.setText(text); + pack(); } @@ -243,20 +250,13 @@ public abstract class DynamicDialog extends DialogWrapper { protected void updateOkStatus() { GrTypeElement typeElement = getEnteredTypeName(); - if (typeElement == null) { setOKActionEnabled(false); - } else { setOKActionEnabled(true); - - final PsiType type = typeElement.getType(); - if (type instanceof PsiClassType && ((PsiClassType) type).resolve() == null) { - setStatusTextAndIcon(IconLoader.getIcon("/compiler/warning.png"), GroovyInspectionBundle.message("unresolved.type.status", type.getPresentableText())); - } else { - setStatusTextAndIcon(IconLoader.getIcon("/compiler/information.png"), GroovyInspectionBundle.message("resolved.type.status", type.getPresentableText())); - } } + + setUpStatusLabel(); } @Nullable @@ -274,6 +274,7 @@ public abstract class DynamicDialog extends DialogWrapper { } } + @Nullable public Document getTypeEditorDocument() { final Object item = myTypeComboBox.getEditor().getItem(); @@ -281,7 +282,8 @@ public abstract class DynamicDialog extends DialogWrapper { } - public ContainingClassItem getEnteredContaningClass() { + @Nullable + public ContainingClassItem getEnteredContainingClass() { final Object item = myClassComboBox.getSelectedItem(); if (!(item instanceof ContainingClassItem)) return null; @@ -305,7 +307,7 @@ public abstract class DynamicDialog extends DialogWrapper { protected void doOKAction() { super.doOKAction(); - mySettings.setContainingClassName(getEnteredContaningClass().getContainingClass().getQualifiedName()); + mySettings.setContainingClassName(getEnteredContainingClass().getContainingClass().getQualifiedName()); mySettings.setStatic(myStaticCheckBox.isSelected()); GrTypeElement typeElement = getEnteredTypeName(); @@ -322,7 +324,7 @@ public abstract class DynamicDialog extends DialogWrapper { if (typeQualifiedName != null) { mySettings.setType(typeQualifiedName); } else { - mySettings.setType(type.getCanonicalText()); + mySettings.setType(type.getPresentableText()); } } @@ -336,7 +338,7 @@ public abstract class DynamicDialog extends DialogWrapper { final DItemElement itemElement; if (mySettings.isMethod()) { - final java.util.List myPairList = mySettings.getPairs(); + final List myPairList = mySettings.getPairs(); final String[] argumentsTypes = QuickfixUtil.getArgumentsTypes(myPairList); itemElement = myDynamicManager.findConcreteDynamicMethod(mySettings.getContainingClassName(), mySettings.getName(), argumentsTypes); } else { @@ -394,7 +396,7 @@ public abstract class DynamicDialog extends DialogWrapper { myDynamicManager.fireChange(); } - class ContainingClassItem { + static class ContainingClassItem { private final PsiClass myContainingClass; ContainingClassItem(PsiClass containingClass) { @@ -420,11 +422,7 @@ public abstract class DynamicDialog extends DialogWrapper { return myTypeComboBox; } - protected JPanel getPanel() { - return myPanel; - } - - protected boolean isTableVisible() { +protected boolean isTableVisible() { return false; } @@ -432,8 +430,8 @@ public abstract class DynamicDialog extends DialogWrapper { return myParametersTable; } - protected boolean isTypeChekerPanelEnable() { - return false; + protected static boolean isTypeCheckerPanelEnable() { + return true; } public Project getProject() { diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/GroovyInspectionBundle.properties b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/GroovyInspectionBundle.properties index 57f678fa7c..483d5cf26f 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/GroovyInspectionBundle.properties +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/codeInspection/GroovyInspectionBundle.properties @@ -43,8 +43,8 @@ no.return.short.name=MissingReturnStatement no.return.message=Not all execution paths return a value create.dynamic.property=Create dynamic property dynamic.property=Dynamic property -unresolved.type.status=Type ''{0}'' didn'''t resolve -resolved.type.status=Type ''{0}'' resolved +unresolved.type.status=Type ''{0}'' is not resolved +resolved.type.status=Type ''{0}'' is resolved no.type.specified=No type specified dynamic.element=Dynamic element -- 2.11.4.GIT