package com.limegroup.gnutella.gui; import java.awt.Cursor; import java.awt.Dimension; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import javax.swing.ImageIcon; import javax.swing.JLabel; /** * This class contains the logo and the searching icon for the application. */ final class LogoPanel extends BoxPanel /* implements ThemeObserver */ { /** * Icon for the when we're searching. */ private ImageIcon _searchingIcon; /** * Icon for not searching. */ private ImageIcon _notSearchingIcon; /** * Constant for the <tt>JLabel</tt> used for displaying the lime/spinning * lime search status indicator. */ private final JLabel ICON_LABEL = new JLabel(); private final JLabel LOGO_LABEL = new JLabel(); private boolean _searching; /** * Constructs a new panel containing the logo and the search icon. */ LogoPanel() { super(BoxPanel.X_AXIS); updateTheme(); final LogoPanel LOGO_PANEL = this; this.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent me) { GUIMediator.openURL("http://www.limewire.com"); } public void mouseEntered(MouseEvent me){ LOGO_PANEL.setCursor(new Cursor(Cursor.HAND_CURSOR)); } }); //GUIMediator.addThemeObserver(this); } // inherit doc comment public void updateTheme() { _searchingIcon = GUIMediator.getThemeImage("searching"); _notSearchingIcon = GUIMediator.getThemeImage("notsearching"); if(_searching) { ICON_LABEL.setIcon(_searchingIcon); } else { ICON_LABEL.setIcon(_notSearchingIcon); } ImageIcon logoIcon = GUIMediator.getThemeImage("logo"); LOGO_LABEL.setIcon(logoIcon); LOGO_LABEL.setSize(logoIcon.getIconWidth(), logoIcon.getIconHeight()); ICON_LABEL.setSize(_searchingIcon.getIconWidth(), _searchingIcon.getIconHeight()); Dimension dim = new Dimension(LOGO_LABEL.getSize().width+ ICON_LABEL.getSize().width+12, ICON_LABEL.getSize().height); this.setPreferredSize(dim); this.setSize(dim.width, dim.height); buildPanel(); GUIUtils.setOpaque(false, this); } private void buildPanel() { removeAll(); add(ICON_LABEL); add(LOGO_LABEL); } /** * Sets the searching or not searching status of the application. * * @param searching the searching status of the application */ void setSearching(boolean searching) { _searching = searching; if(searching) { ICON_LABEL.setIcon(_searchingIcon); } else { ICON_LABEL.setIcon(_notSearchingIcon); } } }