hide color schemes preview by default

This commit is contained in:
Dennis Ushakov
2011-12-02 18:13:16 +04:00
parent d8767a6c5d
commit 241a0f7d2b
2 changed files with 107 additions and 27 deletions
@@ -78,13 +78,10 @@
</grid>
</constraints>
<properties/>
<clientProperties>
<caretAspectRatio class="java.lang.Float" value="0.04"/>
</clientProperties>
</component>
</children>
</grid>
<grid id="229b8" binding="myColorPreviewPanel" layout-manager="BorderLayout" hgap="0" vgap="0">
<grid id="229b8" binding="myColorPreviewPanel" custom-create="true" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints>
<grid row="2" column="0" row-span="1" col-span="2" vsize-policy="7" hsize-policy="7" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
@@ -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();
}
}