diff --git a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXOptimizeImportsTest.java b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXOptimizeImportsTest.java
index 096f60913508..9db7f2f3e319 100644
--- a/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXOptimizeImportsTest.java
+++ b/plugins/javaFX/javaFX-CE/testSrc/org/jetbrains/plugins/javaFX/fxml/JavaFXOptimizeImportsTest.java
@@ -16,18 +16,10 @@
package org.jetbrains.plugins.javaFX.fxml;
import com.intellij.codeInsight.actions.OptimizeImportsProcessor;
-import com.intellij.codeInsight.daemon.DaemonAnalyzerTestCase;
import com.intellij.openapi.application.PluginPathManager;
-import com.intellij.testFramework.PsiTestUtil;
import org.jetbrains.annotations.NotNull;
-public class JavaFXOptimizeImportsTest extends DaemonAnalyzerTestCase {
- @Override
- protected void setUpModule() {
- super.setUpModule();
- PsiTestUtil.addLibrary(getModule(), "javafx", PluginPathManager.getPluginHomePath("javaFX") + "/testData", "jfxrt.jar");
- }
-
+public class JavaFXOptimizeImportsTest extends AbstractJavaFXTestCase {
public void testCollapseOnDemand() throws Exception {
doTest();
}
@@ -40,10 +32,22 @@ public class JavaFXOptimizeImportsTest extends DaemonAnalyzerTestCase {
doTest();
}
+ public void testStaticPropertiesAttrAndCustomComponents() throws Exception {
+ myFixture.addClass("import javafx.scene.layout.GridPane;\n" +
+ "public class MyGridPane extends GridPane {}\n");
+ doTest();
+ }
+
+ public void testStaticPropertiesTagAndCustomComponents() throws Exception {
+ myFixture.addClass("import javafx.scene.layout.GridPane;\n" +
+ "public class MyGridPane extends GridPane {}\n");
+ doTest();
+ }
+
private void doTest() throws Exception {
- configureByFile(getTestName(true) + ".fxml");
- new OptimizeImportsProcessor(getProject(), getFile()).run();
- checkResultByFile(getTestName(true) + "_after.fxml");
+ myFixture.configureByFile(getTestName(true) + ".fxml");
+ new OptimizeImportsProcessor(getProject(), myFixture.getFile()).run();
+ myFixture.checkResultByFile(getTestName(true) + "_after.fxml");
}
@NotNull
diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/JavaFxImportsOptimizer.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/JavaFxImportsOptimizer.java
index 14bcc14dcda5..a88c7762e811 100644
--- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/JavaFxImportsOptimizer.java
+++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/codeInsight/JavaFxImportsOptimizer.java
@@ -32,10 +32,13 @@ import com.intellij.psi.impl.source.codeStyle.ImportHelper;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.psi.xml.*;
import com.intellij.util.containers.HashSet;
+import com.intellij.xml.XmlAttributeDescriptor;
import com.intellij.xml.XmlElementDescriptor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.plugins.javaFX.fxml.JavaFxFileTypeFactory;
import org.jetbrains.plugins.javaFX.fxml.descriptors.JavaFxClassBackedElementDescriptor;
+import org.jetbrains.plugins.javaFX.fxml.descriptors.JavaFxPropertyElementDescriptor;
+import org.jetbrains.plugins.javaFX.fxml.descriptors.JavaFxStaticPropertyAttributeDescriptor;
import java.util.*;
@@ -123,21 +126,35 @@ public class JavaFxImportsOptimizer implements ImportOptimizer {
public void visitXmlProcessingInstruction(XmlProcessingInstruction processingInstruction) {}
@Override
- public void visitXmlAttribute(XmlAttribute attribute) {}
+ public void visitXmlAttribute(XmlAttribute attribute) {
+ final XmlAttributeDescriptor descriptor = attribute.getDescriptor();
+ if (descriptor instanceof JavaFxStaticPropertyAttributeDescriptor) {
+ final PsiElement declaration = descriptor.getDeclaration();
+ if (declaration instanceof PsiMember) {
+ appendClassName(((PsiMember)declaration).getContainingClass());
+ }
+ }
+ }
@Override
public void visitXmlTag(XmlTag tag) {
super.visitXmlTag(tag);
final XmlElementDescriptor descriptor = tag.getDescriptor();
if (descriptor instanceof JavaFxClassBackedElementDescriptor) {
+ appendClassName(descriptor.getDeclaration());
+ } else if (descriptor instanceof JavaFxPropertyElementDescriptor && ((JavaFxPropertyElementDescriptor)descriptor).isStatic()) {
final PsiElement declaration = descriptor.getDeclaration();
- if (declaration instanceof PsiClass) {
- names.add(Pair.create(((PsiClass)declaration).getQualifiedName(), false));
+ if (declaration instanceof PsiMember) {
+ appendClassName(((PsiMember)declaration).getContainingClass());
}
}
}
-
+ private void appendClassName(PsiElement declaration) {
+ if (declaration instanceof PsiClass) {
+ names.add(Pair.create(((PsiClass)declaration).getQualifiedName(), false));
+ }
+ }
});
}
}
diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyElementDescriptor.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyElementDescriptor.java
index 0762f6aeef02..150a8a2db80a 100644
--- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyElementDescriptor.java
+++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/fxml/descriptors/JavaFxPropertyElementDescriptor.java
@@ -41,6 +41,10 @@ public class JavaFxPropertyElementDescriptor implements XmlElementDescriptor {
myStatic = isStatic;
}
+ public boolean isStatic() {
+ return myStatic;
+ }
+
@Override
public String getQualifiedName() {
return getName();
diff --git a/plugins/javaFX/testData/optimizeImports/staticPropertiesAttrAndCustomComponents.fxml b/plugins/javaFX/testData/optimizeImports/staticPropertiesAttrAndCustomComponents.fxml
new file mode 100644
index 000000000000..68fdd3467344
--- /dev/null
+++ b/plugins/javaFX/testData/optimizeImports/staticPropertiesAttrAndCustomComponents.fxml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/javaFX/testData/optimizeImports/staticPropertiesAttrAndCustomComponents_after.fxml b/plugins/javaFX/testData/optimizeImports/staticPropertiesAttrAndCustomComponents_after.fxml
new file mode 100644
index 000000000000..68fdd3467344
--- /dev/null
+++ b/plugins/javaFX/testData/optimizeImports/staticPropertiesAttrAndCustomComponents_after.fxml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/plugins/javaFX/testData/optimizeImports/staticPropertiesTagAndCustomComponents.fxml b/plugins/javaFX/testData/optimizeImports/staticPropertiesTagAndCustomComponents.fxml
new file mode 100644
index 000000000000..4e26323a0b83
--- /dev/null
+++ b/plugins/javaFX/testData/optimizeImports/staticPropertiesTagAndCustomComponents.fxml
@@ -0,0 +1,5 @@
+
+
+
+ 1
+
\ No newline at end of file
diff --git a/plugins/javaFX/testData/optimizeImports/staticPropertiesTagAndCustomComponents_after.fxml b/plugins/javaFX/testData/optimizeImports/staticPropertiesTagAndCustomComponents_after.fxml
new file mode 100644
index 000000000000..4e26323a0b83
--- /dev/null
+++ b/plugins/javaFX/testData/optimizeImports/staticPropertiesTagAndCustomComponents_after.fxml
@@ -0,0 +1,5 @@
+
+
+
+ 1
+
\ No newline at end of file