mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
EA-82721 - ISE: VisibilityUtil.getVisibilityString
This commit is contained in:
+2
-5
@@ -54,10 +54,7 @@ import com.intellij.ui.*;
|
||||
import com.intellij.ui.table.JBTable;
|
||||
import com.intellij.ui.table.TableView;
|
||||
import com.intellij.ui.treeStructure.Tree;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.TextFieldCompletionProvider;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.ui.DialogUtil;
|
||||
import com.intellij.util.ui.JBUI;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
@@ -672,7 +669,7 @@ public class JavaChangeSignatureDialog extends ChangeSignatureDialogBase<Paramet
|
||||
final PsiModifierList modifierList = method.getModifierList();
|
||||
String modifiers = modifierList.getText();
|
||||
final String oldModifier = VisibilityUtil.getVisibilityModifier(modifierList);
|
||||
final String newModifier = getVisibility();
|
||||
final String newModifier = ObjectUtils.notNull(getVisibility(), PsiModifier.PACKAGE_LOCAL);
|
||||
String newModifierStr = VisibilityUtil.getVisibilityString(newModifier);
|
||||
if (!Comparing.equal(newModifier, oldModifier)) {
|
||||
int index = modifiers.indexOf(oldModifier);
|
||||
|
||||
@@ -23,12 +23,14 @@ package com.intellij.refactoring.extractMethod;
|
||||
import com.intellij.psi.PsiModifier;
|
||||
import com.intellij.psi.PsiType;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public interface AbstractExtractDialog {
|
||||
|
||||
String getChosenMethodName();
|
||||
VariableData[] getChosenParameters();
|
||||
@PsiModifier.ModifierConstant
|
||||
@NotNull
|
||||
String getVisibility();
|
||||
boolean isMakeStatic();
|
||||
boolean isChainedConstructor();
|
||||
|
||||
+66
-77
@@ -39,6 +39,7 @@ import com.intellij.ui.NonFocusableCheckBox;
|
||||
import com.intellij.ui.SeparatorFactory;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.intellij.util.ui.DialogUtil;
|
||||
@@ -50,10 +51,9 @@ import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.Border;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import java.awt.*;
|
||||
import java.awt.event.*;
|
||||
import java.awt.event.FocusAdapter;
|
||||
import java.awt.event.FocusEvent;
|
||||
|
||||
|
||||
/**
|
||||
@@ -136,15 +136,18 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMakeStatic() {
|
||||
if (myStaticFlag) return true;
|
||||
return myCanBeStatic && myMakeStatic.isSelected();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChainedConstructor() {
|
||||
return myCbChainedConstructor != null && myCbChainedConstructor.isSelected();
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
protected Action[] createActions() {
|
||||
if (myHelpId != null) {
|
||||
@@ -154,14 +157,17 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getChosenMethodName() {
|
||||
return myNameField.getEnteredName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public VariableData[] getChosenParameters() {
|
||||
return myInputVariables;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JComponent getPreferredFocusedComponent() {
|
||||
return myNameField;
|
||||
}
|
||||
@@ -171,8 +177,9 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
return myHelpId;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doOKAction() {
|
||||
MultiMap<PsiElement, String> conflicts = new MultiMap<PsiElement, String>();
|
||||
MultiMap<PsiElement, String> conflicts = new MultiMap<>();
|
||||
checkMethodConflicts(conflicts);
|
||||
if (!conflicts.isEmpty()) {
|
||||
final ConflictsDialog conflictsDialog = new ConflictsDialog(myProject, conflicts);
|
||||
@@ -199,6 +206,7 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
super.doOKAction();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JComponent createNorthPanel() {
|
||||
final JPanel main = new JPanel(new BorderLayout());
|
||||
final JPanel namePanel = new JPanel(new BorderLayout(0, 2));
|
||||
@@ -208,12 +216,7 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
namePanel.add(myNameField, BorderLayout.SOUTH);
|
||||
nameLabel.setLabelFor(myNameField);
|
||||
|
||||
myNameField.addDataChangedListener(new NameSuggestionsField.DataChanged() {
|
||||
@Override
|
||||
public void dataChanged() {
|
||||
update();
|
||||
}
|
||||
});
|
||||
myNameField.addDataChangedListener(this::update);
|
||||
|
||||
myVisibilityPanel = createVisibilityPanel();
|
||||
myVisibilityPanel.registerUpDownActionsFor(myNameField);
|
||||
@@ -266,22 +269,19 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
returnTypePanel.add(label, BorderLayout.NORTH);
|
||||
returnTypePanel.add(component, BorderLayout.SOUTH);
|
||||
DialogUtil.registerMnemonic(label, component);
|
||||
((JComboBox)component).addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
final PsiType selectedType = mySelector.getSelectedType();
|
||||
if (myGenerateAnnotations != null) {
|
||||
final boolean enabled = PsiUtil.resolveClassInType(selectedType) != null;
|
||||
if (!enabled) {
|
||||
myGenerateAnnotations.setSelected(false);
|
||||
}
|
||||
myGenerateAnnotations.setEnabled(enabled);
|
||||
((JComboBox)component).addActionListener(e -> {
|
||||
final PsiType selectedType = mySelector.getSelectedType();
|
||||
if (myGenerateAnnotations != null) {
|
||||
final boolean enabled = PsiUtil.resolveClassInType(selectedType) != null;
|
||||
if (!enabled) {
|
||||
myGenerateAnnotations.setSelected(false);
|
||||
}
|
||||
resizeReturnCombo(component, selectedType);
|
||||
returnTypePanel.revalidate();
|
||||
returnTypePanel.repaint();
|
||||
updateSignature();
|
||||
myGenerateAnnotations.setEnabled(enabled);
|
||||
}
|
||||
resizeReturnCombo(component, selectedType);
|
||||
returnTypePanel.revalidate();
|
||||
returnTypePanel.repaint();
|
||||
updateSignature();
|
||||
});
|
||||
resizeReturnCombo(component, mySelector.getSelectedType());
|
||||
return returnTypePanel;
|
||||
@@ -312,16 +312,14 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
if (myVariableData.hasInstanceFields()) {
|
||||
myMakeStatic.setText(RefactoringBundle.message("declare.static.pass.fields.checkbox"));
|
||||
}
|
||||
myMakeStatic.addItemListener(new ItemListener() {
|
||||
public void itemStateChanged(ItemEvent e) {
|
||||
if (myVariableData.hasInstanceFields()) {
|
||||
myVariableData.setPassFields(myMakeStatic.isSelected());
|
||||
myInputVariables = myVariableData.getInputVariables().toArray(new VariableData[myVariableData.getInputVariables().size()]);
|
||||
updateVarargsEnabled();
|
||||
createParametersPanel();
|
||||
}
|
||||
updateSignature();
|
||||
myMakeStatic.addItemListener(e -> {
|
||||
if (myVariableData.hasInstanceFields()) {
|
||||
myVariableData.setPassFields(myMakeStatic.isSelected());
|
||||
myInputVariables = myVariableData.getInputVariables().toArray(new VariableData[myVariableData.getInputVariables().size()]);
|
||||
updateVarargsEnabled();
|
||||
createParametersPanel();
|
||||
}
|
||||
updateSignature();
|
||||
});
|
||||
optionsPanel.add(myMakeStatic);
|
||||
} else {
|
||||
@@ -335,15 +333,13 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
myFoldParameters.setVisible(myVariableData.isFoldable());
|
||||
myVariableData.setFoldingAvailable(myFoldParameters.isSelected());
|
||||
myInputVariables = myVariableData.getInputVariables().toArray(new VariableData[myVariableData.getInputVariables().size()]);
|
||||
myFoldParameters.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
myVariableData.setFoldingAvailable(myFoldParameters.isSelected());
|
||||
myInputVariables =
|
||||
myVariableData.getInputVariables().toArray(new VariableData[myVariableData.getInputVariables().size()]);
|
||||
updateVarargsEnabled();
|
||||
createParametersPanel();
|
||||
updateSignature();
|
||||
}
|
||||
myFoldParameters.addActionListener(e -> {
|
||||
myVariableData.setFoldingAvailable(myFoldParameters.isSelected());
|
||||
myInputVariables =
|
||||
myVariableData.getInputVariables().toArray(new VariableData[myVariableData.getInputVariables().size()]);
|
||||
updateVarargsEnabled();
|
||||
createParametersPanel();
|
||||
updateSignature();
|
||||
});
|
||||
optionsPanel.add(myFoldParameters);
|
||||
myFoldParameters.setBorder(emptyBorder);
|
||||
@@ -360,11 +356,7 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
myMakeVarargs = new NonFocusableCheckBox(RefactoringBundle.message("declare.varargs.checkbox"));
|
||||
myMakeVarargs.setBorder(emptyBorder);
|
||||
updateVarargsEnabled();
|
||||
myMakeVarargs.addItemListener(new ItemListener() {
|
||||
public void itemStateChanged(ItemEvent e) {
|
||||
updateSignature();
|
||||
}
|
||||
});
|
||||
myMakeVarargs.addItemListener(e -> updateSignature());
|
||||
myMakeVarargs.setSelected(false);
|
||||
optionsPanel.add(myMakeVarargs);
|
||||
}
|
||||
@@ -372,36 +364,29 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
if (myNullness != null && myNullness != Nullness.UNKNOWN) {
|
||||
final boolean isSelected = PropertiesComponent.getInstance(myProject).getBoolean(EXTRACT_METHOD_GENERATE_ANNOTATIONS, true);
|
||||
myGenerateAnnotations = new JCheckBox(RefactoringBundle.message("declare.generated.annotations"), isSelected);
|
||||
myGenerateAnnotations.addItemListener(new ItemListener() {
|
||||
@Override
|
||||
public void itemStateChanged(ItemEvent e) {
|
||||
updateSignature();
|
||||
}
|
||||
});
|
||||
myGenerateAnnotations.addItemListener(e -> updateSignature());
|
||||
optionsPanel.add(myGenerateAnnotations);
|
||||
}
|
||||
|
||||
if (myCbChainedConstructor != null) {
|
||||
optionsPanel.add(myCbChainedConstructor);
|
||||
myCbChainedConstructor.setBorder(emptyBorder);
|
||||
myCbChainedConstructor.addItemListener(new ItemListener() {
|
||||
public void itemStateChanged(final ItemEvent e) {
|
||||
if (myDefaultVisibility) {
|
||||
myChangingVisibility = true;
|
||||
try {
|
||||
if (isChainedConstructor()) {
|
||||
myVisibilityPanel.setVisibility(VisibilityUtil.getVisibilityModifier(myTargetClass.getModifierList()));
|
||||
}
|
||||
else {
|
||||
myVisibilityPanel.setVisibility(PsiModifier.PRIVATE);
|
||||
}
|
||||
myCbChainedConstructor.addItemListener(e -> {
|
||||
if (myDefaultVisibility) {
|
||||
myChangingVisibility = true;
|
||||
try {
|
||||
if (isChainedConstructor()) {
|
||||
myVisibilityPanel.setVisibility(VisibilityUtil.getVisibilityModifier(myTargetClass.getModifierList()));
|
||||
}
|
||||
finally {
|
||||
myChangingVisibility = false;
|
||||
else {
|
||||
myVisibilityPanel.setVisibility(PsiModifier.PRIVATE);
|
||||
}
|
||||
}
|
||||
update();
|
||||
finally {
|
||||
myChangingVisibility = false;
|
||||
}
|
||||
}
|
||||
update();
|
||||
});
|
||||
}
|
||||
return optionsPanel;
|
||||
@@ -413,13 +398,10 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
panel.setVisibility(containingMethod != null && containingMethod.hasModifierProperty(PsiModifier.PUBLIC)
|
||||
? PropertiesComponent.getInstance(myProject).getValue(EXTRACT_METHOD_DEFAULT_VISIBILITY, PsiModifier.PRIVATE)
|
||||
: PsiModifier.PRIVATE);
|
||||
panel.addListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
updateSignature();
|
||||
if (!myChangingVisibility) {
|
||||
myDefaultVisibility = false;
|
||||
}
|
||||
panel.addListener(e -> {
|
||||
updateSignature();
|
||||
if (!myChangingVisibility) {
|
||||
myDefaultVisibility = false;
|
||||
}
|
||||
});
|
||||
return panel;
|
||||
@@ -445,11 +427,13 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
isChainedConstructor());
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getVisibility() {
|
||||
return myTargetClass.isInterface() ? PsiModifier.PUBLIC : myVisibilityPanel.getVisibility();
|
||||
return myTargetClass.isInterface() ? PsiModifier.PUBLIC : ObjectUtils.notNull(myVisibilityPanel.getVisibility(), PsiModifier.PUBLIC);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected JComponent createCenterPanel() {
|
||||
myCenterPanel = new JPanel(new BorderLayout());
|
||||
createParametersPanel();
|
||||
@@ -494,19 +478,23 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
|
||||
protected ParameterTablePanel createParameterTableComponent() {
|
||||
return new ParameterTablePanel(myProject, myInputVariables, myElementsToExtract) {
|
||||
@Override
|
||||
protected void updateSignature() {
|
||||
updateVarargsEnabled();
|
||||
ExtractMethodDialog.this.updateSignature();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doEnterAction() {
|
||||
clickDefaultButton();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doCancelAction() {
|
||||
ExtractMethodDialog.this.doCancelAction();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean areTypesDirected() {
|
||||
return ExtractMethodDialog.this.areTypesDirected();
|
||||
}
|
||||
@@ -534,7 +522,7 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
}
|
||||
|
||||
protected String getSignature() {
|
||||
final @NonNls StringBuilder buffer = new StringBuilder();
|
||||
@NonNls final StringBuilder buffer = new StringBuilder();
|
||||
if (myGenerateAnnotations != null && myGenerateAnnotations.isSelected()) {
|
||||
final NullableNotNullManager nullManager = NullableNotNullManager.getInstance(myProject);
|
||||
buffer.append("@");
|
||||
@@ -630,6 +618,7 @@ public class ExtractMethodDialog extends DialogWrapper implements AbstractExtrac
|
||||
ConflictsUtil.checkMethodConflicts(myTargetClass, null, prototype, conflicts);
|
||||
}
|
||||
|
||||
@Override
|
||||
public PsiType getReturnType() {
|
||||
return mySelector != null ? mySelector.getSelectedType() : myReturnType;
|
||||
}
|
||||
|
||||
+1
-1
@@ -32,7 +32,6 @@ import com.intellij.refactoring.extractMethod.PrepareFailedException;
|
||||
import com.intellij.refactoring.util.RefactoringUtil;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -294,6 +293,7 @@ public class ExtractLightMethodObjectHandler {
|
||||
return inputVariables.getInputVariables().toArray(new VariableData[inputVariables.getInputVariables().size()]);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getVisibility() {
|
||||
return PsiModifier.PUBLIC;
|
||||
|
||||
+17
-1
@@ -31,7 +31,6 @@ import com.intellij.refactoring.ui.ConflictsDialog;
|
||||
import com.intellij.refactoring.util.ParameterTablePanel;
|
||||
import com.intellij.refactoring.util.VariableData;
|
||||
import com.intellij.ui.EditorTextField;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.VisibilityUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
@@ -120,12 +119,14 @@ public class ExtractMethodObjectDialog extends DialogWrapper implements Abstract
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMakeStatic() {
|
||||
if (myStaticFlag) return true;
|
||||
if (!myCanBeStatic) return false;
|
||||
return myCbMakeStatic.isSelected();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChainedConstructor() {
|
||||
return false;
|
||||
}
|
||||
@@ -135,27 +136,33 @@ public class ExtractMethodObjectDialog extends DialogWrapper implements Abstract
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
protected Action[] createActions() {
|
||||
return new Action[]{getOKAction(), getCancelAction(), getHelpAction()};
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getChosenMethodName() {
|
||||
return myCreateInnerClassRb.isSelected() ? myInnerClassName.getText() : myMethodName.getText();
|
||||
}
|
||||
|
||||
@Override
|
||||
public VariableData[] getChosenParameters() {
|
||||
return myInputVariables;
|
||||
}
|
||||
|
||||
@Override
|
||||
public JComponent getPreferredFocusedComponent() {
|
||||
return myInnerClassName;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doHelpAction() {
|
||||
HelpManager.getInstance().invokeHelp(HelpID.EXTRACT_METHOD_OBJECT);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doOKAction() {
|
||||
MultiMap<PsiElement, String> conflicts = new MultiMap<PsiElement, String>();
|
||||
if (myCreateInnerClassRb.isSelected()) {
|
||||
@@ -199,6 +206,8 @@ public class ExtractMethodObjectDialog extends DialogWrapper implements Abstract
|
||||
(!myCreateInnerClassRb.isSelected() && helper.isIdentifier(myMethodName.getText())));
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public String getVisibility() {
|
||||
if (myPublicRadioButton.isSelected()) {
|
||||
return PsiModifier.PUBLIC;
|
||||
@@ -213,11 +222,13 @@ public class ExtractMethodObjectDialog extends DialogWrapper implements Abstract
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected JComponent createCenterPanel() {
|
||||
mySignatureArea.setEditable(false);
|
||||
myCreateInnerClassRb.setSelected(true);
|
||||
|
||||
final ActionListener enableDisableListener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
enable(myCreateInnerClassRb.isSelected());
|
||||
}
|
||||
@@ -231,6 +242,7 @@ public class ExtractMethodObjectDialog extends DialogWrapper implements Abstract
|
||||
myVariableData.setFoldingAvailable(myFoldCb.isSelected());
|
||||
myInputVariables = myVariableData.getInputVariables().toArray(new VariableData[myVariableData.getInputVariables().size()]);
|
||||
myFoldCb.addActionListener(new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(ActionEvent e) {
|
||||
myVariableData.setFoldingAvailable(myFoldCb.isSelected());
|
||||
myInputVariables = myVariableData.getInputVariables().toArray(new VariableData[myVariableData.getInputVariables().size()]);
|
||||
@@ -244,6 +256,7 @@ public class ExtractMethodObjectDialog extends DialogWrapper implements Abstract
|
||||
myParametersTableContainer.add(createParametersPanel(), BorderLayout.CENTER);
|
||||
|
||||
final ActionListener updateSugnatureListener = new ActionListener() {
|
||||
@Override
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
updateSignature();
|
||||
IdeFocusManager.getInstance(myProject).requestFocus(myCreateInnerClassRb.isSelected() ? myInnerClassName : myMethodName, false);
|
||||
@@ -299,15 +312,18 @@ public class ExtractMethodObjectDialog extends DialogWrapper implements Abstract
|
||||
|
||||
private JComponent createParametersPanel() {
|
||||
return new ParameterTablePanel(myProject, myInputVariables, myElementsToExtract) {
|
||||
@Override
|
||||
protected void updateSignature() {
|
||||
updateVarargsEnabled();
|
||||
ExtractMethodObjectDialog.this.updateSignature();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doEnterAction() {
|
||||
clickDefaultButton();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doCancelAction() {
|
||||
ExtractMethodObjectDialog.this.doCancelAction();
|
||||
}
|
||||
|
||||
+1
@@ -771,6 +771,7 @@ public class IntroduceParameterHandler extends IntroduceHandlerBase {
|
||||
return datas.toArray(new VariableData[datas.size()]);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getVisibility() {
|
||||
return PsiModifier.PUBLIC;
|
||||
|
||||
Reference in New Issue
Block a user