diff --git a/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassDialog.java b/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassDialog.java index 24dd3cff4ee5..ca324a02a25f 100644 --- a/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/extractclass/ExtractClassDialog.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -261,40 +261,34 @@ class ExtractClassDialog extends RefactoringDialog implements MemberInfoChangeLi protected JComponent createCenterPanel() { final JPanel panel = new JPanel(new BorderLayout()); - final MemberSelectionPanel memberSelectionPanel = - new MemberSelectionPanel(RefactorJBundle.message("members.to.extract.label"), memberInfo, "As enum") { - @Override - protected MemberSelectionTable createMemberSelectionTable(final List memberInfo, String abstractColumnHeader) { - return new MemberSelectionTable(memberInfo, abstractColumnHeader) { - @Nullable - @Override - protected Object getAbstractColumnValue(MemberInfo memberInfo) { - if (isExtractAsEnum()) { - final PsiMember member = memberInfo.getMember(); - if (isConstantField(member)) { - return Boolean.valueOf(enumConstants.contains(memberInfo)); - } - } - return null; - } - - @Override - protected boolean isAbstractColumnEditable(int rowIndex) { - final MemberInfo info = memberInfo.get(rowIndex); - if (info.isChecked()) { - final PsiMember member = info.getMember(); - if (isConstantField(member)) { - if (enumConstants.isEmpty()) return true; - final MemberInfo currentEnumConstant = enumConstants.get(0); - if (((PsiField)currentEnumConstant.getMember()).getType().equals(((PsiField)member).getType())) return true; - } - } - return false; - } - }; + final MemberSelectionTable table = new MemberSelectionTable(memberInfo, "As enum") { + @Nullable + @Override + protected Object getAbstractColumnValue(MemberInfo memberInfo) { + if (isExtractAsEnum()) { + final PsiMember member = memberInfo.getMember(); + if (isConstantField(member)) { + return Boolean.valueOf(enumConstants.contains(memberInfo)); + } } - }; - final MemberSelectionTable table = memberSelectionPanel.getTable(); + return null; + } + + @Override + protected boolean isAbstractColumnEditable(int rowIndex) { + final MemberInfo info = memberInfo.get(rowIndex); + if (info.isChecked()) { + final PsiMember member = info.getMember(); + if (isConstantField(member)) { + if (enumConstants.isEmpty()) return true; + final MemberInfo currentEnumConstant = enumConstants.get(0); + if (((PsiField)currentEnumConstant.getMember()).getType().equals(((PsiField)member).getType())) return true; + } + } + return false; + } + }; + table.setMemberInfoModel(new DelegatingMemberInfoModel(table.getMemberInfoModel()) { @Override @@ -342,6 +336,10 @@ class ExtractClassDialog extends RefactoringDialog implements MemberInfoChangeLi return cause; } }); + + final MemberSelectionPanelBase memberSelectionPanel = + new MemberSelectionPanelBase(RefactorJBundle.message("members.to.extract.label"), table); + panel.add(memberSelectionPanel, BorderLayout.CENTER); table.addMemberInfoChangeListener(this); extractAsEnum.addActionListener(new ActionListener() { diff --git a/java/java-impl/src/com/intellij/refactoring/memberPullUp/JavaPullUpHandler.java b/java/java-impl/src/com/intellij/refactoring/memberPullUp/JavaPullUpHandler.java index 3cca01e51a3a..d0c10bafef21 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPullUp/JavaPullUpHandler.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPullUp/JavaPullUpHandler.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. @@ -153,16 +153,17 @@ public class JavaPullUpHandler implements RefactoringActionHandler, PullUpDialog public boolean checkConflicts(final PullUpDialog dialog) { - final MemberInfo[] infos = dialog.getSelectedMemberInfos(); + final List infos = dialog.getSelectedMemberInfos(); + final MemberInfo[] memberInfos = infos.toArray(new MemberInfo[infos.size()]); final PsiClass superClass = dialog.getSuperClass(); - if (!checkWritable(superClass, infos)) return false; + if (!checkWritable(superClass, memberInfos)) return false; final MultiMap conflicts = new MultiMap(); if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(new Runnable() { public void run() { final PsiDirectory targetDirectory = superClass.getContainingFile().getContainingDirectory(); final PsiPackage targetPackage = targetDirectory != null ? JavaDirectoryService.getInstance().getPackage(targetDirectory) : null; conflicts - .putAllValues(PullUpConflictsUtil.checkConflicts(infos, mySubclass, superClass, targetPackage, targetDirectory, dialog.getContainmentVerifier())); + .putAllValues(PullUpConflictsUtil.checkConflicts(memberInfos, mySubclass, superClass, targetPackage, targetDirectory, dialog.getContainmentVerifier())); } }, RefactoringBundle.message("detecting.possible.conflicts"), true, myProject)) return false; if (!conflicts.isEmpty()) { diff --git a/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpDialog.java b/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpDialog.java index 526262efaedc..6f16b14963ed 100644 --- a/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/memberPullUp/PullUpDialog.java @@ -28,43 +28,40 @@ import com.intellij.psi.util.TypeConversionUtil; import com.intellij.refactoring.HelpID; import com.intellij.refactoring.JavaRefactoringSettings; import com.intellij.refactoring.RefactoringBundle; -import com.intellij.refactoring.classMembers.MemberInfoChange; +import com.intellij.refactoring.classMembers.DelegatingMemberInfoModel; +import com.intellij.refactoring.ui.AbstractMemberSelectionTable; import com.intellij.refactoring.ui.ClassCellRenderer; import com.intellij.refactoring.ui.DocCommentPanel; -import com.intellij.refactoring.ui.MemberSelectionPanel; -import com.intellij.refactoring.ui.RefactoringDialog; +import com.intellij.refactoring.ui.MemberSelectionTable; import com.intellij.refactoring.util.DocCommentPolicy; import com.intellij.refactoring.util.RefactoringHierarchyUtil; import com.intellij.refactoring.util.classMembers.InterfaceContainmentVerifier; import com.intellij.refactoring.util.classMembers.MemberInfo; import com.intellij.refactoring.util.classMembers.MemberInfoStorage; import com.intellij.refactoring.util.classMembers.UsesAndInterfacesDependencyMemberInfoModel; -import com.intellij.usageView.UsageViewUtil; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import javax.swing.*; import java.awt.*; import java.awt.event.ItemEvent; import java.awt.event.ItemListener; -import java.util.ArrayList; import java.util.List; /** * @author dsl * Date: 18.06.2002 */ -public class PullUpDialog extends RefactoringDialog { +public class PullUpDialog extends PullUpDialogBase { private final Callback myCallback; - private MemberSelectionPanel myMemberSelectionPanel; - private MyMemberInfoModel myMemberInfoModel; - private final PsiClass myClass; - private final List mySuperClasses; - private final MemberInfoStorage myMemberInfoStorage; - private List myMemberInfos; private DocCommentPanel myJavaDocPanel; - private JComboBox myClassCombo; + + private final InterfaceContainmentVerifier myInterfaceContainmentVerifier = new InterfaceContainmentVerifier() { + public boolean checkedInterfacesContain(PsiMethod psiMethod) { + return PullUpHelper.checkedInterfacesContain(myMemberInfos, psiMethod); + } + }; + private static final String PULL_UP_STATISTICS_KEY = "pull.up##"; public interface Callback { @@ -72,42 +69,16 @@ public class PullUpDialog extends RefactoringDialog { } public PullUpDialog(Project project, PsiClass aClass, List superClasses, MemberInfoStorage memberInfoStorage, Callback callback) { - super(project, true); - myClass = aClass; - mySuperClasses = superClasses; - myMemberInfoStorage = memberInfoStorage; - myMemberInfos = myMemberInfoStorage.getClassMemberInfos(aClass); + super(project, aClass, superClasses, memberInfoStorage, JavaPullUpHandler.REFACTORING_NAME); myCallback = callback; - setTitle(JavaPullUpHandler.REFACTORING_NAME); - init(); } - @Nullable - public PsiClass getSuperClass() { - if (myClassCombo != null) { - return (PsiClass) myClassCombo.getSelectedItem(); - } - else { - return null; - } - } - public int getJavaDocPolicy() { return myJavaDocPanel.getPolicy(); } - public MemberInfo[] getSelectedMemberInfos() { - ArrayList list = new ArrayList(myMemberInfos.size()); - for (MemberInfo info : myMemberInfos) { - if (info.isChecked() && myMemberInfoModel.isMemberEnabled(info)) { - list.add(info); - } - } - return list.toArray(new MemberInfo[list.size()]); - } - protected String getDimensionServiceKey() { return "#com.intellij.refactoring.memberPullUp.PullUpDialog"; } @@ -116,51 +87,23 @@ public class PullUpDialog extends RefactoringDialog { return myInterfaceContainmentVerifier; } - protected JComponent createNorthPanel() { - JPanel panel = new JPanel(); - - panel.setLayout(new GridBagLayout()); - GridBagConstraints gbConstraints = new GridBagConstraints(); - - gbConstraints.insets = new Insets(4, 0, 4, 8); - gbConstraints.weighty = 1; - gbConstraints.weightx = 1; - gbConstraints.gridy = 0; - gbConstraints.gridwidth = GridBagConstraints.REMAINDER; - gbConstraints.fill = GridBagConstraints.BOTH; - gbConstraints.anchor = GridBagConstraints.WEST; - final JLabel classComboLabel = new JLabel(); - panel.add(classComboLabel, gbConstraints); - - myClassCombo = new JComboBox(mySuperClasses.toArray()); - myClassCombo.setRenderer(new ClassCellRenderer(myClassCombo.getRenderer())); - classComboLabel.setText(RefactoringBundle.message("pull.up.members.to", UsageViewUtil.getLongName(myClass))); - classComboLabel.setLabelFor(myClassCombo); - final PsiClass preselection = getPreselection(); - int indexToSelect = 0; - if (preselection != null) { - indexToSelect = mySuperClasses.indexOf(preselection); - } - myClassCombo.setSelectedIndex(indexToSelect); - myClassCombo.addItemListener(new ItemListener() { + @Override + protected void initClassCombo(JComboBox classCombo) { + classCombo.setRenderer(new ClassCellRenderer(classCombo.getRenderer())); + classCombo.addItemListener(new ItemListener() { public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.SELECTED) { - updateMemberInfo(); if (myMemberSelectionPanel != null) { - myMemberInfoModel.setSuperClass(getSuperClass()); + ((MyMemberInfoModel)myMemberInfoModel).setSuperClass(getSuperClass()); myMemberSelectionPanel.getTable().setMemberInfos(myMemberInfos); myMemberSelectionPanel.getTable().fireExternalDataChange(); } } } }); - gbConstraints.gridy++; - panel.add(myClassCombo, gbConstraints); - - return panel; } - private PsiClass getPreselection() { + protected PsiClass getPreselection() { PsiClass preselection = RefactoringHierarchyUtil.getNearestBaseClass(myClass, false); final String statKey = PULL_UP_STATISTICS_KEY + myClass.getQualifiedName(); @@ -185,15 +128,6 @@ public class PullUpDialog extends RefactoringDialog { HelpManager.getInstance().invokeHelp(HelpID.MEMBERS_PULL_UP); } - private void updateMemberInfo() { - final PsiClass targetClass = (PsiClass) myClassCombo.getSelectedItem(); - myMemberInfos = myMemberInfoStorage.getIntermediateMemberInfosList(targetClass); - /*Set duplicate = myMemberInfoStorage.getDuplicatedMemberInfos(targetClass); - for (Iterator iterator = duplicate.getSectionsIterator(); getSectionsIterator.hasNext();) { - ((MemberInfo) iterator.next()).setChecked(false); - }*/ - } - protected void doAction() { if (!myCallback.checkConflicts(this)) return; JavaRefactoringSettings.getInstance().PULL_UP_MEMBERS_JAVADOC = myJavaDocPanel.getPolicy(); @@ -203,21 +137,15 @@ public class PullUpDialog extends RefactoringDialog { StatisticsManager .getInstance().incUseCount(new StatisticsInfo(PULL_UP_STATISTICS_KEY + myClass.getQualifiedName(), name)); } - - invokeRefactoring(new PullUpHelper(myClass, superClass, getSelectedMemberInfos(), + + List infos = getSelectedMemberInfos(); + invokeRefactoring(new PullUpHelper(myClass, superClass, infos.toArray(new MemberInfo[infos.size()]), new DocCommentPolicy(getJavaDocPolicy()))); close(OK_EXIT_CODE); } - protected JComponent createCenterPanel() { - JPanel panel = new JPanel(new BorderLayout()); - myMemberSelectionPanel = new MemberSelectionPanel(RefactoringBundle.message("members.to.be.pulled.up"), myMemberInfos, RefactoringBundle.message("make.abstract")); - myMemberInfoModel = new MyMemberInfoModel(); - myMemberInfoModel.memberInfoChanged(new MemberInfoChange(myMemberInfos)); - myMemberSelectionPanel.getTable().setMemberInfoModel(myMemberInfoModel); - myMemberSelectionPanel.getTable().addMemberInfoChangeListener(myMemberInfoModel); - panel.add(myMemberSelectionPanel, BorderLayout.CENTER); - + @Override + protected void addCustomElementsToCentralPanel(JPanel panel) { myJavaDocPanel = new DocCommentPanel(RefactoringBundle.message("javadoc.for.abstracts")); myJavaDocPanel.setPolicy(JavaRefactoringSettings.getInstance().PULL_UP_MEMBERS_JAVADOC); boolean hasJavadoc = false; @@ -233,14 +161,17 @@ public class PullUpDialog extends RefactoringDialog { } UIUtil.setEnabled(myJavaDocPanel, hasJavadoc, true); panel.add(myJavaDocPanel, BorderLayout.EAST); - return panel; } - private final InterfaceContainmentVerifier myInterfaceContainmentVerifier = - new InterfaceContainmentVerifier() { - public boolean checkedInterfacesContain(PsiMethod psiMethod) { - return PullUpHelper.checkedInterfacesContain(myMemberInfos, psiMethod); - } - }; + + @Override + protected AbstractMemberSelectionTable createMemberSelectionTable(List infos) { + return new MemberSelectionTable(infos, RefactoringBundle.message("make.abstract")); + } + + @Override + protected DelegatingMemberInfoModel createMemberInfoModel() { + return new MyMemberInfoModel(); + } private class MyMemberInfoModel extends UsesAndInterfacesDependencyMemberInfoModel { public MyMemberInfoModel() { @@ -296,11 +227,9 @@ public class PullUpDialog extends RefactoringDialog { PsiClass currentSuperClass = getSuperClass(); if (currentSuperClass != null && currentSuperClass.isInterface()) { - PsiElement element = member.getMember(); - if (element instanceof PsiModifierListOwner) { - if (((PsiModifierListOwner) element).hasModifierProperty(PsiModifier.STATIC)) { - return super.checkForProblems(member); - } + PsiMember element = member.getMember(); + if (element.hasModifierProperty(PsiModifier.STATIC)) { + return super.checkForProblems(member); } return OK; } diff --git a/java/java-impl/src/com/intellij/refactoring/ui/AbstractMemberSelectionPanel.java b/java/java-impl/src/com/intellij/refactoring/ui/AbstractMemberSelectionPanel.java deleted file mode 100644 index 0e9397ad40f2..000000000000 --- a/java/java-impl/src/com/intellij/refactoring/ui/AbstractMemberSelectionPanel.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.intellij.refactoring.ui; - -import com.intellij.psi.PsiElement; -import com.intellij.refactoring.classMembers.MemberInfoBase; - -import javax.swing.*; - -/** - * Nikolay.Tropin - * 8/20/13 - */ -public abstract class AbstractMemberSelectionPanel> extends JPanel { - public abstract AbstractMemberSelectionTable getTable(); -} diff --git a/java/java-impl/src/com/intellij/refactoring/ui/MemberSelectionPanel.java b/java/java-impl/src/com/intellij/refactoring/ui/MemberSelectionPanel.java index c503a86e9c39..28e0a8800aba 100644 --- a/java/java-impl/src/com/intellij/refactoring/ui/MemberSelectionPanel.java +++ b/java/java-impl/src/com/intellij/refactoring/ui/MemberSelectionPanel.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2013 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. diff --git a/platform/lang-impl/src/com/intellij/refactoring/memberPullUp/PullUpDialogBase.java b/platform/lang-impl/src/com/intellij/refactoring/memberPullUp/PullUpDialogBase.java new file mode 100644 index 000000000000..8f40ef355fc8 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/refactoring/memberPullUp/PullUpDialogBase.java @@ -0,0 +1,150 @@ +/* + * Copyright 2000-2013 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. + */ +package com.intellij.refactoring.memberPullUp; + +import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiElement; +import com.intellij.refactoring.RefactoringBundle; +import com.intellij.refactoring.classMembers.AbstractMemberInfoStorage; +import com.intellij.refactoring.classMembers.DelegatingMemberInfoModel; +import com.intellij.refactoring.classMembers.MemberInfoBase; +import com.intellij.refactoring.classMembers.MemberInfoChange; +import com.intellij.refactoring.ui.AbstractMemberSelectionTable; +import com.intellij.refactoring.ui.MemberSelectionPanelBase; +import com.intellij.refactoring.ui.RefactoringDialog; +import com.intellij.usageView.UsageViewUtil; +import org.jetbrains.annotations.Nullable; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ItemEvent; +import java.awt.event.ItemListener; +import java.util.ArrayList; +import java.util.List; + +/** + * @author Max Medvedev + */ +public abstract class PullUpDialogBase, + MemberInfo extends MemberInfoBase, + Member extends PsiElement, + Class extends PsiElement> extends RefactoringDialog { + protected MemberSelectionPanelBase> myMemberSelectionPanel; + protected DelegatingMemberInfoModel myMemberInfoModel; + protected final Class myClass; + protected final List mySuperClasses; + protected final Storage myMemberInfoStorage; + protected List myMemberInfos; + private JComboBox myClassCombo; + + public PullUpDialogBase(Project project, Class aClass, List superClasses, Storage memberInfoStorage, String title) { + super(project, true); + myClass = aClass; + mySuperClasses = superClasses; + myMemberInfoStorage = memberInfoStorage; + myMemberInfos = myMemberInfoStorage.getClassMemberInfos(aClass); + + setTitle(title); + } + + @Nullable + public Class getSuperClass() { + if (myClassCombo != null) { + return (Class) myClassCombo.getSelectedItem(); + } + else { + return null; + } + } + + public List getSelectedMemberInfos() { + ArrayList list = new ArrayList(myMemberInfos.size()); + for (MemberInfo info : myMemberInfos) { + if (info.isChecked() && myMemberInfoModel.isMemberEnabled(info)) { + list.add(info); + } + } + return list; + } + + protected JComponent createNorthPanel() { + JPanel panel = new JPanel(); + + panel.setLayout(new GridBagLayout()); + GridBagConstraints gbConstraints = new GridBagConstraints(); + + gbConstraints.insets = new Insets(4, 0, 4, 8); + gbConstraints.weighty = 1; + gbConstraints.weightx = 1; + gbConstraints.gridy = 0; + gbConstraints.gridwidth = GridBagConstraints.REMAINDER; + gbConstraints.fill = GridBagConstraints.BOTH; + gbConstraints.anchor = GridBagConstraints.WEST; + final JLabel classComboLabel = new JLabel(); + panel.add(classComboLabel, gbConstraints); + + myClassCombo = new JComboBox(mySuperClasses.toArray()); + initClassCombo(myClassCombo); + classComboLabel.setText(RefactoringBundle.message("pull.up.members.to", UsageViewUtil.getLongName(myClass))); + classComboLabel.setLabelFor(myClassCombo); + final Class preselection = getPreselection(); + int indexToSelect = 0; + if (preselection != null) { + indexToSelect = mySuperClasses.indexOf(preselection); + } + myClassCombo.setSelectedIndex(indexToSelect); + myClassCombo.addItemListener(new ItemListener() { + public void itemStateChanged(ItemEvent e) { + if (e.getStateChange() == ItemEvent.SELECTED) { + updateMemberInfo(); + } + } + }); + gbConstraints.gridy++; + panel.add(myClassCombo, gbConstraints); + + return panel; + } + + protected abstract void initClassCombo(JComboBox classCombo); + + protected abstract Class getPreselection(); + + private void updateMemberInfo() { + final Class targetClass = (Class) myClassCombo.getSelectedItem(); + myMemberInfos = myMemberInfoStorage.getIntermediateMemberInfosList(targetClass); + } + + protected JComponent createCenterPanel() { + JPanel panel = new JPanel(new BorderLayout()); + myMemberSelectionPanel = new MemberSelectionPanelBase>(RefactoringBundle.message("members.to.be.pulled.up"), createMemberSelectionTable(myMemberInfos)); + myMemberInfoModel = createMemberInfoModel(); + myMemberInfoModel.memberInfoChanged(new MemberInfoChange(myMemberInfos)); + myMemberSelectionPanel.getTable().setMemberInfoModel(myMemberInfoModel); + myMemberSelectionPanel.getTable().addMemberInfoChangeListener(myMemberInfoModel); + panel.add(myMemberSelectionPanel, BorderLayout.CENTER); + + addCustomElementsToCentralPanel(panel); + + return panel; + } + + protected void addCustomElementsToCentralPanel(JPanel panel) { } + + protected abstract AbstractMemberSelectionTable createMemberSelectionTable(List infos); + + protected abstract DelegatingMemberInfoModel createMemberInfoModel(); +} diff --git a/platform/lang-impl/src/com/intellij/refactoring/ui/AbstractMemberSelectionPanel.java b/platform/lang-impl/src/com/intellij/refactoring/ui/AbstractMemberSelectionPanel.java new file mode 100644 index 000000000000..af9b30de04ce --- /dev/null +++ b/platform/lang-impl/src/com/intellij/refactoring/ui/AbstractMemberSelectionPanel.java @@ -0,0 +1,29 @@ +/* + * Copyright 2000-2013 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. + */ +package com.intellij.refactoring.ui; + +import com.intellij.psi.PsiElement; +import com.intellij.refactoring.classMembers.MemberInfoBase; + +import javax.swing.*; + +/** + * Nikolay.Tropin + * 8/20/13 + */ +public abstract class AbstractMemberSelectionPanel> extends JPanel { + public abstract AbstractMemberSelectionTable getTable(); +} diff --git a/platform/lang-impl/src/com/intellij/refactoring/ui/MemberSelectionPanelBase.java b/platform/lang-impl/src/com/intellij/refactoring/ui/MemberSelectionPanelBase.java new file mode 100644 index 000000000000..4ac3c978ebb8 --- /dev/null +++ b/platform/lang-impl/src/com/intellij/refactoring/ui/MemberSelectionPanelBase.java @@ -0,0 +1,51 @@ +/* + * Copyright 2000-2013 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. + */ +package com.intellij.refactoring.ui; + +import com.intellij.psi.PsiElement; +import com.intellij.refactoring.classMembers.MemberInfoBase; +import com.intellij.ui.ScrollPaneFactory; +import com.intellij.ui.SeparatorFactory; + +import javax.swing.*; +import java.awt.*; + +/** + * @author Max Medvedev + */ +public class MemberSelectionPanelBase, + Table extends AbstractMemberSelectionTable> extends AbstractMemberSelectionPanel { + private final Table myTable; + + /** + * @param title if title contains 'm' - it would look and feel as mnemonic + */ + public MemberSelectionPanelBase(String title, Table table) { + super(); + setLayout(new BorderLayout()); + + myTable = table; + JScrollPane scrollPane = ScrollPaneFactory.createScrollPane(myTable); + add(SeparatorFactory.createSeparator(title, myTable), BorderLayout.NORTH); + add(scrollPane, BorderLayout.CENTER); + } + + public Table getTable() { + return myTable; + } +} +