use of com.intellij.psi.codeStyle.extractor.values.ValuesExtractionResult in project intellij-community by JetBrains.
the class DifferBase method getDifference.
@Override
public int getDifference(ValuesExtractionResult container) {
final ValuesExtractionResult orig = container.apply(true);
String newText = reformattedText();
int result = Utils.getDiff(mySettings.getCommonSettings(myFile.getLanguage()).getIndentOptions(), myOrigText, newText);
orig.apply(false);
return result;
}
use of com.intellij.psi.codeStyle.extractor.values.ValuesExtractionResult 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.ValuesExtractionResult 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);
}
}
});
}
use of com.intellij.psi.codeStyle.extractor.values.ValuesExtractionResult in project intellij-community by JetBrains.
the class ExtractCodeStyleAction method actionPerformed.
@Override
public void actionPerformed(AnActionEvent e) {
DataContext dataContext = e.getDataContext();
final Project project = CommonDataKeys.PROJECT.getData(dataContext);
if (project == null)
return;
Editor editor = CommonDataKeys.EDITOR.getData(dataContext);
final VirtualFile[] files = CommonDataKeys.VIRTUAL_FILE_ARRAY.getData(dataContext);
PsiFile file = null;
if (editor == null && files != null && files.length == 1 && !files[0].isDirectory()) {
file = PsiManager.getInstance(project).findFile(files[0]);
} else if (editor != null) {
file = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument());
}
if (file == null)
return;
Language language = file.getLanguage();
final LangCodeStyleExtractor extractor = LangCodeStyleExtractor.EXTENSION.forLanguage(language);
if (extractor == null)
return;
final CodeStyleSettings settings = CodeStyleSettingsManager.getSettings(project);
final CodeStyleDeriveProcessor genProcessor = new GenProcessor(extractor);
final PsiFile finalFile = file;
final Task.Backgroundable task = new Task.Backgroundable(project, "Code style extractor", true) {
@Override
public void run(@NotNull ProgressIndicator indicator) {
try {
CodeStyleSettings cloneSettings = settings.clone();
Map<Value, Object> backup = genProcessor.backupValues(cloneSettings, finalFile.getLanguage());
ValuesExtractionResult res = genProcessor.runWithProgress(project, cloneSettings, finalFile, indicator);
reportResult(res, project, cloneSettings, finalFile, backup);
} catch (ProcessCanceledException e) {
Utils.logError("Code extraction was canceled");
} catch (Throwable t) {
Utils.logError("Unexpected exception:\n" + t);
}
}
};
ProgressManager.getInstance().run(task);
}
Aggregations