package org.limewire.ui.swing.components; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; import java.awt.Font; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.BorderFactory; import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.JPopupMenu; import org.jdesktop.application.Resource; import org.limewire.ui.swing.util.GuiUtils; public class LimePopupDialog { private final JPopupMenu popup = new JPopupMenu(); @Resource private Color titleForeground; @Resource private Color titleBackground; @Resource private Font titleFont; @Resource private Icon closeIcon; @Resource private Icon closeIconRollover; @Resource private Icon closeIconPressed; public LimePopupDialog(String title, JComponent component){ GuiUtils.assignResources(this); JPanel mainPanel = new JPanel(); JPanel titlePanel = new JPanel(); titlePanel.setBackground(titleBackground); titlePanel.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); titlePanel.setLayout(new BorderLayout()); JLabel titleLabel = new JLabel(); titleLabel.setForeground(titleForeground); titleLabel.setFont(titleFont); titleLabel.setText(title); JButton closeButton = new IconButton(closeIcon, closeIconRollover, closeIconPressed); closeButton.setBorder(BorderFactory.createEmptyBorder(0, 18, 0, 0)); closeButton.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { popup.setVisible(false); } }); popup.setBorder(BorderFactory.createLineBorder(Color.BLACK, 2)); titlePanel.setLayout(new BorderLayout()); titlePanel.add(titleLabel, BorderLayout.WEST); titlePanel.add(closeButton, BorderLayout.EAST); mainPanel.setLayout(new BorderLayout()); mainPanel.add(titlePanel, BorderLayout.NORTH); mainPanel.add(component, BorderLayout.CENTER); popup.add(mainPanel); } /** * Displays the popup window at the x,y position relative to * the specified invoker. */ public void showPopup(Component invoker, int x, int y){ popup.show(invoker, x, y); } /** * Hides the popup window. */ public void hidePopup() { popup.setVisible(false); } }