package com.intellij.diff;
import com.intellij.openapi.ui.WindowWrapper;
-import com.intellij.openapi.util.BooleanGetter;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
-import javax.swing.*;
import java.awt.*;
public class DiffDialogHints {
@Nullable private final WindowWrapper.Mode myMode;
@Nullable private Component myParent;
- @Nullable private BooleanGetter myOkAction;
- @Nullable private BooleanGetter myCancelAction;
public DiffDialogHints(@Nullable WindowWrapper.Mode mode) {
this(mode, null);
myParent = value;
}
- public void setOkAction(@Nullable BooleanGetter value) {
- myOkAction = value;
- }
-
- public void setCancelAction(@Nullable BooleanGetter value) {
- myCancelAction = value;
- }
-
//
// Getters
//
public Component getParent() {
return myParent;
}
-
- @Nullable
- public BooleanGetter getOkAction() {
- return myOkAction;
- }
-
- @Nullable
- public BooleanGetter getCancelAction() {
- return myCancelAction;
- }
}
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.WindowWrapper.Mode;
-import com.intellij.openapi.util.BooleanGetter;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.text.StringUtil;
import org.jetbrains.annotations.NotNull;
@Nullable private JComponent myPreferredFocusedComponent;
@Nullable private String myDimensionServiceKey;
@Nullable private Runnable myOnShowCallback;
- @Nullable private BooleanGetter myOkAction;
- @Nullable private BooleanGetter myCancelAction;
public WindowWrapperBuilder(@NotNull Mode mode, @NotNull JComponent component) {
myMode = mode;
return this;
}
- @NotNull
- public WindowWrapperBuilder setOkAction(@Nullable BooleanGetter value) {
- myOkAction = value;
- return this;
- }
-
- @NotNull
- public WindowWrapperBuilder setCancelAction(@Nullable BooleanGetter value) {
- myCancelAction = value;
- return this;
- }
-
@NotNull
public WindowWrapper build() {
switch (myMode) {
myDialog = builder.myParent != null
? new MyDialogWrapper(builder.myParent, builder.myComponent)
: new MyDialogWrapper(builder.myProject, builder.myComponent);
- myDialog.setParameters(builder.myDimensionServiceKey,
- builder.myPreferredFocusedComponent,
- builder.myOkAction,
- builder.myCancelAction);
+ myDialog.setParameters(builder.myDimensionServiceKey, builder.myPreferredFocusedComponent);
final Runnable onShowCallback = builder.myOnShowCallback;
if (onShowCallback != null) {
@Override
public void close() {
- myDialog.getCancelAction().actionPerformed(null);
+ myDialog.close(DialogWrapper.CANCEL_EXIT_CODE);
}
private static class MyDialogWrapper extends DialogWrapper {
@NotNull private JComponent myComponent;
@Nullable private String myDimensionServiceKey;
@Nullable private JComponent myPreferredFocusedComponent;
- @Nullable private BooleanGetter myOkAction;
- @Nullable private BooleanGetter myCancelAction;
public MyDialogWrapper(@Nullable Project project, @NotNull JComponent component) {
super(project, true);
}
public void setParameters(@Nullable String dimensionServiceKey,
- @Nullable JComponent preferredFocusedComponent,
- @Nullable BooleanGetter okAction,
- @Nullable BooleanGetter cancelAction) {
+ @Nullable JComponent preferredFocusedComponent) {
myDimensionServiceKey = dimensionServiceKey;
myPreferredFocusedComponent = preferredFocusedComponent;
- myOkAction = okAction;
- myCancelAction = cancelAction;
}
@Nullable
@Override
protected Border createContentPaneBorder() {
- if (myOkAction == null && myCancelAction == null) return null;
- return super.createContentPaneBorder();
+ return null;
}
@Override
@NotNull
@Override
protected Action[] createActions() {
- if (myOkAction == null && myCancelAction == null) return new Action[0];
- return super.createActions();
- }
-
- @Override
- protected void doOKAction() {
- if (myOkAction == null || myOkAction.get()) super.doOKAction();
- }
-
- @Override
- public void doCancelAction() {
- if (myCancelAction == null || myCancelAction.get()) super.doCancelAction();
+ return new Action[0];
}
@Nullable
@Override
protected JComponent createSouthPanel() {
- if (myOkAction == null && myCancelAction == null) return null;
- return super.createSouthPanel();
+ return null;
}
@Nullable
public FrameWindowWrapper(@NotNull WindowWrapperBuilder builder) {
assert builder.myMode == Mode.FRAME;
- if (builder.myOkAction != null || builder.myCancelAction != null) throw new IllegalArgumentException();
myProject = builder.myProject;
myComponent = builder.myComponent;