diff --git a/platform/lang-impl/src/com/intellij/application/options/InitialConfigurationDialog.form b/platform/lang-impl/src/com/intellij/application/options/InitialConfigurationDialog.form
index e20980b79e23..7e58747e85f9 100644
--- a/platform/lang-impl/src/com/intellij/application/options/InitialConfigurationDialog.form
+++ b/platform/lang-impl/src/com/intellij/application/options/InitialConfigurationDialog.form
@@ -78,13 +78,10 @@
-
-
-
-
+
diff --git a/platform/lang-impl/src/com/intellij/application/options/InitialConfigurationDialog.java b/platform/lang-impl/src/com/intellij/application/options/InitialConfigurationDialog.java
index 689e77a96872..343dc30cb0c8 100644
--- a/platform/lang-impl/src/com/intellij/application/options/InitialConfigurationDialog.java
+++ b/platform/lang-impl/src/com/intellij/application/options/InitialConfigurationDialog.java
@@ -36,7 +36,10 @@ import com.intellij.openapi.progress.ProgressManager;
import com.intellij.openapi.progress.Task;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.DialogWrapper;
+import com.intellij.openapi.util.IconLoader;
import com.intellij.openapi.util.SystemInfo;
+import com.intellij.openapi.vcs.changes.RefreshablePanel;
+import com.intellij.ui.AbstractTitledSeparatorWithIcon;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
@@ -62,6 +65,7 @@ public class InitialConfigurationDialog extends DialogWrapper {
private String myColorSettingsPage;
private SimpleEditorPreview myPreviewEditor;
private ColorAndFontOptions myPreviewOptions;
+ private MyColorPreviewPanel myHidingPreviewPanel;
public InitialConfigurationDialog(Component parent, String colorSettingsPage) {
super(parent, true);
@@ -108,10 +112,10 @@ public class InitialConfigurationDialog extends DialogWrapper {
myColorSchemeComboBox.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
- updateColorSchemePreview();
+ if (myHidingPreviewPanel != null) myHidingPreviewPanel.updateColorSchemePreview(true);
}
});
- updateColorSchemePreview();
+ setResizable(false);
init();
final boolean canCreateLauncherScript = CreateLauncherScriptAction.isAvailable();
@@ -142,6 +146,106 @@ public class InitialConfigurationDialog extends DialogWrapper {
}
}
+ private void createUIComponents() {
+ myColorPreviewPanel = new AbstractTitledSeparatorWithIcon(IconLoader.getIcon("/general/comboArrowRight.png"),
+ IconLoader.getIcon("/general/comboArrowRightPassive.png"),
+ "Click to preview", true, false) {
+ @Override
+ protected RefreshablePanel createPanel() {
+ myHidingPreviewPanel = new MyColorPreviewPanel(myWrapper);
+ return myHidingPreviewPanel;
+ }
+
+ @Override
+ protected void onImpl() {
+ myWrapper.setVisible(true);
+ initDetails();
+ myLabel.setIcon(myIconOpen);
+ myOn = true;
+ final InitialConfigurationDialog dialog = InitialConfigurationDialog.this;
+ dialog.setSize(dialog.getSize().width, dialog.getSize().height + myWrapper.getPreferredSize().height);
+ dialog.getRootPane().revalidate();
+ dialog.getRootPane().repaint();
+ }
+
+ @Override
+ protected void offImpl() {
+ myLabel.setIcon(myIcon);
+ final InitialConfigurationDialog dialog = InitialConfigurationDialog.this;
+ dialog.setSize(dialog.getSize().width, dialog.getSize().height - myWrapper.getPreferredSize().height);
+ dialog.getRootPane().revalidate();
+ dialog.getRootPane().repaint();
+ myWrapper.removeAll();
+ myWrapper.setVisible(false);
+ myOn = false;
+ }
+ };
+ }
+
+ private class MyColorPreviewPanel extends JPanel implements RefreshablePanel {
+ private final JPanel myWrapper;
+
+ public MyColorPreviewPanel(JPanel wrapper) {
+ super(new BorderLayout());
+ myWrapper = wrapper;
+ updateColorSchemePreview(false);
+ }
+
+ @Override
+ public boolean refreshDataSynch() {
+ return false;
+ }
+
+ @Override
+ public void dataChanged() {}
+
+ @Override
+ public void refresh() {
+ updateColorSchemePreview(false);
+ }
+
+ @Override
+ public JPanel getPanel() {
+ return (JPanel)myPreviewEditor.getPanel();
+ }
+
+ @Override
+ public void away() {}
+
+ @Override
+ public void dispose() {
+ myPreviewEditor.disposeUIResources();
+ myPreviewOptions.disposeUIResources();
+ }
+
+ public void updateColorSchemePreview(final boolean recalculateDialogSize) {
+ if (!myWrapper.isVisible()) return;
+
+ int wrapperHeight = 0;
+ if (myPreviewEditor != null) {
+ wrapperHeight = myWrapper.getPreferredSize().height;
+ myPreviewEditor.disposeUIResources();
+ myWrapper.removeAll();
+ }
+ if (myPreviewOptions == null) {
+ myPreviewOptions = new ColorAndFontOptions();
+ }
+ myPreviewOptions.reset();
+ myPreviewOptions.selectScheme(((EditorColorsScheme)myColorSchemeComboBox.getSelectedItem()).getName());
+ final NewColorAndFontPanel page = myPreviewOptions.findPage(myColorSettingsPage);
+ assert page != null;
+ myPreviewEditor = new SimpleEditorPreview(myPreviewOptions, page.getSettingsPage(), false);
+ myPreviewEditor.updateView();
+ myWrapper.add(myPreviewEditor.getPanel(), BorderLayout.CENTER);
+ if (recalculateDialogSize) {
+ final InitialConfigurationDialog dialog = InitialConfigurationDialog.this;
+ dialog.setSize(dialog.getSize().width, dialog.getSize().height - wrapperHeight + myWrapper.getPreferredSize().height);
+ dialog.getRootPane().revalidate();
+ dialog.getRootPane().repaint();
+ }
+ }
+ }
+
private static boolean matchesPlatform(Keymap keymap) {
if (keymap.getName().equals(KeymapManager.DEFAULT_IDEA_KEYMAP)) {
return !SystemInfo.isMac;
@@ -156,25 +260,6 @@ public class InitialConfigurationDialog extends DialogWrapper {
return true;
}
- private void updateColorSchemePreview() {
- if (myPreviewEditor != null) {
- myColorPreviewPanel.remove(myPreviewEditor.getPanel());
- myPreviewEditor.disposeUIResources();
- }
- if (myPreviewOptions == null) {
- myPreviewOptions = new ColorAndFontOptions();
- }
- myPreviewOptions.reset();
- myPreviewOptions.selectScheme(((EditorColorsScheme)myColorSchemeComboBox.getSelectedItem()).getName());
- final NewColorAndFontPanel page = myPreviewOptions.findPage(myColorSettingsPage);
- assert page != null;
- myPreviewEditor = new SimpleEditorPreview(myPreviewOptions, page.getSettingsPage(), false);
- myPreviewEditor.updateView();
- myColorPreviewPanel.add(myPreviewEditor.getPanel(), BorderLayout.CENTER);
- myColorPreviewPanel.revalidate();
- myColorPreviewPanel.repaint();
- }
-
protected JComponent createCenterPanel() {
return myMainPanel;
}
@@ -219,8 +304,6 @@ public class InitialConfigurationDialog extends DialogWrapper {
@Override
public void doCancelAction() {
- myPreviewEditor.disposeUIResources();
- myPreviewOptions.disposeUIResources();
super.doCancelAction();
}
}