mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-19 21:11:28 +07:00
Javafx: Take into account member visibility settings when creating event handler method for FXML. Tests added. (IDEA-151695)
This commit is contained in:
@@ -88,6 +88,26 @@ public class JavaFXQuickfixTest extends LightCodeInsightFixtureTestCase {
|
||||
doTestWithDefaultVisibility("Create field 'btn'", "CreateField", VisibilityUtil.ESCALATE_VISIBILITY, ".java");
|
||||
}
|
||||
|
||||
public void testCreateMethodPublicVisibility() throws Exception {
|
||||
doTestWithDefaultVisibility("Create method 'void onAction(ActionEvent)'", "CreateMethod", PsiModifier.PUBLIC, ".java");
|
||||
}
|
||||
|
||||
public void testCreateMethodProtectedVisibility() throws Exception {
|
||||
doTestWithDefaultVisibility("Create method 'void onAction(ActionEvent)'", "CreateMethod", PsiModifier.PROTECTED, ".java");
|
||||
}
|
||||
|
||||
public void testCreateMethodPrivateVisibility() throws Exception {
|
||||
doTestWithDefaultVisibility("Create method 'void onAction(ActionEvent)'", "CreateMethod", PsiModifier.PRIVATE, ".java");
|
||||
}
|
||||
|
||||
public void testCreateMethodPackageLocalVisibility() throws Exception {
|
||||
doTestWithDefaultVisibility("Create method 'void onAction(ActionEvent)'", "CreateMethod", PsiModifier.PACKAGE_LOCAL, ".java");
|
||||
}
|
||||
|
||||
public void testCreateMethodEscalateVisibility() throws Exception {
|
||||
doTestWithDefaultVisibility("Create method 'void onAction(ActionEvent)'", "CreateMethod", VisibilityUtil.ESCALATE_VISIBILITY, ".java");
|
||||
}
|
||||
|
||||
public void testCreateFieldEmptyName() throws Exception {
|
||||
String path = getTestName(true) + ".fxml";
|
||||
final IntentionAction intention =
|
||||
@@ -117,8 +137,7 @@ public class JavaFXQuickfixTest extends LightCodeInsightFixtureTestCase {
|
||||
private void doTestWithDefaultVisibility(final String actionName,
|
||||
final String inputName,
|
||||
final String defaultVisibility,
|
||||
final String extension)
|
||||
throws Exception {
|
||||
final String extension) throws Exception {
|
||||
CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(getProject());
|
||||
String savedVisibility = settings.VISIBILITY;
|
||||
try {
|
||||
|
||||
@@ -18,13 +18,16 @@ package org.jetbrains.plugins.javaFX.fxml.refs;
|
||||
import com.intellij.codeInsight.daemon.QuickFixActionRegistrar;
|
||||
import com.intellij.codeInsight.daemon.impl.quickfix.CreateMethodQuickFix;
|
||||
import com.intellij.codeInsight.quickfix.UnresolvedReferenceQuickFixProvider;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.intellij.psi.util.InheritanceUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.psi.xml.XmlAttribute;
|
||||
import com.intellij.psi.xml.XmlAttributeValue;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.plugins.javaFX.fxml.JavaFxCommonNames;
|
||||
@@ -115,7 +118,17 @@ public class JavaFxEventHandlerReference extends PsiReferenceBase<XmlAttributeVa
|
||||
canonicalText = eventType.getCanonicalText();
|
||||
}
|
||||
}
|
||||
return "public void " + element.getValue().substring(1) + "(" + canonicalText + " e)";
|
||||
final String modifiers = getModifiers(element.getProject());
|
||||
return modifiers + " void " + element.getValue().substring(1) + "(" + canonicalText + " e)";
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private static String getModifiers(@NotNull Project project) {
|
||||
String visibility = CodeStyleSettingsManager.getSettings(project).VISIBILITY;
|
||||
if (VisibilityUtil.ESCALATE_VISIBILITY.equals(visibility)) visibility = PsiModifier.PRIVATE;
|
||||
final boolean needAnnotation = !PsiModifier.PUBLIC.equals(visibility);
|
||||
final String modifier = !PsiModifier.PACKAGE_LOCAL.equals(visibility) ? visibility : "";
|
||||
return needAnnotation ? "@" + JavaFxCommonNames.JAVAFX_FXML_ANNOTATION + " " + modifier : modifier;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
1
plugins/javaFX/testData/quickfix/CreateMethod.java
Normal file
1
plugins/javaFX/testData/quickfix/CreateMethod.java
Normal file
@@ -0,0 +1 @@
|
||||
public class CreateMethod {}
|
||||
@@ -0,0 +1,9 @@
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
|
||||
public class CreateMethod {
|
||||
@FXML
|
||||
private void onAction(ActionEvent actionEvent) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
|
||||
public class CreateMethod {
|
||||
@FXML
|
||||
void onAction(ActionEvent actionEvent) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
|
||||
public class CreateMethod {
|
||||
@FXML
|
||||
private void onAction(ActionEvent actionEvent) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
import javafx.event.ActionEvent;
|
||||
import javafx.fxml.FXML;
|
||||
|
||||
public class CreateMethod {
|
||||
@FXML
|
||||
protected void onAction(ActionEvent actionEvent) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
import javafx.event.ActionEvent;
|
||||
|
||||
public class CreateMethod {
|
||||
public void onAction(ActionEvent actionEvent) {
|
||||
|
||||
}
|
||||
}
|
||||
5
plugins/javaFX/testData/quickfix/createMethod.fxml
Normal file
5
plugins/javaFX/testData/quickfix/createMethod.fxml
Normal file
@@ -0,0 +1,5 @@
|
||||
<?import javafx.scene.layout.GridPane?>
|
||||
<?import javafx.scene.control.Button?>
|
||||
<GridPane xmlns:fx="http://javafx.com/fxml" fx:controller="CreateMethod">
|
||||
<Button onAction="#onActi<caret>on"/>
|
||||
</GridPane>
|
||||
Reference in New Issue
Block a user