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