mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
+8
-6
@@ -355,29 +355,31 @@ public class Java15APIUsageInspectionBase extends BaseJavaBatchLocalInspectionTo
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static String getSignature(PsiMember member) {
|
||||
private static String getSignature(@Nullable PsiMember member) {
|
||||
if (member instanceof PsiClass) {
|
||||
return ((PsiClass)member).getQualifiedName();
|
||||
}
|
||||
if (member instanceof PsiField) {
|
||||
return getSignature(member.getContainingClass()) + "#" + member.getName();
|
||||
String containingClass = getSignature(member.getContainingClass());
|
||||
return containingClass == null ? null : containingClass + "#" + member.getName();
|
||||
}
|
||||
if (member instanceof PsiMethod) {
|
||||
final PsiMethod method = (PsiMethod)member;
|
||||
String containingClass = getSignature(member.getContainingClass());
|
||||
if (containingClass == null) return null;
|
||||
|
||||
StringBuilder buf = new StringBuilder();
|
||||
buf.append(getSignature(method.getContainingClass()));
|
||||
buf.append(containingClass);
|
||||
buf.append('#');
|
||||
buf.append(method.getName());
|
||||
buf.append('(');
|
||||
final PsiType[] params = method.getSignature(PsiSubstitutor.EMPTY).getParameterTypes();
|
||||
for (PsiType type : params) {
|
||||
for (PsiType type : method.getSignature(PsiSubstitutor.EMPTY).getParameterTypes()) {
|
||||
buf.append(type.getCanonicalText());
|
||||
buf.append(";");
|
||||
}
|
||||
buf.append(')');
|
||||
return buf.toString();
|
||||
}
|
||||
assert false;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
+4
@@ -134,6 +134,10 @@ public class JavaClassNameCompletionContributor extends CompletionContributor {
|
||||
});
|
||||
}
|
||||
|
||||
static LookupElement highlightIfNeeded(JavaPsiClassReferenceElement element, CompletionParameters parameters) {
|
||||
return JavaCompletionUtil.highlightIfNeeded(null, element, element.getObject(), parameters.getPosition());
|
||||
}
|
||||
|
||||
public static JavaPsiClassReferenceElement createClassLookupItem(final PsiClass psiClass, final boolean inJavaContext) {
|
||||
return AllClassesGetter.createLookupItem(psiClass, inJavaContext ? JavaClassNameInsertHandler.JAVA_CLASS_INSERT_HANDLER
|
||||
: AllClassesGetter.TRY_SHORTENING);
|
||||
|
||||
+2
-2
@@ -264,7 +264,7 @@ public class JavaCompletionContributor extends CompletionContributor {
|
||||
return PsiUtilCore.findLanguageFromElement(position).isKindOf(JavaLanguage.INSTANCE);
|
||||
}
|
||||
|
||||
public static void addAllClasses(CompletionParameters parameters,
|
||||
public static void addAllClasses(final CompletionParameters parameters,
|
||||
final CompletionResultSet result,
|
||||
final InheritorsHolder inheritors) {
|
||||
if (!isClassNamePossible(parameters) || !mayStartClassName(result)) {
|
||||
@@ -276,7 +276,7 @@ public class JavaCompletionContributor extends CompletionContributor {
|
||||
@Override
|
||||
public void consume(LookupElement element) {
|
||||
if (!inheritors.alreadyProcessed(element)) {
|
||||
result.addElement(element);
|
||||
result.addElement(JavaClassNameCompletionContributor.highlightIfNeeded((JavaPsiClassReferenceElement)element, parameters));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.intellij.codeInsight.completion.scope.JavaCompletionProcessor;
|
||||
import com.intellij.codeInsight.completion.util.ParenthesesInsertHandler;
|
||||
import com.intellij.codeInsight.guess.GuessManager;
|
||||
import com.intellij.codeInsight.lookup.*;
|
||||
import com.intellij.codeInspection.java15api.Java15APIUsageInspectionBase;
|
||||
import com.intellij.lang.StdLanguages;
|
||||
import com.intellij.lang.java.JavaLanguage;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
@@ -50,6 +51,7 @@ import com.intellij.psi.util.PsiFormatUtil;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.psi.util.TypeConversionUtil;
|
||||
import com.intellij.ui.JBColor;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.NullableFunction;
|
||||
import com.intellij.util.PairConsumer;
|
||||
@@ -60,7 +62,9 @@ import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.awt.*;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
|
||||
import static com.intellij.patterns.PlatformPatterns.psiElement;
|
||||
|
||||
@@ -383,7 +387,7 @@ public class JavaCompletionUtil {
|
||||
}
|
||||
mentioned.add(CompletionUtil.getOriginalOrSelf((PsiMember)o));
|
||||
}
|
||||
set.add(highlightIfNeeded(qualifierType, castQualifier(item, castItem, plainQualifier, processor), o));
|
||||
set.add(highlightIfNeeded(qualifierType, castQualifier(item, castItem, plainQualifier, processor), o, element));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -503,11 +507,37 @@ public class JavaCompletionUtil {
|
||||
return type instanceof PsiClassType ? ((PsiClassType)type).rawType() : type;
|
||||
}
|
||||
|
||||
public static LookupElement highlightIfNeeded(PsiType qualifierType, LookupElement item, Object object) {
|
||||
return containsMember(qualifierType, object) ? highlight(item) : item;
|
||||
@NotNull
|
||||
public static LookupElement highlightIfNeeded(@Nullable PsiType qualifierType,
|
||||
@NotNull LookupElement item,
|
||||
@NotNull Object object,
|
||||
@NotNull PsiElement place) {
|
||||
final boolean bold = containsMember(qualifierType, object);
|
||||
boolean red = false;
|
||||
if (object instanceof PsiMember) {
|
||||
red = Java15APIUsageInspectionBase.isForbiddenApiUsage((PsiMember)object, PsiUtil.getLanguageLevel(place));
|
||||
}
|
||||
LookupElement result = item;
|
||||
if (bold || red) {
|
||||
final Color fg = red ? JBColor.RED : null;
|
||||
result = LookupElementDecorator.withRenderer(result, new LookupElementRenderer<LookupElementDecorator<LookupElement>>() {
|
||||
@Override
|
||||
public void renderElement(LookupElementDecorator<LookupElement> element, LookupElementPresentation presentation) {
|
||||
element.getDelegate().renderElement(presentation);
|
||||
presentation.setItemTextBold(bold);
|
||||
if (fg != null) {
|
||||
presentation.setItemTextForeground(fg);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
if (bold) {
|
||||
result = PrioritizedLookupElement.withExplicitProximity(result, 1);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public static boolean containsMember(PsiType qualifierType, Object object) {
|
||||
public static boolean containsMember(@Nullable PsiType qualifierType, @NotNull Object object) {
|
||||
if (qualifierType instanceof PsiArrayType && object instanceof PsiMember) { //length and clone()
|
||||
PsiFile file = ((PsiMember)object).getContainingFile();
|
||||
if (file == null || file.getVirtualFile() == null) { //yes, they're a bit dummy
|
||||
|
||||
@@ -20,7 +20,6 @@ import com.intellij.codeInsight.completion.impl.BetterPrefixMatcher;
|
||||
import com.intellij.codeInsight.completion.impl.CamelHumpMatcher;
|
||||
import com.intellij.codeInsight.lookup.AutoCompletionPolicy;
|
||||
import com.intellij.codeInsight.lookup.LookupElement;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.registry.Registry;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.psi.*;
|
||||
@@ -93,7 +92,7 @@ public class JavaNoVariantsDelegator extends CompletionContributor {
|
||||
suggestCollectionUtilities(parameters, result, position);
|
||||
|
||||
if (parameters.getInvocationCount() <= 1 &&
|
||||
JavaCompletionContributor.mayStartClassName(result) &&
|
||||
(JavaCompletionContributor.mayStartClassName(result) || suggestMetaAnnotations(parameters)) &&
|
||||
JavaCompletionContributor.isClassNamePossible(parameters)) {
|
||||
suggestNonImportedClasses(parameters, result, null);
|
||||
return;
|
||||
@@ -145,7 +144,7 @@ public class JavaNoVariantsDelegator extends CompletionContributor {
|
||||
if (ref != null) {
|
||||
for (final LookupElement item : JavaSmartCompletionContributor.completeReference(position, ref, filter, true, true, parameters,
|
||||
result.getPrefixMatcher())) {
|
||||
qualifiedCollector.addElement(new JavaChainLookupElement(base, item));
|
||||
qualifiedCollector.addElement(JavaCompletionUtil.highlightIfNeeded(null, new JavaChainLookupElement(base, item), item.getObject(), position));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -178,7 +177,7 @@ public class JavaNoVariantsDelegator extends CompletionContributor {
|
||||
return allClasses;
|
||||
}
|
||||
|
||||
private static void suggestNonImportedClasses(CompletionParameters parameters, final CompletionResultSet result, @Nullable final InheritorsHolder inheritorsHolder) {
|
||||
private static void suggestNonImportedClasses(final CompletionParameters parameters, final CompletionResultSet result, @Nullable final InheritorsHolder inheritorsHolder) {
|
||||
JavaClassNameCompletionContributor.addAllClasses(parameters,
|
||||
true, result.getPrefixMatcher(), new Consumer<LookupElement>() {
|
||||
@Override
|
||||
@@ -189,6 +188,7 @@ public class JavaNoVariantsDelegator extends CompletionContributor {
|
||||
JavaPsiClassReferenceElement classElement = element.as(JavaPsiClassReferenceElement.CLASS_CONDITION_KEY);
|
||||
if (classElement != null) {
|
||||
classElement.setAutoCompletionPolicy(AutoCompletionPolicy.NEVER_AUTOCOMPLETE);
|
||||
element = JavaClassNameCompletionContributor.highlightIfNeeded(classElement, parameters);
|
||||
}
|
||||
|
||||
result.addElement(element);
|
||||
|
||||
+33
@@ -6,6 +6,7 @@ package com.intellij.codeInsight.completion
|
||||
import com.intellij.JavaTestUtil
|
||||
import com.intellij.codeInsight.generation.OverrideImplementExploreUtil
|
||||
import com.intellij.codeInsight.lookup.LookupElement
|
||||
import com.intellij.codeInsight.lookup.LookupElementPresentation
|
||||
import com.intellij.codeInsight.lookup.LookupManager
|
||||
import com.intellij.codeInsight.lookup.impl.LookupImpl
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
@@ -18,14 +19,17 @@ import com.intellij.openapi.roots.ModuleRootManager
|
||||
import com.intellij.openapi.roots.SourceFolder
|
||||
import com.intellij.openapi.vfs.LocalFileSystem
|
||||
import com.intellij.openapi.vfs.VirtualFile
|
||||
import com.intellij.pom.java.LanguageLevel
|
||||
import com.intellij.psi.JavaPsiFacade
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.psi.PsiDocumentManager
|
||||
import com.intellij.psi.PsiManager
|
||||
import com.intellij.psi.search.GlobalSearchScope
|
||||
import com.intellij.psi.util.PsiTreeUtil
|
||||
import com.intellij.testFramework.IdeaTestUtil
|
||||
import com.intellij.testFramework.PsiTestUtil
|
||||
import com.intellij.testFramework.fixtures.JavaCodeInsightFixtureTestCase
|
||||
import com.intellij.ui.JBColor
|
||||
import org.jetbrains.annotations.NotNull
|
||||
|
||||
/**
|
||||
@@ -171,4 +175,33 @@ public class Test {
|
||||
assert oldCount == tracker.javaStructureModificationCount
|
||||
}
|
||||
|
||||
public void testForbiddenApiVariants() {
|
||||
IdeaTestUtil.setModuleLanguageLevel(myModule, LanguageLevel.JDK_1_4)
|
||||
myFixture.addClass("""\
|
||||
package java.nio.channels;
|
||||
public class SocketChannel {
|
||||
public SocketChannel shutdownInput() {}
|
||||
public boolean isConnected();
|
||||
}""")
|
||||
myFixture.addClass("package java.nio.channels; public class AsynchronousServerSocketChannel { }")
|
||||
|
||||
myFixture.configureByText 'a.java', 'class Foo {{ new SocketChanne<caret>x }}'
|
||||
myFixture.completeBasic()
|
||||
def p = LookupElementPresentation.renderElement(myFixture.lookup.items[0])
|
||||
assert p.itemText == 'SocketChannel'
|
||||
assert p.itemTextForeground == JBColor.foreground()
|
||||
|
||||
p = LookupElementPresentation.renderElement(myFixture.lookup.items.find { it.lookupString == 'AsynchronousServerSocketChannel' })
|
||||
assert p.itemTextForeground == JBColor.RED
|
||||
|
||||
myFixture.type('\n.s')
|
||||
myFixture.completeBasic()
|
||||
p = LookupElementPresentation.renderElement(myFixture.lookup.items[0])
|
||||
assert p.itemText == 'shutdownInput'
|
||||
assert p.itemTextForeground == JBColor.RED
|
||||
|
||||
p = LookupElementPresentation.renderElement(myFixture.lookup.items.find { it.lookupString == 'isConnected' })
|
||||
assert p.itemTextForeground == JBColor.foreground()
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+6
@@ -1147,6 +1147,12 @@ class XInternalError {}
|
||||
assertFirstStringItems "XInternalError", "XInternalTimerServiceController"
|
||||
}
|
||||
|
||||
public void testMetaAnnotation() {
|
||||
myFixture.configureByText "a.java", "@<caret> @interface Anno {}"
|
||||
myFixture.complete(CompletionType.BASIC)
|
||||
assert myFixture.lookup.items.find { it.lookupString == 'Retention' }
|
||||
}
|
||||
|
||||
public void testAnnotationClassFromWithinAnnotation() { doTest() }
|
||||
|
||||
public void testStaticallyImportedFieldsTwice() {
|
||||
|
||||
@@ -24,7 +24,7 @@ import javax.swing.*;
|
||||
|
||||
public abstract class PushTargetPanel<T extends PushTarget> extends JPanel {
|
||||
|
||||
abstract public void render(@NotNull ColoredTreeCellRenderer renderer);
|
||||
abstract public void render(@NotNull ColoredTreeCellRenderer renderer, boolean isSelected);
|
||||
|
||||
@NotNull
|
||||
abstract public T getValue();
|
||||
|
||||
@@ -41,6 +41,8 @@ import org.jetbrains.annotations.Nullable;
|
||||
import javax.swing.*;
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import javax.swing.tree.DefaultTreeModel;
|
||||
import javax.swing.tree.TreeNode;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.beans.PropertyChangeListener;
|
||||
import java.io.File;
|
||||
@@ -366,7 +368,7 @@ public class PushController implements Disposable {
|
||||
public DefaultMutableTreeNode fun(final VcsError error) {
|
||||
VcsLinkedText errorLinkText = new VcsLinkedText(error.getText(), new VcsLinkListener() {
|
||||
@Override
|
||||
public void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode) {
|
||||
public void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode, @NotNull MouseEvent event) {
|
||||
error.handleError(new CommitLoader() {
|
||||
@Override
|
||||
public void reloadCommits() {
|
||||
@@ -509,8 +511,11 @@ public class PushController implements Disposable {
|
||||
if (i >= commitsNum) {
|
||||
final VcsLinkedText moreCommitsLink = new VcsLinkedText("<a href='loadMore'>...</a>", new VcsLinkListener() {
|
||||
@Override
|
||||
public void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode) {
|
||||
addMoreCommits((RepositoryNode)sourceNode);
|
||||
public void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode, @NotNull MouseEvent event) {
|
||||
TreeNode parent = sourceNode.getParent();
|
||||
if (parent instanceof RepositoryNode) {
|
||||
addMoreCommits((RepositoryNode)parent);
|
||||
}
|
||||
}
|
||||
});
|
||||
childrenToShown.add(new TextWithLinkNode(moreCommitsLink));
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.intellij.dvcs.push.ui;
|
||||
|
||||
import com.intellij.dvcs.push.PushTargetPanel;
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.actions.EditSourceAction;
|
||||
import com.intellij.idea.ActionsBundle;
|
||||
@@ -337,7 +336,7 @@ public class PushLog extends JPanel implements TypeSafeDataProvider {
|
||||
Object tag = me.getClickCount() >= 1
|
||||
? PushLogTreeUtil.getTagAtForRenderer(myTreeCellRenderer, me)
|
||||
: null;
|
||||
return tag instanceof PushTargetPanel;
|
||||
return tag instanceof VcsEditableComponent;
|
||||
}
|
||||
//if keyboard event - then anEvent will be null =( See BasicTreeUi
|
||||
TreePath treePath = myTree.getAnchorSelectionPath();
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.intellij.ui.ColoredTreeCellRenderer;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
import com.intellij.util.ui.GraphicsUtil;
|
||||
import com.intellij.util.ui.UIUtil;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
@@ -95,7 +96,7 @@ public class RepositoryNode extends CheckedTreeNode implements EditableTreeNode,
|
||||
renderer
|
||||
.append(myRepositoryPanel.getArrow(), isChecked() ? SimpleTextAttributes.REGULAR_ATTRIBUTES : SimpleTextAttributes.GRAY_ATTRIBUTES);
|
||||
PushTargetPanel pushTargetPanel = myRepositoryPanel.getTargetPanel();
|
||||
pushTargetPanel.render(renderer);
|
||||
pushTargetPanel.render(renderer, renderer.getTree().isPathSelected(TreeUtil.getPathFromRoot(this)));
|
||||
|
||||
int maxSize = Math.max(myRepositoryPanel.getCheckBoxHeight(), myLoadingIcon.getIconHeight());
|
||||
int rendererHeight = renderer.getPreferredSize().height;
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.intellij.dvcs.push.ui;
|
||||
import com.intellij.dvcs.push.PushTargetPanel;
|
||||
import com.intellij.ui.ColoredTreeCellRenderer;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class SingleRepositoryNode extends RepositoryNode {
|
||||
@@ -52,6 +53,6 @@ public class SingleRepositoryNode extends RepositoryNode {
|
||||
renderer.append(myRepositoryPanel.getSourceName(), SimpleTextAttributes.REGULAR_ATTRIBUTES);
|
||||
renderer.append(myRepositoryPanel.getArrow(), SimpleTextAttributes.REGULAR_ATTRIBUTES);
|
||||
PushTargetPanel pushTargetPanel = myRepositoryPanel.getTargetPanel();
|
||||
pushTargetPanel.render(renderer);
|
||||
pushTargetPanel.render(renderer, renderer.getTree().isPathSelected(TreeUtil.getPathFromRoot(this)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,13 +16,11 @@
|
||||
package com.intellij.dvcs.push.ui;
|
||||
|
||||
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.ui.ColoredTreeCellRenderer;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
import com.intellij.util.ui.tree.TreeUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import javax.swing.tree.TreeNode;
|
||||
|
||||
public class TextWithLinkNode extends DefaultMutableTreeNode implements CustomRenderedTreeNode {
|
||||
|
||||
@@ -32,21 +30,10 @@ public class TextWithLinkNode extends DefaultMutableTreeNode implements CustomRe
|
||||
myLinkedText = linkedText;
|
||||
}
|
||||
|
||||
public void fireOnClick(@NotNull TextWithLinkNode relatedNode) {
|
||||
TreeNode parent = relatedNode.getParent();
|
||||
if (parent instanceof RepositoryNode) {
|
||||
myLinkedText.hyperLinkActivate((RepositoryNode)parent);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(@NotNull ColoredTreeCellRenderer renderer) {
|
||||
renderer.append(myLinkedText.getTextBefore(), SimpleTextAttributes.REGULAR_ATTRIBUTES);
|
||||
String linkedText = myLinkedText.getLinkText();
|
||||
if (!StringUtil.isEmptyOrSpaces(linkedText)) {
|
||||
renderer.append(" ");
|
||||
renderer.append(myLinkedText.getLinkText(), SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, this);
|
||||
}
|
||||
renderer.append(myLinkedText.getTextAfter(), SimpleTextAttributes.REGULAR_ATTRIBUTES);
|
||||
renderer.append(" ");
|
||||
myLinkedText.setSelected(renderer.getTree().isPathSelected(TreeUtil.getPathFromRoot(this)));
|
||||
myLinkedText.render(renderer);
|
||||
}
|
||||
}
|
||||
@@ -20,15 +20,43 @@ import com.intellij.ui.CheckboxTree;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import javax.swing.tree.TreePath;
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
public class VcsBranchEditorListener extends LinkMouseListenerBase {
|
||||
private final CheckboxTree.CheckboxTreeCellRenderer myRenderer;
|
||||
private VcsLinkedText underlined;
|
||||
|
||||
public VcsBranchEditorListener(final CheckboxTree.CheckboxTreeCellRenderer renderer) {
|
||||
myRenderer = renderer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mouseMoved(MouseEvent e) {
|
||||
Component component = (Component)e.getSource();
|
||||
Object tag = getTagAt(e);
|
||||
boolean shouldRepaint = false;
|
||||
if (underlined != null) {
|
||||
underlined.setUnderlined(false);
|
||||
shouldRepaint = true;
|
||||
}
|
||||
if (tag != null && tag instanceof VcsLinkedText) {
|
||||
component.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
|
||||
VcsLinkedText linkedText = (VcsLinkedText)tag;
|
||||
linkedText.setUnderlined(true);
|
||||
underlined = linkedText;
|
||||
shouldRepaint = true;
|
||||
}
|
||||
else {
|
||||
super.mouseMoved(e);
|
||||
}
|
||||
if (shouldRepaint) {
|
||||
myRenderer.getTextRenderer().getTree().repaint();
|
||||
}
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
protected Object getTagAt(@NotNull final MouseEvent e) {
|
||||
@@ -36,12 +64,13 @@ public class VcsBranchEditorListener extends LinkMouseListenerBase {
|
||||
}
|
||||
|
||||
protected void handleTagClick(@Nullable final Object tag, @NotNull MouseEvent event) {
|
||||
if (tag instanceof TextWithLinkNode) {
|
||||
TextWithLinkNode textWithLink = (TextWithLinkNode)tag;
|
||||
textWithLink.fireOnClick(textWithLink);
|
||||
}
|
||||
if (tag instanceof ExtraEditControl) {
|
||||
((ExtraEditControl)tag).click(event);
|
||||
if (tag instanceof VcsLinkedText) {
|
||||
VcsLinkedText textWithLink = (VcsLinkedText)tag;
|
||||
final TreePath path = myRenderer.getTextRenderer().getTree().getPathForLocation(event.getX(), event.getY());
|
||||
if (path == null) return;
|
||||
Object node = path.getLastPathComponent();
|
||||
if (node == null || (!(node instanceof DefaultMutableTreeNode))) return;
|
||||
textWithLink.fireOnClick((DefaultMutableTreeNode)node, event);
|
||||
}
|
||||
if (tag instanceof Runnable) {
|
||||
((Runnable)tag).run();
|
||||
|
||||
+3
-7
@@ -15,15 +15,11 @@
|
||||
*/
|
||||
package com.intellij.dvcs.push.ui;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
/**
|
||||
* Event on this component should start edit mode for appropriate path in JTree
|
||||
*
|
||||
* @see com.intellij.dvcs.push.ui.PushLog
|
||||
*/
|
||||
public interface ExtraEditControl {
|
||||
|
||||
void click(@NotNull MouseEvent event);
|
||||
|
||||
public interface VcsEditableComponent {
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Copyright 2000-2014 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.dvcs.push.ui;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public class VcsEditableTextComponent extends VcsLinkedText implements VcsEditableComponent {
|
||||
|
||||
public VcsEditableTextComponent(@NotNull String text, @Nullable VcsLinkListener listener) {
|
||||
super(text, listener);
|
||||
}
|
||||
}
|
||||
@@ -18,7 +18,8 @@ package com.intellij.dvcs.push.ui;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import java.awt.event.MouseEvent;
|
||||
|
||||
public interface VcsLinkListener {
|
||||
void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode);
|
||||
void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode, @NotNull MouseEvent event);
|
||||
}
|
||||
|
||||
@@ -15,15 +15,18 @@
|
||||
*/
|
||||
package com.intellij.dvcs.push.ui;
|
||||
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.ui.ColoredTreeCellRenderer;
|
||||
import com.intellij.ui.SimpleTextAttributes;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
public class VcsLinkedText {
|
||||
|
||||
private static final Pattern HREF_PATTERN = Pattern.compile("<a(?:\\s+href\\s*=\\s*[\"']([^\"']*)[\"'])?\\s*>([^<]*)</a>");
|
||||
|
||||
@NotNull private String myTextBefore;
|
||||
@@ -31,6 +34,8 @@ public class VcsLinkedText {
|
||||
@NotNull private String myHandledLink;
|
||||
|
||||
@Nullable private final VcsLinkListener myLinkListener;
|
||||
private boolean mySelected;
|
||||
private boolean myUnderlined;
|
||||
|
||||
public VcsLinkedText(@NotNull String text, @Nullable VcsLinkListener listener) {
|
||||
Matcher aMatcher = HREF_PATTERN.matcher(text);
|
||||
@@ -47,24 +52,38 @@ public class VcsLinkedText {
|
||||
myLinkListener = listener;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getTextBefore() {
|
||||
return myTextBefore;
|
||||
public void updateLinkText(@NotNull String text) {
|
||||
myHandledLink = text;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getTextAfter() {
|
||||
return myTextAfter;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getLinkText() {
|
||||
return myHandledLink;
|
||||
}
|
||||
|
||||
public void hyperLinkActivate(@NotNull DefaultMutableTreeNode relatedNode) {
|
||||
public void fireOnClick(@NotNull DefaultMutableTreeNode relatedNode, @NotNull MouseEvent event) {
|
||||
if (myLinkListener != null) {
|
||||
myLinkListener.hyperlinkActivated(relatedNode);
|
||||
myLinkListener.hyperlinkActivated(relatedNode, event);
|
||||
}
|
||||
}
|
||||
|
||||
public void render(@NotNull ColoredTreeCellRenderer renderer) {
|
||||
if (!StringUtil.isEmptyOrSpaces(myTextBefore)) {
|
||||
renderer.append(myTextBefore, SimpleTextAttributes.REGULAR_ATTRIBUTES);
|
||||
renderer.append(" ");
|
||||
}
|
||||
if (!StringUtil.isEmptyOrSpaces(myHandledLink)) {
|
||||
renderer.append(myHandledLink,
|
||||
myUnderlined || mySelected ? SimpleTextAttributes.LINK_ATTRIBUTES : SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, this);
|
||||
}
|
||||
renderer.append(myTextAfter, SimpleTextAttributes.REGULAR_ATTRIBUTES);
|
||||
}
|
||||
|
||||
public void setUnderlined(boolean underlined) {
|
||||
myUnderlined = underlined;
|
||||
}
|
||||
|
||||
public void setSelected(boolean selected) {
|
||||
mySelected = selected;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public String getText() {
|
||||
return myTextBefore + myHandledLink + myTextAfter;
|
||||
}
|
||||
}
|
||||
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 793 B |
Binary file not shown.
|
After Width: | Height: | Size: 868 B |
+4
@@ -28,6 +28,7 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.fileEditor.*;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.WriteExternalException;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
@@ -61,6 +62,9 @@ public class PsiAwareTextEditorProvider extends TextEditorProvider implements As
|
||||
state = CodeFoldingManager.getInstance(project).buildInitialFoldings(document);
|
||||
}
|
||||
}
|
||||
catch (ProcessCanceledException e) {
|
||||
throw e;
|
||||
}
|
||||
catch (Exception e) {
|
||||
LOG.error("Error building initial foldings", e);
|
||||
}
|
||||
|
||||
+4
@@ -43,6 +43,7 @@ import com.intellij.openapi.fileTypes.FileTypeEvent;
|
||||
import com.intellij.openapi.fileTypes.FileTypeListener;
|
||||
import com.intellij.openapi.fileTypes.FileTypeManager;
|
||||
import com.intellij.openapi.preview.PreviewManager;
|
||||
import com.intellij.openapi.progress.ProcessCanceledException;
|
||||
import com.intellij.openapi.project.DumbAwareRunnable;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.PossiblyDumbAware;
|
||||
@@ -782,6 +783,9 @@ public class FileEditorManagerImpl extends FileEditorManagerEx implements Projec
|
||||
}
|
||||
});
|
||||
}
|
||||
catch (ProcessCanceledException e) {
|
||||
throw e;
|
||||
}
|
||||
catch (Exception e) {
|
||||
LOG.error(e);
|
||||
}
|
||||
|
||||
+1
-1
@@ -31,6 +31,6 @@ public class FlatWelcomeFrameProvider implements WelcomeFrameProvider {
|
||||
|
||||
public static boolean isAvailable() {
|
||||
return Registry.is("ide.new.welcome.screen")
|
||||
&& (PlatformUtils.isIntelliJ() || PlatformUtils.isCidr());
|
||||
&& (PlatformUtils.isIntelliJ() || PlatformUtils.isCidr() || PlatformUtils.isWebStorm());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.platform;
|
||||
|
||||
import com.intellij.icons.AllIcons;
|
||||
import com.intellij.ide.RecentProjectsManager;
|
||||
import com.intellij.idea.ActionsBundle;
|
||||
import com.intellij.internal.statistic.UsageTrigger;
|
||||
@@ -33,6 +34,7 @@ import com.intellij.openapi.util.Computable;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.LocalFileSystem;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.wm.impl.welcomeScreen.NewWelcomeScreen;
|
||||
import com.intellij.projectImport.ProjectOpenedCallback;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -111,4 +113,11 @@ public class NewDirectoryProjectAction extends AnAction implements DumbAware {
|
||||
protected Object showSettings(DirectoryProjectGenerator generator, VirtualFile baseDir) throws ProcessCanceledException {
|
||||
return generator.showGenerationSettings(baseDir);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(@NotNull AnActionEvent e) {
|
||||
if (NewWelcomeScreen.isNewWelcomeScreen(e)) {
|
||||
e.getPresentation().setIcon(AllIcons.Welcome.CreateNewProject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1173,6 +1173,7 @@ public class AllIcons {
|
||||
public static class Welcome {
|
||||
public static final Icon CreateDesktopEntry = IconLoader.getIcon("/welcome/createDesktopEntry.png"); // 32x32
|
||||
public static final Icon CreateNewProject = IconLoader.getIcon("/welcome/createNewProject.png"); // 16x16
|
||||
public static final Icon CreateNewProjectfromExistingFiles = IconLoader.getIcon("/welcome/CreateNewProjectfromExistingFiles.png"); // 16x16
|
||||
public static final Icon FromVCS = IconLoader.getIcon("/welcome/fromVCS.png"); // 16x16
|
||||
public static final Icon ImportProject = IconLoader.getIcon("/welcome/importProject.png"); // 16x16
|
||||
public static final Icon OpenProject = IconLoader.getIcon("/welcome/openProject.png"); // 16x16
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2014 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.
|
||||
@@ -15,13 +15,14 @@
|
||||
*/
|
||||
package com.intellij.xdebugger.impl.actions;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.xdebugger.impl.DebuggerSupport;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
* @author nik
|
||||
*/
|
||||
public class StepOverAction extends XDebuggerActionBase {
|
||||
public class StepOverAction extends XDebuggerActionBase implements DumbAware {
|
||||
@NotNull
|
||||
protected DebuggerActionHandler getHandler(@NotNull final DebuggerSupport debuggerSupport) {
|
||||
return debuggerSupport.getStepOverHandler();
|
||||
|
||||
@@ -16,8 +16,10 @@
|
||||
package git4idea.push;
|
||||
|
||||
import com.intellij.dvcs.push.PushTargetPanel;
|
||||
import com.intellij.dvcs.push.ui.ExtraEditControl;
|
||||
import com.intellij.dvcs.push.ui.PushTargetTextField;
|
||||
import com.intellij.dvcs.push.ui.VcsEditableTextComponent;
|
||||
import com.intellij.dvcs.push.ui.VcsLinkListener;
|
||||
import com.intellij.dvcs.push.ui.VcsLinkedText;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.ui.ValidationInfo;
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
@@ -38,6 +40,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.tree.DefaultMutableTreeNode;
|
||||
import java.awt.*;
|
||||
import java.awt.event.MouseEvent;
|
||||
import java.text.ParseException;
|
||||
@@ -52,9 +55,9 @@ public class GitPushTargetPanel extends PushTargetPanel<GitPushTarget> {
|
||||
private static final String SEPARATOR = " : ";
|
||||
|
||||
@NotNull private final GitRepository myRepository;
|
||||
@NotNull private final VcsEditableTextComponent myTargetRenderedComponent;
|
||||
@NotNull private final PushTargetTextField myTargetTextField;
|
||||
@NotNull private final JLabel myRemoteLabel;
|
||||
@NotNull private final ExtraEditControl myEditRemoteControl;
|
||||
@NotNull private final VcsLinkedText myRemoteRenderedComponent;
|
||||
|
||||
@Nullable private GitPushTarget myCurrentTarget;
|
||||
@Nullable private String myError;
|
||||
@@ -85,22 +88,20 @@ public class GitPushTargetPanel extends PushTargetPanel<GitPushTarget> {
|
||||
initialBranch = getTextFieldText(defaultTarget);
|
||||
initialRemote = defaultTarget.getBranch().getRemote().getName();
|
||||
}
|
||||
|
||||
myEditRemoteControl = new ExtraEditControl() {
|
||||
myTargetRenderedComponent = new VcsEditableTextComponent("<a href=''>" + initialBranch + "</a>", null);
|
||||
myTargetTextField = new PushTargetTextField(repository.getProject(), getTargetNames(myRepository), initialBranch);
|
||||
myRemoteRenderedComponent = new VcsLinkedText("<a href=''>" + initialRemote + "</a>", new VcsLinkListener() {
|
||||
@Override
|
||||
public void click(@NotNull MouseEvent event) {
|
||||
public void hyperlinkActivated(@NotNull DefaultMutableTreeNode sourceNode, @NotNull MouseEvent event) {
|
||||
showRemoteSelector(event);
|
||||
}
|
||||
};
|
||||
|
||||
myTargetTextField = new PushTargetTextField(repository.getProject(), getTargetNames(myRepository), initialBranch);
|
||||
myRemoteLabel = new JBLabel(initialRemote);
|
||||
});
|
||||
|
||||
setLayout(new BorderLayout());
|
||||
setOpaque(false);
|
||||
JPanel remoteAndSeparator = new JPanel(new BorderLayout());
|
||||
remoteAndSeparator.setOpaque(false);
|
||||
remoteAndSeparator.add(myRemoteLabel, BorderLayout.CENTER);
|
||||
remoteAndSeparator.add(new JBLabel(myRemoteRenderedComponent.getText()), BorderLayout.CENTER);
|
||||
remoteAndSeparator.add(new JBLabel(SEPARATOR), BorderLayout.EAST);
|
||||
|
||||
add(remoteAndSeparator, BorderLayout.WEST);
|
||||
@@ -121,7 +122,7 @@ public class GitPushTargetPanel extends PushTargetPanel<GitPushTarget> {
|
||||
ListPopup popup = JBPopupFactory.getInstance().createListPopup(new BaseListPopupStep<String>(null, remotes) {
|
||||
@Override
|
||||
public PopupStep onChosen(String selectedValue, boolean finalChoice) {
|
||||
myRemoteLabel.setText(selectedValue);
|
||||
myRemoteRenderedComponent.updateLinkText(selectedValue);
|
||||
if (myFireOnChangeAction != null) {
|
||||
myFireOnChangeAction.run();
|
||||
}
|
||||
@@ -142,14 +143,15 @@ public class GitPushTargetPanel extends PushTargetPanel<GitPushTarget> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(@NotNull final ColoredTreeCellRenderer renderer) {
|
||||
public void render(@NotNull ColoredTreeCellRenderer renderer, boolean isSelected) {
|
||||
if (myError != null) {
|
||||
renderer.append(myError, SimpleTextAttributes.ERROR_ATTRIBUTES);
|
||||
}
|
||||
else {
|
||||
String currentRemote = myRemoteLabel.getText();
|
||||
String currentRemote = myRemoteRenderedComponent.getText();
|
||||
if (getRemotes().size() > 1) {
|
||||
renderer.append(currentRemote, SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, myEditRemoteControl);
|
||||
myRemoteRenderedComponent.setSelected(isSelected);
|
||||
myRemoteRenderedComponent.render(renderer);
|
||||
}
|
||||
else {
|
||||
renderer.append(currentRemote, SimpleTextAttributes.REGULAR_ATTRIBUTES);
|
||||
@@ -160,7 +162,8 @@ public class GitPushTargetPanel extends PushTargetPanel<GitPushTarget> {
|
||||
if (target.isNewBranchCreated()) {
|
||||
renderer.append("+", SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, this);
|
||||
}
|
||||
renderer.append(target.getBranch().getNameForRemoteOperations(), SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, this);
|
||||
myTargetRenderedComponent.setSelected(isSelected);
|
||||
myTargetRenderedComponent.render(renderer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -185,10 +188,11 @@ public class GitPushTargetPanel extends PushTargetPanel<GitPushTarget> {
|
||||
if (myError != null) {
|
||||
return;
|
||||
}
|
||||
String remoteName = myRemoteLabel.getText();
|
||||
String remoteName = myRemoteRenderedComponent.getText();
|
||||
String branchName = myTargetTextField.getText();
|
||||
try {
|
||||
myCurrentTarget = GitPushTarget.parse(myRepository, remoteName, branchName);
|
||||
myTargetRenderedComponent.updateLinkText(branchName);
|
||||
}
|
||||
catch (ParseException e) {
|
||||
LOG.error("Invalid remote name shouldn't be allowed. [" + remoteName + ", " + branchName + "]", e);
|
||||
@@ -202,7 +206,7 @@ public class GitPushTargetPanel extends PushTargetPanel<GitPushTarget> {
|
||||
return new ValidationInfo(myError, myTargetTextField);
|
||||
}
|
||||
try {
|
||||
GitPushTarget.parse(myRepository, myRemoteLabel.getText(), myTargetTextField.getText());
|
||||
GitPushTarget.parse(myRepository, myRemoteRenderedComponent.getText(), myTargetTextField.getText());
|
||||
return null;
|
||||
}
|
||||
catch (ParseException e) {
|
||||
|
||||
+1
-1
@@ -252,7 +252,7 @@ public class GrMainCompletionProvider extends CompletionProvider<CompletionParam
|
||||
if (!(object instanceof PsiClass)) {
|
||||
int priority = assignPriority(lookupElement, qualifierType);
|
||||
lookupElement = JavaCompletionUtil.highlightIfNeeded(qualifierType,
|
||||
PrioritizedLookupElement.withPriority(lookupElement, priority), object);
|
||||
PrioritizedLookupElement.withPriority(lookupElement, priority), object, reference);
|
||||
}
|
||||
|
||||
if ((object instanceof PsiMethod || object instanceof PsiField) &&
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@ public class GroovyNoVariantsDelegator extends CompletionContributor {
|
||||
private static void delegate(CompletionParameters parameters, CompletionResultSet result) {
|
||||
if (parameters.getCompletionType() == CompletionType.BASIC) {
|
||||
if (parameters.getInvocationCount() <= 1 &&
|
||||
JavaCompletionContributor.mayStartClassName(result) &&
|
||||
(JavaCompletionContributor.mayStartClassName(result) || suggestMetaAnnotations(parameters)) &&
|
||||
GrMainCompletionProvider.isClassNamePossible(parameters.getPosition()) &&
|
||||
!MapArgumentCompletionProvider.isMapKeyCompletion(parameters)) {
|
||||
suggestNonImportedClasses(parameters, result);
|
||||
|
||||
@@ -19,6 +19,7 @@ import com.intellij.dvcs.DvcsUtil;
|
||||
import com.intellij.dvcs.push.PushTargetPanel;
|
||||
import com.intellij.dvcs.push.VcsError;
|
||||
import com.intellij.dvcs.push.ui.PushTargetTextField;
|
||||
import com.intellij.dvcs.push.ui.VcsEditableTextComponent;
|
||||
import com.intellij.openapi.ui.ValidationInfo;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.ui.ColoredTreeCellRenderer;
|
||||
@@ -37,25 +38,27 @@ public class HgPushTargetPanel extends PushTargetPanel<HgTarget> {
|
||||
private final static String ENTER_REMOTE = "Enter Remote";
|
||||
private final HgRepository myRepository;
|
||||
private final TextFieldWithAutoCompletion<String> myDestTargetPanel;
|
||||
private String myOldText;
|
||||
private final VcsEditableTextComponent myTargetRenderedComponent;
|
||||
|
||||
public HgPushTargetPanel(@NotNull HgRepository repository, @Nullable HgTarget defaultTarget) {
|
||||
setLayout(new BorderLayout());
|
||||
setOpaque(false);
|
||||
myRepository = repository;
|
||||
final List<String> targetVariants = HgUtil.getTargetNames(repository);
|
||||
myOldText = defaultTarget != null ? defaultTarget.getPresentation() : "";
|
||||
myDestTargetPanel = new PushTargetTextField(repository.getProject(), targetVariants, myOldText);
|
||||
String defaultText = defaultTarget != null ? defaultTarget.getPresentation() : "";
|
||||
myTargetRenderedComponent = new VcsEditableTextComponent("<a href=''>" + defaultText + "</a>", null);
|
||||
myDestTargetPanel = new PushTargetTextField(repository.getProject(), targetVariants, defaultText);
|
||||
add(myDestTargetPanel, BorderLayout.CENTER);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(@NotNull ColoredTreeCellRenderer renderer) {
|
||||
public void render(@NotNull ColoredTreeCellRenderer renderer, boolean isSelected) {
|
||||
String targetText = myDestTargetPanel.getText();
|
||||
if (StringUtil.isEmptyOrSpaces(targetText)) {
|
||||
renderer.append(ENTER_REMOTE, SimpleTextAttributes.GRAY_ITALIC_ATTRIBUTES, this);
|
||||
}
|
||||
renderer.append(targetText, SimpleTextAttributes.SYNTHETIC_ATTRIBUTES, this);
|
||||
myTargetRenderedComponent.setSelected(isSelected);
|
||||
myTargetRenderedComponent.render(renderer);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -71,12 +74,12 @@ public class HgPushTargetPanel extends PushTargetPanel<HgTarget> {
|
||||
|
||||
@Override
|
||||
public void fireOnCancel() {
|
||||
myDestTargetPanel.setText(myOldText);
|
||||
myDestTargetPanel.setText(myTargetRenderedComponent.getText());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fireOnChange() {
|
||||
myOldText = myDestTargetPanel.getText();
|
||||
myTargetRenderedComponent.updateLinkText(myDestTargetPanel.getText());
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
+1
-1
@@ -101,7 +101,7 @@ import java.util.concurrent.atomic.AtomicReference;
|
||||
*/
|
||||
public class Maven3ServerEmbedderImpl extends MavenRemoteObject implements MavenServerEmbedder {
|
||||
|
||||
private final static boolean USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING = System.getProperty("maven3.use.compat.resolver") != null;
|
||||
private final static boolean USE_MVN2_COMPATIBLE_DEPENDENCY_RESOLVING = System.getProperty("idea.maven3.use.compat.resolver") != null;
|
||||
|
||||
@NotNull private final DefaultPlexusContainer myContainer;
|
||||
@NotNull private final Settings myMavenSettings;
|
||||
|
||||
+3
-2
@@ -15,16 +15,17 @@
|
||||
*/
|
||||
package org.jetbrains.idea.maven.navigator.actions;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator;
|
||||
|
||||
public class AlwaysShowArtifactIdAction extends MavenProjectsNavigatorAction {
|
||||
@Override
|
||||
public boolean isSelected(MavenProjectsNavigator navigator) {
|
||||
public boolean isSelected(@NotNull MavenProjectsNavigator navigator) {
|
||||
return navigator.getAlwaysShowArtifactId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(MavenProjectsNavigator navigator, boolean value) {
|
||||
public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) {
|
||||
navigator.setAlwaysShowArtifactId(value);
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -15,16 +15,17 @@
|
||||
*/
|
||||
package org.jetbrains.idea.maven.navigator.actions;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator;
|
||||
|
||||
public class GroupProjectsAction extends MavenProjectsNavigatorAction {
|
||||
@Override
|
||||
public boolean isSelected(MavenProjectsNavigator navigator) {
|
||||
public boolean isSelected(@NotNull MavenProjectsNavigator navigator) {
|
||||
return navigator.getGroupModules();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(MavenProjectsNavigator navigator, boolean value) {
|
||||
public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) {
|
||||
navigator.setGroupModules(value);
|
||||
}
|
||||
}
|
||||
|
||||
+12
-5
@@ -16,6 +16,8 @@
|
||||
package org.jetbrains.idea.maven.navigator.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenActionUtil;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenToggleAction;
|
||||
@@ -23,19 +25,24 @@ import org.jetbrains.idea.maven.utils.actions.MavenToggleAction;
|
||||
public abstract class MavenProjectsNavigatorAction extends MavenToggleAction {
|
||||
@Override
|
||||
protected boolean doIsSelected(AnActionEvent e) {
|
||||
return isSelected(getNavigator(e));
|
||||
final MavenProjectsNavigator navigator = getNavigator(e);
|
||||
return navigator!= null && isSelected(navigator);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
setSelected(getNavigator(e), state);
|
||||
final MavenProjectsNavigator navigator = getNavigator(e);
|
||||
if (navigator != null) {
|
||||
setSelected(navigator, state);
|
||||
}
|
||||
}
|
||||
|
||||
private MavenProjectsNavigator getNavigator(AnActionEvent e) {
|
||||
@Nullable
|
||||
private static MavenProjectsNavigator getNavigator(AnActionEvent e) {
|
||||
return MavenProjectsNavigator.getInstance(MavenActionUtil.getProject(e.getDataContext()));
|
||||
}
|
||||
|
||||
protected abstract boolean isSelected(MavenProjectsNavigator navigator);
|
||||
protected abstract boolean isSelected(@NotNull MavenProjectsNavigator navigator);
|
||||
|
||||
protected abstract void setSelected(MavenProjectsNavigator navigator, boolean value);
|
||||
protected abstract void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value);
|
||||
}
|
||||
|
||||
+3
-2
@@ -15,16 +15,17 @@
|
||||
*/
|
||||
package org.jetbrains.idea.maven.navigator.actions;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator;
|
||||
|
||||
public class ShowBasicPhasesOnlyAction extends MavenProjectsNavigatorAction {
|
||||
@Override
|
||||
public boolean isSelected(MavenProjectsNavigator navigator) {
|
||||
public boolean isSelected(@NotNull MavenProjectsNavigator navigator) {
|
||||
return navigator.getShowBasicPhasesOnly();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(MavenProjectsNavigator navigator, boolean value) {
|
||||
public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) {
|
||||
navigator.setShowBasicPhasesOnly(value);
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -15,16 +15,17 @@
|
||||
*/
|
||||
package org.jetbrains.idea.maven.navigator.actions;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator;
|
||||
|
||||
public class ShowIgnoredProjectsAction extends MavenProjectsNavigatorAction {
|
||||
@Override
|
||||
public boolean isSelected(MavenProjectsNavigator navigator) {
|
||||
public boolean isSelected(@NotNull MavenProjectsNavigator navigator) {
|
||||
return navigator.getShowIgnored();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(MavenProjectsNavigator navigator, boolean value) {
|
||||
public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) {
|
||||
navigator.setShowIgnored(value);
|
||||
}
|
||||
}
|
||||
+3
-2
@@ -15,16 +15,17 @@
|
||||
*/
|
||||
package org.jetbrains.idea.maven.navigator.actions;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.maven.navigator.MavenProjectsNavigator;
|
||||
|
||||
public class ShowVersionsAction extends MavenProjectsNavigatorAction {
|
||||
@Override
|
||||
public boolean isSelected(MavenProjectsNavigator navigator) {
|
||||
public boolean isSelected(@NotNull MavenProjectsNavigator navigator) {
|
||||
return navigator.getShowVersions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(MavenProjectsNavigator navigator, boolean value) {
|
||||
public void setSelected(@NotNull MavenProjectsNavigator navigator, boolean value) {
|
||||
navigator.setShowVersions(value);
|
||||
}
|
||||
}
|
||||
+4
-3
@@ -18,7 +18,6 @@ package org.jetbrains.idea.maven.project.actions;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.CommonDataKeys;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.actionSystem.PlatformDataKeys;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
@@ -32,7 +31,9 @@ public class AddFileAsMavenProjectAction extends MavenAction {
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
final DataContext context = e.getDataContext();
|
||||
MavenProjectsManager manager = MavenActionUtil.getProjectsManager(context);
|
||||
manager.addManagedFilesOrUnignore(Collections.singletonList(getSelectedFile(context)));
|
||||
if (manager != null) {
|
||||
manager.addManagedFilesOrUnignore(Collections.singletonList(getSelectedFile(context)));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -51,7 +52,7 @@ public class AddFileAsMavenProjectAction extends MavenAction {
|
||||
|
||||
private static boolean isExistingProjectFile(DataContext context, VirtualFile file) {
|
||||
MavenProjectsManager manager = MavenActionUtil.getProjectsManager(context);
|
||||
return manager.findProject(file) != null;
|
||||
return manager != null && manager.findProject(file) != null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
+1
@@ -32,6 +32,7 @@ public class AddManagedFilesAction extends MavenAction {
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
final MavenProjectsManager manager = MavenActionUtil.getProjectsManager(e.getDataContext());
|
||||
if(manager == null) return;
|
||||
FileChooserDescriptor singlePomSelection = new FileChooserDescriptor(true, false, false, false, false, true) {
|
||||
@Override
|
||||
public boolean isFileSelectable(VirtualFile file) {
|
||||
|
||||
+4
-2
@@ -18,6 +18,7 @@ package org.jetbrains.idea.maven.project.actions;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.DefaultActionGroup;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenActionUtil;
|
||||
|
||||
public class DownloadActionGroup extends DefaultActionGroup implements DumbAware {
|
||||
@@ -28,7 +29,8 @@ public class DownloadActionGroup extends DefaultActionGroup implements DumbAware
|
||||
}
|
||||
|
||||
private static boolean isEnabled(AnActionEvent e) {
|
||||
return MavenActionUtil.hasProject(e.getDataContext())
|
||||
&& MavenActionUtil.getProjectsManager(e.getDataContext()).isMavenizedProject();
|
||||
if(!MavenActionUtil.hasProject(e.getDataContext())) return false;
|
||||
final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext());
|
||||
return projectsManager != null && projectsManager.isMavenizedProject();
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -16,6 +16,7 @@
|
||||
package org.jetbrains.idea.maven.project.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.maven.model.MavenArtifact;
|
||||
import org.jetbrains.idea.maven.project.MavenProject;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
@@ -49,7 +50,7 @@ public class DownloadSelectedSourcesAndDocsAction extends MavenProjectsAction {
|
||||
return result == null ? Collections.<MavenArtifact>emptyList() : result;
|
||||
}
|
||||
|
||||
protected void perform(MavenProjectsManager manager, List<MavenProject> mavenProjects, AnActionEvent e) {
|
||||
protected void perform(@NotNull MavenProjectsManager manager, List<MavenProject> mavenProjects, AnActionEvent e) {
|
||||
manager.scheduleArtifactsDownloading(mavenProjects, getDependencies(e), mySources, myDocs, null);
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -18,6 +18,7 @@ package org.jetbrains.idea.maven.project.actions;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.options.ShowSettingsUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.maven.utils.MavenSettings;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenAction;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenActionUtil;
|
||||
@@ -28,7 +29,7 @@ public class EditSettingsAction extends MavenAction {
|
||||
showSettingsFor(MavenActionUtil.getProject(e.getDataContext()));
|
||||
}
|
||||
|
||||
protected static void showSettingsFor(Project project) {
|
||||
protected static void showSettingsFor(@Nullable Project project) {
|
||||
ShowSettingsUtil.getInstance().showSettingsDialog(project, MavenSettings.DISPLAY_NAME);
|
||||
}
|
||||
}
|
||||
+5
-2
@@ -17,6 +17,7 @@ package org.jetbrains.idea.maven.project.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.maven.project.MavenProject;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenAction;
|
||||
@@ -33,8 +34,10 @@ public abstract class MavenProjectsAction extends MavenAction {
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
final DataContext context = e.getDataContext();
|
||||
perform(MavenActionUtil.getProjectsManager(context), MavenActionUtil.getMavenProjects(context), e);
|
||||
final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context);
|
||||
if(projectsManager == null) return;
|
||||
perform(projectsManager, MavenActionUtil.getMavenProjects(context), e);
|
||||
}
|
||||
|
||||
protected abstract void perform(MavenProjectsManager manager, List<MavenProject> mavenProjects, AnActionEvent e);
|
||||
protected abstract void perform(@NotNull MavenProjectsManager manager, List<MavenProject> mavenProjects, AnActionEvent e);
|
||||
}
|
||||
+3
-1
@@ -28,7 +28,9 @@ public abstract class MavenProjectsManagerAction extends MavenAction {
|
||||
|
||||
@Override
|
||||
protected boolean isAvailable(AnActionEvent e) {
|
||||
return super.isAvailable(e) && MavenActionUtil.getProjectsManager(e.getDataContext()).isMavenizedProject();
|
||||
if(!super.isAvailable(e)) return false;
|
||||
final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext());
|
||||
return projectsManager != null && projectsManager.isMavenizedProject();
|
||||
}
|
||||
|
||||
protected abstract void perform(MavenProjectsManager manager);
|
||||
|
||||
+2
-1
@@ -101,7 +101,7 @@ public class MavenShowEffectivePom extends AnAction implements DumbAware {
|
||||
}
|
||||
|
||||
MavenProjectsManager manager = MavenActionUtil.getProjectsManager(dataContext);
|
||||
|
||||
if(manager == null) return null;
|
||||
MavenProject mavenProject = manager.findProject(file);
|
||||
if (mavenProject == null) return null;
|
||||
|
||||
@@ -111,6 +111,7 @@ public class MavenShowEffectivePom extends AnAction implements DumbAware {
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent event) {
|
||||
final Project project = MavenActionUtil.getProject(event.getDataContext());
|
||||
if(project == null) return;
|
||||
final VirtualFile file = findPomXml(event.getDataContext());
|
||||
if (file == null) return;
|
||||
|
||||
|
||||
+4
-1
@@ -16,6 +16,7 @@
|
||||
package org.jetbrains.idea.maven.project.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
import org.jetbrains.idea.maven.utils.MavenFileTemplateGroupFactory;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenActionUtil;
|
||||
|
||||
@@ -25,7 +26,9 @@ import java.util.List;
|
||||
|
||||
public class OpenOrCreateSettingsXmlAction extends MavenOpenOrCreateFilesAction {
|
||||
protected List<File> getFiles(AnActionEvent e) {
|
||||
File file = MavenActionUtil.getProjectsManager(e.getDataContext()).getGeneralSettings().getEffectiveUserSettingsIoFile();
|
||||
final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext());
|
||||
if(projectsManager == null) return Collections.<File>emptyList();
|
||||
File file = projectsManager.getGeneralSettings().getEffectiveUserSettingsIoFile();
|
||||
return file != null ? Collections.singletonList(file) : Collections.<File>emptyList();
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -16,13 +16,14 @@
|
||||
package org.jetbrains.idea.maven.project.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.maven.project.MavenProject;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class ReimportProjectAction extends MavenProjectsAction {
|
||||
protected void perform(MavenProjectsManager manager, List<MavenProject> mavenProjects, AnActionEvent e) {
|
||||
protected void perform(@NotNull MavenProjectsManager manager, List<MavenProject> mavenProjects, AnActionEvent e) {
|
||||
manager.forceUpdateProjects(mavenProjects);
|
||||
}
|
||||
}
|
||||
+1
@@ -41,6 +41,7 @@ public class RemoveManagedFilesAction extends MavenAction {
|
||||
final DataContext context = e.getDataContext();
|
||||
|
||||
MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context);
|
||||
if(projectsManager == null) return;
|
||||
|
||||
List<VirtualFile> selectedFiles = MavenActionUtil.getMavenProjectsFiles(context);
|
||||
List<VirtualFile> removableFiles = new ArrayList<VirtualFile>();
|
||||
|
||||
+11
-5
@@ -17,10 +17,12 @@ package org.jetbrains.idea.maven.project.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.idea.maven.execution.MavenRunConfigurationType;
|
||||
import org.jetbrains.idea.maven.execution.MavenRunnerParameters;
|
||||
import org.jetbrains.idea.maven.model.MavenExplicitProfiles;
|
||||
import org.jetbrains.idea.maven.project.MavenProject;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
import org.jetbrains.idea.maven.utils.MavenDataKeys;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenAction;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenActionUtil;
|
||||
@@ -42,18 +44,22 @@ public class RunBuildAction extends MavenAction {
|
||||
final List<String> goals = MavenDataKeys.MAVEN_GOALS.getData(context);
|
||||
if (goals == null || goals.isEmpty()) return false;
|
||||
|
||||
final MavenProject project = MavenActionUtil.getMavenProject(context);
|
||||
if (project == null) return false;
|
||||
final Project project = MavenActionUtil.getProject(context);
|
||||
if(project == null) return false;
|
||||
final MavenProject mavenProject = MavenActionUtil.getMavenProject(context);
|
||||
if (mavenProject == null) return false;
|
||||
|
||||
if (!perform) return true;
|
||||
|
||||
MavenExplicitProfiles explicitProfiles = MavenActionUtil.getProjectsManager(context).getExplicitProfiles();
|
||||
final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context);
|
||||
if(projectsManager == null) return false;
|
||||
MavenExplicitProfiles explicitProfiles = projectsManager.getExplicitProfiles();
|
||||
final MavenRunnerParameters params = new MavenRunnerParameters(true,
|
||||
project.getDirectory(),
|
||||
mavenProject.getDirectory(),
|
||||
goals,
|
||||
explicitProfiles.getEnabledProfiles(),
|
||||
explicitProfiles.getDisabledProfiles());
|
||||
MavenRunConfigurationType.runConfiguration(MavenActionUtil.getProject(context), params, null);
|
||||
MavenRunConfigurationType.runConfiguration(project, params, null);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
+11
-3
@@ -18,6 +18,8 @@ package org.jetbrains.idea.maven.project.actions;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.options.ShowSettingsUtil;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.maven.project.MavenIgnoredFilesConfigurable;
|
||||
import org.jetbrains.idea.maven.project.MavenProject;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
@@ -35,6 +37,7 @@ public class ToggleIgnoredProjectsAction extends MavenAction {
|
||||
|
||||
final DataContext context = e.getDataContext();
|
||||
MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context);
|
||||
if(projectsManager == null) return;
|
||||
List<MavenProject> projects = MavenActionUtil.getMavenProjects(context);
|
||||
|
||||
if (isIgnoredInSettings(projectsManager, projects)) {
|
||||
@@ -54,6 +57,7 @@ public class ToggleIgnoredProjectsAction extends MavenAction {
|
||||
|
||||
final DataContext context = e.getDataContext();
|
||||
MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context);
|
||||
if(projectsManager == null) return false;
|
||||
List<MavenProject> projects = MavenActionUtil.getMavenProjects(context);
|
||||
|
||||
if (projects == null || projects.isEmpty()) return false;
|
||||
@@ -74,11 +78,11 @@ public class ToggleIgnoredProjectsAction extends MavenAction {
|
||||
(ignoredStatesCount == 0 || ignoredStatesCount == projects.size());
|
||||
}
|
||||
|
||||
private static boolean isIgnored(MavenProjectsManager projectsManager, List<MavenProject> projects) {
|
||||
private static boolean isIgnored(@NotNull MavenProjectsManager projectsManager, List<MavenProject> projects) {
|
||||
return projectsManager.getIgnoredState(projects.get(0));
|
||||
}
|
||||
|
||||
private static boolean isIgnoredInSettings(MavenProjectsManager projectsManager, List<MavenProject> projects) {
|
||||
private static boolean isIgnoredInSettings(@NotNull MavenProjectsManager projectsManager, List<MavenProject> projects) {
|
||||
return projectsManager.isIgnored(projects.get(0)) && !isIgnored(projectsManager, projects);
|
||||
}
|
||||
|
||||
@@ -86,11 +90,15 @@ public class ToggleIgnoredProjectsAction extends MavenAction {
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
final DataContext context = e.getDataContext();
|
||||
MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context);
|
||||
if(projectsManager == null) return;
|
||||
List<MavenProject> projects = MavenActionUtil.getMavenProjects(context);
|
||||
|
||||
final Project project = MavenActionUtil.getProject(context);
|
||||
if(project == null) return;
|
||||
|
||||
if (isIgnoredInSettings(projectsManager, projects)) {
|
||||
ShowSettingsUtil.getInstance()
|
||||
.editConfigurable(MavenActionUtil.getProject(context), new MavenIgnoredFilesConfigurable(MavenActionUtil.getProject(context)));
|
||||
.editConfigurable(project, new MavenIgnoredFilesConfigurable(project));
|
||||
}
|
||||
else {
|
||||
projectsManager.setIgnoredState(projects, !isIgnored(projectsManager, projects));
|
||||
|
||||
+7
-2
@@ -16,17 +16,22 @@
|
||||
package org.jetbrains.idea.maven.project.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenActionUtil;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenToggleAction;
|
||||
|
||||
public class ToggleOfflineAction extends MavenToggleAction {
|
||||
@Override
|
||||
protected boolean doIsSelected(AnActionEvent e) {
|
||||
return MavenActionUtil.getProjectsManager(e.getDataContext()).getGeneralSettings().isWorkOffline();
|
||||
final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext());
|
||||
return projectsManager != null && projectsManager.getGeneralSettings().isWorkOffline();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
MavenActionUtil.getProjectsManager(e.getDataContext()).getGeneralSettings().setWorkOffline(state);
|
||||
final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext());
|
||||
if (projectsManager != null) {
|
||||
projectsManager.getGeneralSettings().setWorkOffline(state);
|
||||
}
|
||||
}
|
||||
}
|
||||
+4
-1
@@ -16,6 +16,7 @@
|
||||
package org.jetbrains.idea.maven.project.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.maven.model.MavenExplicitProfiles;
|
||||
import org.jetbrains.idea.maven.model.MavenProfileKind;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
@@ -61,10 +62,11 @@ public class ToggleProfileAction extends MavenAction {
|
||||
if (selectedProfiles == null || selectedProfiles.isEmpty()) return null;
|
||||
|
||||
MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(e.getDataContext());
|
||||
if(projectsManager == null) return null;
|
||||
return getTargetState(projectsManager, selectedProfiles);
|
||||
}
|
||||
|
||||
private static MavenProfileKind getTargetState(MavenProjectsManager projectsManager, Map<String, MavenProfileKind> profiles) {
|
||||
private static MavenProfileKind getTargetState(@NotNull MavenProjectsManager projectsManager, Map<String, MavenProfileKind> profiles) {
|
||||
MavenExplicitProfiles explicitProfiles = projectsManager.getExplicitProfiles();
|
||||
MavenProfileKind targetState = null;
|
||||
// all profiles should target to the same state
|
||||
@@ -108,6 +110,7 @@ public class ToggleProfileAction extends MavenAction {
|
||||
@Override
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
MavenProjectsManager manager = MavenActionUtil.getProjectsManager(e.getDataContext());
|
||||
if(manager == null) return;
|
||||
Map<String, MavenProfileKind> selectedProfiles = e.getData(MavenDataKeys.MAVEN_PROFILES);
|
||||
Set<String> selectedProfileIds = selectedProfiles.keySet();
|
||||
|
||||
|
||||
+6
-1
@@ -16,6 +16,7 @@
|
||||
package org.jetbrains.idea.maven.project.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.idea.maven.execution.MavenRunner;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenActionUtil;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenToggleAction;
|
||||
@@ -23,11 +24,15 @@ import org.jetbrains.idea.maven.utils.actions.MavenToggleAction;
|
||||
public class ToggleSkipTestsAction extends MavenToggleAction {
|
||||
@Override
|
||||
protected boolean doIsSelected(AnActionEvent e) {
|
||||
return MavenRunner.getInstance(MavenActionUtil.getProject(e.getDataContext())).getState().isSkipTests();
|
||||
final Project project = MavenActionUtil.getProject(e.getDataContext());
|
||||
if(project == null) return false;
|
||||
return MavenRunner.getInstance(project).getState().isSkipTests();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
final Project project = MavenActionUtil.getProject(e.getDataContext());
|
||||
if(project == null) return;
|
||||
MavenRunner.getInstance(MavenActionUtil.getProject(e.getDataContext())).getState().setSkipTests(state);
|
||||
}
|
||||
}
|
||||
+2
-1
@@ -16,13 +16,14 @@
|
||||
package org.jetbrains.idea.maven.project.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.idea.maven.project.MavenProject;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class UpdateFoldersForProjectAction extends MavenProjectsAction {
|
||||
protected void perform(MavenProjectsManager manager, List<MavenProject> mavenProjects, AnActionEvent e) {
|
||||
protected void perform(@NotNull MavenProjectsManager manager, List<MavenProject> mavenProjects, AnActionEvent e) {
|
||||
manager.scheduleFoldersResolve(mavenProjects);
|
||||
}
|
||||
}
|
||||
+8
-2
@@ -30,6 +30,7 @@ import org.jetbrains.idea.maven.model.MavenConstants;
|
||||
import org.jetbrains.idea.maven.model.MavenExplicitProfiles;
|
||||
import org.jetbrains.idea.maven.model.MavenPlugin;
|
||||
import org.jetbrains.idea.maven.project.MavenProject;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
import org.jetbrains.idea.maven.utils.MavenArtifactUtil;
|
||||
import org.jetbrains.idea.maven.utils.MavenPluginInfo;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenAction;
|
||||
@@ -177,13 +178,18 @@ public class MavenKeymapExtension implements KeymapExtension {
|
||||
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
final DataContext context = e.getDataContext();
|
||||
MavenExplicitProfiles explicitProfiles = MavenActionUtil.getProjectsManager(context).getExplicitProfiles();
|
||||
final Project project = MavenActionUtil.getProject(context);
|
||||
if (project == null) return;
|
||||
|
||||
final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context);
|
||||
if(projectsManager == null) return;
|
||||
MavenExplicitProfiles explicitProfiles = projectsManager.getExplicitProfiles();
|
||||
MavenRunnerParameters params = new MavenRunnerParameters(true,
|
||||
myMavenProject.getDirectory(),
|
||||
Arrays.asList(myGoal),
|
||||
explicitProfiles.getEnabledProfiles(),
|
||||
explicitProfiles.getDisabledProfiles());
|
||||
MavenRunConfigurationType.runConfiguration(MavenActionUtil.getProject(context), params, null);
|
||||
MavenRunConfigurationType.runConfiguration(project, params, null);
|
||||
}
|
||||
|
||||
public MavenProject getMavenProject() {
|
||||
|
||||
+10
-3
@@ -18,8 +18,10 @@ package org.jetbrains.idea.maven.tasks.actions;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.keymap.impl.ui.EditKeymapsDialog;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.maven.project.MavenProject;
|
||||
import org.jetbrains.idea.maven.project.MavenProjectsManager;
|
||||
import org.jetbrains.idea.maven.tasks.MavenShortcutsManager;
|
||||
import org.jetbrains.idea.maven.utils.MavenDataKeys;
|
||||
import org.jetbrains.idea.maven.utils.actions.MavenAction;
|
||||
@@ -37,7 +39,8 @@ public class AssignShortcutAction extends MavenAction {
|
||||
private static boolean isIgnoredProject(DataContext context) {
|
||||
final MavenProject project = MavenActionUtil.getMavenProject(context);
|
||||
if (project == null) return false;
|
||||
return MavenActionUtil.getProjectsManager(context).isIgnored(project);
|
||||
final MavenProjectsManager projectsManager = MavenActionUtil.getProjectsManager(context);
|
||||
return projectsManager != null && projectsManager.isIgnored(project);
|
||||
}
|
||||
|
||||
public void actionPerformed(AnActionEvent e) {
|
||||
@@ -60,11 +63,15 @@ public class AssignShortcutAction extends MavenAction {
|
||||
|
||||
String goal = goals.get(0);
|
||||
|
||||
return getShortcutsManager(context).getActionId(project.getPath(), goal);
|
||||
final MavenShortcutsManager shortcutsManager = getShortcutsManager(context);
|
||||
return shortcutsManager != null ? shortcutsManager.getActionId(project.getPath(), goal) : null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
protected static MavenShortcutsManager getShortcutsManager(DataContext context) {
|
||||
return MavenShortcutsManager.getInstance(MavenActionUtil.getProject(context));
|
||||
final Project project = MavenActionUtil.getProject(context);
|
||||
if(project == null) return null;
|
||||
return MavenShortcutsManager.getInstance(project);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+8
-2
@@ -18,6 +18,7 @@ package org.jetbrains.idea.maven.tasks.actions;
|
||||
import com.intellij.execution.RunManagerEx;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.maven.project.MavenProject;
|
||||
@@ -40,7 +41,9 @@ public class ToggleBeforeRunTaskAction extends MavenToggleAction {
|
||||
final DataContext context = e.getDataContext();
|
||||
final Pair<MavenProject, String> desc = getTaskDesc(context);
|
||||
if (desc != null) {
|
||||
for (MavenBeforeRunTask each : getRunManager(context).getBeforeRunTasks(MavenBeforeRunTasksProvider.ID)) {
|
||||
final RunManagerEx runManager = getRunManager(context);
|
||||
if(runManager == null) return false;
|
||||
for (MavenBeforeRunTask each : runManager.getBeforeRunTasks(MavenBeforeRunTasksProvider.ID)) {
|
||||
if (each.isFor(desc.first, desc.second)) return true;
|
||||
}
|
||||
}
|
||||
@@ -68,7 +71,10 @@ public class ToggleBeforeRunTaskAction extends MavenToggleAction {
|
||||
return Pair.create(mavenProject, goals.get(0));
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static RunManagerEx getRunManager(DataContext context) {
|
||||
return RunManagerEx.getInstanceEx(MavenActionUtil.getProject(context));
|
||||
final Project project = MavenActionUtil.getProject(context);
|
||||
if(project == null) return null;
|
||||
return RunManagerEx.getInstanceEx(project);
|
||||
}
|
||||
}
|
||||
|
||||
+12
-4
@@ -17,6 +17,8 @@ package org.jetbrains.idea.maven.tasks.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.DataContext;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.idea.maven.project.MavenProject;
|
||||
import org.jetbrains.idea.maven.tasks.MavenCompilerTask;
|
||||
import org.jetbrains.idea.maven.tasks.MavenTasksManager;
|
||||
@@ -50,12 +52,14 @@ public abstract class ToggleCompilerTasksAction extends MavenToggleAction {
|
||||
@Override
|
||||
public void setSelected(AnActionEvent e, boolean state) {
|
||||
final DataContext context = e.getDataContext();
|
||||
final MavenTasksManager tasksManager = getTasksManager(context);
|
||||
List<MavenCompilerTask> tasks = getTasks(context);
|
||||
if(tasksManager == null) return;
|
||||
if (state) {
|
||||
addTasks(getTasksManager(context), tasks);
|
||||
addTasks(tasksManager, tasks);
|
||||
}
|
||||
else {
|
||||
removeTasks(getTasksManager(context), tasks);
|
||||
removeTasks(tasksManager, tasks);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -73,7 +77,8 @@ public abstract class ToggleCompilerTasksAction extends MavenToggleAction {
|
||||
return result;
|
||||
}
|
||||
|
||||
protected boolean hasTask(MavenTasksManager manager, MavenCompilerTask task) {
|
||||
protected boolean hasTask(@Nullable MavenTasksManager manager, MavenCompilerTask task) {
|
||||
if(manager == null) return false;
|
||||
return manager.isCompileTaskOfPhase(task, myPhase);
|
||||
}
|
||||
|
||||
@@ -85,7 +90,10 @@ public abstract class ToggleCompilerTasksAction extends MavenToggleAction {
|
||||
manager.removeCompileTasks(tasks, myPhase);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private static MavenTasksManager getTasksManager(DataContext context) {
|
||||
return MavenTasksManager.getInstance(MavenActionUtil.getProject(context));
|
||||
final Project project = MavenActionUtil.getProject(context);
|
||||
if(project == null) return null;
|
||||
return MavenTasksManager.getInstance(project);
|
||||
}
|
||||
}
|
||||
|
||||
+6
-3
@@ -41,7 +41,7 @@ public class MavenActionUtil {
|
||||
return CommonDataKeys.PROJECT.getData(context) != null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Nullable
|
||||
public static Project getProject(DataContext context) {
|
||||
return CommonDataKeys.PROJECT.getData(context);
|
||||
}
|
||||
@@ -55,6 +55,7 @@ public class MavenActionUtil {
|
||||
public static MavenProject getMavenProject(DataContext context) {
|
||||
MavenProject result;
|
||||
final MavenProjectsManager manager = getProjectsManager(context);
|
||||
if(manager == null) return null;
|
||||
|
||||
final VirtualFile file = CommonDataKeys.VIRTUAL_FILE.getData(context);
|
||||
if (file != null) {
|
||||
@@ -77,9 +78,11 @@ public class MavenActionUtil {
|
||||
return module != null ? module : DataKeys.MODULE_CONTEXT.getData(context);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Nullable
|
||||
public static MavenProjectsManager getProjectsManager(DataContext context) {
|
||||
return MavenProjectsManager.getInstance(getProject(context));
|
||||
final Project project = getProject(context);
|
||||
if(project == null) return null;
|
||||
return MavenProjectsManager.getInstance(project);
|
||||
}
|
||||
|
||||
public static boolean isMavenProjectFile(VirtualFile file) {
|
||||
|
||||
@@ -1858,7 +1858,7 @@ def _locked_settrace(
|
||||
|
||||
#Suspend as the last thing after all tracing is in place.
|
||||
if suspend:
|
||||
debugger.setSuspend(t, CMD_SET_BREAK)
|
||||
debugger.setSuspend(t, CMD_THREAD_SUSPEND)
|
||||
|
||||
PyDBCommandThread(debugger).start()
|
||||
PyDBCheckAliveThread(debugger).start()
|
||||
@@ -1884,7 +1884,7 @@ def _locked_settrace(
|
||||
|
||||
|
||||
if suspend:
|
||||
debugger.setSuspend(t, CMD_SET_BREAK)
|
||||
debugger.setSuspend(t, CMD_THREAD_SUSPEND)
|
||||
|
||||
|
||||
def stoptrace():
|
||||
|
||||
@@ -27,7 +27,6 @@ import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.QualifiedName;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.jetbrains.python.PyNames;
|
||||
import com.jetbrains.python.codeInsight.controlflow.ControlFlowCache;
|
||||
import com.jetbrains.python.codeInsight.dataflow.scope.Scope;
|
||||
import com.jetbrains.python.inspections.quickfix.PyRenameElementQuickFix;
|
||||
@@ -126,7 +125,7 @@ public class PyPep8NamingInspection extends PyInspection {
|
||||
public boolean value(PyClass ancestor) {
|
||||
final PsiFile ancestorsModule = ancestor.getContainingFile();
|
||||
final Sdk sdk = PyBuiltinCache.findSdkForFile(ancestorsModule);
|
||||
if (PythonSdkType.isStdLib(ancestorsModule.getVirtualFile(), sdk) && !PyUtil.isObjectClass(cls)) {
|
||||
if (PythonSdkType.isStdLib(ancestorsModule.getVirtualFile(), sdk) && !PyUtil.isObjectClass(ancestor)) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user