<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Right mouse click on a layer in a JLegend to bring up a popup menu in Java Maps SDK Questions</title>
    <link>https://community.esri.com/t5/java-maps-sdk-questions/right-mouse-click-on-a-layer-in-a-jlegend-to-bring/m-p/642337#M1961</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Not sure how to bring up a popup menu on right mouse clicking of a layer in the JLegend.&amp;nbsp; There are a few event handlers that could be extended.&amp;nbsp; Not sure which one and the logic to check which layer is selected.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Tue, 14 May 2013 17:56:58 GMT</pubDate>
    <dc:creator>dw2</dc:creator>
    <dc:date>2013-05-14T17:56:58Z</dc:date>
    <item>
      <title>Right mouse click on a layer in a JLegend to bring up a popup menu</title>
      <link>https://community.esri.com/t5/java-maps-sdk-questions/right-mouse-click-on-a-layer-in-a-jlegend-to-bring/m-p/642337#M1961</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;Not sure how to bring up a popup menu on right mouse clicking of a layer in the JLegend.&amp;nbsp; There are a few event handlers that could be extended.&amp;nbsp; Not sure which one and the logic to check which layer is selected.&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 14 May 2013 17:56:58 GMT</pubDate>
      <guid>https://community.esri.com/t5/java-maps-sdk-questions/right-mouse-click-on-a-layer-in-a-jlegend-to-bring/m-p/642337#M1961</guid>
      <dc:creator>dw2</dc:creator>
      <dc:date>2013-05-14T17:56:58Z</dc:date>
    </item>
    <item>
      <title>Re: Right mouse click on a layer in a JLegend to bring up a popup menu</title>
      <link>https://community.esri.com/t5/java-maps-sdk-questions/right-mouse-click-on-a-layer-in-a-jlegend-to-bring/m-p/642338#M1962</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;SPAN&gt;I'm not sure what your requirements are, but you must modify the JLegend class found in the toolkit to get it to do what you want it to. You have access to its source code if you associate the source path to its referenced jar on your project via properties on eclipse.&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;the code you're interest in is in the internal LegendMouseListener class that gets added to the internal JTree that the JLegend uses:&lt;/SPAN&gt;&lt;BR /&gt;&lt;PRE class="lia-code-sample line-numbers language-none"&gt; /**
&amp;nbsp; * This class is used to handle mouse click events in the JLegend control.
&amp;nbsp; * The mouse click event handler looks to see if the mouse click is over the
&amp;nbsp; * check box of a tree node and updates the visibility of the corresponding
&amp;nbsp; * layer as appropriate. Note that the actual drawing of the check box and
&amp;nbsp; * displaying of its state is handled by {@link LegendTreeCellRenderer}.
&amp;nbsp; */
 protected class LegendMouseListener extends MouseAdapter {
&amp;nbsp; int _hotspot = new JCheckBox().getPreferredSize().width;

&amp;nbsp; /*
&amp;nbsp;&amp;nbsp; * (non-Javadoc)
&amp;nbsp;&amp;nbsp; * 
&amp;nbsp;&amp;nbsp; * @see
&amp;nbsp;&amp;nbsp; * java.awt.event.MouseAdapter#mousePressed(java.awt.event.MouseEvent)
&amp;nbsp;&amp;nbsp; */
&amp;nbsp; @Override
&amp;nbsp; public void mousePressed(MouseEvent e) {
&amp;nbsp;&amp;nbsp; TreePath selPath = _tree.getPathForLocation(e.getX(), e.getY());
&amp;nbsp;&amp;nbsp; if (selPath != null &amp;amp;&amp;amp; SwingUtilities.isRightMouseButton(e)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; _tree.setSelectionPath(selPath);
&amp;nbsp;&amp;nbsp;&amp;nbsp; Object userObject = ((DefaultMutableTreeNode) selPath
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getLastPathComponent()).getUserObject();

&amp;nbsp;&amp;nbsp;&amp;nbsp; if (userObject instanceof Layer) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Layer layer = (Layer) userObject;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JOptionPane.showMessageDialog(getParent(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "You right-clicked on Layer " + layer.getName());
&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (userObject instanceof LayerInfo) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LayerInfo info = (LayerInfo) userObject;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JOptionPane.showMessageDialog(getParent(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "You right-clicked on LayerInfo " + info.getName());
&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // What else were you expecting?
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; } else {
&amp;nbsp;&amp;nbsp;&amp;nbsp; // Not a right-click
&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp; super.mousePressed(e);
&amp;nbsp; }

&amp;nbsp; /*
&amp;nbsp;&amp;nbsp; * (non-Javadoc)
&amp;nbsp;&amp;nbsp; * 
&amp;nbsp;&amp;nbsp; * @see
&amp;nbsp;&amp;nbsp; * java.awt.event.MouseAdapter#mouseClicked(java.awt.event.MouseEvent)
&amp;nbsp;&amp;nbsp; */
&amp;nbsp; @Override
&amp;nbsp; public void mouseClicked(MouseEvent e) {
&amp;nbsp;&amp;nbsp; TreePath path = _tree.getPathForLocation(e.getX(), e.getY());

&amp;nbsp;&amp;nbsp; if (path != null
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&amp;amp; e.getX() &amp;lt; _tree.getPathBounds(path).x + _hotspot) {
&amp;nbsp;&amp;nbsp;&amp;nbsp; Object userObject = ((DefaultMutableTreeNode) path
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .getLastPathComponent()).getUserObject();

&amp;nbsp;&amp;nbsp;&amp;nbsp; if (userObject instanceof Layer) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Layer layer = (Layer) userObject;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (SwingUtilities.isRightMouseButton(e)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // handle right-click on Layer
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JOptionPane
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .showMessageDialog(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getParent(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "You right-clicked on Layer "
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + layer.getName());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; layer.setVisible(!layer.isVisible());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; } else if (userObject instanceof LayerInfo) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LayerInfo info = (LayerInfo) userObject;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (SwingUtilities.isRightMouseButton(e)) {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; // handle right-click on LayerInfo
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; JOptionPane.showMessageDialog(
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; getParent(),
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "You right-clicked on LayerInfo "
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + info.getName());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info.setVisible(!info.isVisible());
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; }
&amp;nbsp;&amp;nbsp;&amp;nbsp; _tree.repaint();
&amp;nbsp;&amp;nbsp; }
&amp;nbsp; }
 }
&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;I simply added the mousePressed overriden method check for right-clicks. the source code is attached.&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN&gt;[ATTACH=CONFIG]24469[/ATTACH]&lt;/SPAN&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;SPAN&gt;Good luck!&lt;/SPAN&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 12 Dec 2021 16:43:45 GMT</pubDate>
      <guid>https://community.esri.com/t5/java-maps-sdk-questions/right-mouse-click-on-a-layer-in-a-jlegend-to-bring/m-p/642338#M1962</guid>
      <dc:creator>CarlosColón-Maldonado</dc:creator>
      <dc:date>2021-12-12T16:43:45Z</dc:date>
    </item>
  </channel>
</rss>

