package fr.adrienbrault.idea.symfony2plugin;
import com.intellij.openapi.components.*;
import com.intellij.openapi.project.Project;
import com.intellij.util.xmlb.XmlSerializerUtil;
import fr.adrienbrault.idea.symfony2plugin.assistant.reference.MethodParameterSetting;
import fr.adrienbrault.idea.symfony2plugin.assistant.signature.MethodSignatureSetting;
import fr.adrienbrault.idea.symfony2plugin.dic.ContainerFile;
import fr.adrienbrault.idea.symfony2plugin.routing.dict.RoutingFile;
import fr.adrienbrault.idea.symfony2plugin.templating.path.TwigNamespaceSetting;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.List;
@State(
name = "Symfony2PluginSettings",
storages = {
@Storage(id = "default", file = StoragePathMacros.PROJECT_FILE),
@Storage(id = "dir", file = StoragePathMacros.PROJECT_CONFIG_DIR + "/symfony2.xml", scheme = StorageScheme.DIRECTORY_BASED)
}
)
public class Settings implements PersistentStateComponent<Settings> {
// Symfony 2 and 3 paths
public static String[] DEFAULT_CONTAINER_PATHS = new String[] {
"app/cache/dev/appDevDebugProjectContainer.xml",
"var/cache/dev/appDevDebugProjectContainer.xml",
};
// Symfony 2 and 3 paths
public static String[] DEFAULT_ROUTES = new String[] {
"app/cache/dev/appDevUrlGenerator.php",
"var/cache/dev/appDevUrlGenerator.php",
};
/**
* @deprecated
*/
public static String DEFAULT_URL_GENERATOR_PATH = "app/cache/dev/appDevUrlGenerator.php";
public static String DEFAULT_TRANSLATION_PATH = "app/cache/dev/translations";
public static String DEFAULT_WEB_DIRECTORY = "web";
public static String DEFAULT_APP_DIRECTORY = "app";
/**
* @deprecated
*/
public String pathToUrlGenerator = DEFAULT_URL_GENERATOR_PATH;
public String pathToTranslation = DEFAULT_TRANSLATION_PATH;
public String directoryToWeb = DEFAULT_WEB_DIRECTORY;
public String directoryToApp = DEFAULT_APP_DIRECTORY;
public String serviceJsNameStrategy = null;
public boolean remoteDevFileScheduler = false;
public boolean pluginEnabled = false;
public boolean symfonyContainerTypeProvider = true;
public boolean objectRepositoryTypeProvider = true;
public boolean objectRepositoryResultTypeProvider = true;
public boolean objectManagerFindTypeProvider = true;
public boolean objectSignatureTypeProvider = false;
public boolean twigAnnotateTemplate = true;
public boolean twigAnnotateAsset = true;
public boolean twigAnnotateAssetTags = true;
public boolean twigAnnotateRoute = true;
public boolean phpAnnotateTemplate = true;
public boolean phpAnnotateService = true;
public boolean phpAnnotateRoute = true;
public boolean phpAnnotateTemplateAnnotation = true;
public boolean phpAnnotateTranslation = true;
public boolean phpHighlightServices = false;
public boolean yamlAnnotateServiceConfig = true;
public boolean codeFoldingPhpRoute = true;
public boolean codeFoldingPhpModel = true;
public boolean codeFoldingPhpTemplate = true;
public boolean codeFoldingTwigRoute = true;
public boolean codeFoldingTwigTemplate = true;
public boolean codeFoldingTwigConstant = true;
public boolean dismissEnableNotification = false;
public boolean profilerLocalEnabled = false;
public String profilerLocalUrl = "http://127.0.0.1:8000";
public String profilerCsvPath;
public boolean profilerHttpEnabled = false;
public String profilerHttpUrl = "http://127.0.0.1:8000";
/**
* Last user selected output of service generator eg: yaml or xml
*/
public String lastServiceGeneratorLanguage = null;
@Nullable
public List<TwigNamespaceSetting> twigNamespaces = new ArrayList<>();
@Nullable
public List<ContainerFile> containerFiles = new ArrayList<>();
@Nullable
public List<RoutingFile> routingFiles = new ArrayList<>();
@Nullable
public List<MethodParameterSetting> methodParameterSettings = new ArrayList<>();
@Nullable
public List<MethodSignatureSetting> methodSignatureSettings = new ArrayList<>();
public static Settings getInstance(Project project) {
return ServiceManager.getService(project, Settings.class);
}
@Nullable
@Override
public Settings getState() {
return this;
}
@Override
public void loadState(Settings settings) {
XmlSerializerUtil.copyBean(settings, this);
}
}