/*
* 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.event;
import com.izforge.izpack.LocaleDatabase;
import com.izforge.izpack.Pack;
import com.izforge.izpack.PackFile;
import com.izforge.izpack.installer.AutomatedInstallData;
import com.izforge.izpack.installer.ResourceManager;
import com.izforge.izpack.util.AbstractUIProgressHandler;
import com.izforge.izpack.util.SpecHelper;
import java.io.File;
import java.util.ArrayList;
/**
* <p>
* This class implements all methods of interface InstallerListener, but do not do anything. It can
* be used as base class to save implementation of unneeded methods.
* </p>
* <p>
* Additional there are some common helper methods which are used from the base class SpecHelper.
* </p>
*
* @author Klaus Bartz
*/
public class SimpleInstallerListener implements InstallerListener
{
private static ArrayList<SimpleInstallerListener> progressBarCaller = new ArrayList<SimpleInstallerListener>();
/**
* The name of the XML file that specifies the panel langpack
*/
protected static final String LANG_FILE_NAME = "CustomActionsLang.xml";
/**
* The packs locale database.
*/
protected static LocaleDatabase langpack = null;
protected static boolean doInformProgressBar = false;
private AutomatedInstallData installdata = null;
private SpecHelper specHelper = null;
/**
* The default constructor.
*/
public SimpleInstallerListener()
{
this(false);
}
/**
* Constructs a simple installer listener. If useSpecHelper is true, a specification helper will
* be created.
*
* @param useSpecHelper
*/
public SimpleInstallerListener(boolean useSpecHelper)
{
super();
if (useSpecHelper)
{
setSpecHelper(new SpecHelper());
}
}
/*
* (non-Javadoc)
*
* @see com.izforge.izpack.compiler.InstallerListener#handleFile(java.io.File,
* com.izforge.izpack.PackFile)
*/
public void afterFile(File file, PackFile pf) throws Exception
{
// Do nothing
}
/*
* (non-Javadoc)
*
* @see com.izforge.izpack.compiler.InstallerListener#handleDir(java.io.File,
* com.izforge.izpack.PackFile)
*/
public void afterDir(File dir, PackFile pf) throws Exception
{
// Do nothing
}
/*
* (non-Javadoc)
*
* @see com.izforge.izpack.compiler.InstallerListener#afterPacks(com.izforge.izpack.installer.AutomatedInstallData,
* com.izforge.izpack.util.AbstractUIProgressHandler)
*/
public void afterPacks(AutomatedInstallData idata, AbstractUIProgressHandler handler)
throws Exception
{
// Do nothing
}
/*
* (non-Javadoc)
*
* @see com.izforge.izpack.compiler.InstallerListener#afterPack(com.izforge.izpack.Pack, int,
* com.izforge.izpack.util.AbstractUIProgressHandler)
*/
public void afterPack(Pack pack, Integer i, AbstractUIProgressHandler handler) throws Exception
{
// TODO Auto-generated method stub
}
/*
* (non-Javadoc)
*
* @see com.izforge.izpack.compiler.InstallerListener#beforePacks(com.izforge.izpack.installer.AutomatedInstallData,
* int, com.izforge.izpack.util.AbstractUIProgressHandler)
*/
public void beforePacks(AutomatedInstallData idata, Integer npacks,
AbstractUIProgressHandler handler) throws Exception
{
if (installdata == null)
{
installdata = idata;
}
if (installdata != null && SimpleInstallerListener.langpack == null)
{
// Load langpack.
try
{
String resource = LANG_FILE_NAME + "_" + installdata.localeISO3;
SimpleInstallerListener.langpack = new LocaleDatabase(ResourceManager.getInstance()
.getInputStream(resource));
}
catch (Throwable exception)
{
}
}
}
/*
* (non-Javadoc)
*
* @see com.izforge.izpack.compiler.InstallerListener#beforePack(com.izforge.izpack.Pack, int,
* com.izforge.izpack.util.AbstractUIProgressHandler)
*/
public void beforePack(Pack pack, Integer i, AbstractUIProgressHandler handler)
throws Exception
{
// Do nothing
}
/*
* (non-Javadoc)
*
* @see com.izforge.izpack.installer.InstallerListener#isFileListener()
*/
public boolean isFileListener()
{
// For default no.
return false;
}
/*
* (non-Javadoc)
*
* @see com.izforge.izpack.installer.InstallerListener#beforeFile(java.io.File,
* com.izforge.izpack.PackFile)
*/
public void beforeFile(File file, PackFile pf) throws Exception
{
// Do nothing
}
/*
* (non-Javadoc)
*
* @see com.izforge.izpack.installer.InstallerListener#beforeDir(java.io.File,
* com.izforge.izpack.PackFile)
*/
public void beforeDir(File dir, PackFile pf) throws Exception
{
// Do nothing
}
public void afterInstallerInitialization(AutomatedInstallData data)
{
this.installdata = data;
}
/**
* Returns current specification helper.
*
* @return current specification helper
*/
public SpecHelper getSpecHelper()
{
return specHelper;
}
/**
* Sets the given specification helper to the current used helper.
*
* @param helper specification helper which should be used
*/
public void setSpecHelper(SpecHelper helper)
{
specHelper = helper;
}
/**
* Returns the current installdata object.
*
* @return current installdata object
*/
public AutomatedInstallData getInstalldata()
{
return installdata;
}
/**
* Sets the installdata object.
*
* @param data installdata object which should be set to current
*/
public void setInstalldata(AutomatedInstallData data)
{
installdata = data;
}
/**
* Returns the count of listeners which are registered as progress bar caller.
*
* @return the count of listeners which are registered as progress bar caller
*/
public static int getProgressBarCallerCount()
{
return (progressBarCaller.size());
}
/**
* Returns the progress bar caller id of this object.
*
* @return the progress bar caller id of this object
*/
protected int getProgressBarCallerId()
{
for (int i = 0; i < progressBarCaller.size(); ++i)
{
if (progressBarCaller.get(i) == this)
{
return (i + 1);
}
}
return (0);
}
/**
* Sets this object as progress bar caller.
*/
protected void setProgressBarCaller()
{
progressBarCaller.add(this);
}
/**
* Returns whether this object should inform the progress bar or not.
*
* @return whether this object should inform the progress bar or not
*/
protected boolean informProgressBar()
{
return (doInformProgressBar);
}
/**
* Returns the language dependant message from the resource CustomActionsLang.xml or the common
* language pack for the given id. If no string will be found, the id returns.
*
* @param id string id for which the message should be resolved
* @return the related language dependant message
*/
protected String getMsg(String id)
{
String retval = id;
if (SimpleInstallerListener.langpack != null)
{
retval = SimpleInstallerListener.langpack.getString(id);
}
if (retval.equals(id) && getInstalldata() != null)
{
retval = getInstalldata().langpack.getString(id);
}
return (retval);
}
}