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 net.n3.nanoxml.XMLElement;
025
026import com.izforge.izpack.installer.AutomatedInstallData;
027import com.izforge.izpack.installer.PanelAutomation;
028
029/**
030 * Functions to support automated usage of the TargetPanel
031 * 
032 * @author Jonathan Halliday
033 * @author Julien Ponge
034 */
035public class TargetPanelAutomationHelper implements PanelAutomation
036{
037
038    /**
039     * Asks to make the XML panel data.
040     * 
041     * @param idata The installation data.
042     * @param panelRoot The tree to put the data in.
043     */
044    public void makeXMLData(AutomatedInstallData idata, XMLElement panelRoot)
045    {
046        // Installation path markup
047        XMLElement ipath = new XMLElement("installpath");
048        // check this writes even if value is the default,
049        // because without the constructor, default does not get set.
050        ipath.setContent(idata.getInstallPath());
051
052        // Checkings to fix bug #1864
053        XMLElement prev = panelRoot.getFirstChildNamed("installpath");
054        if (prev != null) panelRoot.removeChild(prev);
055
056        panelRoot.addChild(ipath);
057    }
058
059    /**
060     * Asks to run in the automated mode.
061     * 
062     * @param idata The installation data.
063     * @param panelRoot The XML tree to read the data from.
064     */
065    public void runAutomated(AutomatedInstallData idata, XMLElement panelRoot)
066    {
067        // We set the installation path
068        XMLElement ipath = panelRoot.getFirstChildNamed("installpath");
069        idata.setInstallPath(ipath.getContent());
070    }
071}