2 * Jalview - A Sequence Alignment Editor and Viewer (Version 2.6)
3 * Copyright (C) 2010 J Procter, AM Waterhouse, G Barton, M Clamp, S Searle
5 * This file is part of Jalview.
7 * Jalview is free software: you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
11 * Jalview is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty
13 * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
14 * PURPOSE. See the GNU General Public License for more details.
16 * You should have received a copy of the GNU General Public License along with Jalview. If not, see <http://www.gnu.org/licenses/>.
20 import java.awt.Color;
22 import java.awt.Rectangle;
23 import java.awt.event.ActionListener;
25 import javax.swing.JButton;
26 import javax.swing.JComponent;
27 import javax.swing.JLabel;
28 import javax.swing.JMenu;
29 import javax.swing.JPanel;
30 import javax.swing.JTextArea;
31 import javax.swing.SwingConstants;
34 * useful functions for building Swing GUIs
39 public final class JvSwingUtils
42 * wrap a bare html safe string to around 60 characters per line using a
50 public static String wrapTooltip(String ttext)
52 if (ttext.length() < 60)
58 return "<table width=350 border=0><tr><td>" + ttext
59 + "</td></tr></table>";
63 public static JButton makeButton(String label, String tooltip,
64 ActionListener action)
66 JButton button = new JButton();
67 button.setText(label);
68 // TODO: get the base font metrics for the Jalview gui from somewhere
69 button.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));
70 button.setForeground(Color.black);
71 button.setHorizontalAlignment(SwingConstants.CENTER);
72 button.setToolTipText(tooltip);
73 button.addActionListener(action);
78 * find or add a submenu with the given title in the given menu
82 * @return the new or existing submenu
84 public static JMenu findOrCreateMenu(JMenu menu, String submenu)
86 JMenu submenuinstance = null;
87 for (int i = 0, iSize = menu.getMenuComponentCount(); i < iSize; i++)
89 if (menu.getMenuComponent(i) instanceof JMenu
90 && ((JMenu) menu.getMenuComponent(i)).getText().equals(
93 submenuinstance = (JMenu) menu.getMenuComponent(i);
96 if (submenuinstance == null)
98 submenuinstance = new JMenu(submenu);
99 menu.add(submenuinstance);
101 return submenuinstance;
111 * @return the GUI element created that was added to the layout so it's attributes can be changed.
113 public static JPanel addtoLayout(JPanel panel, String tooltip, JComponent label, JComponent valBox)
115 JPanel laypanel = new JPanel(),labPanel=new JPanel(), valPanel=new JPanel();
116 // laypanel.setSize(panel.getPreferredSize());
117 // laypanel.setLayout(null);
118 labPanel.setBounds(new Rectangle(7, 7, 158, 23));
119 valPanel.setBounds(new Rectangle(172, 7, 270,23));
120 //labPanel.setLayout(new GridLayout(1,1));
121 //valPanel.setLayout(new GridLayout(1,1));
123 valPanel.add(valBox);
124 laypanel.add(labPanel);
125 laypanel.add(valPanel);
126 valPanel.setToolTipText(tooltip);
127 labPanel.setToolTipText(tooltip);
128 valBox.setToolTipText(tooltip);
134 public static void mgAddtoLayout(JPanel cpanel, String tooltip,
135 JLabel jLabel, JComponent name)
137 mgAddtoLayout(cpanel, tooltip, jLabel, name,null);
139 public static void mgAddtoLayout(JPanel cpanel, String tooltip,
140 JLabel jLabel, JComponent name, String params)
145 } else {cpanel.add(name, params);
147 name.setToolTipText(tooltip);
148 jLabel.setToolTipText(tooltip);