diff --git a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectDialog.java b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectDialog.java
index b62cc0cf2274..eaaa49a2cf86 100644
--- a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectDialog.java
+++ b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectDialog.java
@@ -32,11 +32,11 @@ import com.intellij.refactoring.RefactorJBundle;
import com.intellij.refactoring.RefactoringBundle;
import com.intellij.refactoring.ui.PackageNameReferenceEditorCombo;
import com.intellij.refactoring.ui.RefactoringDialog;
-import com.intellij.refactoring.ui.VisibilityPanel;
import com.intellij.refactoring.util.ParameterTablePanel;
import com.intellij.ui.DocumentAdapter;
import com.intellij.ui.RecentsManager;
import com.intellij.ui.ReferenceEditorComboWithBrowseButton;
+import com.intellij.util.VisibilityUtil;
import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
@@ -73,9 +73,8 @@ public class IntroduceParameterObjectDialog extends RefactoringDialog {
private JCheckBox keepMethodAsDelegate;
private ReferenceEditorComboWithBrowseButton packageTextField;
private ReferenceEditorComboWithBrowseButton existingClassField;
- private JPanel myVisibilityComponent;
private JCheckBox myGenerateAccessorsCheckBox;
- private VisibilityPanel myVisibilityPanel;
+ private JCheckBox myEscalateVisibilityCheckBox;
private static final String RECENTS_KEY = "IntroduceParameterObject.RECENTS_KEY";
private static final String EXISTING_KEY = "IntroduceParameterObject.EXISTING_KEY";
@@ -126,19 +125,17 @@ public class IntroduceParameterObjectDialog extends RefactoringDialog {
useExistingClassButton.addActionListener(listener);
createNewClassButton.addActionListener(listener);
myCreateInnerClassRadioButton.addActionListener(listener);
+ myGenerateAccessorsCheckBox.setSelected(true);
+ myEscalateVisibilityCheckBox.setSelected(true);
toggleRadioEnablement();
-
- myVisibilityPanel = new VisibilityPanel(true, true);
- myVisibilityPanel.setVisibility(null);
- myVisibilityComponent.add(myVisibilityPanel, BorderLayout.WEST);
}
private void toggleRadioEnablement() {
- enableGenerateAccessors();
UIUtil.setEnabled(myUseExistingPanel, useExistingClassButton.isSelected(), true);
UIUtil.setEnabled(myCreateNewClassPanel, createNewClassButton.isSelected(), true);
UIUtil.setEnabled(myInnerClassPanel, myCreateInnerClassRadioButton.isSelected(), true);
validateButtons();
+ enableGenerateAccessors();
}
protected String getDimensionServiceKey() {
@@ -169,10 +166,12 @@ public class IntroduceParameterObjectDialog extends RefactoringDialog {
parameters.add(data);
}
}
+ final String newVisibility =
+ myEscalateVisibilityCheckBox.isEnabled() && myEscalateVisibilityCheckBox.isSelected() ? VisibilityUtil.ESCALATE_VISIBILITY : null;
invokeRefactoring(new IntroduceParameterObjectProcessor(className, packageName, sourceMethod,
parameters.toArray(new ParameterTablePanel.VariableData[parameters.size()]),
keepMethod, useExistingClass,
- createInnerClass, myVisibilityPanel.getVisibility(), myGenerateAccessorsCheckBox.isSelected()));
+ createInnerClass, newVisibility, myGenerateAccessorsCheckBox.isSelected()));
}
@Override
@@ -331,5 +330,6 @@ public class IntroduceParameterObjectDialog extends RefactoringDialog {
}
}
myGenerateAccessorsCheckBox.setEnabled(existingNotALibraryClass);
+ myEscalateVisibilityCheckBox.setEnabled(existingNotALibraryClass);
}
}
diff --git a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectForm.form b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectForm.form
index 8456c35d4db0..b70b2b6aef0b 100644
--- a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectForm.form
+++ b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectForm.form
@@ -33,7 +33,7 @@
-
+
@@ -48,18 +48,9 @@
-
-
-
-
-
-
-
-
-
-
+
@@ -104,7 +95,7 @@
-
+
@@ -126,6 +117,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -139,7 +148,7 @@
-
+
@@ -166,6 +175,15 @@
+
+
+
+
+
+
+
+
+
@@ -186,24 +204,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectProcessor.java b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectProcessor.java
index b96d56025d94..4d1f650d1941 100644
--- a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectProcessor.java
+++ b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/IntroduceParameterObjectProcessor.java
@@ -41,7 +41,6 @@ import com.intellij.refactoring.util.RefactoringUtil;
import com.intellij.usageView.UsageInfo;
import com.intellij.usageView.UsageViewDescriptor;
import com.intellij.util.IncorrectOperationException;
-import com.intellij.util.VisibilityUtil;
import com.intellij.util.containers.MultiMap;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
@@ -163,6 +162,10 @@ public class IntroduceParameterObjectProcessor extends FixableUsagesRefactoringP
for (PsiMethod siblingMethod : overridingMethods) {
findUsagesForMethod(siblingMethod, usages);
}
+
+ if (myNewVisibility != null) {
+ usages.add(new BeanClassVisibilityUsageInfo(existingClass, usages.toArray(new UsageInfo[usages.size()]), myNewVisibility, myExistingClassCompatibleConstructor));
+ }
}
private void findUsagesForMethod(PsiMethod overridingMethod, List usages) {
@@ -217,10 +220,6 @@ public class IntroduceParameterObjectProcessor extends FixableUsagesRefactoringP
final PsiClass psiClass = buildClass();
if (psiClass != null) {
super.performRefactoring(usageInfos);
- VisibilityUtil.fixVisibility(usageInfos, psiClass, myNewVisibility);
- if (myExistingClassCompatibleConstructor != null) {
- VisibilityUtil.fixVisibility(usageInfos, myExistingClassCompatibleConstructor, myNewVisibility);
- }
}
}
diff --git a/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/BeanClassVisibilityUsageInfo.java b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/BeanClassVisibilityUsageInfo.java
new file mode 100644
index 000000000000..bebbf34aa946
--- /dev/null
+++ b/java/java-impl/src/com/intellij/refactoring/introduceparameterobject/usageInfo/BeanClassVisibilityUsageInfo.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright 2000-2009 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
+ * User: anna
+ * Date: 03-Nov-2009
+ */
+package com.intellij.refactoring.introduceparameterobject.usageInfo;
+
+import com.intellij.psi.PsiClass;
+import com.intellij.psi.PsiMethod;
+import com.intellij.refactoring.util.FixableUsageInfo;
+import com.intellij.usageView.UsageInfo;
+import com.intellij.util.IncorrectOperationException;
+import com.intellij.util.VisibilityUtil;
+
+public class BeanClassVisibilityUsageInfo extends FixableUsageInfo {
+ private PsiClass existingClass;
+ private UsageInfo[] usages;
+ private String myNewVisibility;
+ private PsiMethod myExistingClassCompatibleConstructor;
+
+ public BeanClassVisibilityUsageInfo(PsiClass existingClass,
+ UsageInfo[] usages,
+ String newVisibility,
+ PsiMethod existingClassCompatibleConstructor) {
+ super(existingClass);
+ this.existingClass = existingClass;
+ this.usages = usages;
+ myNewVisibility = newVisibility;
+ myExistingClassCompatibleConstructor = existingClassCompatibleConstructor;
+ }
+
+ @Override
+ public void fixUsage() throws IncorrectOperationException {
+ VisibilityUtil.fixVisibility(usages, existingClass, myNewVisibility);
+ if (myExistingClassCompatibleConstructor != null) {
+ VisibilityUtil.fixVisibility(usages, myExistingClassCompatibleConstructor, myNewVisibility);
+ }
+ }
+}
\ No newline at end of file