mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
cleanup — client don't have to implement yet another interface (SchemeExtensionProvider)
This commit is contained in:
@@ -27,7 +27,7 @@ import java.io.IOException;
|
||||
/**
|
||||
* @author yole
|
||||
*/
|
||||
public abstract class BaseSchemeProcessor<T extends ExternalizableScheme> implements SchemeProcessor<T> {
|
||||
public abstract class BaseSchemeProcessor<T extends ExternalizableScheme> implements SchemeProcessor<T>, SchemeExtensionProvider {
|
||||
@Override
|
||||
public void initScheme(@NotNull T scheme) {
|
||||
}
|
||||
@@ -75,4 +75,15 @@ public abstract class BaseSchemeProcessor<T extends ExternalizableScheme> implem
|
||||
public State getState(@NotNull T scheme) {
|
||||
return shouldBeSaved(scheme) ? State.POSSIBLY_CHANGED : State.NON_PERSISTENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUpgradeNeeded() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getSchemeExtension() {
|
||||
return ".xml";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
/*
|
||||
* Copyright 2000-2013 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.openapi.options;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@Deprecated
|
||||
public class SharedScheme<E extends ExternalizableScheme> {
|
||||
private final String myUserName;
|
||||
private final String myDescription;
|
||||
private final E myScheme;
|
||||
|
||||
public SharedScheme(@NotNull String userName, final String description, @NotNull E scheme) {
|
||||
myUserName = userName;
|
||||
myDescription = description;
|
||||
myScheme = scheme;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getUserName() {
|
||||
return myUserName;
|
||||
}
|
||||
|
||||
public String getDescription() {
|
||||
return myDescription;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public E getScheme() {
|
||||
return myScheme;
|
||||
}
|
||||
}
|
||||
+44
-60
@@ -56,7 +56,7 @@ import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
public class EditorColorsManagerImpl extends EditorColorsManager implements NamedJDOMExternalizable, ExportableComponent, NamedComponent {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.editor.colors.impl.EditorColorsManagerImpl");
|
||||
private static final Logger LOG = Logger.getInstance(EditorColorsManagerImpl.class);
|
||||
|
||||
private final EventDispatcher<EditorColorsListener> myListeners = EventDispatcher.create(EditorColorsListener.class);
|
||||
|
||||
@@ -76,9 +76,49 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Name
|
||||
public EditorColorsManagerImpl(DefaultColorSchemesManager defaultColorSchemesManager, SchemesManagerFactory schemesManagerFactory) {
|
||||
myDefaultColorSchemesManager = defaultColorSchemesManager;
|
||||
|
||||
mySchemesManager = schemesManagerFactory.createSchemesManager(
|
||||
FILE_SPEC,
|
||||
new MySchemeProcessor(), RoamingType.PER_USER);
|
||||
mySchemesManager = schemesManagerFactory.createSchemesManager(FILE_SPEC, new BaseSchemeProcessor<EditorColorsSchemeImpl>() {
|
||||
@NotNull
|
||||
@Override
|
||||
public EditorColorsSchemeImpl readScheme(@NotNull Element element) throws InvalidDataException {
|
||||
return loadSchemeFromDocument(element, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Element writeScheme(@NotNull final EditorColorsSchemeImpl scheme) {
|
||||
Element root = new Element(SCHEME_NODE_NAME);
|
||||
try {
|
||||
scheme.writeExternal(root);
|
||||
}
|
||||
catch (WriteExternalException e) {
|
||||
LOG.error(e);
|
||||
return null;
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public State getState(@NotNull EditorColorsSchemeImpl scheme) {
|
||||
return scheme instanceof ReadOnlyColorsScheme ? State.NON_PERSISTENT : State.POSSIBLY_CHANGED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCurrentSchemeChanged(final Scheme newCurrentScheme) {
|
||||
fireChanges(mySchemesManager.getCurrentScheme());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getSchemeExtension() {
|
||||
return FILE_EXT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUpgradeNeeded() {
|
||||
return true;
|
||||
}
|
||||
}, RoamingType.PER_USER);
|
||||
|
||||
addDefaultSchemes();
|
||||
|
||||
@@ -184,10 +224,6 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Name
|
||||
return scheme;
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Schemes manipulation routines
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public void addColorsScheme(@NotNull EditorColorsScheme scheme) {
|
||||
if (!isDefaultScheme(scheme) && scheme.getName().trim().length() > 0) {
|
||||
@@ -208,10 +244,6 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Name
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Getters & Setters
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public EditorColorsScheme[] getAllSchemes() {
|
||||
@@ -268,10 +300,6 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Name
|
||||
myListeners.getMulticaster().globalSchemeChange(scheme);
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
// Routines responsible for loading & saving colors schemes.
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
private static File getColorsDir(boolean create) {
|
||||
@NonNls String directoryPath = PathManager.getConfigPath() + File.separator + "colors";
|
||||
File directory = new File(directoryPath);
|
||||
@@ -368,48 +396,4 @@ public class EditorColorsManagerImpl extends EditorColorsManager implements Name
|
||||
public String getComponentName() {
|
||||
return "EditorColorsManagerImpl";
|
||||
}
|
||||
|
||||
private final class MySchemeProcessor extends BaseSchemeProcessor<EditorColorsSchemeImpl> implements SchemeExtensionProvider {
|
||||
@NotNull
|
||||
@Override
|
||||
public EditorColorsSchemeImpl readScheme(@NotNull Element element) throws InvalidDataException {
|
||||
return loadSchemeFromDocument(element, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Element writeScheme(@NotNull final EditorColorsSchemeImpl scheme) {
|
||||
Element root = new Element(SCHEME_NODE_NAME);
|
||||
try {
|
||||
scheme.writeExternal(root);
|
||||
}
|
||||
catch (WriteExternalException e) {
|
||||
LOG.error(e);
|
||||
return null;
|
||||
}
|
||||
|
||||
return root;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public State getState(@NotNull EditorColorsSchemeImpl scheme) {
|
||||
return scheme instanceof ReadOnlyColorsScheme ? State.NON_PERSISTENT : State.POSSIBLY_CHANGED;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCurrentSchemeChanged(final Scheme newCurrentScheme) {
|
||||
fireChanges(mySchemesManager.getCurrentScheme());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getSchemeExtension() {
|
||||
return FILE_EXT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isUpgradeNeeded() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,7 +69,7 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme
|
||||
private VirtualFile myDir;
|
||||
|
||||
private String mySchemeExtension = DirectoryStorageData.DEFAULT_EXT;
|
||||
private boolean myUpgradeExtension;
|
||||
private boolean myUpdateExtension;
|
||||
|
||||
private final Set<String> myFilesToDelete = new THashSet<String>();
|
||||
|
||||
@@ -85,7 +85,7 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme
|
||||
myIoDir = baseDir;
|
||||
if (processor instanceof SchemeExtensionProvider) {
|
||||
mySchemeExtension = ((SchemeExtensionProvider)processor).getSchemeExtension();
|
||||
myUpgradeExtension = ((SchemeExtensionProvider)processor).isUpgradeNeeded();
|
||||
myUpdateExtension = ((SchemeExtensionProvider)processor).isUpgradeNeeded();
|
||||
}
|
||||
|
||||
VirtualFileTracker virtualFileTracker = ServiceManager.getService(VirtualFileTracker.class);
|
||||
@@ -316,15 +316,17 @@ public class SchemesManagerImpl<T extends Scheme, E extends ExternalizableScheme
|
||||
}
|
||||
|
||||
private boolean canRead(@NotNull VirtualFile file) {
|
||||
if (!file.isDirectory()) {
|
||||
if (myUpgradeExtension && !DirectoryStorageData.DEFAULT_EXT.equals(mySchemeExtension) && DirectoryStorageData.isStorageFile(file)) {
|
||||
return myDir.findChild(file.getNameSequence() + mySchemeExtension) == null;
|
||||
}
|
||||
else if (StringUtilRt.endsWithIgnoreCase(file.getNameSequence(), mySchemeExtension)) {
|
||||
return true;
|
||||
}
|
||||
if (file.isDirectory()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
if (myUpdateExtension && !DirectoryStorageData.DEFAULT_EXT.equals(mySchemeExtension) && DirectoryStorageData.isStorageFile(file)) {
|
||||
// read file.DEFAULT_EXT only if file.CUSTOM_EXT doesn't exists
|
||||
return myDir.findChild(file.getNameSequence() + mySchemeExtension) == null;
|
||||
}
|
||||
else {
|
||||
return StringUtilRt.endsWithIgnoreCase(file.getNameSequence(), mySchemeExtension);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
Reference in New Issue
Block a user