From 45c4def50ebc13dda36e8c89b59241343bb44215 Mon Sep 17 00:00:00 2001 From: Oleg Shpynov Date: Fri, 12 Nov 2010 12:30:13 +0300 Subject: [PATCH 01/12] cleanup --- .../org/jetbrains/plugins/github/ui/GithubSettingsPanel.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java index 08466ec61344..01f9bf316772 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java +++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSettingsPanel.java @@ -78,9 +78,5 @@ public class GithubSettingsPanel { public String getPassword() { return String.valueOf(myPasswordField.getPassword()); } - - public JComponent getPreferrableFocusComponent() { - return myLoginTextField; - } } From 4fbdf50f96d3c647960cb8ebf0917bb98c778f2b Mon Sep 17 00:00:00 2001 From: Oleg Shpynov Date: Fri, 12 Nov 2010 12:36:32 +0300 Subject: [PATCH 02/12] IDEA-60686 GitHub integration: Login / CheckOut from GitHub: dialog is partially visible on opening --- .../plugins/github/ui/GithubCloneProjectPane.form | 12 ++++-------- .../plugins/github/ui/GithubSharePanel.form | 9 ++------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubCloneProjectPane.form b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubCloneProjectPane.form index fe73f3ea0e53..627be2e09213 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubCloneProjectPane.form +++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubCloneProjectPane.form @@ -1,18 +1,13 @@
- + - + - - - - - @@ -40,7 +35,8 @@ - + + diff --git a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSharePanel.form b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSharePanel.form index 06b8bd6148d6..22d36f23a421 100644 --- a/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSharePanel.form +++ b/plugins/github/src/org/jetbrains/plugins/github/ui/GithubSharePanel.form @@ -1,9 +1,9 @@ - + - + @@ -16,11 +16,6 @@ - - - - - From 1d0c75e4f06eab5d67154bc52ba1d3c98eb7bbfe Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 12 Nov 2010 12:31:19 +0300 Subject: [PATCH 03/12] daemon finished listener for Alexey --- .../intellij/codeInsight/daemon/DaemonCodeAnalyzer.java | 7 +++++++ .../codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java | 8 +++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/platform/lang-api/src/com/intellij/codeInsight/daemon/DaemonCodeAnalyzer.java b/platform/lang-api/src/com/intellij/codeInsight/daemon/DaemonCodeAnalyzer.java index d705e975bba3..9177912c1f1e 100644 --- a/platform/lang-api/src/com/intellij/codeInsight/daemon/DaemonCodeAnalyzer.java +++ b/platform/lang-api/src/com/intellij/codeInsight/daemon/DaemonCodeAnalyzer.java @@ -21,6 +21,7 @@ import com.intellij.openapi.components.ProjectComponent; import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiFile; +import com.intellij.util.messages.Topic; import org.jetbrains.annotations.NotNull; public abstract class DaemonCodeAnalyzer implements ProjectComponent { @@ -50,4 +51,10 @@ public abstract class DaemonCodeAnalyzer implements ProjectComponent { public abstract void restart(@NotNull PsiFile file); public abstract void autoImportReferenceAtCursor(@NotNull Editor editor, @NotNull PsiFile file); + + public static final Topic DAEMON_EVENT_TOPIC = new Topic("DAEMON_EVENT_TOPIC", DaemonListener.class); + + public interface DaemonListener { + void daemonFinished(); + } } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java index 3e1f677c2ef4..99364f20f93d 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/DaemonCodeAnalyzerImpl.java @@ -680,7 +680,13 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzer implements JDOMEx myAlarm.cancelAllRequests(); DaemonProgressIndicator progress; synchronized (DaemonCodeAnalyzerImpl.this) { - progress = new DaemonProgressIndicator(); + progress = new DaemonProgressIndicator() { + @Override + public void stopIfRunning() { + super.stopIfRunning(); + myProject.getMessageBus().syncPublisher(DAEMON_EVENT_TOPIC).daemonFinished(); + } + }; progress.start(); myUpdateProgress = progress; } From c3518acd7ee0fd0e267a3fbf1de68a25e69a6ee9 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 12 Nov 2010 12:32:13 +0300 Subject: [PATCH 04/12] IDEA-60164 injected blink --- .../codeInsight/daemon/impl/Divider.java | 28 +-- .../daemon/impl/GeneralHighlightingPass.java | 217 +++++++++--------- .../daemon/impl/LocalInspectionsPass.java | 3 +- .../daemon/impl/UpdateHighlightersUtil.java | 8 +- 4 files changed, 129 insertions(+), 127 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/Divider.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/Divider.java index 9d2558a1de27..d238a586f68d 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/Divider.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/Divider.java @@ -37,28 +37,28 @@ import java.util.List; public class Divider { private static final int STARTING_TREE_HEIGHT = 10; - public static void getInsideAndOutside(@NotNull PsiFile file, - int startOffset, - int endOffset, - @NotNull TextRange range, - @NotNull List inside, - @NotNull List outside, - @NotNull HighlightLevelUtil.AnalysisLevel level) { + public static void divideInsideAndOutside(@NotNull PsiFile file, + int startOffset, + int endOffset, + @NotNull TextRange range, + @NotNull List inside, + @NotNull List outside, + @NotNull HighlightLevelUtil.AnalysisLevel level) { final FileViewProvider viewProvider = file.getViewProvider(); for (Language language : viewProvider.getLanguages()) { final PsiFile psiRoot = viewProvider.getPsi(language); if (HighlightLevelUtil.shouldAnalyse(psiRoot, level)) { - getInsideAndOutside(psiRoot, startOffset, endOffset, range, inside, outside); + divideInsideAndOutside(psiRoot, startOffset, endOffset, range, inside, outside); } } } - private static void getInsideAndOutside(@NotNull PsiFile root, - int startOffset, - int endOffset, - @NotNull TextRange range, - @NotNull List inside, - @NotNull List outside + private static void divideInsideAndOutside(@NotNull PsiFile root, + int startOffset, + int endOffset, + @NotNull TextRange range, + @NotNull List inside, + @NotNull List outside ) { final int currentOffset = root.getTextRange().getStartOffset(); final Condition[] filters = Extensions.getExtensions(CollectHighlightsUtil.EP_NAME); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java index 31fae9a7e9a2..4639dc80d9ab 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/GeneralHighlightingPass.java @@ -92,6 +92,7 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP } }; private Runnable myApplyCommand; + private final EditorColorsScheme myGlobalScheme; public GeneralHighlightingPass(@NotNull Project project, @NotNull PsiFile file, @@ -134,6 +135,7 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP // initial guess to show correct progress in the traffic light icon setProgressLimit(document.getTextLength()/2); // approx number of PSI elements = file length/2 + myGlobalScheme = EditorColorsManager.getInstance().getGlobalScheme(); } private static final Key HIGHLIGHT_VISITOR_INSTANCE_COUNT = new Key("HIGHLIGHT_VISITOR_INSTANCE_COUNT"); @@ -164,7 +166,7 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP } protected void collectInformationWithProgress(final ProgressIndicator progress) { - final Set result = new THashSet(100); + final Set gotHighlights = new THashSet(100); final Set outsideResult = new THashSet(100); DaemonCodeAnalyzer daemonCodeAnalyzer = DaemonCodeAnalyzer.getInstance(myProject); @@ -174,100 +176,105 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP final List inside = new ArrayList(); final List outside = new ArrayList(); try { - Divider.getInsideAndOutside(myFile, myStartOffset, myEndOffset, myPriorityRange, inside, outside, HighlightLevelUtil.AnalysisLevel.HIGHLIGHT); - final List injectedInside = new ArrayList(); - final List injectedOutside = new ArrayList(); - divideInjectedPsiHighlights(inside, outside, progress, injectedInside, injectedOutside); + Divider.divideInsideAndOutside(myFile, myStartOffset, myEndOffset, myPriorityRange, inside, outside, + HighlightLevelUtil.AnalysisLevel.HIGHLIGHT); + final Set injected = new THashSet(); + getInjectedPsiFiles(inside, outside, progress, injected); - setProgressLimit((long)(inside.size()+outside.size()) /** filteredVisitors.length*/); + setProgressLimit((long)(inside.size()+outside.size())); final boolean forceHighlightParents = forceHighlightParents(); if (!isDumbMode()) { - highlightTodos(myFile, myDocument.getCharsSequence(), myStartOffset, myEndOffset, progress, myPriorityRange, result, outsideResult); + highlightTodos(myFile, myDocument.getCharsSequence(), myStartOffset, myEndOffset, progress, myPriorityRange, gotHighlights, outsideResult); } collectHighlights(inside, new Runnable() { @Override public void run() { - if (!addInjectedPsiHighlights(injectedInside, progress, Collections.synchronizedSet(result))) throw new ProcessCanceledException(); + // all infos for the "injected fragment for the host which is inside" are indeed inside + // but some of the infos for the "injected fragment for the host which is outside" can be still inside + THashSet injectedResult = new THashSet(); + if (!addInjectedPsiHighlights(injected, progress, Collections.synchronizedSet(injectedResult))) throw new ProcessCanceledException(); - if (!outside.isEmpty() || !injectedOutside.isEmpty()) { - if (!inside.isEmpty() || !injectedInside.isEmpty()) { // do not apply when there were no elements to highlight - // clear infos found in visible area to avoid applying them twice - final List toApply = new ArrayList(result.size()); - for (HighlightInfo info : result) { - if (myPriorityRange.containsRange(info.getStartOffset(), info.getEndOffset())) { - toApply.add(info); - } - else { - outsideResult.add(info); - } - } - myHighlights.addAll(toApply); - result.clear(); - result.addAll(outsideResult); + //if (!addInjectedPsiHighlights(injectedOutside, progress, result)) throw new ProcessCanceledException(); + final List toApplyOutside = new ArrayList(gotHighlights.size()); - UIUtil.invokeLaterIfNeeded(new Runnable() { - @Override - public void run() { - if (myProject.isDisposed()) return; - MarkupModel markupModel = myDocument.getMarkupModel(myProject); - - ProperTextRange range = myPriorityRange.intersection(new TextRange(myStartOffset, myEndOffset)); - final EditorColorsScheme colorsScheme = getColorsScheme(); - UpdateHighlightersUtil.setHighlightersInRange(myProject, myDocument, range, colorsScheme, toApply, - (MarkupModelEx)markupModel, Pass.UPDATE_ALL); - } - }); - UIUtil.invokeLaterIfNeeded(new Runnable() { - @Override - public void run() { - if (myProject.isDisposed() || myEditor == null) return; - new ShowAutoImportPass(myProject, myFile, myEditor).applyInformationToEditor(); - } - }); + for (HighlightInfo info : injectedResult) { + if (myPriorityRange.containsRange(info.getStartOffset(), info.getEndOffset())) { + gotHighlights.add(info); } + else { + // nonconditionally apply injected results regardless whether they are in myStartOffset,myEndOffset + toApplyOutside.add(info); + } + } - final List injectedOutsideInfos = Collections.synchronizedList(new ArrayList()); - if (!addInjectedPsiHighlights(injectedOutside, progress, injectedOutsideInfos)) throw new ProcessCanceledException(); + if (outsideResult.isEmpty() && toApplyOutside.isEmpty()) { + return; // apply only result (by default apply command) and only within inside + } - myApplyCommand = new Runnable() { + final ProperTextRange priorityIntersection = myPriorityRange.intersection(new TextRange(myStartOffset, myEndOffset)); + if ((!inside.isEmpty() || !gotHighlights.isEmpty()) && priorityIntersection != null) { // do not apply when there were no elements to highlight + // clear infos found in visible area to avoid applying them twice + final List toApplyInside = new ArrayList(gotHighlights); + myHighlights.addAll(toApplyInside); + gotHighlights.clear(); + gotHighlights.addAll(outsideResult); + + UIUtil.invokeLaterIfNeeded(new Runnable() { @Override public void run() { - final List insideInfos = new ArrayList(result.size()); - final List toApply = new ArrayList(result.size()); + if (myProject.isDisposed()) return; + MarkupModel markupModel = myDocument.getMarkupModel(myProject); - ProperTextRange range = new ProperTextRange(myStartOffset, myEndOffset); - - for (HighlightInfo info : result) { - if (!range.containsRange(info.getStartOffset(), info.getEndOffset())) continue; - if (myPriorityRange.containsRange(info.getStartOffset(), info.getEndOffset())) { - insideInfos.add(info); - } - else { - toApply.add(info); - } - } - - toApply.addAll(injectedOutsideInfos); - - /* - if (!insideInfos.isEmpty()) { - // some one has reported highlights inside range while running annotators for outside range - bad, bad annotator! - for (HighlightInfo info : insideInfos) { - toApply.add(info); - } - } - */ - - UpdateHighlightersUtil.setHighlightersOutsideRange(myProject, myDocument, toApply, getColorsScheme(), - myStartOffset, myEndOffset, myPriorityRange, Pass.UPDATE_ALL); + UpdateHighlightersUtil.setHighlightersInRange(myProject, myDocument, priorityIntersection, getColorsScheme(), toApplyInside, + (MarkupModelEx)markupModel, Pass.UPDATE_ALL); } - }; + }); + UIUtil.invokeLaterIfNeeded(new Runnable() { + @Override + public void run() { + if (myProject.isDisposed() || myEditor == null) return; + new ShowAutoImportPass(myProject, myFile, myEditor).applyInformationToEditor(); + } + }); } + + myApplyCommand = new Runnable() { + @Override + public void run() { + final List insideInfos = new ArrayList(gotHighlights.size()); + + ProperTextRange range = new ProperTextRange(myStartOffset, myEndOffset); + + for (HighlightInfo info : gotHighlights) { + if (!range.containsRange(info.getStartOffset(), info.getEndOffset())) continue; + if (myPriorityRange.containsRange(info.getStartOffset(), info.getEndOffset())) { + insideInfos.add(info); + } + else { + toApplyOutside.add(info); + } + } + + //toApply.addAll(injectedOutsideInfos); + + /* + if (!insideInfos.isEmpty()) { + // some one has reported highlights inside range while running annotators for outside range - bad, bad annotator! + for (HighlightInfo info : insideInfos) { + toApply.add(info); + } + } + */ + + UpdateHighlightersUtil.setHighlightersOutsideRange(myProject, myDocument, toApplyOutside, getColorsScheme(), + myStartOffset, myEndOffset, myPriorityRange, Pass.UPDATE_ALL); + } + }; } - }, outside, progress, filteredVisitors, result, forceHighlightParents); + }, outside, progress, filteredVisitors, gotHighlights, forceHighlightParents); if (myUpdateAll) { fileStatusMap.setErrorFoundFlag(myDocument, myErrorFound); @@ -276,14 +283,13 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP finally { incVisitorUsageCount(-1); } - myHighlights.addAll(result); + myHighlights.addAll(gotHighlights); } - private void divideInjectedPsiHighlights(@NotNull final List elements1, - @NotNull final List elements2, - @NotNull final ProgressIndicator progress, - @NotNull List inside, - @NotNull List outside) { + private void getInjectedPsiFiles(@NotNull final List elements1, + @NotNull final List elements2, + @NotNull final ProgressIndicator progress, + @NotNull final Set outInjected) { List injected = InjectedLanguageUtil.getCachedInjectedDocuments(myFile); Collection hosts = new THashSet(elements1.size() + elements2.size() + injected.size()); @@ -305,39 +311,35 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP hosts.addAll(elements1); hosts.addAll(elements2); + PsiLanguageInjectionHost.InjectedPsiVisitor visitor = new PsiLanguageInjectionHost.InjectedPsiVisitor() { + public void visit(@NotNull PsiFile injectedPsi, @NotNull List places) { + outInjected.add(injectedPsi); + } + }; for (PsiElement element : hosts) { progress.checkCanceled(); - final List destination = myPriorityRange.intersects(element.getTextRange()) ? inside : outside; - InjectedLanguageUtil.enumerate(element, myFile, new PsiLanguageInjectionHost.InjectedPsiVisitor() { - public void visit(@NotNull PsiFile injectedPsi, @NotNull List places) { - destination.add(injectedPsi); // for concatenations there can be many injection hosts with only one injected PSI - } - }, false); + InjectedLanguageUtil.enumerate(element, myFile, visitor, false); } } // returns false if canceled - private boolean addInjectedPsiHighlights(@NotNull final List injectedFiles, - final ProgressIndicator progress, - final Collection infos) { - EditorColorsScheme scheme = EditorColorsManager.getInstance().getGlobalScheme(); - final TextAttributes injectedAttributes = scheme.getAttributes(EditorColors.INJECTED_LANGUAGE_FRAGMENT); - + private boolean addInjectedPsiHighlights(@NotNull final Set injectedFiles, + @NotNull final ProgressIndicator progress, + @NotNull final Collection outInfos) { if (injectedFiles.isEmpty()) return true; final InjectedLanguageManager injectedLanguageManager = InjectedLanguageManager.getInstance(myProject); + final TextAttributes injectedAttributes = myGlobalScheme.getAttributes(EditorColors.INJECTED_LANGUAGE_FRAGMENT); return JobUtil.invokeConcurrentlyUnderProgress(new ArrayList(injectedFiles), new Processor() { public boolean process(final PsiFile injectedPsi) { DocumentWindow documentWindow = (DocumentWindow)PsiDocumentManager.getInstance(myProject).getCachedDocument(injectedPsi); - Place places = InjectedLanguageUtil.getShreds(injectedPsi); for (PsiLanguageInjectionHost.Shred place : places) { TextRange textRange = place.getRangeInsideHost().shiftRight(place.host.getTextRange().getStartOffset()); if (textRange.isEmpty()) continue; String desc = injectedPsi.getLanguage().getDisplayName() + ": " + injectedPsi.getText(); - HighlightInfo info = - HighlightInfo.createHighlightInfo(HighlightInfoType.INJECTED_LANGUAGE_FRAGMENT, textRange, null, desc, injectedAttributes); - infos.add(info); + HighlightInfo info = HighlightInfo.createHighlightInfo(HighlightInfoType.INJECTED_LANGUAGE_FRAGMENT, textRange, null, desc, injectedAttributes); + outInfos.add(info); } HighlightInfoHolder holder = createInfoHolder(injectedPsi); @@ -346,7 +348,7 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP HighlightInfo info = holder.get(i); final int startOffset = documentWindow.injectedToHost(info.startOffset); final TextRange fixedTextRange = getFixedTextRange(documentWindow, startOffset); - addPatchedInfos(info, injectedPsi, documentWindow, injectedLanguageManager, fixedTextRange, infos); + addPatchedInfos(info, injectedPsi, documentWindow, injectedLanguageManager, fixedTextRange, outInfos); } holder.clear(); highlightInjectedSyntax(injectedPsi, holder); @@ -355,14 +357,14 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP final int startOffset = info.startOffset; final TextRange fixedTextRange = getFixedTextRange(documentWindow, startOffset); if (fixedTextRange == null) { - infos.add(info); + outInfos.add(info); } else { HighlightInfo patched = new HighlightInfo(info.forcedTextAttributes, info.forcedTextAttributesKey, info.type, fixedTextRange.getStartOffset(), fixedTextRange.getEndOffset(), info.description, info.toolTip, info.type.getSeverity(null), info.isAfterEndOfLine, null, false); - infos.add(patched); + outInfos.add(patched); } } @@ -370,7 +372,7 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP List todos = new ArrayList(); highlightTodos(injectedPsi, injectedPsi.getText(), 0, injectedPsi.getTextLength(), progress, myPriorityRange, todos, todos); for (HighlightInfo info : todos) { - addPatchedInfos(info, injectedPsi, documentWindow, injectedLanguageManager, null, infos); + addPatchedInfos(info, injectedPsi, documentWindow, injectedLanguageManager, null, outInfos); } } return true; @@ -461,15 +463,14 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP } } - private static void highlightInjectedSyntax(final PsiFile injectedPsi, HighlightInfoHolder holder) { + private void highlightInjectedSyntax(final PsiFile injectedPsi, HighlightInfoHolder holder) { List> tokens = InjectedLanguageUtil.getHighlightTokens(injectedPsi); if (tokens == null) return; final Language injectedLanguage = injectedPsi.getLanguage(); - SyntaxHighlighter syntaxHighlighter = - SyntaxHighlighterFactory.getSyntaxHighlighter(injectedLanguage, injectedPsi.getProject(), injectedPsi.getVirtualFile()); - EditorColorsScheme globalScheme = EditorColorsManager.getInstance().getGlobalScheme(); - final TextAttributes defaultAttrs = globalScheme.getAttributes(HighlighterColors.TEXT); + Project project = injectedPsi.getProject(); + SyntaxHighlighter syntaxHighlighter = SyntaxHighlighterFactory.getSyntaxHighlighter(injectedLanguage, project, injectedPsi.getVirtualFile()); + final TextAttributes defaultAttrs = myGlobalScheme.getAttributes(HighlighterColors.TEXT); for (Trinity token : tokens) { IElementType tokenType = token.getFirst(); @@ -482,7 +483,7 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP // force attribute colors to override host' ones TextAttributes attributes = null; for(TextAttributesKey key:keys) { - TextAttributes attrs2 = globalScheme.getAttributes(key); + TextAttributes attrs2 = myGlobalScheme.getAttributes(key); if (attrs2 != null) { attributes = attributes != null ? TextAttributes.merge(attributes, attrs2):attrs2; } @@ -492,8 +493,8 @@ public class GeneralHighlightingPass extends ProgressableTextEditorHighlightingP forcedAttributes = TextAttributes.ERASE_MARKER; } else { - Color back = attributes.getBackgroundColor() == null ? globalScheme.getDefaultBackground() : attributes.getBackgroundColor(); - Color fore = attributes.getForegroundColor() == null ? globalScheme.getDefaultForeground() : attributes.getForegroundColor(); + Color back = attributes.getBackgroundColor() == null ? myGlobalScheme.getDefaultBackground() : attributes.getBackgroundColor(); + Color fore = attributes.getForegroundColor() == null ? myGlobalScheme.getDefaultForeground() : attributes.getForegroundColor(); forcedAttributes = new TextAttributes(fore, back, attributes.getEffectColor(), attributes.getEffectType(), attributes.getFontType()); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java index 588505aeeff7..49860790a791 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/LocalInspectionsPass.java @@ -195,7 +195,8 @@ public class LocalInspectionsPass extends ProgressableTextEditorHighlightingPass ArrayList inside = new ArrayList(); ArrayList outside = new ArrayList(); - Divider.getInsideAndOutside(myFile, myStartOffset, myEndOffset, myPriorityRange, inside, outside, HighlightLevelUtil.AnalysisLevel.HIGHLIGHT_AND_INSPECT); + Divider.divideInsideAndOutside(myFile, myStartOffset, myEndOffset, myPriorityRange, inside, outside, + HighlightLevelUtil.AnalysisLevel.HIGHLIGHT_AND_INSPECT); setProgressLimit(1L * tools.size() *2/** (inside.size() + outside.size())*/); final LocalInspectionToolSession session = new LocalInspectionToolSession(myFile, myStartOffset, myEndOffset); diff --git a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/UpdateHighlightersUtil.java b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/UpdateHighlightersUtil.java index 48f71b088b5f..b13022438f17 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/UpdateHighlightersUtil.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/daemon/impl/UpdateHighlightersUtil.java @@ -222,7 +222,7 @@ public class UpdateHighlightersUtil { static void setHighlightersOutsideRange(@NotNull final Project project, @NotNull final Document document, @NotNull Collection infos, - @Nullable final EditorColorsScheme colorsScheme, // if null global scheme will be used + @Nullable final EditorColorsScheme colorsScheme, // if null global scheme will be used int startOffset, int endOffset, @NotNull final ProperTextRange range, final int group) { @@ -245,8 +245,8 @@ public class UpdateHighlightersUtil { RangeHighlighter highlighter = info.highlighter; int hiStart = highlighter.getStartOffset(); int hiEnd = highlighter.getEndOffset(); - boolean willBeRemoved = hiEnd == document.getTextLength() && range.getEndOffset() == document.getTextLength() - || !range.containsRange(hiStart, hiEnd); + boolean willBeRemoved = !(hiEnd == document.getTextLength() && range.getEndOffset() == document.getTextLength()) && + !range.containsRange(hiStart, hiEnd); if (willBeRemoved) { infosToRemove.recycleHighlighter(highlighter); info.highlighter = null; @@ -316,7 +316,7 @@ public class UpdateHighlightersUtil { int hiStart = highlighter.getStartOffset(); int hiEnd = highlighter.getEndOffset(); boolean willBeRemoved = hiEnd == document.getTextLength() && range.getEndOffset() == document.getTextLength() - || range.intersectsStrict(hiStart, hiEnd) || range.containsRange(hiStart, hiEnd) || hiStart <= range.getStartOffset() && hiEnd >= range.getEndOffset(); + /*|| range.intersectsStrict(hiStart, hiEnd)*/ || range.containsRange(hiStart, hiEnd) /*|| hiStart <= range.getStartOffset() && hiEnd >= range.getEndOffset()*/; if (willBeRemoved) { infosToRemove.recycleHighlighter(highlighter); info.highlighter = null; From 58035a11ca8a6328fa38deeaa2625e526fd6bcb1 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Fri, 12 Nov 2010 12:32:55 +0300 Subject: [PATCH 05/12] cleanup --- .../tree/injected/MultiHostRegistrarImpl.java | 15 ++++++++------- .../src/com/intellij/openapi/util/Computable.java | 2 +- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/MultiHostRegistrarImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/MultiHostRegistrarImpl.java index 8f1afc94defb..d572cbdcbb91 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/MultiHostRegistrarImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/MultiHostRegistrarImpl.java @@ -436,13 +436,14 @@ public class MultiHostRegistrarImpl implements MultiHostRegistrar { } } - // returns lexer elemet types with corresponsing ranges in encoded (injection host based) PSI - private static List> obtainHighlightTokensFromLexer(Language language, - StringBuilder outChars, - List> escapers, - Place shreds, - VirtualFileWindow virtualFile, - Project project) { + // returns lexer element types with corresponding ranges in encoded (injection host based) PSI + private static List> + obtainHighlightTokensFromLexer(Language language, + StringBuilder outChars, + List> escapers, + Place shreds, + VirtualFileWindow virtualFile, + Project project) { List> tokens = new ArrayList>(10); SyntaxHighlighter syntaxHighlighter = SyntaxHighlighterFactory.getSyntaxHighlighter(language, project, (VirtualFile)virtualFile); Lexer lexer = syntaxHighlighter.getHighlightingLexer(); diff --git a/platform/util/src/com/intellij/openapi/util/Computable.java b/platform/util/src/com/intellij/openapi/util/Computable.java index bb8c723e265a..c0478a2c7d92 100644 --- a/platform/util/src/com/intellij/openapi/util/Computable.java +++ b/platform/util/src/com/intellij/openapi/util/Computable.java @@ -29,7 +29,7 @@ public interface Computable { private final T myValue; public PredefinedValueComputable(T value) { - this.myValue = value; + myValue = value; } @Override From 6d77530166e047247b968f0be1f5501a8ff0d38a Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Fri, 12 Nov 2010 12:46:12 +0300 Subject: [PATCH 06/12] undo: was wrongly marking document for undo (WI-3868) --- .../src/com/intellij/openapi/command/impl/UndoManagerImpl.java | 1 - 1 file changed, 1 deletion(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java index 75fe053465fd..13f996a42666 100644 --- a/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/command/impl/UndoManagerImpl.java @@ -152,7 +152,6 @@ public class UndoManagerImpl extends UndoManager implements ProjectComponent, Ap public void commandStarted(CommandEvent event) { onCommandStarted(event.getProject(), event.getUndoConfirmationPolicy()); - if (event.getDocument() != null) addAffectedDocuments(event.getDocument()); } public void commandFinished(CommandEvent event) { From a04851a4f05ba7a22617dd79016fea7675c1cc54 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 12 Nov 2010 12:08:19 +0300 Subject: [PATCH 07/12] always show items with Language ANY [by yole] --- .../ide/util/gotoByName/GotoClassModel2.java | 12 +++++++++++- .../ide/util/gotoByName/GotoSymbolModel2.java | 10 ++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoClassModel2.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoClassModel2.java index ba00a54753f3..0cc287f2a556 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoClassModel2.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoClassModel2.java @@ -28,6 +28,9 @@ import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import java.util.Collection; +import java.util.HashSet; + public class GotoClassModel2 extends FilteringGotoByModel { public GotoClassModel2(Project project) { super(project, ChooseByNameRegistry.getInstance().getClassModelContributors()); @@ -38,6 +41,13 @@ public class GotoClassModel2 extends FilteringGotoByModel { return item instanceof PsiElement ? ((PsiElement) item).getLanguage() : null; } + @Override + protected synchronized Collection getFilterItems() { + final Collection items = new HashSet(super.getFilterItems()); + items.add(Language.ANY); + return items; + } + @Nullable public String getPromptText() { return IdeBundle.message("prompt.gotoclass.enter.class.name"); @@ -94,4 +104,4 @@ public class GotoClassModel2 extends FilteringGotoByModel { public String getHelpId() { return "procedures.navigating.goto.class"; } -} \ No newline at end of file +} diff --git a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoSymbolModel2.java b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoSymbolModel2.java index 1fe4708146f3..5b6274a409e9 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoSymbolModel2.java +++ b/platform/lang-impl/src/com/intellij/ide/util/gotoByName/GotoSymbolModel2.java @@ -25,6 +25,9 @@ import com.intellij.psi.PsiElement; import com.intellij.psi.presentation.java.SymbolPresentationUtil; import org.jetbrains.annotations.NotNull; +import java.util.Collection; +import java.util.HashSet; + public class GotoSymbolModel2 extends FilteringGotoByModel { public GotoSymbolModel2(Project project) { super(project, ChooseByNameRegistry.getInstance().getSymbolModelContributors()); @@ -35,6 +38,13 @@ public class GotoSymbolModel2 extends FilteringGotoByModel { return item instanceof PsiElement ? ((PsiElement) item).getLanguage() : null; } + @Override + protected synchronized Collection getFilterItems() { + final Collection items = new HashSet(super.getFilterItems()); + items.add(Language.ANY); + return items; + } + public String getPromptText() { return IdeBundle.message("prompt.gotosymbol.enter.symbol.name"); } From 5bd6523f4447b2f5d7dfcafa5093c9da881aa180 Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Fri, 12 Nov 2010 12:52:48 +0300 Subject: [PATCH 08/12] IDEA-60590: goto spring beans broken --- .../model/gotosymbol/GoToSymbolProvider.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/xml/dom-openapi/src/com/intellij/util/xml/model/gotosymbol/GoToSymbolProvider.java b/xml/dom-openapi/src/com/intellij/util/xml/model/gotosymbol/GoToSymbolProvider.java index 6766706216cb..76002f581f2c 100644 --- a/xml/dom-openapi/src/com/intellij/util/xml/model/gotosymbol/GoToSymbolProvider.java +++ b/xml/dom-openapi/src/com/intellij/util/xml/model/gotosymbol/GoToSymbolProvider.java @@ -24,6 +24,7 @@ import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; import com.intellij.psi.impl.FakePsiElement; import com.intellij.psi.xml.XmlElement; import com.intellij.util.ArrayUtil; @@ -160,6 +161,22 @@ public abstract class GoToSymbolProvider implements ChooseByNameContributor { return myPsiElement.getParent(); } + @NotNull + @Override + public Project getProject() { + return myPsiElement.getProject(); + } + + @Override + public PsiFile getContainingFile() { + return myPsiElement.getContainingFile(); + } + + @Override + public boolean isValid() { + return myPsiElement.isValid(); + } + public boolean equals(final Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; From 54577bd70dec018e5cb0072109e3574f0805c04d Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Thu, 11 Nov 2010 19:20:57 +0300 Subject: [PATCH 09/12] IDEA-60448: visual hint when mouse is over scrollbar thumb. --- .../util/ui/ButtonlessScrollBarUI.java | 54 +++++++++++++++---- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/platform/platform-api/src/com/intellij/util/ui/ButtonlessScrollBarUI.java b/platform/platform-api/src/com/intellij/util/ui/ButtonlessScrollBarUI.java index 76b1172dea3b..df6b93f470a2 100644 --- a/platform/platform-api/src/com/intellij/util/ui/ButtonlessScrollBarUI.java +++ b/platform/platform-api/src/com/intellij/util/ui/ButtonlessScrollBarUI.java @@ -25,8 +25,7 @@ import com.intellij.ui.LightColors; import javax.swing.*; import javax.swing.plaf.basic.BasicScrollBarUI; import java.awt.*; -import java.awt.event.AdjustmentEvent; -import java.awt.event.AdjustmentListener; +import java.awt.event.*; public class ButtonlessScrollBarUI extends BasicScrollBarUI { public static final Color GRADIENT_LIGHT = new SameColor(0xfb); @@ -36,21 +35,19 @@ public class ButtonlessScrollBarUI extends BasicScrollBarUI { public static final Color TRACK_BORDER = new SameColor(230); private final AdjustmentListener myAdjustmentListener; + private MouseMotionAdapter myMouseMotionListener; + private MouseAdapter myMouseListener; + private final Animator myAnimator; private int myAnimationColorShift = 0; + private boolean myMouseIsOverThumb = false; protected ButtonlessScrollBarUI() { myAdjustmentListener = new AdjustmentListener() { @Override public void adjustmentValueChanged(AdjustmentEvent e) { - myAnimator.reset(); - if (!scrollbar.getValueIsAdjusting()) { - myAnimator.resume(); - } - else { - myAnimationColorShift = 40; - } + resetAnimator(); } }; @@ -69,6 +66,37 @@ public class ButtonlessScrollBarUI extends BasicScrollBarUI { } } }; + + myMouseMotionListener = new MouseMotionAdapter() { + @Override + public void mouseMoved(MouseEvent e) { + boolean inside = isOverThumb(e.getPoint()); + if (inside != myMouseIsOverThumb) { + myMouseIsOverThumb = inside; + resetAnimator(); + } + } + }; + + myMouseListener = new MouseAdapter() { + @Override + public void mouseExited(MouseEvent e) { + if (myMouseIsOverThumb) { + myMouseIsOverThumb = false; + resetAnimator(); + } + } + }; + } + + private void resetAnimator() { + myAnimator.reset(); + if (scrollbar != null && scrollbar.getValueIsAdjusting() || myMouseIsOverThumb) { + myAnimationColorShift = 40; + } + else { + myAnimator.resume(); + } } public static BasicScrollBarUI createNormal() { @@ -85,6 +113,13 @@ public class ButtonlessScrollBarUI extends BasicScrollBarUI { protected void installListeners() { super.installListeners(); scrollbar.addAdjustmentListener(myAdjustmentListener); + scrollbar.addMouseListener(myMouseListener); + scrollbar.addMouseMotionListener(myMouseMotionListener); + } + + private boolean isOverThumb(Point p) { + final Rectangle bounds = getThumbBounds(); + return bounds != null && bounds.contains(p); } @Override @@ -151,7 +186,6 @@ public class ButtonlessScrollBarUI extends BasicScrollBarUI { int vgap = vertical ? 1 : 2; - int w = adjustThumbWidth(thumbBounds.width - hgap * 2); int h = thumbBounds.height - vgap * 2; From 300c360f5aabbb59448ad1a083167436638781c9 Mon Sep 17 00:00:00 2001 From: Maxim Shafirov Date: Fri, 12 Nov 2010 13:11:48 +0300 Subject: [PATCH 10/12] Workaround squared algorithm for these two (identical?) inspections. --- .../controlflow/DuplicateConditionInspection.java | 15 ++++++++++----- ...fStatementWithIdenticalBranchesInspection.java | 8 ++++++-- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/DuplicateConditionInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/DuplicateConditionInspection.java index f21ec4b6ee06..d5cad2ef4894 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/DuplicateConditionInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/DuplicateConditionInspection.java @@ -15,13 +15,13 @@ */ package com.siyeh.ig.controlflow; +import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel; import com.intellij.psi.*; import com.intellij.psi.tree.IElementType; import com.siyeh.InspectionGadgetsBundle; import com.siyeh.ig.BaseInspection; import com.siyeh.ig.BaseInspectionVisitor; import com.siyeh.ig.psiutils.EquivalenceChecker; -import com.intellij.codeInspection.ui.SingleCheckboxOptionsPanel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -35,6 +35,9 @@ public class DuplicateConditionInspection extends BaseInspection { /** @noinspection PublicField*/ public boolean ignoreMethodCalls = false; + // This is a dirty fix of 'squared' algorithm performance issue. + private static final int LIMIT_DEPTH = 20; + @NotNull public String getDisplayName() { return InspectionGadgetsBundle.message( @@ -73,7 +76,7 @@ public class DuplicateConditionInspection extends BaseInspection { } } final Set conditions = new HashSet(); - collectConditionsForIfStatement(statement, conditions); + collectConditionsForIfStatement(statement, conditions, 0); final int numConditions = conditions.size(); if (numConditions < 2) { return; @@ -113,13 +116,15 @@ public class DuplicateConditionInspection extends BaseInspection { } private void collectConditionsForIfStatement( - PsiIfStatement statement, Set conditions) { + PsiIfStatement statement, Set conditions, int depth) { + if (depth > LIMIT_DEPTH) return; + final PsiExpression condition = statement.getCondition(); collectConditionsForExpression(condition, conditions); final PsiStatement branch = statement.getElseBranch(); if (branch instanceof PsiIfStatement) { collectConditionsForIfStatement((PsiIfStatement)branch, - conditions); + conditions, depth + 1); } } @@ -165,4 +170,4 @@ public class DuplicateConditionInspection extends BaseInspection { return false; } } -} \ No newline at end of file +} diff --git a/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/IfStatementWithIdenticalBranchesInspection.java b/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/IfStatementWithIdenticalBranchesInspection.java index f1cb33b54e1e..0d6393f5dd24 100644 --- a/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/IfStatementWithIdenticalBranchesInspection.java +++ b/plugins/InspectionGadgets/src/com/siyeh/ig/controlflow/IfStatementWithIdenticalBranchesInspection.java @@ -151,7 +151,9 @@ public class IfStatementWithIdenticalBranchesInspection private static class IfStatementWithIdenticalBranchesVisitor extends BaseInspectionVisitor{ - @Override public void visitIfStatement( + private static final int LIMIT_DEPTH = 20; // Dirty fix for 'squared' algorithm. + + @Override public void visitIfStatement( @NotNull PsiIfStatement ifStatement){ super.visitIfStatement(ifStatement); final PsiStatement thenBranch = ifStatement.getThenBranch(); @@ -178,7 +180,9 @@ public class IfStatementWithIdenticalBranchesInspection public static PsiStatement getIdenticalElseIfStatement( PsiStatement thenBranch, PsiStatement elseBranch) { + int depth = 0; while (elseBranch instanceof PsiIfStatement) { + if (depth++ > LIMIT_DEPTH) break; final PsiIfStatement statement = (PsiIfStatement) elseBranch; final PsiStatement branch = statement.getThenBranch(); @@ -265,4 +269,4 @@ public class IfStatementWithIdenticalBranchesInspection return nextStatement; } } -} \ No newline at end of file +} From d538e0686de65fc9ed029b7cc3b636c9e3d02b24 Mon Sep 17 00:00:00 2001 From: Ekaterina Shliakhovetskaja Date: Fri, 12 Nov 2010 13:58:23 +0300 Subject: [PATCH 11/12] License Support: fix NPE in evaluation feedback dialog (temporary solution) --- .../com/intellij/spellchecker/jetbrains.dic | 585 +++++++++--------- 1 file changed, 294 insertions(+), 291 deletions(-) diff --git a/plugins/spellchecker/src/com/intellij/spellchecker/jetbrains.dic b/plugins/spellchecker/src/com/intellij/spellchecker/jetbrains.dic index 4d412306660b..8f6b14767d67 100644 --- a/plugins/spellchecker/src/com/intellij/spellchecker/jetbrains.dic +++ b/plugins/spellchecker/src/com/intellij/spellchecker/jetbrains.dic @@ -1,291 +1,294 @@ -aggregator -ajax -anyschema -appender -archivelog -args -arity -asensitive -auth -authid -autocommit -autoextend -autoincrement -barcode -backend -basedir -basicfile -bfile -bigfile -bigint -binlog -bool -btree -calc -capath -captcha -ccflags -cdata -charset -checkbox -checksum -classpath -clazz -clob -closable -cmdline -commandline -config -configs -configurator -controlfile -cron -ctrl -datafile -datafiles -datetime -deallocate -deduplicate -deferrable -desc -dirs -distinctrow -django -dojo -draggable -dumpfile -elseif -elsif -enum -evex -expr -filename -fileset -filesets -filesystem -foreach -formatter -freelist -freelists -freepools -frontend -fulltext -geometrycollection -getters -gdata -google -hardcoded -holdability -hostname -href -hsqldb -html -http -https -impl -inbox -indextype -infile -init -initializer -initrans -inline -innodb -inout -instantiable -intellij -isnull -javadoc -javascript -jetbrains -jquery -json -keepduplicates -ldap -likec -linestring -localhost -localtime -localtimestamp -locator -logfile -login -logoff -logon -logout -longblob -longtext -lookup -lucene -maxdatafiles -maxextents -maximizable -maxinstances -maxlogfiles -maxloghistory -maxlogmembers -maxsize -maxtrans -maxvalue -mediumblob -mediumint -mediumtext -metadata -middleint -minextents -minimizable -minvalue -miny -mlslabel -multilinestring -multipoint -multipolygon -multiset -mutex -mutexes -mysql -namespace -namespaces -nchar -nclob -ndbcluster -noarchivelog -noaudit -nocache -nocompress -nocopy -nocycle -nodegroup -noinspection -noinspections -nologging -nomapping -nomaxvalue -nominvalue -nomonitoring -nonschema -noorder -noparallel -norely -noresetlogs -noreverse -norowdependencies -nosort -notnull -novalidate -nowait -nullif -nvarchar -oauth -oidindex -online -openid -openssl -outfile -param -params -pctfree -pctincrease -pctthreshold -pctused -pctversion -permalink -petersburg -pipelined -playlist -plsql -plugin -plugins -posix -pragma -prebuilt -prepend -preprocessor -processlist -profiler -progressbar -readonly -refactor -refactored -refactoring -reindex -renderer -resetlogs -rlike -rollup -rowdependencies -rtree -rubymine -runtime -savepoint -schemas -securefile -serializable -serializer -servererror -servlet -smallfile -smallint -soname -spellchecker -spellchecking -sqlcode -sqlerror -sqlexception -sqlstate -sqlwarning -startup -stateful -stmt -stylesheet -subpackage -subpartition -subpartitions -substring -sysdate -systimestamp -tablespace -taglib -temptable -timestamp -tinyblob -tinyint -tinytext -todo -tokenize -tokenizer -tooltips -trinary -twitter -uncomment -underwave -undofile -unhandled -uninstall -unpivot -urowid -utf -util -utils -validator -validators -vararg -varbinary -varchar -varcharacter -varray -versa -vertices -webservice -whitespace -wildcard -workflow -wsdl -xmlschema -xmlschemas -xmltype -xpath -xslt -youtube -zend -zerofill +aggregator +ajax +anyschema +appender +archivelog +args +arity +asensitive +auth +authid +autocommit +autoextend +autoincrement +barcode +backend +basedir +basicfile +bfile +bigfile +bigint +binlog +bool +btree +calc +capath +captcha +ccflags +cdata +charset +checkbox +checksum +classpath +clazz +clob +closable +cmdline +commandline +config +configs +configurator +controlfile +cron +ctrl +datafile +datafiles +datetime +deallocate +deduplicate +deferrable +desc +dirs +distinctrow +django +dojo +draggable +dumpfile +elseif +elsif +enum +evex +expr +filename +fileset +filesets +filesystem +foreach +formatter +freelist +freelists +freepools +frontend +fulltext +geometrycollection +getters +gdata +google +hardcoded +holdability +hostname +href +hsqldb +html +http +https +impl +inbox +indextype +infile +init +initializer +initrans +inline +innodb +inout +instantiable +intellij +isnull +javadoc +javascript +jetbrains +jquery +json +keepduplicates +ldap +likec +linestring +localhost +localtime +localtimestamp +locator +logfile +login +logoff +logon +logout +longblob +longtext +lookup +lucene +maxdatafiles +maxextents +maximizable +maxinstances +maxlogfiles +maxloghistory +maxlogmembers +maxsize +maxtrans +maxvalue +mediumblob +mediumint +mediumtext +metadata +middleint +minextents +minimizable +minvalue +miny +mlslabel +multilinestring +multipoint +multipolygon +multiset +mutex +mutexes +mysql +namespace +namespaces +nchar +nclob +ndbcluster +noarchivelog +noaudit +nocache +nocompress +nocopy +nocycle +nodegroup +noinspection +noinspections +nologging +nomapping +nomaxvalue +nominvalue +nomonitoring +nonschema +noorder +noparallel +norely +noresetlogs +noreverse +norowdependencies +nosort +notnull +novalidate +nowait +nullif +nvarchar +oauth +oidindex +online +openid +openssl +outfile +param +params +pctfree +pctincrease +pctthreshold +pctused +pctversion +permalink +petersburg +pipelined +playlist +plsql +plugin +plugins +posix +pragma +prebuilt +prepend +preprocessor +processlist +profiler +progressbar +readonly +refactor +refactored +refactoring +reindex +renderer +resetlogs +rlike +rollup +rowdependencies +rtree +rubymine +runtime +savepoint +schemas +securefile +serializable +serializer +servererror +servlet +smallfile +smallint +soname +spellchecker +spellchecking +sqlcode +sqlerror +sqlexception +sqlstate +sqlwarning +startup +stateful +stmt +stylesheet +subpackage +subpartition +subpartitions +substring +sysdate +systimestamp +tablespace +taglib +temptable +timestamp +tinyblob +tinyint +tinytext +todo +tokenize +tokenizer +tooltips +trinary +twitter +uncomment +underwave +undofile +unhandled +uninstall +unpivot +urowid +utf +util +utils +validator +validators +vararg +varbinary +varchar +varcharacter +varray +versa +vertices +webservice +whitespace +wildcard +workflow +wsdl +xmlschema +xmlschemas +xmltype +xpath +xslt +youtube +zend +zerofill +indices +postfix +Throwable \ No newline at end of file From 50cda353ce57a851e611fa33d1bf5ec79dba5208 Mon Sep 17 00:00:00 2001 From: Anton Makeev Date: Fri, 12 Nov 2010 13:02:16 +0300 Subject: [PATCH 12/12] maven: help for add archetype dialog (IDEA-61054) --- .../maven/wizards/MavenAddArchetypeDialog.java | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenAddArchetypeDialog.java b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenAddArchetypeDialog.java index 128c4f078846..8dc80a92e6f5 100644 --- a/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenAddArchetypeDialog.java +++ b/plugins/maven/src/main/java/org/jetbrains/idea/maven/wizards/MavenAddArchetypeDialog.java @@ -39,7 +39,7 @@ public class MavenAddArchetypeDialog extends DialogWrapper { init(); - DocumentAdapter l =new DocumentAdapter() { + DocumentAdapter l = new DocumentAdapter() { @Override protected void textChanged(DocumentEvent e) { doValidateInput(); @@ -63,6 +63,11 @@ public class MavenAddArchetypeDialog extends DialogWrapper { return myGroupIdField; } + @Override + protected String getHelpId() { + return "Add_Archetype_Dialog"; + } + private void doValidateInput() { List errors = new ArrayList(); if (StringUtil.isEmptyOrSpaces(myGroupIdField.getText())) errors.add("GroupId"); @@ -82,9 +87,9 @@ public class MavenAddArchetypeDialog extends DialogWrapper { public MavenArchetype getArchetype() { return new MavenArchetype(myGroupIdField.getText(), - myArtifactIdField.getText(), - myVersionField.getText(), - myRepositoryField.getText(), - null); + myArtifactIdField.getText(), + myVersionField.getText(), + myRepositoryField.getText(), + null); } }