/* * Created on 29 nov. 2004 * Created by Olivier Chalouhi * * Copyright (C) 2004, 2005, 2006 Aelitis SAS, All rights Reserved * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details ( see the LICENSE file ). * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * * AELITIS, SAS au capital de 46,603.30 euros, * 8 Allee Lenotre, La Grille Royale, 78600 Le Mesnil le Roi, France. */ package org.gudy.azureus2.ui.swt.pluginsinstaller; import java.util.ArrayList; import java.util.List; import org.eclipse.swt.widgets.Display; import org.gudy.azureus2.core3.internat.MessageText; import org.gudy.azureus2.core3.logging.LogAlert; import org.gudy.azureus2.core3.logging.Logger; import org.gudy.azureus2.core3.util.Debug; import org.gudy.azureus2.ui.swt.wizard.Wizard; import com.aelitis.azureus.core.AzureusCore; import org.gudy.azureus2.plugins.PluginException; import org.gudy.azureus2.plugins.installer.InstallablePlugin; import org.gudy.azureus2.plugins.installer.PluginInstallerListener; import org.gudy.azureus2.plugins.installer.StandardPlugin; /** * @author Olivier Chalouhi * */ public class InstallPluginWizard extends Wizard { int mode; StandardPlugin[] standard_plugins; List plugins = new ArrayList(); boolean shared = false; String list_title_text; public static void register( final AzureusCore core, final Display display ) { core.getPluginManager().getPluginInstaller().addListener( new PluginInstallerListener() { public boolean installRequest( final String reason, final InstallablePlugin plugin ) throws PluginException { if ( plugin instanceof StandardPlugin ){ display.asyncExec( new Runnable() { public void run() { new InstallPluginWizard( core, display, reason, (StandardPlugin)plugin ); } }); return( true ); }else{ return( false ); } } }); } public InstallPluginWizard( AzureusCore azureus_core, Display display ) { super(azureus_core,"installPluginsWizard.title"); IPWModePanel mode_panel = new IPWModePanel(this,null); setFirstPanel(mode_panel); } public InstallPluginWizard( AzureusCore azureus_core, Display display, String reason, StandardPlugin plugin ) { super(azureus_core,"installPluginsWizard.title"); standard_plugins = new StandardPlugin[]{ plugin }; list_title_text = reason; plugins = new ArrayList(); plugins.add( plugin ); IPWListPanel list_panel = new IPWListPanel(this,null); setFirstPanel(list_panel); } protected StandardPlugin[] getStandardPlugins() throws PluginException { if ( standard_plugins == null ){ standard_plugins = getAzureusCore().getPluginManager().getPluginInstaller().getStandardPlugins(); } return( standard_plugins ); } protected String getListTitleText() { if ( list_title_text == null ){ list_title_text = MessageText.getString( "installPluginsWizard.list.loaded" ); } return( list_title_text ); } public void onClose() { // Call the parent class to clean up resources super.onClose(); } public void setPluginList(List _plugins) { plugins = _plugins; } public List getPluginList() { return( plugins ); } public void performInstall() { InstallablePlugin[] ps = new InstallablePlugin[ plugins.size()]; plugins.toArray( ps ); if ( ps.length > 0 ){ try{ ps[0].getInstaller().install(ps,shared); }catch(Exception e){ Debug.printStackTrace(e); Logger.log(new LogAlert(LogAlert.REPEATABLE, "Failed to initialise installer", e)); } } } }