package com.uvigo.mhp;

// Faltan m�todos para que las p�ginas almacenen informaci�n
// de estado (para recuperarla despu�s de visitarse otra p�gina).

public interface CourseManager
{
    // M�todos para el secuenciamiento de paginas
    public void gotoFirstPage();    
    public void gotoLastPage();
    public void gotoNextPage();
    public void gotoPreviousPage();
    public void gotoPage(int index);
    public void gotoFrontEnd();
    
    // Metodos para permitir/restringir accesos. En el fichero de configuracion
    // de un curso, las paginas pueden tener elementos "lockedBy", cada uno indicando
    // el identificador de una pagina que debe estar "unlocked" para poder acceder a la
    // pagina afectada por el elemento "lockedBy". Por ejemplo: si una pagina tiene
    // un elemento "lockedBy" con el valor "test", no se podra acceder a ella si la pagina
    // cuyo identificador es "test" este "locked".
    // El uso mas habitual de este mecanismo en aplicaciones de tele-ense�anza es el
    // impedir el acceso a determinados temas si no se han superado antes los tests
    // de paginas anteriores. De cualquier forma, el mecanismo es suficientemente versatil
    // como para permitir entramados mas complejos, en plan aventura grafico de principios
    // de los 90.
    
    // Se usan Strings en vez de numeros de pagina para facilitar la modificaci0n
    // de los cursos por insercion/eliminacion de paginas.
    public void lock(); // libera la pagina actual
    public void lock(String id); // libera la pagina indicada
    public void unlock();
    public void unlock(String id);
}
