# This patch file was generated by NetBeans IDE # Following Index: paths are relative to: D:\ws\main # This patch can be applied using context Tools: Patch action on respective folder. # It uses platform neutral UTF-8 encoding and \n newlines. # Above lines and this line are ignored by the patching process. Index: maven.graph/nbproject/project.xml --- maven.graph/nbproject/project.xml +++ maven.graph/nbproject/project.xml @@ -121,6 +121,15 @@ + org.netbeans.modules.projectuiapi + + + + 1 + 1.71 + + + org.netbeans.modules.xml.xam Index: maven.graph/src/org/netbeans/modules/maven/graph/ArtifactWidget.java --- maven.graph/src/org/netbeans/modules/maven/graph/ArtifactWidget.java +++ maven.graph/src/org/netbeans/modules/maven/graph/ArtifactWidget.java @@ -50,11 +50,15 @@ import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.List; +import javax.swing.Icon; import javax.swing.Timer; import javax.swing.UIManager; import org.apache.maven.artifact.Artifact; import org.apache.maven.shared.dependency.tree.DependencyNode; import org.netbeans.api.annotations.common.StaticResource; +import org.netbeans.api.project.Project; +import org.netbeans.api.project.ProjectUtils; +import org.netbeans.api.project.ui.OpenProjects; import org.netbeans.api.visual.action.ActionFactory; import org.netbeans.api.visual.action.SelectProvider; import org.netbeans.api.visual.border.BorderFactory; @@ -65,6 +69,7 @@ import org.netbeans.api.visual.widget.LevelOfDetailsWidget; import org.netbeans.api.visual.widget.Scene; import org.netbeans.api.visual.widget.Widget; +import org.netbeans.modules.maven.api.NbMavenProject; import static org.netbeans.modules.maven.graph.Bundle.*; import org.openide.util.ImageUtilities; import org.openide.util.NbBundle.Messages; @@ -109,7 +114,8 @@ private Timer hoverTimer; private Color hoverBorderC; - private LabelWidget artifactW, versionW; + private Widget artifactW; + private LabelWidget versionW; private Widget contentW; private ImageWidget lockW, fixHintW; @@ -277,8 +283,17 @@ contentW = new LevelOfDetailsWidget(scene, 0.05, 0.1, Double.MAX_VALUE, Double.MAX_VALUE); contentW.setBorder(BorderFactory.createLineBorder(10)); contentW.setLayout(LayoutFactory.createVerticalFlowLayout(LayoutFactory.SerialAlignment.JUSTIFY, 1)); - artifactW = new LabelWidget(scene); - artifactW.setLabel(artifact.getArtifactId() + " "); + + //Artifact name (with optional project icon on the left) + artifactW = new Widget(scene); + artifactW.setLayout(LayoutFactory.createHorizontalFlowLayout(LayoutFactory.SerialAlignment.CENTER, 4)); + + ImageWidget projectIcon = getProjectIcon(artifact, scene); + if (projectIcon != null) { + artifactW.addChild(projectIcon); + } + artifactW.addChild(new LabelWidget(scene, artifact.getArtifactId() + " ")); + if (node.isRoot()) { Font defF = scene.getDefaultFont(); artifactW.setFont(defF.deriveFont(Font.BOLD, defF.getSize() + 3f)); @@ -569,4 +584,22 @@ } } + private ImageWidget getProjectIcon(Artifact artifact, DependencyGraphScene scene) { + //NOTE: surely not the best way to get the project icon + Project[] openProjects = OpenProjects.getDefault().getOpenProjects(); + for (Project project : openProjects) { + NbMavenProject mavenProject = project.getLookup().lookup(NbMavenProject.class); + if (null != mavenProject) { + Artifact artifactFromNode = artifact; + Artifact artifactFromProject = mavenProject.getMavenProject().getArtifact(); + if (artifactFromNode.equals(artifactFromProject)) { + //get icon from opened project + Icon icon = ProjectUtils.getInformation(project).getIcon(); + return new ImageWidget(scene, ImageUtilities.icon2Image(icon)); } + } + } + return null; + } + +}