Skip to content

Commit

Permalink
rewrite move to JavaVisibilityPanel to new ui
Browse files Browse the repository at this point in the history
  • Loading branch information
VISTALL committed Sep 14, 2024
1 parent 488c4a5 commit eb9b982
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 90 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
import consulo.ui.ex.awt.Messages;
import consulo.ui.ex.awt.UIUtil;
import consulo.ui.ex.awt.event.DocumentAdapter;
import consulo.ui.ex.awtUnsafe.TargetAWT;
import jakarta.annotation.Nonnull;
import jakarta.annotation.Nullable;

Expand Down Expand Up @@ -162,7 +163,7 @@ public int compare(MemberInfo o1, MemberInfo o2) {
? enumConstants
: Collections.<MemberInfo>emptyList());
if (processor.getCreatedClass() == null) {
Messages.showErrorDialog(myVisibilityPanel, "Unable to create class with the given name");
Messages.showErrorDialog(TargetAWT.to(myVisibilityPanel.getComponent()), "Unable to create class with the given name");
classNameField.requestFocusInWindow();
return;
}
Expand Down Expand Up @@ -361,7 +362,7 @@ public void actionPerformed(ActionEvent e) {
myGenerateAccessorsCb.setMnemonic('G');
panel.add(myGenerateAccessorsCb, BorderLayout.SOUTH);

panel.add(myVisibilityPanel, BorderLayout.EAST);
panel.add(TargetAWT.to(myVisibilityPanel.getComponent()), BorderLayout.EAST);
return panel;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
import consulo.ui.ex.awt.Messages;
import consulo.ui.ex.awt.StateRestoringCheckBox;
import consulo.ui.ex.awt.UIUtil;
import consulo.ui.ex.awtUnsafe.TargetAWT;
import consulo.usage.UsageViewUtil;
import consulo.util.collection.ArrayUtil;
import consulo.util.lang.Comparing;
Expand Down Expand Up @@ -129,7 +130,7 @@ class IntroduceConstantDialog extends DialogWrapper {
setTitle(IntroduceConstantHandlerImpl.REFACTORING_NAME);
myCodeStyleManager = JavaCodeStyleManager.getInstance(myProject);
myVPanel = new JavaVisibilityPanel(false, true);
myVisibilityPanel.add(myVPanel, BorderLayout.CENTER);
myVisibilityPanel.add(TargetAWT.to(myVPanel.getComponent()), BorderLayout.CENTER);
init();

myVPanel.setVisibility(JavaRefactoringSettings.getInstance().INTRODUCE_CONSTANT_VISIBILITY);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,18 @@
*/
package com.intellij.java.impl.refactoring.introduceField;

import com.intellij.java.impl.refactoring.JavaRefactoringSettings;
import com.intellij.java.impl.refactoring.ui.JavaVisibilityPanel;
import com.intellij.java.impl.refactoring.ui.TypeSelectorManager;
import com.intellij.java.language.codeInsight.TestFrameworks;
import com.intellij.java.language.psi.PsiClass;
import com.intellij.java.language.psi.PsiExpression;
import com.intellij.java.language.psi.PsiLocalVariable;
import com.intellij.java.language.psi.PsiMethod;
import consulo.language.editor.refactoring.localize.RefactoringLocalize;
import consulo.language.psi.util.PsiTreeUtil;
import com.intellij.java.impl.refactoring.JavaRefactoringSettings;
import consulo.language.editor.refactoring.RefactoringBundle;
import com.intellij.java.impl.refactoring.ui.JavaVisibilityPanel;
import com.intellij.java.impl.refactoring.ui.TypeSelectorManager;
import consulo.ui.ex.awt.IdeBorderFactory;
import consulo.ui.ex.awtUnsafe.TargetAWT;

import javax.swing.*;
import java.awt.*;
Expand Down Expand Up @@ -189,7 +189,7 @@ protected JComponent createInitializerPlacePanel(ItemListener itemListener, Item
groupPanel.add(initializationPanel);

myVisibilityPanel = new JavaVisibilityPanel(false, false);
groupPanel.add(myVisibilityPanel);
groupPanel.add(TargetAWT.to(myVisibilityPanel.getComponent()));

mainPanel.add(groupPanel, BorderLayout.CENTER);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
import consulo.localize.LocalizeValue;
import consulo.ui.annotation.RequiredUIAccess;
import consulo.ui.ex.awt.*;
import consulo.ui.ex.awtUnsafe.TargetAWT;
import jakarta.annotation.Nullable;
import org.jetbrains.annotations.NonNls;

import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
Expand All @@ -41,7 +41,7 @@
* @author ven
*/
public class MoveInstanceMethodDialog extends MoveInstanceMethodDialogBase {
@NonNls private static final String KEY = "#com.intellij.refactoring.move.moveInstanceMethod.MoveInstanceMethodDialog";
private static final String KEY = "#com.intellij.refactoring.move.moveInstanceMethod.MoveInstanceMethodDialog";

//Map from classes referenced by 'this' to sets of referenced members
private Map<PsiClass, Set<PsiMember>> myThisClassesMap;
Expand All @@ -54,17 +54,20 @@ public MoveInstanceMethodDialog(final PsiMethod method,
init();
}

@Override
protected String getDimensionServiceKey() {
return KEY;
}

@Override
protected JComponent createCenterPanel() {
JPanel mainPanel = new JPanel(new GridBagLayout());
final TitledSeparator separator = new TitledSeparator();
mainPanel.add(separator, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 2, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(0,0,0,0), 0,0));

myList = createTargetVariableChooser();
myList.addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
validateTextFields(e.getFirstIndex());
}
Expand All @@ -76,7 +79,7 @@ public void valueChanged(ListSelectionEvent e) {
mainPanel.add(scrollPane, new GridBagConstraints(0, GridBagConstraints.RELATIVE, 1, 1, 1.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.BOTH, new Insets(0,0,0,0), 0,0));

myVisibilityPanel = createVisibilityPanel();
mainPanel.add(myVisibilityPanel, new GridBagConstraints(1, GridBagConstraints.RELATIVE, 1, 1, 0.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.VERTICAL, new Insets(0,0,0,0), 0,0));
mainPanel.add(TargetAWT.to(myVisibilityPanel.getComponent()), new GridBagConstraints(1, GridBagConstraints.RELATIVE, 1, 1, 0.0, 1.0, GridBagConstraints.WEST, GridBagConstraints.VERTICAL, new Insets(0,0,0,0), 0,0));

final JPanel parametersPanel = createParametersPanel();
if (parametersPanel != null) {
Expand Down Expand Up @@ -126,6 +129,7 @@ private JPanel createParametersPanel () {
return panel;
}

@Override
@RequiredUIAccess
protected void doAction() {
Map<PsiClass, String> parameterNames = new LinkedHashMap<PsiClass, String>();
Expand Down Expand Up @@ -158,10 +162,11 @@ protected void updateOnChanged(JList list) {
if (selectedValue != null) {
final PsiClassType psiType = (PsiClassType)selectedValue.getType();
final PsiClass targetClass = psiType.resolve();
UIUtil.setEnabled(myVisibilityPanel, targetClass != null && !targetClass.isInterface(), true);
UIUtil.setEnabled(TargetAWT.to(myVisibilityPanel.getComponent()), targetClass != null && !targetClass.isInterface(), true);
}
}

@Override
protected void doHelpAction() {
HelpManager.getInstance().invokeHelp(HelpID.MOVE_INSTANCE_METHOD);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ protected JPanel createListAndVisibilityPanels() {
gbConstraints.anchor = GridBagConstraints.NORTH;
gbConstraints.gridx++;
myVisibilityPanel = createVisibilityPanel();
hBox.add (myVisibilityPanel, gbConstraints);
hBox.add (TargetAWT.to(myVisibilityPanel.getComponent()), gbConstraints);
return hBox;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@
import consulo.ui.ex.RecentsManager;
import consulo.ui.ex.awt.Messages;
import consulo.ui.ex.awt.UIUtil;
import consulo.ui.ex.awtUnsafe.TargetAWT;
import consulo.undoRedo.CommandProcessor;
import consulo.usage.UsageViewUtil;
import consulo.util.lang.ref.Ref;
Expand Down Expand Up @@ -205,6 +206,7 @@ public void documentChanged(DocumentEvent e) {
}

@Override
@SuppressWarnings("unchecked")
protected JComponent createCenterPanel() {
JPanel panel = new JPanel(new BorderLayout());
final LocalizeValue title = RefactoringLocalize.moveMembersMembersToBeMovedBorderTitle();
Expand All @@ -218,7 +220,7 @@ protected JComponent createCenterPanel() {

myVisibilityPanel = new JavaVisibilityPanel(true, true);
myVisibilityPanel.setVisibility(null);
panel.add(myVisibilityPanel, BorderLayout.EAST);
panel.add(TargetAWT.to(myVisibilityPanel.getComponent()), BorderLayout.EAST);

return panel;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,134 +26,118 @@

import com.intellij.java.language.psi.PsiModifier;
import com.intellij.java.language.util.VisibilityUtil;
import consulo.ide.impl.idea.refactoring.ui.VisibilityPanelBase;
import consulo.language.editor.refactoring.localize.RefactoringLocalize;
import consulo.ui.ex.awt.IdeBorderFactory;
import consulo.ui.ex.awt.UIUtil;
import consulo.language.editor.ui.VisibilityPanelBase;
import consulo.ui.Component;
import consulo.ui.RadioButton;
import consulo.ui.ValueComponent;
import consulo.ui.ValueGroup;
import consulo.ui.annotation.RequiredUIAccess;
import consulo.ui.event.ComponentEventListener;
import consulo.ui.event.ValueComponentEvent;
import consulo.ui.layout.LabeledLayout;
import consulo.ui.layout.VerticalLayout;
import jakarta.annotation.Nonnull;
import jakarta.annotation.Nullable;

import javax.swing.*;
import javax.swing.event.ChangeEvent;
import java.awt.*;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;

public class JavaVisibilityPanel extends VisibilityPanelBase<String> {
private JRadioButton myRbAsIs;
private JRadioButton myRbEscalate;
private final JRadioButton myRbPrivate;
private final JRadioButton myRbProtected;
private final JRadioButton myRbPackageLocal;
private final JRadioButton myRbPublic;
private RadioButton myRbAsIs;
private RadioButton myRbEscalate;
private final RadioButton myRbPrivate;
private final RadioButton myRbProtected;
private final RadioButton myRbPackageLocal;
private final RadioButton myRbPublic;

private final LabeledLayout myLayout;

public JavaVisibilityPanel(boolean hasAsIs, final boolean hasEscalate) {
setBorder(IdeBorderFactory.createTitledBorder(
RefactoringLocalize.visibilityBorderTitle().get(),
true,
new Insets(
IdeBorderFactory.TITLED_BORDER_TOP_INSET,
UIUtil.DEFAULT_HGAP,
IdeBorderFactory.TITLED_BORDER_BOTTOM_INSET,
IdeBorderFactory.TITLED_BORDER_RIGHT_INSET
)
));
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
ButtonGroup bg = new ButtonGroup();

ItemListener listener = new ItemListener() {
public void itemStateChanged(ItemEvent e) {
if (e.getStateChange() == ItemEvent.SELECTED) {
myEventDispatcher.getMulticaster().stateChanged(new ChangeEvent(this));
}
}
VerticalLayout layout = VerticalLayout.create();

ValueGroup<Boolean> bg = ValueGroup.createBool();

ComponentEventListener<ValueComponent<Boolean>, ValueComponentEvent<Boolean>> listener = e -> {
myEventDispatcher.getMulticaster().visibilityChanged(this);
};

if (hasEscalate) {
myRbEscalate = new JRadioButton();
myRbEscalate.setText(RefactoringLocalize.visibilityEscalate().get());
myRbEscalate.addItemListener(listener);
add(myRbEscalate);
myRbEscalate = RadioButton.create(RefactoringLocalize.visibilityEscalate());
myRbEscalate.addValueListener(listener);
layout.add(myRbEscalate);
bg.add(myRbEscalate);
}

if (hasAsIs) {
myRbAsIs = new JRadioButton();
myRbAsIs.setText(RefactoringLocalize.visibilityAsIs().get());
myRbAsIs.addItemListener(listener);
add(myRbAsIs);
myRbAsIs = RadioButton.create(RefactoringLocalize.visibilityAsIs());
myRbAsIs.addValueListener(listener);
layout.add(myRbAsIs);
bg.add(myRbAsIs);
}


myRbPrivate = new JRadioButton();
myRbPrivate.setText(RefactoringLocalize.visibilityPrivate().get());
myRbPrivate.addItemListener(listener);
myRbPrivate.setFocusable(false);
add(myRbPrivate);
myRbPrivate = RadioButton.create(RefactoringLocalize.visibilityPrivate());
myRbPrivate.addValueListener(listener);
layout.add(myRbPrivate);
bg.add(myRbPrivate);

myRbPackageLocal = new JRadioButton();
myRbPackageLocal.setText(RefactoringLocalize.visibilityPackageLocal().get());
myRbPackageLocal.addItemListener(listener);
myRbPackageLocal.setFocusable(false);
add(myRbPackageLocal);
myRbPackageLocal = RadioButton.create(RefactoringLocalize.visibilityPackageLocal());
myRbPackageLocal.addValueListener(listener);
layout.add(myRbPackageLocal);
bg.add(myRbPackageLocal);

myRbProtected = new JRadioButton();
myRbProtected.setText(RefactoringLocalize.visibilityProtected().get());
myRbProtected.addItemListener(listener);
myRbProtected.setFocusable(false);
add(myRbProtected);
myRbProtected = RadioButton.create(RefactoringLocalize.visibilityProtected());
myRbProtected.addValueListener(listener);
layout.add(myRbProtected);
bg.add(myRbProtected);

myRbPublic = new JRadioButton();
myRbPublic.setText(RefactoringLocalize.visibilityPublic().get());
myRbPublic.addItemListener(listener);
myRbPublic.setFocusable(false);
add(myRbPublic);
myRbPublic = RadioButton.create(RefactoringLocalize.visibilityPublic());
myRbPublic.addValueListener(listener);
layout.add(myRbPublic);
bg.add(myRbPublic);
}

myLayout = LabeledLayout.create(RefactoringLocalize.visibilityBorderTitle(), layout);
}

@Override
@Nullable
@RequiredUIAccess
public String getVisibility() {
if (myRbPublic.isSelected()) {
if (myRbPublic.getValueOrError()) {
return PsiModifier.PUBLIC;
}
if (myRbPackageLocal.isSelected()) {
if (myRbPackageLocal.getValueOrError()) {
return PsiModifier.PACKAGE_LOCAL;
}
if (myRbProtected.isSelected()) {
if (myRbProtected.getValueOrError()) {
return PsiModifier.PROTECTED;
}
if (myRbPrivate.isSelected()) {
if (myRbPrivate.getValueOrError()) {
return PsiModifier.PRIVATE;
}
if (myRbEscalate != null && myRbEscalate.isSelected()) {
if (myRbEscalate != null && myRbEscalate.getValueOrError()) {
return VisibilityUtil.ESCALATE_VISIBILITY;
}

return null;
}

@Override
public void setVisibility(@Nullable String visibility) {
if (PsiModifier.PUBLIC.equals(visibility)) {
myRbPublic.setSelected(true);
myRbPublic.setValue(true);
}
else if (PsiModifier.PROTECTED.equals(visibility)) {
myRbProtected.setSelected(true);
myRbProtected.setValue(true);
}
else if (PsiModifier.PACKAGE_LOCAL.equals(visibility)) {
myRbPackageLocal.setSelected(true);
myRbPackageLocal.setValue(true);
}
else if (PsiModifier.PRIVATE.equals(visibility)) {
myRbPrivate.setSelected(true);
myRbPrivate.setValue(true);
}
else if (myRbEscalate != null) {
myRbEscalate.setSelected(true);
myRbEscalate.setValue(true);
}
else if (myRbAsIs != null) {
myRbAsIs.setSelected(true);
myRbAsIs.setValue(true);
}
}

Expand All @@ -168,6 +152,12 @@ public void disableAllButPublic() {
myRbAsIs.setEnabled(false);
}
myRbPublic.setEnabled(true);
myRbPublic.setSelected(true);
myRbPublic.setValue(true);
}

@Nonnull
@Override
public Component getComponent() {
return myLayout;
}
}

0 comments on commit eb9b982

Please sign in to comment.