From 15c1cbc2d9a09eb9dbbdc3a5c5c31b95fbeb52f0 Mon Sep 17 00:00:00 2001 From: Milos Kleint Date: Tue, 26 Apr 2011 13:45:01 +0200 Subject: 343817 no link in hover when definition not found. hint about import scoped deps added, also fixed spacing in the message construction --- .../org/eclipse/m2e/editor/xml/PomHyperlinkDetector.java | 8 +++++++- .../main/java/org/eclipse/m2e/editor/xml/PomTextHover.java | 2 ++ .../eclipse/m2e/editor/xml/internal/MarkerHoverControl.java | 13 +++++++++---- .../org/eclipse/m2e/editor/xml/internal/messages.properties | 4 ++-- 4 files changed, 20 insertions(+), 7 deletions(-) diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomHyperlinkDetector.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomHyperlinkDetector.java index e701518d..1996de4d 100644 --- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomHyperlinkDetector.java +++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomHyperlinkDetector.java @@ -409,6 +409,12 @@ public class PomHyperlinkDetector implements IHyperlinkDetector { return region.project != null && region.project.getModel().getProperties().containsKey(region.property); } + //only create the hyperlink when the origin location for jumping is present. + //in some cases (managed version comes from imported dependencies) we don't have the location and have nowhere to jump) + public static boolean canCreateHyperLink(final ManagedArtifactRegion region) { + return region.project != null && PomHyperlinkDetector.findLocationForManagedArtifact(region, region.project) != null; + } + static IHyperlink[] openExternalMarkerDefinition(ISourceViewer sourceViewer, int offset) { List toRet = new ArrayList(); @@ -778,7 +784,7 @@ public class PomHyperlinkDetector implements IHyperlinkDetector { public int getOffset() { return offset; } - } + } public static class MarkerRegion implements IRegion { diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomTextHover.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomTextHover.java index e659e623..65cecdf5 100644 --- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomTextHover.java +++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/PomTextHover.java @@ -90,9 +90,11 @@ public class PomTextHover implements ITextHover, ITextHoverExtension, ITextHover // check! InputSource source = openLocation.getSource(); if (source != null) { + ret.append(" "); // a space after the version value ret.append(NLS.bind(Messages.PomTextHover_managed_location, source.getModelId())); } } else { + ret.append(" "); // a space after the version value ret.append(Messages.PomTextHover_managed_location_missing); } return ret; diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/MarkerHoverControl.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/MarkerHoverControl.java index 76c622f6..5b77dcf1 100644 --- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/MarkerHoverControl.java +++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/MarkerHoverControl.java @@ -201,9 +201,13 @@ public class MarkerHoverControl extends AbstractInformationControl implements II createResolutionsControl(composite, mark, resolutions); } } - if (reg instanceof ManagedArtifactRegion) { - final ManagedArtifactRegion man = (ManagedArtifactRegion)reg; - Link link = createHyperlink(createTooltipComposite(composite, PomTextHover.getLabelForRegion(man))); + if(reg instanceof ManagedArtifactRegion) { + final ManagedArtifactRegion man = (ManagedArtifactRegion) reg; + Composite comp = createTooltipComposite(composite, PomTextHover.getLabelForRegion(man)); + //only create the hyperlink when the origin location for jumping is present. + //in some cases (managed version comes from imported dependencies) we don't have the location and have nowhere to jump) + if (PomHyperlinkDetector.canCreateHyperLink(man)) { + Link link = createHyperlink(comp); link.addSelectionListener(new SelectionAdapter() { @Override public void widgetSelected(SelectionEvent e) { @@ -211,8 +215,9 @@ public class MarkerHoverControl extends AbstractInformationControl implements II PomHyperlinkDetector.createHyperlink(man).open(); } }); - } + + } if (reg instanceof ExpressionRegion) { final ExpressionRegion expr = (ExpressionRegion)reg; Composite tooltipComposite = createTooltipComposite(composite, PomTextHover.getLabelForRegion(expr)); diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/messages.properties b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/messages.properties index 4c9a56bf..88a30ae0 100644 --- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/messages.properties +++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/messages.properties @@ -70,8 +70,8 @@ PomTextHover_eval1=This expression evaluates to PomTextHover_eval2=The property is defined in {0} PomTextHover_jump_to=Jump to location PomTextHover_managed_location=The artifact is managed in {0} -PomTextHover_managed_location_missing=The managed artifact's location could not be determined. +PomTextHover_managed_location_missing=The managed definition location could not be determined, probably defined by "import" scoped dependencies. PomTextHover_managed_version=The managed version is -PomTextHover_managed_version_missing=The managed version could not be determined +PomTextHover_managed_version_missing=The managed version could not be determined. PomTextHover_more_quickfixes={0} quick fixes available: PomTextHover_one_quickfix=\ 1 quick fix available: -- cgit v1.2.3