/*
* Created on Jan 30, 2008
* Created by Paul Gardner
*
* Copyright 2008 Vuze, Inc. 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; version 2 of the License only.
*
* 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.
*
* 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.
*/
package com.aelitis.azureus.plugins.net.netstatus;
import org.gudy.azureus2.core3.util.AESemaphore;
import org.gudy.azureus2.core3.util.AEThread2;
import org.gudy.azureus2.core3.util.Constants;
import org.gudy.azureus2.plugins.*;
import org.gudy.azureus2.plugins.logging.LoggerChannel;
import org.gudy.azureus2.plugins.ui.UIInstance;
import org.gudy.azureus2.plugins.ui.UIManagerListener;
import org.gudy.azureus2.plugins.ui.config.ActionParameter;
import org.gudy.azureus2.plugins.ui.config.Parameter;
import org.gudy.azureus2.plugins.ui.config.ParameterListener;
import org.gudy.azureus2.plugins.ui.config.StringParameter;
import org.gudy.azureus2.plugins.ui.model.BasicPluginConfigModel;
import org.gudy.azureus2.ui.swt.plugins.UISWTInstance;
import com.aelitis.azureus.plugins.net.netstatus.swt.NetStatusPluginView;
public class
NetStatusPlugin
implements Plugin
{
public static final String VIEW_ID = "aznetstatus";
private PluginInterface plugin_interface;
private LoggerChannel logger;
private StringParameter ping_target;
private ActionParameter test_button;
private StringParameter test_address;
private NetStatusProtocolTester protocol_tester;
private AESemaphore protocol_tester_sem = new AESemaphore( "ProtTestSem" );
public void
initialize(
final PluginInterface _plugin_interface )
{
plugin_interface = _plugin_interface;
String name_res = "Views.plugins." + VIEW_ID + ".title";
String name =
plugin_interface.getUtilities().getLocaleUtilities().getLocalisedMessageText( name_res );
plugin_interface.getPluginProperties().setProperty( "plugin.version", "1.0" );
plugin_interface.getPluginProperties().setProperty( "plugin.name", name );
logger = plugin_interface.getLogger().getChannel( "NetStatus" );
logger.setDiagnostic();
BasicPluginConfigModel config = plugin_interface.getUIManager().createBasicPluginConfigModel( name_res );
ping_target = config.addStringParameter2( "plugin.aznetstatus.pingtarget", "plugin.aznetstatus.pingtarget", "www.google.com" );
if ( Constants.isCVSVersion()){
test_address = config.addStringParameter2( "plugin.aznetstatus.test_address", "plugin.aznetstatus.test_address", "" );
test_button = config.addActionParameter2( "test", "test " );
test_button.setEnabled( false );
test_button.addListener(
new ParameterListener()
{
public void
parameterChanged(
Parameter param )
{
protocol_tester.runTest(
test_address.getValue().trim(),
new NetStatusProtocolTesterListener()
{
public void
sessionAdded(
NetStatusProtocolTesterBT.Session session )
{
}
public void
complete(
NetStatusProtocolTesterBT tester )
{
}
public void
log(
String str )
{
logger.log( str );
}
public void
logError(
String str )
{
logger.log( str );
}
public void
logError(
String str,
Throwable e )
{
logger.log( str, e );
}
});
}
});
}
plugin_interface.getUIManager().addUIListener(
new UIManagerListener()
{
public void
UIAttached(
UIInstance instance )
{
if ( instance instanceof UISWTInstance ){
UISWTInstance swt_ui = (UISWTInstance)instance;
NetStatusPluginView view = new NetStatusPluginView( NetStatusPlugin.this );
swt_ui.addView( UISWTInstance.VIEW_MAIN, VIEW_ID, view );
//swt_ui.openMainView( VIEW_ID, view, null );
}
}
public void
UIDetached(
UIInstance instance )
{
}
});
plugin_interface.addListener(
new PluginListener()
{
public void
initializationComplete()
{
new AEThread2( "NetstatusPlugin:init", true )
{
public void
run()
{
try{
protocol_tester = new NetStatusProtocolTester( NetStatusPlugin.this, plugin_interface );
if ( test_button != null ){
test_button.setEnabled( true );
}
}finally{
protocol_tester_sem.releaseForever();
}
}
}.start();
}
public void
closedownInitiated()
{
}
public void
closedownComplete()
{
}
});
}
public NetStatusProtocolTester
getProtocolTester()
{
protocol_tester_sem.reserve();
return( protocol_tester );
}
public String
getPingTarget()
{
return( ping_target.getValue());
}
public void
setBooleanParameter(
String name,
boolean value )
{
plugin_interface.getPluginconfig().setPluginParameter( name , value );
}
public boolean
getBooleanParameter(
String name,
boolean def )
{
return( plugin_interface.getPluginconfig().getPluginBooleanParameter( name, def ));
}
public void
log(
String str )
{
logger.log( str );
}
public void
log(
String str,
Throwable e )
{
logger.log( str );
logger.log( e );
}
}