diff --git a/images/src/org/intellij/images/editor/actions/BackgroundImageDialog.form b/images/src/org/intellij/images/editor/actions/BackgroundImageDialog.form
index 53726119a5d0..fe9f5cde2360 100644
--- a/images/src/org/intellij/images/editor/actions/BackgroundImageDialog.form
+++ b/images/src/org/intellij/images/editor/actions/BackgroundImageDialog.form
@@ -3,7 +3,7 @@
-
+
@@ -16,7 +16,7 @@
-
+
@@ -26,13 +26,13 @@
-
+
-
+
@@ -40,7 +40,7 @@
-
+
@@ -48,7 +48,7 @@
-
+
@@ -57,7 +57,7 @@
-
+
@@ -66,7 +66,7 @@
-
+
@@ -74,64 +74,46 @@
-
+
-
-
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/images/src/org/intellij/images/editor/actions/BackgroundImageDialog.java b/images/src/org/intellij/images/editor/actions/BackgroundImageDialog.java
index cf09a2ae3fc8..eccadcb5107d 100644
--- a/images/src/org/intellij/images/editor/actions/BackgroundImageDialog.java
+++ b/images/src/org/intellij/images/editor/actions/BackgroundImageDialog.java
@@ -17,6 +17,7 @@ package org.intellij.images.editor.actions;
import com.intellij.application.options.colors.ColorAndFontOptions;
import com.intellij.application.options.colors.SimpleEditorPreview;
+import com.intellij.icons.AllIcons;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.*;
@@ -38,6 +39,7 @@ import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.wm.impl.IdeBackgroundUtil;
import com.intellij.ui.*;
import com.intellij.ui.components.JBCheckBox;
+import com.intellij.ui.components.JBLabel;
import com.intellij.ui.components.JBPanelWithEmptyText;
import com.intellij.util.ArrayUtil;
import com.intellij.util.ObjectUtils;
@@ -85,12 +87,14 @@ public class BackgroundImageDialog extends DialogWrapper {
private JPanel myPreviewPanel;
private ComboboxWithBrowseButton myPathField;
private JBCheckBox myThisProjectOnlyCb;
- private JBCheckBox myFlipHorCb;
- private JBCheckBox myFlipVerCb;
+ private JPanel myFlipPanel;
private JPanel myAnchorPanel;
private JPanel myFillPanel;
private JPanel myTargetPanel;
+ private final JBCheckBox myFlipHorCb = new JBCheckBox();
+ private final JBCheckBox myFlipVerCb = new JBCheckBox();
+
boolean myAdjusting;
private final Map myResults = ContainerUtil.newHashMap();
@@ -130,7 +134,7 @@ public class BackgroundImageDialog extends DialogWrapper {
}
private void createUIComponents() {
- ComboBox comboBox = new ComboBox<>(new CollectionComboBoxModel(), 100);
+ ComboBox comboBox = new ComboBox<>(new CollectionComboBoxModel<>(), 100);
myPathField = new ComboboxWithBrowseButton(comboBox);
}
@@ -219,8 +223,9 @@ public class BackgroundImageDialog extends DialogWrapper {
toolbarComponent.setBorder(JBUI.Borders.empty());
myTargetPanel.add(toolbarComponent);
- myAnchorPanel.add(createAnchorPanel(myAnchorGroup), BorderLayout.CENTER);
- myFillPanel.add(createFillPanel(myFillGroup, getDisposable()), BorderLayout.CENTER);
+ initFlipPanel(myFlipPanel, myFlipHorCb, myFlipVerCb);
+ initAnchorPanel(myAnchorPanel, myAnchorGroup);
+ initFillPanel(myFillPanel, myFillGroup, getDisposable());
((CardLayout)myPreviewPanel.getLayout()).show(myPreviewPanel, EDITOR);
myPathField.getComboBox().setEditable(true);
FileChooserDescriptor descriptor = new FileChooserDescriptor(true, false, false, false, true, false)
@@ -467,24 +472,36 @@ public class BackgroundImageDialog extends DialogWrapper {
return ColorUtil.mix(UIUtil.getListSelectionBackground(), UIUtil.getLabelBackground(), UIUtil.isUnderDarcula() ? .5 : .75);
}
- @NotNull
- private static JPanel createAnchorPanel(@NotNull ButtonGroup buttonGroup) {
+ private static void initFlipPanel(@NotNull JPanel p, @NotNull JBCheckBox flipHorCb, @NotNull JBCheckBox flipVerCb) {
+ flipHorCb.setToolTipText("Flip vertically");
+ flipVerCb.setToolTipText("Flip horizontally");
+ p.setLayout(new GridLayout(1, 2, 1, 1));
+ Color color = getSelectionBackground();
+ JBPanelWithEmptyText h = addClickablePanel(p, flipHorCb, color);
+ JBPanelWithEmptyText v = addClickablePanel(p, flipVerCb, color);
+ h.setLayout(new BorderLayout());
+ h.add(new JBLabel(AllIcons.Actions.SplitVertically), BorderLayout.CENTER);
+ v.setLayout(new BorderLayout());
+ v.add(new JBLabel(AllIcons.Actions.SplitHorizontally), BorderLayout.CENTER);
+ }
+
+ private static void initAnchorPanel(@NotNull JPanel p, @NotNull ButtonGroup buttonGroup) {
IdeBackgroundUtil.Anchor[] values = IdeBackgroundUtil.Anchor.values();
String[] names = new String[values.length];
for (int i = 0; i < names.length; i++) {
names[i] = values[i].name().replace('_', '-').toLowerCase(Locale.ENGLISH);
}
Color color = getSelectionBackground();
- JPanel buttonPanel = new JPanel(new GridLayout(3, 3, 1, 1));
+ p.setLayout(new GridLayout(3, 3, 1, 1));
for (int i = 0; i < names.length; i ++) {
JRadioButton button = new JRadioButton(names[i], values[i] == IdeBackgroundUtil.Anchor.CENTER);
- addClickablePanel(buttonPanel, buttonGroup, button, color);
+ button.setToolTipText(StringUtil.capitalize(button.getText().replace('-', ' ')));
+ buttonGroup.add(button);
+ addClickablePanel(p, button, color);
}
- return buttonPanel;
}
- @NotNull
- private static JPanel createFillPanel(@NotNull ButtonGroup buttonGroup, @NotNull Disposable disposable) {
+ private static void initFillPanel(@NotNull JPanel p, @NotNull ButtonGroup buttonGroup, @NotNull Disposable disposable) {
Fill[] values = Fill.values();
String[] names = new String[values.length];
BufferedImage image = sampleImage();
@@ -492,14 +509,15 @@ public class BackgroundImageDialog extends DialogWrapper {
names[i] = values[i].name().replace('_', '-').toLowerCase(Locale.ENGLISH);
}
Color color = getSelectionBackground();
- JPanel buttonPanel = new JPanel(new GridLayout(1, values.length, 1, 1));
+ p.setLayout(new GridLayout(1, values.length, 1, 1));
for (int i = 0; i < values.length; i ++) {
- JRadioButton radioButton = new JRadioButton(names[i], values[i] == Fill.SCALE);
- JBPanelWithEmptyText clickablePanel = addClickablePanel(buttonPanel, buttonGroup, radioButton, color);
+ JRadioButton button = new JRadioButton(names[i], values[i] == Fill.SCALE);
+ buttonGroup.add(button);
+ button.setToolTipText(StringUtil.capitalize(button.getText().replace('-', ' ')));
+ JBPanelWithEmptyText clickablePanel = addClickablePanel(p, button, color);
createTemporaryBackgroundTransform(
clickablePanel, image, values[i], IdeBackgroundUtil.Anchor.CENTER, 1f, JBUI.insets(2), disposable);
}
- return buttonPanel;
}
@NotNull
@@ -517,9 +535,9 @@ public class BackgroundImageDialog extends DialogWrapper {
return image;
}
+ @NotNull
private static JBPanelWithEmptyText addClickablePanel(@NotNull JPanel buttonPanel,
- @NotNull ButtonGroup buttonGroup,
- @NotNull JRadioButton button,
+ @NotNull JToggleButton button,
@NotNull Color color) {
JBPanelWithEmptyText panel = new JBPanelWithEmptyText() {
@@ -551,18 +569,18 @@ public class BackgroundImageDialog extends DialogWrapper {
return true;
}
};
+ //panel.putClientProperty(JComponent.TOOL_TIP_TEXT_KEY, button.getToolTipText());
panel.getEmptyText().clear();
new ClickListener() {
@Override
public boolean onClick(@NotNull MouseEvent event, int clickCount) {
- button.setSelected(true);
+ button.setSelected(button instanceof JRadioButton || !button.isSelected());
buttonPanel.invalidate();
buttonPanel.repaint();
return true;
}
}.installOn(panel);
panel.setBorder(BorderFactory.createLineBorder(color));
- buttonGroup.add(button);
buttonPanel.add(panel);
return panel;
}