/* * IzPack - Copyright 2001-2008 Julien Ponge, All Rights Reserved. * * http://izpack.org/ * http://izpack.codehaus.org/ * * Copyright 2004 Klaus Bartz * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.izforge.izpack.panels; import com.izforge.izpack.Pack; import com.izforge.izpack.installer.InstallData; import com.izforge.izpack.installer.InstallerFrame; import com.izforge.izpack.util.Debug; import com.izforge.izpack.util.VariableSubstitutor; import com.izforge.izpack.adaptator.IXMLElement; import java.util.Iterator; /** * The target directory selection panel. * * @author Julien Ponge * @author Jeff Gordon */ public class UserPathPanel extends UserPathInputPanel { private static final long serialVersionUID = 3256443616359429170L; private static String thisName = "UserPathPanel"; private boolean skip = false; public static String pathVariableName = "UserPathPanelVariable"; public static String pathPackDependsName = "UserPathPanelDependsName"; public static String pathElementName = "UserPathPanelElement"; /** * The constructor. * * @param parent The parent window. * @param idata The installation data. */ public UserPathPanel(InstallerFrame parent, InstallData idata) { super(parent, idata, thisName, parent.langpack.getString(thisName + ".variableName")); // load the default directory info (if present) if (getDefaultDir() != null) { idata.setVariable(pathVariableName, getDefaultDir()); } } /** * Called when the panel becomes active. */ public void panelActivate() { boolean found = false; Debug.trace(thisName + " looking for activation condition"); // Need to have a way to supress panel if not in selected packs. String dependsName = idata.getVariable(pathPackDependsName); if (dependsName != null && !(dependsName.equalsIgnoreCase(""))) { Debug.trace("Checking for pack dependency of " + dependsName); Iterator iter = idata.selectedPacks.iterator(); while (iter.hasNext()) { Pack pack = (Pack) iter.next(); Debug.trace("- Checking if " + pack.name + " equals " + dependsName); if (pack.name.equalsIgnoreCase(dependsName)) { found = true; Debug.trace("-- Found " + dependsName + ", panel will be shown"); break; } } skip = !(found); } else { Debug.trace("Not Checking for a pack dependency, panel will be shown"); skip = false; } if (skip) { Debug.trace(thisName + " will not be shown"); parent.skipPanel(); return; } super.panelActivate(); // Set the default or old value to the path selection panel. VariableSubstitutor vs = new VariableSubstitutor(idata.getVariables()); String expandedPath = vs.substitute(idata.getVariable(pathVariableName), null); _pathSelectionPanel.setPath(expandedPath); } /** * Indicates whether the panel has been validated or not. * * @return Whether the panel has been validated or not. */ public boolean isValidated() { // Standard behavior of PathInputPanel. if (!super.isValidated()) { return (false); } idata.setVariable(pathVariableName, _pathSelectionPanel.getPath()); return (true); } /** * Asks to make the XML panel data. * * @param panelRoot The tree to put the data in. */ public void makeXMLData(IXMLElement panelRoot) { if (!(skip)) { new UserPathPanelAutomationHelper().makeXMLData(idata, panelRoot); } } /* * (non-Javadoc) * * @see com.izforge.izpack.installer.IzPanel#getSummaryBody() */ public String getSummaryBody() { if (skip) { return null; } else { return (idata.getVariable(pathVariableName)); } } }