Photo Album Applet



// this is an applet that plays the role of a small picture gallery

import java.awt.*;
import java.applet.*;
import java.applet.Applet;
import java.awt.event.*;
import java.awt.image.*;

public class PhotoAlbum extends Applet implements ActionListener{

// declare all the components
		
	Button
			previous = new Button("Previous"),
			first = new Button("First"),
			last = new Button("Last"),
			next = new Button("Next");
		
	Canvas
			imageCanvas = new Canvas();
		
	final int total = 6;			// total # of images 
	int i = 0;						// this is value of currently displayed image

	Image Pictures[] = new Image[total];
		
	
public void init() {

	makeGui();
	
		// get all the images 
	
		for (int p=0; p < total; p++) {
			Pictures[p] = getImage(getCodeBase(), "Photos/Image"+p+".JPG");
			prepareImage(Pictures[p], this);
		}

	} // init
	
	private void displayImage(int n) {
		// Display the nth image on the canvas
		Graphics g = imageCanvas.getGraphics();
		g.clearRect(10, 10, 700, 700);
		g.drawImage(Pictures[n], 30, 10, this);
		g.drawString("Image: "+(n+1)+"/"+total, 30, 500);
	} // displayImage
	
	public void drawFirst(){

		displayImage(0);
	
	} // drawFirst
	
	public void drawLast(){

		displayImage(total-1);
		
	} // drawLast
	
	public void drawPrevious(){

		i = i - 1;
		if (i <= -1){
			i = total-1;
		}
		displayImage(i);
	} // drawPrevious

	public void drawNext(){

		i = i + 1;
		if (i == total){
			i = 0;
		}
		
		displayImage(i);
	} // drawNext

	public void actionPerformed(ActionEvent e){

		if (e.getSource() == previous)
			drawPrevious();
		else if (e.getSource() == first)
			drawFirst();
		else if (e.getSource() == last)
			drawLast();
		else if (e.getSource() == next)
			drawNext();
	} // actionPerformed

	public void paint(Graphics g) {
		drawFirst();
		i = 0;
	}
	
	private void makeGui() {
	
		setBackground(Color.black);
		setForeground(Color.white);
		setLayout(new BorderLayout());

		Panel p1 = new Panel();
		
		p1.add(previous);
		p1.add(first);
	
		p1.add(next);
		p1.add(last);
	
		add(BorderLayout.NORTH, p1);
		add(BorderLayout.CENTER, imageCanvas);

		previous.addActionListener(this);
		first.addActionListener(this);
		last.addActionListener(this);
		next.addActionListener(this);
	
	} // makeGui
} // PhotoAlbum