package org.community.intellij.plugins.communitycase.config; import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; public class VcsSettings { private final VcsProjectSettings myVcsProjectSettings; private final VcsApplicationSettings myVcsApplicationSettings; private VcsSettings(VcsProjectSettings vcsProjectSettings, VcsApplicationSettings vcsApplicationSettings) { this.myVcsProjectSettings=vcsProjectSettings; this.myVcsApplicationSettings=vcsApplicationSettings; } public static VcsSettings getInstance(Project project) { VcsProjectSettings vps=VcsProjectSettings.getInstance(project); VcsApplicationSettings vas=VcsApplicationSettings.getInstance(); return new VcsSettings(vps,vas); } public boolean isBranchFilterAppwide() { return myVcsProjectSettings.isBranchFilterAppwide()==null?true:myVcsProjectSettings.isBranchFilterAppwide(); } public void setBranchFilterAppwide(boolean branchFilterAppwide) { myVcsProjectSettings.setBranchFilterAppwide(branchFilterAppwide); } @NotNull public String getBranchFilter() { if(isBranchFilterAppwide()) return myVcsApplicationSettings.getBranchFilter(); else return myVcsProjectSettings.getBranchFilter(); } @NotNull public String getBranchFilter(boolean isAppwide) { if(isAppwide) return myVcsApplicationSettings.getBranchFilter(); else return myVcsProjectSettings.getBranchFilter(); } public void setBranchFilter(String branchFilter,boolean isAppwide) { if(isAppwide) myVcsApplicationSettings.setBranchFilter(branchFilter); else myVcsProjectSettings.setBranchFilter(branchFilter); } public boolean isPathFilterAppwide() { return myVcsProjectSettings.isPathFilterAppwide()==null?true:myVcsProjectSettings.isPathFilterAppwide(); } public void setPathFilterAppwide(boolean pathFilterAppwide) { myVcsProjectSettings.setPathFilterAppwide(pathFilterAppwide); } @NotNull public String getPathFilter() { if(isPathFilterAppwide()) return myVcsApplicationSettings.getPathFilter(); else return myVcsProjectSettings.getPathFilter(); } @NotNull public String getPathFilter(boolean isAppwide) { if(isAppwide) return myVcsApplicationSettings.getPathFilter(); else return myVcsProjectSettings.getPathFilter(); } public void setPathFilter(String pathFilter,boolean isAppwide) { if(isAppwide) myVcsApplicationSettings.setPathFilter(pathFilter); else myVcsProjectSettings.setPathFilter(pathFilter); } public boolean isPreserveKeepFiles() { return myVcsApplicationSettings.isPreserveKeepFiles(); } public void setPreserveKeepFiles(boolean preserveKeepFiles) { myVcsApplicationSettings.setPreserveKeepFiles(preserveKeepFiles); } public boolean isUseReservedCheckoutForFiles() { return myVcsApplicationSettings.isUseReservedCheckoutForFiles(); } public void setUseReservedCheckoutForFiles(boolean useReserved) { myVcsApplicationSettings.setUseReservedCheckoutForFiles(useReserved); } public boolean isUseReservedCheckoutForDirectories() { return myVcsApplicationSettings.isUseReservedCheckoutForDirectories(); } public void setUseReservedCheckoutForDirectories(boolean useReserved) { myVcsApplicationSettings.setUseReservedCheckoutForDirectories(useReserved); } public boolean isShowDirectories() { return myVcsApplicationSettings.isShowDirectories(); } public void setShowDirectories(boolean showDirectories) { myVcsApplicationSettings.setShowDirectories(showDirectories); } /** * @return the default executable name depending on the platform */ public String getDefaultPathToExecutable() { return myVcsApplicationSettings.getDefaultPathToExecutable(); } /** * @return get last set path or null */ public String getPathToExecutable() { return myVcsApplicationSettings.getPathToExecutable(); } /** * Change last set path to executable * * @param path the path */ public void setPathToExecutable(String path) { myVcsApplicationSettings.setPathToExecutable(path); } //todo wc we should probably remove all settings below this line, they probably don't work with ClearCase public ConversionPolicy getLineSeparatorsConversion() { return myVcsProjectSettings.getLineSeparatorsConversion(); } public boolean getAskBeforeLineSeparatorConversion() { return myVcsProjectSettings.getAskBeforeLineSeparatorConversion(); } public void setAskBeforeLineSeparatorConversion(boolean askBeforeLineSeparatorConversion) { myVcsProjectSettings.setAskBeforeLineSeparatorConversion(askBeforeLineSeparatorConversion); } public void setLineSeparatorsConversion(ConversionPolicy lineSeparatorsConversion) { myVcsProjectSettings.setLineSeparatorsConversion(lineSeparatorsConversion); } public UpdateType getUpdateType() { return myVcsProjectSettings.getUpdateType(); } public UpdateChangesPolicy updateChangesPolicy() { return myVcsProjectSettings.updateChangesPolicy(); } public void setUpdateType(UpdateType updateType) { myVcsProjectSettings.setUpdateType(updateType); } public void setUpdateChangesPolicy(UpdateChangesPolicy value) { myVcsProjectSettings.setUpdateChangesPolicy(value); } /** * The way the local changes are saved before update if user has selected auto-stash */ public enum UpdateChangesPolicy { /** * Stash changes */ STASH, /** * Shelve changes */ SHELVE, /** * Keep files in working tree */ KEEP } /** * The type of update to perform */ public enum UpdateType { /** * Use default specified in the config file for the branch */ BRANCH_DEFAULT, /** * Merge fetched commits with local branch */ MERGE, /** * Rebase local commits upon the fetched branch */ REBASE } /** * The CRLF conversion policy */ public enum ConversionPolicy { /** * No conversion is performed */ NONE, /** * The files are converted to project line separators */ PROJECT_LINE_SEPARATORS } }