package org.korsakow.ide.ui.resources;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import org.korsakow.ide.ui.model.EventModel;
import org.korsakow.ide.ui.resources.cellrenderers.EventModelListCellRenderer;
import org.korsakow.ide.util.UIHelper;
import org.korsakow.ide.util.UIResourceManager;
import org.korsakow.ide.util.UIUtil;
public class EventsView extends JPanel
{
private JList eventList;
private JButton addEventButton;
private JButton editEventButton;
private JButton deleteEventButton;
public EventsView()
{
init();
initListeners();
}
public void init()
{
setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
add(UIHelper.createHorizontalBoxLayoutPanel(
Box.createHorizontalGlue(),
addEventButton = new JButton(UIResourceManager.getIcon(UIResourceManager.ICON_ADD)),
editEventButton = new JButton(UIResourceManager.getIcon(UIResourceManager.ICON_EDIT)),
deleteEventButton = new JButton(UIResourceManager.getIcon(UIResourceManager.ICON_DELETE))
));
editEventButton.setEnabled(false);
deleteEventButton.setEnabled(false);
JScrollPane eventListScroll = new JScrollPane(eventList = new JList());
eventList.setCellRenderer(new EventModelListCellRenderer());
add(eventListScroll);
}
public void initListeners()
{
eventList.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
editEventButton.setEnabled(eventList.getSelectedValue() != null);
deleteEventButton.setEnabled(eventList.getSelectedValue() != null);
}
});
}
public void setEvents(Collection<EventModel> events)
{
DefaultListModel listModel = new DefaultListModel();
for (EventModel model : events)
listModel.addElement(model);
eventList.setModel(listModel);
}
public List<EventModel> getEvents()
{
List<EventModel> models = new ArrayList<EventModel>();
ListModel listModel = eventList.getModel();
for (int i = 0; i < listModel.getSize(); ++i)
models.add((EventModel)listModel.getElementAt(i));
return models;
}
public EventModel getSelectedEvent()
{
return (EventModel)eventList.getSelectedValue();
}
public void fireAddEventAction()
{
addEventButton.doClick();
}
public void addAddEventActionListener(ActionListener listener)
{
addEventButton.addActionListener(listener);
}
public void addEditEventActionListener(ActionListener listener)
{
editEventButton.addActionListener(listener);
}
public void addDeleteEventActionListener(ActionListener listener)
{
deleteEventButton.addActionListener(listener);
}
public void addEventDoubleClickActionListener(final ActionListener listener)
{
eventList.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent event) {
if (UIUtil.isRegularDoubleClick(event))
listener.actionPerformed(new ActionEvent(event.getSource(), ActionEvent.ACTION_PERFORMED, "doubleClick"));
}
});
}
}