import java.awt.*; import java.awt.event.*; class Pit extends Component { mancala board; int stones; int x, y, width, height; boolean enabled; Pit(mancala b, int xi, int yi, int wi, int hi, int s, boolean enabled) { board = b; x=xi;y=yi;width=wi;height=hi; stones=s; this.enabled=enabled; setBounds(x,y,width,height); enableEvents(AWTEvent.MOUSE_MOTION_EVENT_MASK+AWTEvent.MOUSE_EVENT_MASK); } public void setStones(int s) { stones=s;repaint(); } public int getStones() { return stones; } public void paint(Graphics g) { // Eventually this will draw cute little stones. // For now, it just tells us how many stones there are. g.setColor(Color.white); g.drawString(Integer.toString(stones), width/2, height/2); super.paint(g); } public Dimension getPreferredSize() { return new Dimension(width,height); } public Dimension getMinimumSize() { return new Dimension(width,height); } public Dimension getMaximumSize() { return new Dimension(width,height); } public void processEvent(AWTEvent e) { if(e.getID() == MouseEvent.MOUSE_ENTERED) { board.count.setText( (stones < 10 ? " " : "") + stones ); } if(e.getID() == MouseEvent.MOUSE_EXITED) { board.count.setText(" "); } if(stones!=0) { if(enabled) { if(e.getID() == MouseEvent.MOUSE_DRAGGED && board.moveOk) { int mx = ((MouseEvent)e).getX(); if(mx > width) setCursor(Cursor.getPredefinedCursor(Cursor.E_RESIZE_CURSOR)); else if(mx < 0 && board.leftOk) setCursor(Cursor.getPredefinedCursor(Cursor.W_RESIZE_CURSOR)); else setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } else setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); if(e.getID() == MouseEvent.MOUSE_RELEASED && board.moveOk) { int mx = ((MouseEvent)e).getX(); if(mx > width) { board.moveRight(this); } else if(mx < 0 && board.leftOk) { board.moveLeft(this); } } } } super.processEvent(e); } }