mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Javafx: In completion for fx:constant attribute offer constants from superclass (IDEA-153813)
This commit is contained in:
+5
@@ -252,6 +252,11 @@ public class JavaFxCompletionTest extends LightFixtureCompletionTestCase {
|
||||
assertSameElements(myFixture.getLookupElementStrings(),"pane", "node", "box", "model", "text", "target");
|
||||
}
|
||||
|
||||
public void testInheritedConstant() throws Exception {
|
||||
configureAndComplete("InheritedConstantData.java", "InheritedConstantSuperData.java");
|
||||
assertSameElements(myFixture.getLookupElementStrings(), "MY_TEXT", "SUPER_TEXT");
|
||||
}
|
||||
|
||||
private void configureAndComplete(final String... extraFiles) {
|
||||
final String fxmlFileName = getTestName(true) + ".fxml";
|
||||
if (extraFiles.length != 0) {
|
||||
|
||||
+26
-1
@@ -20,10 +20,12 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.xml.XmlAttribute;
|
||||
import com.intellij.psi.xml.XmlAttributeValue;
|
||||
import com.intellij.psi.xml.XmlElement;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.javaFX.fxml.FxmlConstants;
|
||||
import org.jetbrains.plugins.javaFX.fxml.JavaFxPsiUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -52,7 +54,30 @@ public class JavaFxBuiltInAttributeDescriptor extends JavaFxPropertyAttributeDes
|
||||
|
||||
@Override
|
||||
public boolean isEnumerated() {
|
||||
return getName().equals(FxmlConstants.FX_CONSTANT);
|
||||
return getPsiClass() != null && getName().equals(FxmlConstants.FX_CONSTANT);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String[] getEnumeratedValues() {
|
||||
final PsiClass psiClass = getPsiClass();
|
||||
if (psiClass != null) {
|
||||
if (getName().equals(FxmlConstants.FX_CONSTANT)) {
|
||||
final List<String> constants = new ArrayList<String>();
|
||||
for (PsiClass aClass = psiClass; aClass != null; aClass = aClass.getSuperClass()) {
|
||||
final String qualifiedName = aClass.getQualifiedName();
|
||||
if (CommonClassNames.JAVA_LANG_OBJECT.equals(qualifiedName)) break;
|
||||
final PsiField[] fields = aClass.getFields();
|
||||
for (PsiField field : fields) {
|
||||
if (isConstant(field)) {
|
||||
constants.add(field.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
return ArrayUtil.toStringArray(constants);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
public class InheritedConstantData extends InheritedConstantSuperData {
|
||||
public static final String MY_TEXT = "MyButton";
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
public class InheritedConstantSuperData {
|
||||
public static final String SUPER_TEXT = "SuperButton";
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
<?import InheritedConstantData?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<?import javafx.scene.layout.VBox?>
|
||||
<VBox xmlns:fx="http://javafx.com/fxml">
|
||||
<Button>
|
||||
<InheritedConstantData fx:constant="<caret>"/>
|
||||
</Button>
|
||||
</VBox>
|
||||
Reference in New Issue
Block a user