Skip to content

Commit

Permalink
fix mnemonic problems
Browse files Browse the repository at this point in the history
  • Loading branch information
VISTALL committed Jul 30, 2024
1 parent ab815c5 commit 9c4cf79
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 83 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,12 @@
import consulo.ide.impl.idea.ide.util.PropertiesComponent;
import consulo.language.editor.localize.CodeInsightLocalize;
import consulo.project.Project;
import consulo.ui.CheckBox;
import consulo.ui.Label;
import consulo.ui.annotation.RequiredUIAccess;
import consulo.ui.ex.awt.*;
import consulo.ui.ex.awt.event.DocumentAdapter;
import consulo.ui.ex.awtUnsafe.TargetAWT;
import jakarta.annotation.Nullable;
import org.jetbrains.annotations.NonNls;

Expand All @@ -43,7 +46,7 @@ public class CreateFieldFromParameterDialog extends DialogWrapper {
private final boolean myFieldMayBeFinal;

private JComponent myNameField;
private JCheckBox myCbFinal;
private CheckBox myCbFinal;
private static final @NonNls String PROPERTY_NAME = "CREATE_FIELD_FROM_PARAMETER_DECLARE_FINAL";
private TypeSelector myTypeSelector;

Expand All @@ -69,7 +72,7 @@ public CreateFieldFromParameterDialog(
@Override
protected void doOKAction() {
if (myCbFinal.isEnabled()) {
PropertiesComponent.getInstance().setValue(PROPERTY_NAME, String.valueOf(myCbFinal.isSelected()));
PropertiesComponent.getInstance().setValue(PROPERTY_NAME, String.valueOf(myCbFinal.getValueOrError()));
}

final PsiField[] fields = myTargetClass.getFields();
Expand Down Expand Up @@ -103,7 +106,7 @@ public String getEnteredName() {
}

public boolean isDeclareFinal() {
return myCbFinal.isEnabled() && myCbFinal.isSelected();
return myCbFinal.isEnabled() && myCbFinal.getValueOrError();
}

@Override
Expand Down Expand Up @@ -180,8 +183,8 @@ protected void textChanged(DocumentEvent e) {
gbConstraints.weighty = 1;
gbConstraints.gridx = 0;
gbConstraints.gridy = 0;
final JLabel typeLabel = new JLabel(CodeInsightLocalize.dialogCreateFieldFromParameterFieldTypeLabel().get());
panel.add(typeLabel, gbConstraints);
final Label typeLabel = Label.create(CodeInsightLocalize.dialogCreateFieldFromParameterFieldTypeLabel());
panel.add(TargetAWT.to(typeLabel), gbConstraints);
gbConstraints.gridx = 1;
if (myTypes.length > 1) {
myTypeSelector = new TypeSelector(myProject);
Expand All @@ -197,8 +200,8 @@ protected void textChanged(DocumentEvent e) {
gbConstraints.weighty = 1;
gbConstraints.gridx = 0;
gbConstraints.gridy = 1;
JLabel namePrompt = new JLabel(CodeInsightLocalize.dialogCreateFieldFromParameterFieldNameLabel().get());
panel.add(namePrompt, gbConstraints);
Label namePrompt = Label.create(CodeInsightLocalize.dialogCreateFieldFromParameterFieldNameLabel());
panel.add(TargetAWT.to(namePrompt), gbConstraints);

gbConstraints.gridwidth = 1;
gbConstraints.weightx = 1;
Expand All @@ -221,18 +224,18 @@ protected JComponent createCenterPanel() {
gbConstraints.gridy = 0;
gbConstraints.insets = JBUI.emptyInsets();

myCbFinal = new JCheckBox(CodeInsightLocalize.dialogCreateFieldFromParameterDeclareFinalCheckbox().get());
myCbFinal = CheckBox.create(CodeInsightLocalize.dialogCreateFieldFromParameterDeclareFinalCheckbox());
if (myFieldMayBeFinal) {
myCbFinal.setSelected(PropertiesComponent.getInstance().isTrueValue(PROPERTY_NAME));
myCbFinal.setValue(PropertiesComponent.getInstance().isTrueValue(PROPERTY_NAME));
}
else {
myCbFinal.setSelected(false);
myCbFinal.setValue(false);
myCbFinal.setEnabled(false);
}

gbConstraints.gridy++;
panel.add(myCbFinal, gbConstraints);
myCbFinal.addActionListener(e -> {
panel.add(TargetAWT.to(myCbFinal), gbConstraints);
myCbFinal.addValueListener(e -> {
requestFocusInNameWindow();
if (myCbFinal.isEnabled()) {
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,31 +26,33 @@
import com.intellij.java.language.psi.util.TypeConversionUtil;
import consulo.application.ApplicationManager;
import consulo.application.Result;
import consulo.application.ui.NonFocusableSetting;
import consulo.codeEditor.Editor;
import consulo.codeEditor.ScrollType;
import consulo.document.Document;
import consulo.document.RangeMarker;
import consulo.language.codeStyle.CodeStyleManager;
import consulo.language.editor.WriteCommandAction;
import consulo.language.editor.localize.CodeInsightLocalize;
import consulo.language.editor.refactoring.ResolveSnapshotProvider;
import consulo.language.editor.refactoring.introduce.inplace.InplaceVariableIntroducer;
import consulo.language.editor.template.TemplateBuilder;
import consulo.language.psi.*;
import consulo.language.psi.util.PsiTreeUtil;
import consulo.project.Project;
import consulo.ui.CheckBox;
import consulo.ui.ex.action.Shortcut;
import consulo.ui.ex.awt.NonFocusableCheckBox;
import consulo.ui.ex.awt.JBUI;
import consulo.ui.ex.awtUnsafe.TargetAWT;
import consulo.ui.ex.keymap.Keymap;
import consulo.ui.ex.keymap.KeymapManager;
import consulo.ui.ex.keymap.util.KeymapUtil;
import consulo.util.lang.Comparing;
import jakarta.annotation.Nonnull;

import jakarta.annotation.Nullable;

import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;

Expand All @@ -62,7 +64,7 @@ public class JavaVariableInplaceIntroducer extends InplaceVariableIntroducer<Psi
protected final Project myProject;
private final SmartPsiElementPointer<PsiDeclarationStatement> myPointer;

private JCheckBox myCanBeFinalCb;
private CheckBox myCanBeFinalCb;

private final boolean myCantChangeFinalModifier;
private final String myTitle;
Expand Down Expand Up @@ -113,6 +115,7 @@ protected void beforeTemplateStart() {
myConflictResolver = resolveSnapshotProvider != null ? resolveSnapshotProvider.createSnapshot(myScope) : null;
}

@Override
@Nullable
protected PsiVariable getVariable() {
final PsiDeclarationStatement declarationStatement = myPointer.getElement();
Expand Down Expand Up @@ -153,6 +156,7 @@ protected void moveOffsetAfter(boolean success) {
myEditor.getCaretModel().moveToOffset(startOffset);
myEditor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE);
ApplicationManager.getApplication().runWriteAction(new Runnable() {
@Override
public void run() {
if (psiVariable.getInitializer() != null) {
appendTypeCasts(getOccurrenceMarkers(), file, myProject, psiVariable);
Expand All @@ -169,36 +173,34 @@ public void run() {
myEditor.getScrollingModel().scrollToCaret(ScrollType.MAKE_VISIBLE);
}
if (myExpressionText != null) {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
final PsiDeclarationStatement element = myPointer.getElement();
if (element != null) {
final PsiElement[] vars = element.getDeclaredElements();
if (vars.length > 0 && vars[0] instanceof PsiVariable) {
final PsiFile containingFile = element.getContainingFile();
//todo pull up method restore state
final PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(myProject);
final RangeMarker exprMarker = getExprMarker();
if (exprMarker != null) {
myExpr = AbstractJavaInplaceIntroducer.restoreExpression(containingFile, (PsiVariable) vars[0], elementFactory, exprMarker, myExpressionText);
if (myExpr != null && myExpr.isPhysical()) {
myExprMarker = createMarker(myExpr);
}
}
List<RangeMarker> markers = getOccurrenceMarkers();
for (RangeMarker occurrenceMarker : markers) {
if (getExprMarker() != null && occurrenceMarker.getStartOffset() == getExprMarker().getStartOffset() && myExpr != null) {
continue;
}
AbstractJavaInplaceIntroducer
.restoreExpression(containingFile, (PsiVariable) vars[0], elementFactory, occurrenceMarker, myExpressionText);
ApplicationManager.getApplication().runWriteAction(() -> {
final PsiDeclarationStatement element = myPointer.getElement();
if (element != null) {
final PsiElement[] vars = element.getDeclaredElements();
if (vars.length > 0 && vars[0] instanceof PsiVariable) {
final PsiFile containingFile = element.getContainingFile();
//todo pull up method restore state
final PsiElementFactory elementFactory = JavaPsiFacade.getElementFactory(myProject);
final RangeMarker exprMarker1 = getExprMarker();
if (exprMarker1 != null) {
myExpr = AbstractJavaInplaceIntroducer.restoreExpression(containingFile, (PsiVariable) vars[0], elementFactory, exprMarker1, myExpressionText);
if (myExpr != null && myExpr.isPhysical()) {
myExprMarker = createMarker(myExpr);
}
final PsiExpression initializer = ((PsiVariable) vars[0]).getInitializer();
if (initializer != null && Comparing.strEqual(initializer.getText(), myExpressionText) && myExpr == null) {
element.replace(JavaPsiFacade.getInstance(myProject).getElementFactory().createStatementFromText(myExpressionText, element));
} else {
element.delete();
}
List<RangeMarker> markers = getOccurrenceMarkers();
for (RangeMarker occurrenceMarker : markers) {
if (getExprMarker() != null && occurrenceMarker.getStartOffset() == getExprMarker().getStartOffset() && myExpr != null) {
continue;
}
AbstractJavaInplaceIntroducer
.restoreExpression(containingFile, (PsiVariable) vars[0], elementFactory, occurrenceMarker, myExpressionText);
}
final PsiExpression initializer = ((PsiVariable) vars[0]).getInitializer();
if (initializer != null && Comparing.strEqual(initializer.getText(), myExpressionText) && myExpr == null) {
element.replace(JavaPsiFacade.getInstance(myProject).getElementFactory().createStatementFromText(myExpressionText, element));
} else {
element.delete();
}
}
}
Expand All @@ -216,43 +218,40 @@ public void run() {
}


@Override
@Nullable
protected JComponent getComponent() {
if (!myCantChangeFinalModifier) {
myCanBeFinalCb = new NonFocusableCheckBox("Declare final");
myCanBeFinalCb.setSelected(createFinals());
myCanBeFinalCb.setMnemonic('f');
myCanBeFinalCb = CheckBox.create(CodeInsightLocalize.dialogCreateFieldFromParameterDeclareFinalCheckbox());
NonFocusableSetting.initFocusability(myCanBeFinalCb);
myCanBeFinalCb.setValue(createFinals());
final FinalListener finalListener = new FinalListener(myEditor);
myCanBeFinalCb.addActionListener(new ActionListener() {
myCanBeFinalCb.addValueListener(e -> new WriteCommandAction(myProject, getCommandName(), getCommandName()) {
@Override
public void actionPerformed(ActionEvent e) {
new WriteCommandAction(myProject, getCommandName(), getCommandName()) {
@Override
protected void run(Result result) throws Throwable {
PsiDocumentManager.getInstance(myProject).commitDocument(myEditor.getDocument());
final PsiVariable variable = getVariable();
if (variable != null) {
finalListener.perform(myCanBeFinalCb.isSelected(), variable);
}
}
}.execute();
protected void run(Result result) throws Throwable {
PsiDocumentManager.getInstance(myProject).commitDocument(myEditor.getDocument());
final PsiVariable variable = getVariable();
if (variable != null) {
finalListener.perform(myCanBeFinalCb.getValueOrError(), variable);
}
}
});
}.execute());
} else {
return null;
}
final JPanel panel = new JPanel(new GridBagLayout());
panel.setBorder(null);

if (myCanBeFinalCb != null) {
panel.add(myCanBeFinalCb, new GridBagConstraints(0, 1, 1, 1, 1, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, new Insets(5, 5, 5, 5), 0, 0));
panel.add(TargetAWT.to(myCanBeFinalCb), new GridBagConstraints(0, 1, 1, 1, 1, 0, GridBagConstraints.NORTHWEST, GridBagConstraints.HORIZONTAL, JBUI.insets(5), 0, 0));
}

panel.add(Box.createVerticalBox(), new GridBagConstraints(0, 2, 1, 1, 1, 1, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, new Insets(0, 0, 0, 0), 0, 0));
panel.add(Box.createVerticalBox(), new GridBagConstraints(0, 2, 1, 1, 1, 1, GridBagConstraints.NORTHWEST, GridBagConstraints.BOTH, JBUI.emptyInsets(), 0, 0));

return panel;
}

@Override
protected void addAdditionalVariables(TemplateBuilder builder) {
final PsiTypeElement typeElement = getVariable().getTypeElement();
builder.replaceElement(typeElement, "Variable_Type", AbstractJavaInplaceIntroducer.createExpression(myExpression, typeElement.getText()), true, true);
Expand Down Expand Up @@ -332,30 +331,14 @@ public static void adjustLine(final PsiVariable psiVariable, final Document docu
final int modifierListOffset = psiVariable.getTextRange().getStartOffset();
final int varLineNumber = document.getLineNumber(modifierListOffset);

ApplicationManager.getApplication().runWriteAction(new Runnable() { //adjust line indent if final was inserted and then deleted

public void run() {
PsiDocumentManager.getInstance(psiVariable.getProject()).doPostponedOperationsAndUnblockDocument(document);
CodeStyleManager.getInstance(psiVariable.getProject()).adjustLineIndent(document, document.getLineStartOffset(varLineNumber));
}
//adjust line indent if final was inserted and then deleted
ApplicationManager.getApplication().runWriteAction(() -> {
PsiDocumentManager.getInstance(psiVariable.getProject()).doPostponedOperationsAndUnblockDocument(document);
CodeStyleManager.getInstance(psiVariable.getProject()).adjustLineIndent(document, document.getLineStartOffset(varLineNumber));
});
}


protected String getTitle() {
return myTitle;
}


@Nullable
private static String getAdvertisementText(final boolean hasTypeSuggestion) {
final Keymap keymap = KeymapManager.getInstance().getActiveKeymap();
if (hasTypeSuggestion) {
final Shortcut[] shortcuts = keymap.getShortcuts("PreviousTemplateVariable");
if (shortcuts.length > 0) {
return "Press " + shortcuts[0] + " to change type";
}
}
return null;
}
}

0 comments on commit 9c4cf79

Please sign in to comment.