mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
move initial configuration dialog to platform
This commit is contained in:
+70
@@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="com.intellij.application.options.InitialConfigurationDialog">
|
||||
<grid id="27dc6" binding="myMainPanel" layout-manager="GridLayoutManager" row-count="4" column-count="3" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
|
||||
<margin top="0" left="0" bottom="0" right="0"/>
|
||||
<constraints>
|
||||
<xy x="20" y="20" width="500" height="400"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<component id="9a864" class="javax.swing.JLabel">
|
||||
<constraints>
|
||||
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<labelFor value="d7106"/>
|
||||
<text value="Keyboard Shortcuts Scheme:"/>
|
||||
</properties>
|
||||
</component>
|
||||
<vspacer id="fd0af">
|
||||
<constraints>
|
||||
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
</vspacer>
|
||||
<component id="9f9cd" class="javax.swing.JLabel">
|
||||
<constraints>
|
||||
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<labelFor value="f7d28"/>
|
||||
<text value="Color Scheme:"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="d7106" class="javax.swing.JComboBox" binding="myKeymapComboBox" default-binding="true">
|
||||
<constraints>
|
||||
<grid row="0" column="1" row-span="1" col-span="2" vsize-policy="0" hsize-policy="2" anchor="8" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
</component>
|
||||
<component id="f7d28" class="javax.swing.JComboBox" binding="myColorSchemeComboBox" default-binding="true">
|
||||
<constraints>
|
||||
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="2" anchor="8" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
</component>
|
||||
<component id="978ed" class="javax.swing.JLabel">
|
||||
<constraints>
|
||||
<grid row="2" column="0" row-span="1" col-span="2" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="You can use the Settings dialog to configure any of these settings later."/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="d63d7" class="javax.swing.JButton" binding="myPreviewButton" default-binding="true">
|
||||
<constraints>
|
||||
<grid row="1" column="2" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
|
||||
</constraints>
|
||||
<properties>
|
||||
<text value="Preview"/>
|
||||
</properties>
|
||||
</component>
|
||||
</children>
|
||||
</grid>
|
||||
<buttonGroups>
|
||||
<group name="buttonGroup1">
|
||||
<member id="a58"/>
|
||||
<member id="e7ab9"/>
|
||||
</group>
|
||||
</buttonGroups>
|
||||
</form>
|
||||
+172
@@ -0,0 +1,172 @@
|
||||
package com.intellij.application.options;
|
||||
|
||||
import com.intellij.application.options.colors.ColorAndFontOptions;
|
||||
import com.intellij.application.options.colors.NewColorAndFontPanel;
|
||||
import com.intellij.application.options.colors.SimpleEditorPreview;
|
||||
import com.intellij.ide.todo.TodoConfiguration;
|
||||
import com.intellij.ide.ui.ListCellRendererWrapper;
|
||||
import com.intellij.openapi.application.ApplicationNamesInfo;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsManager;
|
||||
import com.intellij.openapi.editor.colors.EditorColorsScheme;
|
||||
import com.intellij.openapi.keymap.Keymap;
|
||||
import com.intellij.openapi.keymap.KeymapManager;
|
||||
import com.intellij.openapi.keymap.impl.KeymapManagerImpl;
|
||||
import com.intellij.openapi.ui.DialogWrapper;
|
||||
import com.intellij.openapi.util.SystemInfo;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* @author yole
|
||||
*/
|
||||
public class InitialConfigurationDialog extends DialogWrapper {
|
||||
private JPanel myMainPanel;
|
||||
private JComboBox myKeymapComboBox;
|
||||
private JComboBox myColorSchemeComboBox;
|
||||
private JButton myPreviewButton;
|
||||
private String myColorSettingsPage;
|
||||
|
||||
public InitialConfigurationDialog(Component parent, String colorSettingsPage) {
|
||||
super(parent, true);
|
||||
myColorSettingsPage = colorSettingsPage;
|
||||
setTitle(ApplicationNamesInfo.getInstance().getFullProductName() + " Initial Configuration");
|
||||
|
||||
final ArrayList<Keymap> keymaps = new ArrayList<Keymap>();
|
||||
for (Keymap keymap : ((KeymapManagerImpl)KeymapManager.getInstance()).getAllKeymaps()) {
|
||||
if (matchesPlatform(keymap)) {
|
||||
keymaps.add(keymap);
|
||||
}
|
||||
}
|
||||
|
||||
myKeymapComboBox.setModel(new DefaultComboBoxModel(keymaps.toArray(new Keymap[keymaps.size()])));
|
||||
myKeymapComboBox.setRenderer(new ListCellRendererWrapper(myKeymapComboBox.getRenderer()) {
|
||||
@Override
|
||||
public void customize(final JList list, final Object value, final int index, final boolean selected, final boolean cellHasFocus) {
|
||||
Keymap keymap = (Keymap)value;
|
||||
if (keymap == null) {
|
||||
return;
|
||||
}
|
||||
if (KeymapManager.DEFAULT_IDEA_KEYMAP.equals(keymap.getName())) {
|
||||
setText("IntelliJ IDEA Classic");
|
||||
}
|
||||
else if ("Mac OS X".equals(keymap.getName())) {
|
||||
setText("IntelliJ IDEA Classic - Mac OS X");
|
||||
}
|
||||
else {
|
||||
setText(keymap.getPresentableName());
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
preselectKeyMap(keymaps);
|
||||
|
||||
final EditorColorsScheme[] colorSchemes = EditorColorsManager.getInstance().getAllSchemes();
|
||||
myColorSchemeComboBox.setModel(new DefaultComboBoxModel(colorSchemes));
|
||||
myColorSchemeComboBox.setRenderer(new ListCellRendererWrapper(myColorSchemeComboBox.getRenderer()) {
|
||||
@Override
|
||||
public void customize(JList list, Object value, int index, boolean selected, boolean cellHasFocus) {
|
||||
setText(((EditorColorsScheme)value).getName());
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
init();
|
||||
myPreviewButton.addActionListener(new ActionListener() {
|
||||
public void actionPerformed(final ActionEvent e) {
|
||||
showColorSchemePreviewDialog();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private void preselectKeyMap(ArrayList<Keymap> keymaps) {
|
||||
if (SystemInfo.isMac) {
|
||||
for (Keymap keymap : keymaps) {
|
||||
if (keymap.getName().equals("Default for Mac OS X")) {
|
||||
myKeymapComboBox.setSelectedItem(keymap);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean matchesPlatform(Keymap keymap) {
|
||||
if (keymap.getName().equals(KeymapManager.DEFAULT_IDEA_KEYMAP)) {
|
||||
return !SystemInfo.isMac;
|
||||
}
|
||||
else if (keymap.getName().equals(KeymapManager.MAC_OS_X_KEYMAP)) {
|
||||
return SystemInfo.isMac;
|
||||
}
|
||||
else if (keymap.getName().equals("Default for GNOME") || keymap.getName().equals("Default for KDE") ||
|
||||
keymap.getName().equals("Default for XWin")) {
|
||||
return SystemInfo.isLinux;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
private void showColorSchemePreviewDialog() {
|
||||
showColorSchemePreviewDialog(ColorAndFontOptions.getColorAndFontsInstance());
|
||||
}
|
||||
|
||||
private void showColorSchemePreviewDialog(final ColorAndFontOptions options) {
|
||||
final NewColorAndFontPanel page = options.findPage(myColorSettingsPage);
|
||||
assert page != null;
|
||||
options.reset();
|
||||
final String selectedScheme = ((EditorColorsScheme)myColorSchemeComboBox.getSelectedItem()).getName();
|
||||
options.selectScheme(selectedScheme);
|
||||
final SimpleEditorPreview preview = new SimpleEditorPreview(options, page.getSettingsPage());
|
||||
preview.updateView();
|
||||
DialogWrapper wrapper = new PreviewDialog(preview, selectedScheme);
|
||||
wrapper.show();
|
||||
preview.disposeUIResources();
|
||||
options.disposeUIResources();
|
||||
}
|
||||
|
||||
protected JComponent createCenterPanel() {
|
||||
return myMainPanel;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void doOKAction() {
|
||||
super.doOKAction();
|
||||
// set keymap
|
||||
((KeymapManagerImpl)KeymapManager.getInstance()).setActiveKeymap((Keymap)myKeymapComboBox.getSelectedItem());
|
||||
// set color scheme
|
||||
EditorColorsManager.getInstance().setGlobalScheme((EditorColorsScheme)myColorSchemeComboBox.getSelectedItem());
|
||||
// create default todo_pattern for color scheme
|
||||
TodoConfiguration.getInstance().resetToDefaultTodoPatterns();
|
||||
}
|
||||
|
||||
private class PreviewDialog extends DialogWrapper {
|
||||
private final SimpleEditorPreview myPreview;
|
||||
|
||||
public PreviewDialog(final SimpleEditorPreview preview, final String selectedScheme) {
|
||||
super(myMainPanel, true);
|
||||
myPreview = preview;
|
||||
setTitle("Preview for " + selectedScheme);
|
||||
init();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JComponent createCenterPanel() {
|
||||
JPanel panel = new JPanel(new BorderLayout()) {
|
||||
@Override
|
||||
public Dimension getPreferredSize() {
|
||||
return new Dimension(400, 300);
|
||||
}
|
||||
};
|
||||
panel.add(myPreview.getPanel(), BorderLayout.CENTER);
|
||||
return panel;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Action[] createActions() {
|
||||
final Action action = getOKAction();
|
||||
action.putValue(Action.NAME, "Close");
|
||||
return new Action[]{action};
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user