use of com.intellij.psi.codeStyle.extractor.values.Value in project intellij-community by JetBrains.
the class BruteForceProcessor method runWithProgress.
@Override
public ValuesExtractionResult runWithProgress(Project project, CodeStyleSettings settings, PsiFile file, ProgressIndicator indicator) {
List<Value> values = getFormattingValues(settings, file.getLanguage());
Differ differ = myLangExtractor.getDiffer(project, file, settings);
ValuesExtractionResult container = new ValuesExtractionResultImpl(values);
Utils.adjustValuesMin(container, differ, indicator);
return container;
}
use of com.intellij.psi.codeStyle.extractor.values.Value in project intellij-community by JetBrains.
the class BruteForceProcessor method randomizeSettings.
public void randomizeSettings(CodeStyleSettings settings, Language language) {
List<Value> values = getFormattingValues(settings, language);
Random rand = new Random();
for (Value value : values) {
Object[] possible = value.getPossibleValues();
int index = rand.nextInt(possible.length);
value.value = possible[index];
value.write(false);
}
}
use of com.intellij.psi.codeStyle.extractor.values.Value in project intellij-community by JetBrains.
the class CodeStyleDeriveProcessor method backupValues.
public Map<Value, Object> backupValues(CodeStyleSettings settings, Language language) {
List<Value> baseValues = getFormattingValues(settings, language);
Map<Value, Object> res = ContainerUtil.newHashMap();
for (Value baseValue : baseValues) {
res.put(baseValue, baseValue.value);
}
return res;
}
use of com.intellij.psi.codeStyle.extractor.values.Value in project intellij-community by JetBrains.
the class CodeStyleDeriveProcessor method readAll.
@NotNull
private List<Value> readAll(@NotNull String instanceName, @NotNull Object instance) {
Class<?> cls = instance.getClass();
List<Value> ret = new ArrayList<>();
ClassSerializer serializer = new ClassSerializer(instanceName, instance);
for (Field field : cls.getDeclaredFields()) {
field = ClassSerializer.getPreparedField(field);
if (field == null || field.getName().endsWith("_FORCE"))
continue;
try {
ret.add(buildFValue(field, instance, serializer));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return ret;
}
use of com.intellij.psi.codeStyle.extractor.values.Value in project intellij-community by JetBrains.
the class ExtractCodeStyleAction method reportResult.
public void reportResult(final ValuesExtractionResult forSelection, final Project project, final CodeStyleSettings cloneSettings, final PsiFile file, final Map<Value, Object> backup) {
final Balloon balloon = JBPopupFactory.getInstance().createHtmlTextBalloonBuilder("Formatting Options were extracted<br/><a href=\"apply\">Apply</a> <a href=\"details\">Details...</a>", MessageType.INFO, new HyperlinkListener() {
@Override
public void hyperlinkUpdate(HyperlinkEvent e) {
if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
boolean apply = "apply".equals(e.getDescription());
ExtractedSettingsDialog myDialog = null;
if (!apply) {
final List<Value> values = forSelection.getValues();
final LanguageCodeStyleSettingsProvider[] providers = Extensions.getExtensions(LanguageCodeStyleSettingsProvider.EP_NAME);
Language language = file.getLanguage();
CodeStyleSettingsNameProvider nameProvider = new CodeStyleSettingsNameProvider();
for (final LanguageCodeStyleSettingsProvider provider : providers) {
Language target = provider.getLanguage();
if (target.equals(language)) {
//this is our language
nameProvider.addSettings(provider);
myDialog = new ExtractedSettingsDialog(project, nameProvider, values);
apply = myDialog.showAndGet();
break;
}
}
}
if (apply && myDialog != null) {
//create new settings named after the file
final ExtractedSettingsDialog finalMyDialog = myDialog;
forSelection.applyConditioned(value -> finalMyDialog.valueIsSelectedInTree(value), backup);
CodeStyleScheme derivedScheme = CodeStyleSchemes.getInstance().createNewScheme("Derived from " + file.getName(), null);
derivedScheme.getCodeStyleSettings().copyFrom(cloneSettings);
CodeStyleSchemes.getInstance().addScheme(derivedScheme);
CodeStyleSchemesImpl.getSchemeManager().setCurrent(derivedScheme);
CodeStyleSettingsManager.getInstance(project).PREFERRED_PROJECT_CODE_STYLE = derivedScheme.getName();
}
}
}
}).setDisposable(ApplicationManager.getApplication()).setShowCallout(false).setFadeoutTime(0).setShowCallout(false).setAnimationCycle(0).setHideOnClickOutside(false).setHideOnKeyOutside(false).setCloseButtonEnabled(true).setHideOnLinkClick(true).createBalloon();
ApplicationManager.getApplication().invokeLater(() -> {
Window window = WindowManager.getInstance().getFrame(project);
if (window == null) {
window = JOptionPane.getRootFrame();
}
if (window instanceof IdeFrame) {
BalloonLayout layout = ((IdeFrame) window).getBalloonLayout();
if (layout != null) {
layout.add(balloon);
}
}
});
}
Aggregations