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.JMenuItem;
30 import javax.swing.JPanel;
31 import javax.swing.JTextArea;
32 import javax.swing.SwingConstants;
35 * useful functions for building Swing GUIs
40 public final class JvSwingUtils
43 * wrap a bare html safe string to around 60 characters per line using a
51 public static String wrapTooltip(String ttext)
53 if (ttext.length() < 60)
59 return "<table width=350 border=0><tr><td>" + ttext
60 + "</td></tr></table>";
64 public static JButton makeButton(String label, String tooltip,
65 ActionListener action)
67 JButton button = new JButton();
68 button.setText(label);
69 // TODO: get the base font metrics for the Jalview gui from somewhere
70 button.setFont(new java.awt.Font("Verdana", Font.PLAIN, 10));
71 button.setForeground(Color.black);
72 button.setHorizontalAlignment(SwingConstants.CENTER);
73 button.setToolTipText(tooltip);
74 button.addActionListener(action);
79 * find or add a submenu with the given title in the given menu
83 * @return the new or existing submenu
85 public static JMenu findOrCreateMenu(JMenu menu, String submenu)
87 JMenu submenuinstance = null;
88 for (int i = 0, iSize = menu.getMenuComponentCount(); i < iSize; i++)
90 if (menu.getMenuComponent(i) instanceof JMenu
91 && ((JMenu) menu.getMenuComponent(i)).getText().equals(
94 submenuinstance = (JMenu) menu.getMenuComponent(i);
97 if (submenuinstance == null)
99 submenuinstance = new JMenu(submenu);
100 menu.add(submenuinstance);
102 return submenuinstance;
112 * @return the GUI element created that was added to the layout so it's attributes can be changed.
114 public static JPanel addtoLayout(JPanel panel, String tooltip, JComponent label, JComponent valBox)
116 JPanel laypanel = new JPanel(),labPanel=new JPanel(), valPanel=new JPanel();
117 // laypanel.setSize(panel.getPreferredSize());
118 // laypanel.setLayout(null);
119 labPanel.setBounds(new Rectangle(7, 7, 158, 23));
120 valPanel.setBounds(new Rectangle(172, 7, 270,23));
121 //labPanel.setLayout(new GridLayout(1,1));
122 //valPanel.setLayout(new GridLayout(1,1));
124 valPanel.add(valBox);
125 laypanel.add(labPanel);
126 laypanel.add(valPanel);
127 valPanel.setToolTipText(tooltip);
128 labPanel.setToolTipText(tooltip);
129 valBox.setToolTipText(tooltip);
135 public static void mgAddtoLayout(JPanel cpanel, String tooltip,
136 JLabel jLabel, JComponent name)
138 mgAddtoLayout(cpanel, tooltip, jLabel, name,null);
140 public static void mgAddtoLayout(JPanel cpanel, String tooltip,
141 JLabel jLabel, JComponent name, String params)
146 } else {cpanel.add(name, params);
148 name.setToolTipText(tooltip);
149 jLabel.setToolTipText(tooltip);
153 * standard font for labels and check boxes in dialog boxes
157 public static Font getLabelFont()
159 return getLabelFont(false,false);
161 public static Font getLabelFont(boolean bold, boolean italic)
163 return new java.awt.Font("Verdana", (!bold && !italic) ? Font.PLAIN : (bold ? Font.BOLD : 0) + (italic ? Font.ITALIC : 0), 11);
167 * standard font for editable text areas
170 public static Font getTextAreaFont()
172 return getLabelFont(false,false);
176 * clean up a swing menu.
177 * Removes any empty submenus without selection listeners.
180 public static void cleanMenu(JMenu webService)
182 for (int i=0;i<webService.getItemCount(); )
184 JMenuItem item = webService.getItem(i);
185 if (item instanceof JMenu && ((JMenu)item).getItemCount()==0)
187 webService.remove(i);