UISettings as service

This commit is contained in:
Vladimir Krivosheev
2015-01-09 17:19:21 +01:00
parent 0ec3712353
commit a698fa63db
11 changed files with 28 additions and 76 deletions
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2014 JetBrains s.r.o.
* Copyright 2000-2015 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -15,17 +15,14 @@
*/
package com.intellij.ide.ui;
import com.intellij.ide.IdeBundle;
import com.intellij.ide.WelcomeWizardUtil;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.application.Application;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.components.*;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.SimpleModificationTracker;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.util.EventDispatcher;
import com.intellij.util.PlatformUtils;
import com.intellij.util.SystemProperties;
@@ -40,24 +37,20 @@ import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.awt.*;
import java.io.File;
import java.util.Map;
import static com.intellij.util.ui.UIUtil.isValidFont;
@State(
name = "UISettings",
storages = {
@Storage(
file = StoragePathMacros.APP_CONFIG + "/ui.lnf.xml"
)}
storages = @Storage(file = StoragePathMacros.APP_CONFIG + "/ui.lnf.xml")
)
public class UISettings extends SimpleModificationTracker implements PersistentStateComponent<UISettings>, ExportableApplicationComponent {
public class UISettings extends SimpleModificationTracker implements PersistentStateComponent<UISettings> {
/** Not tabbed pane. */
public static final int TABS_NONE = 0;
public static UISettings getInstance() {
return ApplicationManager.getApplication().getComponent(UISettings.class);
return ServiceManager.getService(UISettings.class);
}
/**
@@ -134,7 +127,9 @@ public class UISettings extends SimpleModificationTracker implements PersistentS
setSystemFontFaceAndSize();
Boolean scrollToSource = WelcomeWizardUtil.getAutoScrollToSource();
if (scrollToSource != null) DEFAULT_AUTOSCROLL_TO_SOURCE = scrollToSource;
if (scrollToSource != null) {
DEFAULT_AUTOSCROLL_TO_SOURCE = scrollToSource;
}
}
private void tweakPlatformDefaults() {
@@ -310,29 +305,4 @@ public class UISettings extends SimpleModificationTracker implements PersistentS
}
return false;
}
@NotNull
@Override
public File[] getExportFiles() {
return new File[]{PathManager.getOptionsFile("ui.lnf")};
}
@NotNull
@Override
public String getPresentableName() {
return IdeBundle.message("ui.settings");
}
@NonNls
@NotNull
@Override
public String getComponentName() {
return "UISettings";
}
@Override
public void initComponent() { }
@Override
public void disposeComponent() { }
}
}
@@ -115,7 +115,6 @@ public final class LafManagerImpl extends LafManager implements ApplicationCompo
private final UIManager.LookAndFeelInfo[] myLaFs;
private UIManager.LookAndFeelInfo myCurrentLaf;
private final Map<UIManager.LookAndFeelInfo, HashMap<String, Object>> myStoredDefaults = ContainerUtil.newHashMap();
private final UISettings myUiSettings;
private String myLastWarning = null;
private PropertyChangeListener myThemeChangeListener = null;
private static final Map<String, String> ourLafClassesAliases = ContainerUtil.newHashMap();
@@ -127,8 +126,7 @@ public final class LafManagerImpl extends LafManager implements ApplicationCompo
/**
* Invoked via reflection.
*/
LafManagerImpl(UISettings uiSettings) {
myUiSettings = uiSettings;
LafManagerImpl() {
myListenerList = new EventListenerList();
List<UIManager.LookAndFeelInfo> lafList = ContainerUtil.newArrayList();
@@ -740,9 +738,10 @@ public final class LafManagerImpl extends LafManager implements ApplicationCompo
// uiDefaults.put(entry.getKey(), entry.getValue());
// }
//} else
if (UISettings.getInstance().OVERRIDE_NONIDEA_LAF_FONTS) {
UISettings uiSettings = UISettings.getInstance();
if (uiSettings.OVERRIDE_NONIDEA_LAF_FONTS) {
storeOriginalFontDefaults(uiDefaults);
initFontDefaults(uiDefaults, myUiSettings.FONT_FACE, myUiSettings.FONT_SIZE);
initFontDefaults(uiDefaults, uiSettings.FONT_FACE, uiSettings.FONT_SIZE);
}
else {
restoreOriginalFontDefaults(uiDefaults);
@@ -55,8 +55,10 @@ public final class EditorHistoryManager extends AbstractProjectComponent impleme
*/
private final List<HistoryEntry> myEntriesList = Collections.synchronizedList(new ArrayList<HistoryEntry>());
/** Invoked by reflection */
EditorHistoryManager(final Project project, final UISettings uiSettings){
/**
* Invoked by reflection
*/
EditorHistoryManager(final Project project, final UISettings uiSettings) {
super(project);
uiSettings.addUISettingsListener(new MyUISettingsListener(), project);
}
@@ -21,9 +21,6 @@ import com.intellij.ide.DataManager;
import com.intellij.ide.impl.ProjectUtil;
import com.intellij.ide.ui.UISettings;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.internal.statistic.configurable.StatisticsConfigurable;
import com.intellij.internal.statistic.updater.StatisticsNotificationManager;
import com.intellij.notification.*;
import com.intellij.notification.impl.IdeNotificationArea;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.MnemonicHelper;
@@ -37,7 +34,6 @@ import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.application.ModalityState;
import com.intellij.openapi.application.ex.ApplicationInfoEx;
import com.intellij.openapi.application.ex.ApplicationManagerEx;
import com.intellij.openapi.options.ShowSettingsUtil;
import com.intellij.openapi.project.DumbAwareRunnable;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.project.ProjectManager;
@@ -45,7 +41,6 @@ import com.intellij.openapi.util.ActionCallback;
import com.intellij.openapi.util.Disposer;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.util.registry.Registry;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.openapi.wm.IdeFrame;
import com.intellij.openapi.wm.IdeRootPaneNorthExtension;
@@ -54,7 +49,6 @@ import com.intellij.openapi.wm.WindowManager;
import com.intellij.openapi.wm.ex.IdeFrameEx;
import com.intellij.openapi.wm.ex.LayoutFocusTraversalPolicyExt;
import com.intellij.openapi.wm.ex.StatusBarEx;
import com.intellij.openapi.wm.ex.WindowManagerEx;
import com.intellij.openapi.wm.impl.status.*;
import com.intellij.openapi.wm.impl.welcomeScreen.WelcomeFrame;
import com.intellij.ui.*;
@@ -63,10 +57,8 @@ import com.intellij.util.ui.UIUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.io.PowerSupplyKit;
import org.jetbrains.io.PowerSupplyKitCallback;
import javax.swing.*;
import javax.swing.event.HyperlinkEvent;
import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
@@ -98,11 +90,10 @@ public class IdeFrameImpl extends JFrame implements IdeFrameEx, DataProvider {
public IdeFrameImpl(ApplicationInfoEx applicationInfoEx,
ActionManagerEx actionManager,
UISettings uiSettings,
DataManager dataManager,
Application application) {
super(applicationInfoEx.getFullApplicationName());
myRootPane = createRootPane(actionManager, uiSettings, dataManager, application);
myRootPane = createRootPane(actionManager, UISettings.getInstance(), dataManager, application);
setRootPane(myRootPane);
setBackground(UIUtil.getPanelBackground());
AppUIUtil.updateWindowIcon(this);
@@ -20,7 +20,6 @@ import com.intellij.ide.AppLifecycleListener;
import com.intellij.ide.DataManager;
import com.intellij.ide.GeneralSettings;
import com.intellij.ide.impl.DataManagerImpl;
import com.intellij.ide.ui.UISettings;
import com.intellij.openapi.Disposable;
import com.intellij.openapi.actionSystem.ex.ActionManagerEx;
import com.intellij.openapi.application.Application;
@@ -118,18 +117,15 @@ public final class WindowManagerImpl extends WindowManagerEx implements NamedCom
private final WindowAdapter myActivationListener;
private final DataManager myDataManager;
private final ActionManagerEx myActionManager;
private final UISettings myUiSettings;
/**
* invoked by reflection
*/
public WindowManagerImpl(DataManager dataManager,
ActionManagerEx actionManager,
UISettings uiSettings,
MessageBus bus) {
myDataManager = dataManager;
myActionManager = actionManager;
myUiSettings = uiSettings;
if (myDataManager instanceof DataManagerImpl) {
((DataManagerImpl)myDataManager).setWindowManager(this);
}
@@ -522,7 +518,7 @@ public final class WindowManagerImpl extends WindowManagerEx implements NamedCom
public void showFrame() {
final IdeFrameImpl frame = new IdeFrameImpl(ApplicationInfoEx.getInstanceEx(),
myActionManager, myUiSettings, myDataManager,
myActionManager, myDataManager,
ApplicationManager.getApplication());
myProject2Frame.put(null, frame);
@@ -592,7 +588,7 @@ public final class WindowManagerImpl extends WindowManagerEx implements NamedCom
frame.setProject(project);
}
else {
frame = new IdeFrameImpl(ApplicationInfoEx.getInstanceEx(), myActionManager, myUiSettings,
frame = new IdeFrameImpl(ApplicationInfoEx.getInstanceEx(), myActionManager,
myDataManager, ApplicationManager.getApplication());
final Rectangle bounds = ProjectFrameBounds.getInstance(project).getBounds();
@@ -1052,7 +1052,6 @@ project.import.open.existing.openExisting=Open Existing Project
project.import.open.existing.reimport=Delete Existing Project and Import
code.folding.settings=Code Folding Settings
ui.settings=UI Settings
share.scope.checkbox.title=Share scope
bean.property=Bean Property
plugin.manager.uninstalled.tooltip=Plugin was uninstalled; changes will be applied on restart
@@ -309,4 +309,5 @@ exportable.DuplocatorSettings.presentable.name=Duplocator
exportable.MultiLanguageDuplocatorSettings.presentable.name=Duplocator
exportable.CodeStyleSchemeSettings.presentable.name=Code Style
exportable.InspectionProfileManager.presentable.name=Inspection profiles
exportable.TodoConfiguration.presentable.name=Todo
exportable.TodoConfiguration.presentable.name=Todo
exportable.UISettings.presentable.name=UI Settings
@@ -162,8 +162,9 @@
serviceImplementation="com.intellij.openapi.application.impl.ApplicationInfoImpl"/>
<applicationService serviceInterface="com.intellij.execution.RunnerRegistry"
serviceImplementation="com.intellij.execution.impl.RunnerRegistryImpl">
</applicationService>
serviceImplementation="com.intellij.execution.impl.RunnerRegistryImpl"/>
<applicationService serviceImplementation="com.intellij.ide.ui.UISettings"/>
<projectService serviceInterface="com.intellij.openapi.vfs.ReadonlyStatusHandler"
serviceImplementation="com.intellij.openapi.vcs.readOnlyHandler.ReadonlyStatusHandlerImpl"/>
@@ -22,11 +22,6 @@
<implementation-class>com.intellij.openapi.keymap.impl.KeymapManagerImpl</implementation-class>
</component>
<component>
<interface-class>com.intellij.ide.ui.UISettings</interface-class>
<implementation-class>com.intellij.ide.ui.UISettings</implementation-class>
</component>
<component>
<implementation-class>com.intellij.ide.IdeTooltipManager</implementation-class>
</component>
@@ -2,7 +2,6 @@ package com.jetbrains.python.edu;
import com.intellij.codeInsight.CodeInsightSettings;
import com.intellij.ide.RecentProjectsManager;
import com.intellij.ide.ui.UISettings;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.openapi.application.PathManager;
import com.intellij.openapi.diagnostic.Logger;
@@ -27,7 +26,6 @@ public class StudyInitialConfigurator {
* @noinspection UnusedParameters
*/
public StudyInitialConfigurator(MessageBus bus,
UISettings uiSettings,
CodeInsightSettings codeInsightSettings,
final PropertiesComponent propertiesComponent,
FileTypeManager fileTypeManager,
@@ -81,7 +81,6 @@ public class PyCharmEduInitialConfigurator {
* @noinspection UnusedParameters
*/
public PyCharmEduInitialConfigurator(MessageBus bus,
UISettings uiSettings,
CodeInsightSettings codeInsightSettings,
final PropertiesComponent propertiesComponent,
FileTypeManager fileTypeManager,
@@ -90,7 +89,8 @@ public class PyCharmEduInitialConfigurator {
if (!propertiesComponent.getBoolean(CONFIGURED, false)) {
propertiesComponent.setValue(CONFIGURED, "true");
propertiesComponent.setValue("toolwindow.stripes.buttons.info.shown", "true");
UISettings.getInstance().HIDE_TOOL_STRIPES = false;
UISettings uiSettings = UISettings.getInstance();
uiSettings.HIDE_TOOL_STRIPES = false;
uiSettings.SHOW_MEMORY_INDICATOR = false;
uiSettings.SHOW_DIRECTORY_FOR_NON_UNIQUE_FILENAMES = true;
uiSettings.SHOW_MAIN_TOOLBAR = false;
@@ -105,8 +105,8 @@ public class PyCharmEduInitialConfigurator {
final CodeStyleSettings settings = CodeStyleSettingsManager.getInstance().getCurrentSettings();
settings.ALIGN_MULTILINE_PARAMETERS_IN_CALLS = true;
settings.getCommonSettings(PythonLanguage.getInstance()).ALIGN_MULTILINE_PARAMETERS_IN_CALLS = true;
UISettings.getInstance().SHOW_DIRECTORY_FOR_NON_UNIQUE_FILENAMES = true;
UISettings.getInstance().SHOW_MEMORY_INDICATOR = false;
uiSettings.SHOW_DIRECTORY_FOR_NON_UNIQUE_FILENAMES = true;
uiSettings.SHOW_MEMORY_INDICATOR = false;
final String ignoredFilesList = fileTypeManager.getIgnoredFilesList();
ApplicationManager.getApplication().invokeLater(new Runnable() {
@Override