mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-13 21:55:01 +07:00
javafx optimize imports: do not skip static properties
This commit is contained in:
+16
-12
@@ -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
|
||||
|
||||
+21
-4
@@ -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));
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -41,6 +41,10 @@ public class JavaFxPropertyElementDescriptor implements XmlElementDescriptor {
|
||||
myStatic = isStatic;
|
||||
}
|
||||
|
||||
public boolean isStatic() {
|
||||
return myStatic;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getQualifiedName() {
|
||||
return getName();
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.layout.GridPane?>
|
||||
<?import MyGridPane?>
|
||||
<MyGridPane xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
|
||||
<Button GridPane.columnIndex="0"/>
|
||||
</MyGridPane>
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.layout.GridPane?>
|
||||
<?import MyGridPane?>
|
||||
<MyGridPane xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
|
||||
<Button GridPane.columnIndex="0"/>
|
||||
</MyGridPane>
|
||||
@@ -0,0 +1,5 @@
|
||||
<?import javafx.scene.layout.GridPane?>
|
||||
<?import MyGridPane?>
|
||||
<MyGridPane xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
|
||||
<GridPane.columnIndex>1</GridPane.columnIndex>
|
||||
</MyGridPane>
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
<?import javafx.scene.layout.GridPane?>
|
||||
<?import MyGridPane?>
|
||||
<MyGridPane xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">
|
||||
<GridPane.columnIndex>1</GridPane.columnIndex>
|
||||
</MyGridPane>
|
||||
Reference in New Issue
Block a user