001/*
002 * IzPack - Copyright 2001-2005 Julien Ponge, All Rights Reserved.
003 * 
004 * http://www.izforge.com/izpack/
005 * http://developer.berlios.de/projects/izpack/
006 * 
007 * Copyright 2003 Jonathan Halliday
008 * 
009 * Licensed under the Apache License, Version 2.0 (the "License");
010 * you may not use this file except in compliance with the License.
011 * You may obtain a copy of the License at
012 * 
013 *     http://www.apache.org/licenses/LICENSE-2.0
014 *     
015 * Unless required by applicable law or agreed to in writing, software
016 * distributed under the License is distributed on an "AS IS" BASIS,
017 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
018 * See the License for the specific language governing permissions and
019 * limitations under the License.
020 */
021
022package com.izforge.izpack.panels;
023
024import java.util.Vector;
025
026import net.n3.nanoxml.XMLElement;
027
028import com.izforge.izpack.Pack;
029import com.izforge.izpack.installer.AutomatedInstallData;
030import com.izforge.izpack.installer.PanelAutomation;
031
032/**
033 * Functions to support automated usage of the ImgPacksPanel
034 * 
035 * @author Jonathan Halliday
036 * @author Julien Ponge
037 */
038public class ImgPacksPanelAutomationHelper implements PanelAutomation
039{
040
041    /**
042     * Asks to make the XML panel data.
043     * 
044     * @param idata The installation data.
045     * @param panelRoot The XML root to write the data in.
046     */
047    public void makeXMLData(AutomatedInstallData idata, XMLElement panelRoot)
048    {
049        // Selected packs markup
050        XMLElement sel = new XMLElement("selected");
051
052        // We add each selected pack to sel
053        int size = idata.selectedPacks.size();
054        for (int i = 0; i < size; i++)
055        {
056            XMLElement el = new XMLElement("pack");
057            Pack pack = (Pack) idata.selectedPacks.get(i);
058            Integer integer = new Integer(idata.availablePacks.indexOf(pack));
059            el.setAttribute("index", integer.toString());
060            sel.addChild(el);
061        }
062
063        // Joining
064        panelRoot.addChild(sel);
065    }
066
067    /**
068     * Asks to run in the automated mode.
069     * 
070     * @param idata The installation data.
071     * @param panelRoot The root of the panel data.
072     */
073    public void runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
074    {
075        // We get the selected markup
076        XMLElement sel = panelRoot.getFirstChildNamed("selected");
077
078        // We get the packs markups
079        Vector pm = sel.getChildrenNamed("pack");
080
081        // We select each of them
082        int size = pm.size();
083        idata.selectedPacks.clear();
084        for (int i = 0; i < size; i++)
085        {
086            XMLElement el = (XMLElement) pm.get(i);
087            Integer integer = new Integer(el.getAttribute("index"));
088            int index = integer.intValue();
089            idata.selectedPacks.add(idata.availablePacks.get(index));
090        }
091    }
092}