Make CustomTemplateCallback immutable

This commit is contained in:
Alexander Zolotov
2014-04-11 19:18:39 +04:00
parent 99b97a534d
commit 8d094215f7
2 changed files with 9 additions and 11 deletions
@@ -41,7 +41,7 @@ public class CustomTemplateCallback {
private final TemplateManager myTemplateManager;
private final Editor myEditor;
private final PsiFile myFile;
private int myOffset;
private final int myOffset;
private final Project myProject;
private final boolean myInInjectedFragment;
@@ -52,14 +52,12 @@ public class CustomTemplateCallback {
myProject = file.getProject();
myTemplateManager = TemplateManager.getInstance(myProject);
int offset = getOffset(wrapping, editor);
PsiElement element = InjectedLanguageUtil.findInjectedElementNoCommit(file, offset);
myOffset = getOffset(wrapping, editor);
PsiElement element = InjectedLanguageUtil.findInjectedElementNoCommit(file, myOffset);
myFile = element != null ? element.getContainingFile() : file;
myInInjectedFragment = InjectedLanguageManager.getInstance(myProject).isInjectedFragment(myFile);
myEditor = myInInjectedFragment ? InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, file, offset) : editor;
fixInitialState(wrapping);
myEditor = myInInjectedFragment ? InjectedLanguageUtil.getEditorForInjectedLanguageNoCommit(editor, file, myOffset) : editor;
}
@NotNull
@@ -67,8 +65,8 @@ public class CustomTemplateCallback {
return getContext(myFile, myOffset);
}
public void fixInitialState(boolean wrapping) {
myOffset = getOffset(wrapping, myEditor);
public int getOffset() {
return myOffset;
}
private static int getOffset(boolean wrapping, Editor editor) {
@@ -88,7 +86,7 @@ public class CustomTemplateCallback {
}
@NotNull
public List<TemplateImpl> findApplicableTemplates(String key) {
public List<TemplateImpl> findApplicableTemplates(@NotNull String key) {
List<TemplateImpl> templates = getMatchingTemplates(key);
templates = filterApplicableCandidates(templates);
return templates;
@@ -281,7 +281,7 @@ public class TemplateManagerImpl extends TemplateManager implements ProjectCompo
for (final CustomLiveTemplate customLiveTemplate : CustomLiveTemplate.EP_NAME.getExtensions()) {
if (shortcutChar == customLiveTemplate.getShortcut()) {
if (editor.getCaretModel().getCaretCount() > 1 && supportsMultiCaretMode(customLiveTemplate)) {
if (editor.getCaretModel().getCaretCount() > 1 && !supportsMultiCaretMode(customLiveTemplate)) {
continue;
}
if (isApplicable(customLiveTemplate, editor, file)) {
@@ -308,7 +308,7 @@ public class TemplateManagerImpl extends TemplateManager implements ProjectCompo
}
private static boolean supportsMultiCaretMode(CustomLiveTemplate customLiveTemplate) {
return customLiveTemplate instanceof CustomLiveTemplateBase && !((CustomLiveTemplateBase)customLiveTemplate).supportsMultiCaret();
return !(customLiveTemplate instanceof CustomLiveTemplateBase) || ((CustomLiveTemplateBase)customLiveTemplate).supportsMultiCaret();
}
public static boolean isApplicable(CustomLiveTemplate customLiveTemplate, Editor editor, PsiFile file) {