/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package de.nplusc.izc.InstallPak;

/**
 *
 * @author LH
 */
public interface InstallFilesManagerAPI
{
    /**
     * Returns List of all contained packages with Name
     * @return array with all packs in this package
     */
    public String[] getPacksInPackage();
    /**
     * Returns isInstalled State of a package
     * @param packnr Number of the package selected
     * @return whether pack is already installed
     */
    public boolean getPackInstalled(int packnr);
    /**
     * Returns if a package can get installed
     * @param packid Number of the package selected
     * @return whether package can be installed
     */
    public boolean getPackInstallable(int packid);
    /**
     * Gets the pack the selected one depends on
     * @param packid Number of the package selected
     * @return packageNumber or -1 if no dependency
     */
    public int getDependencyParent(int packid);
    /**
     * returns the IDs of the packs that depend on this
     * @param packID Number of the package selected
     * @return array with the IDS or null if no pack depending on this
     */
    public int[] getChildPacks(int packID);
    /**
     * Selects/Deselects package for installation
     * @param packageID Number of the package selected
     * @param state Target state of package
     */
    public void setPackageState(int packageID,boolean state);
        
    /**
     * Checks if a package will be installed
     * @param packageID Number of the package selected
     * @return whether it is enabled for install
     */
    public boolean getIsScheduled(int packageID);
    
    
    /**
     * Returns Package Description
     * @param packID Number of the package selected
     * @return Description as String
     */
    public String getPackageDescription(int packID);
    
    
    
    
    
    /**
     * Generates the Data for the main Installmanager
     * @return Array of Referencing parameters to convert to InstallActions to be run
     * Elements: type(waitDisk,file),Filename,waitWithDialogMessage on WaitDisk; 
     */
    public String[][] packagesQueue();
}
