import java.util.*;
import java.awt.*;
import java.awt.event.*;

public class AnahtarKomponenti extends Component implements ItemExpandable{
	protected boolean expanded = false;
	private Object[] expandedItems = new Object[1];
	private Vector listeners=new Vector();
	
	public AnahtarKomponenti(){
		addMouseListener(new MouseAdapter(){
			public void mousePressed(MouseEvent event){
				if(expanded)contract();
				else expand();
				repaint();
			}
		});
	}
	
	public void paint(Graphics g){
		acikKapaliCiz(g);
	}
	
	public void expand(){
		ItemExpandEvent event=new ItemExpandEvent(this,this,ItemExpandEvent.EXPANDED);
		expanded=true;
		processExpandEvent(event);
	}
	
	public void contract(){
		ItemExpandEvent event=new ItemExpandEvent(this,this,ItemExpandEvent.CONTRACTED);
		expanded=false;
		processExpandEvent(event);
	}
	
	public Dimension getPreferredSize(){
		return new Dimension(60,50);
	}
	public Object[] getExpandedItems(){
		if(expanded){
			expandedItems[0]=this;
			return expandedItems;
		}
		else
			return null;
	}
	
	public void addExpandListener(ItemExpandListener l){
		listeners.addElement(l);
	}
	
	public void removeExpandListener(ItemExpandListener l){
		listeners.removeElement(l);
	}
	
	protected synchronized void processExpandEvent(ItemExpandEvent event){
		Enumeration e=listeners.elements();
		while(e.hasMoreElements()){
			ItemExpandListener l=(ItemExpandListener)e.nextElement();
			l.itemExpandStateChanged(event);
		}
	}
	
	
	private void acikKapaliCiz(Graphics g){
		Dimension size=getSize();
		
		if(expanded)acikCiz(g,size,Color.black);
		else kapaliCiz(g,size,Color.black);
	}
	
	private void acikCiz(Graphics g,Dimension size,Color color){
		int genislik, yukseklik;
		genislik = size.width;
		yukseklik = size.height;
		g.setColor(color);
		g.drawLine(0,40,9,40);
		g.drawLine(0,41,9,41);
		g.drawLine(10,40,34,20);
		g.drawLine(11,40,35,20);
		g.drawLine(35,40,45,40);
		g.drawLine(35,41,45,41);
		g.drawLine(35,20,45,20);
		g.drawLine(35,21,45,21);
	}
	
	private void kapaliCiz(Graphics g,Dimension size, Color color){
		int genislik,yukseklik;
		genislik = size.width;
		yukseklik = size.height;
		g.setColor(color);
		g.drawLine(0,40,45,40);
		g.drawLine(0,41,45,41);
		g.drawLine(35,20,45,20);
		g.drawLine(35,21,45,21);
	}
}