package org.hyperdata.scute.cards;
import java.awt.CardLayout;
import java.awt.event.ActionEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.event.EventListenerList;
//import org.hdesktop.swingx.JXPanel;
//import org.hdesktop.swingx.JXTitledPanel;
import org.jdesktop.swingx.*;
import org.jdesktop.swingx.MultiSplitLayout.*;
public class CardsPanel extends JPanel implements MouseListener {
private CardLayout layout;
private EventListenerList listenerList = new EventListenerList();
private ChangeEvent changeEvent = null;
private String previousCardType = "Turtle";
private String currentCardType = "Turtle";
private Map<String, Card> cards = new HashMap<String, Card>();
public void addPlain(Card card, String type) {
super.add(card, type);
cards.put(type, card);
}
public void add(Card card, String type) {
// JXTitledPanel titledPanel = new JXTitledPanel(type, card);
// titledPanel.addMouseListener(this);
// super.add(titledPanel, type);
card.addMouseListener(this);
super.add(card, type);
cards.put(type, card);
}
public void addScroll(Card card, String type) {
super.add(new JXTitledPanel(type, card), type);
// super.add(new JScrollPane(card), name);
// System.out.println("Adding CARD = "+name);
cards.put(type, card);
}
public String getCurrentCardType() {
return currentCardType;
}
public String getPreviousCardType() {
return previousCardType;
}
public CardsPanel() {
super();
layout = new CardLayout();
setLayout(layout);
}
// for debugging
public void listCards(){
Iterator<String> iterator = cards.keySet().iterator();
// System.out.println("---- CARDS ----");
while(iterator.hasNext()){
String key = iterator.next();
// System.out.println(key+" = "+cards.get(key));
}
// System.out.println("---------------");
}
public Card getCard(String type) {
return cards.get(type);
}
public Card getCurrentCard(){
return getCard(currentCardType);
}
public void setCurrentCard(String cardType) {
previousCardType = currentCardType;
this.currentCardType = cardType;
fireStateChanged(); // is enough to update?
}
public void addChangeListener(ChangeListener listener) {
listenerList.add(ChangeListener.class, listener);
}
public void removeChangeListener(ChangeListener listener) {
listenerList.remove(ChangeListener.class, listener);
}
// Notify all listeners that have registered interest for
// notification on this event type. The event instance
// is lazily created using the parameters passed into
// the fire method.
protected void fireStateChanged() {
// Guaranteed to return a non-null array
Object[] listeners = listenerList.getListenerList();
// Process the listeners last to first, notifying
// those that are interested in this event
for (int i = listeners.length - 2; i >= 0; i -= 2) {
if (listeners[i] == ChangeListener.class) {
// Lazily create the event:
if (changeEvent == null)
changeEvent = new ChangeEvent(this);
((ChangeListener) listeners[i + 1]).stateChanged(changeEvent);
}
}
}
/**
* @param actionEvent
*/
public void fireChange(ActionEvent actionEvent) {
this.currentCardType = actionEvent.getActionCommand();
fireStateChanged();
}
/* (non-Javadoc)
* @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
*/
@Override
public void mouseClicked(MouseEvent arg0) {
System.out.println("CLICK! "+arg0);
}
/* (non-Javadoc)
* @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
*/
@Override
public void mouseEntered(MouseEvent arg0) {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
*/
@Override
public void mouseExited(MouseEvent arg0) {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
*/
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
/* (non-Javadoc)
* @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
*/
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
}