package de.tud.socom.client.gui.history;
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Toolkit;
import java.awt.datatransfer.StringSelection;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.List;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.border.EmptyBorder;
import de.tud.socom.client.logic.Connection;
@SuppressWarnings("serial")
public class HistoryDisplay extends JFrame {
private JPanel contentPane;
public HistoryDisplay() {
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
setBounds(100, 100, 450, 300);
setLocationRelativeTo(null);
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(new BorderLayout(0, 0));
setContentPane(contentPane);
final JList list = new JList();
fillListWithHistory(list);
contentPane.add(list, BorderLayout.CENTER);
JPopupMenu popupMenu = new JPopupMenu();
addPopup(list, popupMenu);
JMenuItem mntmCopyUrl = new JMenuItem("Copy URL");
mntmCopyUrl.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String selectedUrl = (String)list.getSelectedValue();
if(selectedUrl != null)
Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
new StringSelection(selectedUrl), null);
}
});
popupMenu.add(mntmCopyUrl);
JButton btnNewButton = new JButton("Close");
btnNewButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
HistoryDisplay.this.dispose();
}
});
contentPane.add(btnNewButton, BorderLayout.SOUTH);
this.setVisible(true);
}
private void fillListWithHistory(JList list) {
DefaultListModel model = new DefaultListModel();
list.setModel(model);
List<String> urls = Connection.get().getUrlHistory();
for (int i = 0; i < urls.size(); i++) {
model.add(i, urls.get(i));
}
}
private static void addPopup(Component component, final JPopupMenu popup) {
component.addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger()) {
showMenu(e);
}
}
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
showMenu(e);
}
}
private void showMenu(MouseEvent e) {
popup.show(e.getComponent(), e.getX(), e.getY());
}
});
}
}