import java.awt.Color;
import edu.southern.computing.oopj.GraphicalObject;

public class LockView extends GraphicalObject {

    private LockModel lock;
    
    private static final int LOCKED_WIDTH = 40;
    private static final int UNLOCKED_WIDTH = 60;
    private static final int HEIGHT = 50;
    
    public LockView(int code, int x, int y) {
        super(LOCKED_WIDTH, HEIGHT);
        lock = new LockModel(code);
        setLocation(x, y);
        setBackground(TRANSPARENT);
        setMovable(true);
    }
    
    public void mouseClicked() {
        setSize(LOCKED_WIDTH, HEIGHT);
        lock.lock();
    }
    
    public void tryLock(KeyModel key) {
        if (lock.unlock(key)) {
            setSize(UNLOCKED_WIDTH, HEIGHT);
        }
    }
    
    public void draw() {
        Color color;
        //  Draw clasp
        if (lock.isLocked()) {
            color = RED;
            fillOval(5, 5, LOCKED_WIDTH - 10, HEIGHT - 10, BLACK);
            fillOval(10, 10, LOCKED_WIDTH - 20, HEIGHT - 20, WHITE);
        } else {
            color = GREEN;
            fillOval(5 + LOCKED_WIDTH - 15, 5, LOCKED_WIDTH - 10, HEIGHT - 10, BLACK);
            fillOval(10 + LOCKED_WIDTH - 15, 10, LOCKED_WIDTH - 20, HEIGHT - 20, WHITE);
            fillRectangle(LOCKED_WIDTH, HEIGHT/2, LOCKED_WIDTH, HEIGHT/2, WHITE);
        }
        
        //  Draw lock body
        fillRectangle(0, HEIGHT/2, LOCKED_WIDTH, HEIGHT/2, BLACK);
        //fillRectangle(5, HEIGHT/2 + 5, LOCKED_WIDTH - 10, HEIGHT/2 - 10, color);
        
        //  Draw the colored accent lines
        drawLine(5, HEIGHT/2 + 7, LOCKED_WIDTH - 5, HEIGHT/2 + 7, color);
        drawLine(5, 3*HEIGHT/4, LOCKED_WIDTH - 5, 3*HEIGHT/4, color);
        drawLine(5, HEIGHT - 8, LOCKED_WIDTH - 5, HEIGHT - 8, color);
    }

}
