/*
* 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.
* 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.codeInsight.actions;
import com.intellij.ide.util.PropertiesComponent;
import com.intellij.lang.Language;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
public class LastRunReformatCodeOptionsProvider {
private static final String OPTIMIZE_IMPORTS_KEY = "LayoutCode.optimizeImports";
private static final String REARRANGE_ENTRIES_KEY = "LayoutCode.rearrangeEntries";
private static final String PROCESS_CHANGED_TEXT_KEY = "LayoutCode.processChangedText";
private final PropertiesComponent myPropertiesComponent;
public LastRunReformatCodeOptionsProvider(@NotNull PropertiesComponent propertiesComponent) {
myPropertiesComponent = propertiesComponent;
}
public ReformatCodeRunOptions getLastRunOptions(@NotNull PsiFile file) {
Language language = file.getLanguage();
ReformatCodeRunOptions settings = new ReformatCodeRunOptions(getLastTextRangeType());
settings.setOptimizeImports(getLastOptimizeImports());
settings.setRearrangeCode(isRearrangeCode(language));
return settings;
}
public void saveRearrangeState(@NotNull Language language, boolean value) {
String key = getRearrangeCodeKeyFor(language);
myPropertiesComponent.setValue(key, Boolean.toString(value));
}
public void saveOptimizeImportsState(boolean value) {
String optimizeImports = Boolean.toString(value);
myPropertiesComponent.setValue(OPTIMIZE_IMPORTS_KEY, optimizeImports);
}
public boolean getLastOptimizeImports() {
return myPropertiesComponent.getBoolean(OPTIMIZE_IMPORTS_KEY);
}
public TextRangeType getLastTextRangeType() {
return myPropertiesComponent.getBoolean(PROCESS_CHANGED_TEXT_KEY) ? TextRangeType.VCS_CHANGED_TEXT : TextRangeType.WHOLE_FILE;
}
public void saveProcessVcsChangedTextState(boolean value) {
String processOnlyVcsChangedText = Boolean.toString(value);
myPropertiesComponent.setValue(PROCESS_CHANGED_TEXT_KEY, processOnlyVcsChangedText);
}
public void saveRearrangeCodeState(boolean value) {
myPropertiesComponent.setValue(REARRANGE_ENTRIES_KEY, value);
}
public boolean getLastRearrangeCode() {
return myPropertiesComponent.getBoolean(REARRANGE_ENTRIES_KEY);
}
public boolean isRearrangeCode(@NotNull Language language) {
String key = getRearrangeCodeKeyFor(language);
return myPropertiesComponent.getBoolean(key);
}
private static String getRearrangeCodeKeyFor(@NotNull Language language) {
return REARRANGE_ENTRIES_KEY + language.getDisplayName();
}
}