package hudson.model;

import hudson.ExtensionList;
import hudson.ExtensionPoint;
import java.util.ArrayList;
import java.util.List;

/**
 * Adds box rendered in the computer side panel.
 *
 * Add box.jelly to display box
 *
 * @author Lucie Votypkova
 * @since 1.434
 * @see hudson.model.Computer#getComputerPanelBoxs()
 */

public abstract class ComputerPanelBox implements ExtensionPoint{
    
    private Computer computer;
    
    
    public void setComputer(Computer computer){
        this.computer = computer;
    }
    
    public Computer getComputer(){
        return computer;
    }
    
    /**
     * Create boxes for the given computer in its page.
     *
     * @param computer
     *      The computer for which displays the boxes. Never null.
     * @return
     *      List of all the registered {@link ComputerPanelBox}s.
     */
    public static List<ComputerPanelBox> all(Computer computer) {
        List<ComputerPanelBox> boxs = new ArrayList<ComputerPanelBox>();
        for(ComputerPanelBox box:  ExtensionList.lookup(ComputerPanelBox.class)){
            box.setComputer(computer);
            boxs.add(box);
        }
        return boxs;
    }


}
