diff --git a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java
index 6da7af64f4e7..058e1c427034 100644
--- a/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java
+++ b/java/idea-ui/src/com/intellij/openapi/roots/ui/configuration/artifacts/ArtifactEditorImpl.java
@@ -15,6 +15,8 @@
*/
package com.intellij.openapi.roots.ui.configuration.artifacts;
+import com.intellij.codeInsight.hint.HintManager;
+import com.intellij.codeInsight.hint.HintUtil;
import com.intellij.ide.CommonActionsManager;
import com.intellij.ide.DataManager;
import com.intellij.ide.DefaultTreeExpander;
@@ -49,10 +51,8 @@ import com.intellij.packaging.impl.artifacts.ArtifactUtil;
import com.intellij.packaging.impl.elements.ArchivePackagingElement;
import com.intellij.packaging.impl.elements.ManifestFileUtil;
import com.intellij.packaging.ui.ManifestFileConfiguration;
-import com.intellij.ui.PopupHandler;
-import com.intellij.ui.ScrollPaneFactory;
-import com.intellij.ui.TabbedPaneWrapper;
-import com.intellij.ui.TreeToolTipHandler;
+import com.intellij.ui.*;
+import com.intellij.ui.awt.RelativePoint;
import com.intellij.util.EventDispatcher;
import com.intellij.util.Icons;
import com.intellij.util.ui.ThreeStateCheckBox;
@@ -61,6 +61,8 @@ import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import javax.swing.border.Border;
+import javax.swing.event.HyperlinkEvent;
+import javax.swing.event.HyperlinkListener;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -201,7 +203,23 @@ public class ArtifactEditorImpl implements ArtifactEditorEx {
final JPanel rightPanel = new JPanel(new BorderLayout());
final JPanel rightTopPanel = new JPanel(new BorderLayout());
- rightTopPanel.add(new JLabel("Available Elements (drag'n'drop to layout tree)"), BorderLayout.SOUTH);
+ final JPanel labelPanel = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0));
+ labelPanel.add(new JLabel("Available Elements"));
+ final HyperlinkLabel link = new HyperlinkLabel("");
+ link.setIcon(IconLoader.getIcon("/general/help.png"));
+ link.addHyperlinkListener(new HyperlinkListener() {
+ public void hyperlinkUpdate(HyperlinkEvent e) {
+ if (e.getEventType() == HyperlinkEvent.EventType.ACTIVATED) {
+ final JLabel label = new JLabel(ProjectBundle.message("artifact.source.items.tree.tooltip"));
+ label.setBorder(HintUtil.createHintBorder());
+ label.setBackground(HintUtil.INFORMATION_COLOR);
+ label.setOpaque(true);
+ HintManager.getInstance().showHint(label, RelativePoint.getSouthEastOf(link), HintManager.HIDE_BY_ANY_KEY | HintManager.HIDE_BY_TEXT_CHANGE, -1);
+ }
+ }
+ });
+ labelPanel.add(link);
+ rightTopPanel.add(labelPanel, BorderLayout.SOUTH);
rightPanel.add(rightTopPanel, BorderLayout.NORTH);
rightPanel.add(ScrollPaneFactory.createScrollPane(mySourceItemsTree), BorderLayout.CENTER);
rightPanel.setBorder(border);
diff --git a/platform/icons/src/general/help.png b/platform/icons/src/general/help.png
new file mode 100644
index 000000000000..dd245b7cee5b
Binary files /dev/null and b/platform/icons/src/general/help.png differ
diff --git a/platform/platform-resources-en/src/messages/ProjectBundle.properties b/platform/platform-resources-en/src/messages/ProjectBundle.properties
index 374e51fe6e79..7fbfa4dcef38 100644
--- a/platform/platform-resources-en/src/messages/ProjectBundle.properties
+++ b/platform/platform-resources-en/src/messages/ProjectBundle.properties
@@ -435,6 +435,9 @@ dialog.title.extract.artifact=Extract Artifact
action.name.inline.artifact=Inline Artifact
action.name.rename.packaging.element=Rename
drag.n.drop.text.0.packaging.elements={0} elements
+artifact.source.items.tree.tooltip=Double-click on element to put into default location
\
+ Drag-and-drop element to add into the desired location
\
+ More actions are available in the popup menu
#new project wizard
module.type.empty.name=Empty Project