1 /*
2
3 dsh-venn-cytoscape-plugin Cytoscape plugin for venn diagrams.
4 Copyright (c) 2010-2012 held jointly by the individual authors.
5
6 This library is free software; you can redistribute it and/or modify it
7 under the terms of the GNU Lesser General Public License as published
8 by the Free Software Foundation; either version 3 of the License, or (at
9 your option) any later version.
10
11 This library is distributed in the hope that it will be useful, but WITHOUT
12 ANY WARRANTY; with out even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
14 License for more details.
15
16 You should have received a copy of the GNU Lesser General Public License
17 along with this library; if not, write to the Free Software Foundation,
18 Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
19
20 > http://www.fsf.org/licensing/licenses/lgpl.html
21 > http://www.opensource.org/licenses/lgpl-license.php
22
23 */
24 package org.dishevelled.venn.cytoscape;
25
26 import java.awt.Toolkit;
27
28 import java.awt.event.ActionEvent;
29 import java.awt.event.KeyEvent;
30 import java.awt.event.WindowEvent;
31
32 import javax.swing.AbstractAction;
33 import javax.swing.Action;
34 import javax.swing.KeyStroke;
35 import javax.swing.JComponent;
36 import javax.swing.JDialog;
37 import javax.swing.JRootPane;
38
39 import cytoscape.CyNode;
40 import cytoscape.groups.CyGroup;
41
42 /**
43 * Utility methods.
44 *
45 * @author Michael Heuer
46 */
47 final class VennDiagramsUtils
48 {
49
50 /**
51 * Return the name of the specified group.
52 *
53 * @param group group
54 * @return the name of the specified group
55 */
56 static String nameOf(final CyGroup group)
57 {
58 return group.getGroupName();
59 }
60
61 /**
62 * Return the name of the specified node.
63 *
64 * @param node node
65 * @return the name of the specified node
66 */
67 static String nameOf(final CyNode node)
68 {
69 return node.toString();
70 }
71
72 /**
73 * Install a close action binding to <code>Ctrl-C</code>/<code>Command-C</code> for the specified dialog.
74 *
75 * @param dialog dialog, must not be null
76 */
77 static void installCloseKeyBinding(final JDialog dialog)
78 {
79 Action close = new AbstractAction()
80 {
81 /** {@inheritDoc} */
82 public void actionPerformed(final ActionEvent event)
83 {
84 dialog.dispatchEvent(new WindowEvent(dialog, WindowEvent.WINDOW_CLOSING));
85 }
86 };
87 int menuKeyMask = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask();
88 KeyStroke closeStroke = KeyStroke.getKeyStroke(KeyEvent.VK_W, menuKeyMask);
89 JRootPane rootPane = dialog.getRootPane();
90 rootPane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(closeStroke, "close");
91 rootPane.getActionMap().put("close", close);
92 }
93 }