Package org.gudy.azureus2.ui.swt.config.wizard

Source Code of org.gudy.azureus2.ui.swt.config.wizard.TransferPanel2

/*
* File    : TransferPanel.java
* Created : 12 oct. 2003 19:41:14
* By      : Olivier
*
* Azureus - a Java Bittorrent client
*
* 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
*/

package org.gudy.azureus2.ui.swt.config.wizard;

import java.util.HashMap;
import java.util.Map;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;

import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.core3.util.DisplayFormatters;
import org.gudy.azureus2.plugins.PluginInterface;
import org.gudy.azureus2.plugins.ipc.IPCInterface;
import org.gudy.azureus2.ui.swt.Messages;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.wizard.AbstractWizardPanel;
import org.gudy.azureus2.ui.swt.wizard.IWizardPanel;

import com.aelitis.azureus.core.AzureusCoreFactory;
import com.aelitis.azureus.ui.UIFunctions;
import com.aelitis.azureus.ui.UIFunctionsManager;

/**
* @author Olivier
*
*/
public class
TransferPanel2
  extends AbstractWizardPanel<ConfigureWizard>
{
  private static final int kbit = 1000;
  private static final int mbit = 1000*1000;
 
  private static final int[] connection_rates = {
    0,
    28800,
    56 * kbit,
    64 * kbit,
    96 * kbit,
    128 * kbit,
    192 * kbit,
    256 * kbit,
    384 * kbit,
    512 * kbit,
    640 * kbit,
    768 * kbit,
    1 * mbit,
    2 * mbit,
    5 * mbit,
    10 * mbit,
    20 * mbit,
    50 * mbit,
    100 * mbit,
  };
   

  private volatile boolean test_in_progress;

  private boolean manual_mode;
 
  private Label  uprate_label;
 
  public TransferPanel2(ConfigureWizard wizard, IWizardPanel previous) {
    super(wizard, previous);
  }

  /* (non-Javadoc)
   * @see org.gudy.azureus2.ui.swt.wizard.IWizardPanel#show()
   */
  public void show() {
    wizard.setTitle(MessageText.getString("configureWizard.transfer.title"));
    wizard.setCurrentInfo(MessageText.getString("configureWizard.transfer2.hint"));
    final Composite rootPanel = wizard.getPanel();
    GridLayout layout = new GridLayout();
    layout.numColumns = 1;
    rootPanel.setLayout(layout);

    Composite panel = new Composite(rootPanel, SWT.NULL);
    GridData gridData = new GridData(GridData.FILL_BOTH);
    panel.setLayoutData(gridData);
    layout = new GridLayout();
    layout.numColumns = 2;
    panel.setLayout(layout);

    Label label = new Label(panel, SWT.WRAP);
    gridData = new GridData(GridData.FILL_HORIZONTAL);
    gridData.horizontalSpan = 2;
    label.setLayoutData(gridData);
    Messages.setLanguageText(label, "configureWizard.transfer2.message");

    final Group gRadio = new Group(panel, SWT.NULL);
    Messages.setLanguageText(gRadio, "configureWizard.transfer2.group");
    gRadio.setLayoutData(gridData);
    layout = new GridLayout();
    layout.numColumns = 2;
    gRadio.setLayout( layout );
    gridData = new GridData(GridData.FILL_HORIZONTAL);
    gridData.horizontalSpan = 2;
    gRadio.setLayoutData(gridData);


      // auto button
   
    Button auto_button = new Button (gRadio, SWT.RADIO);
    Messages.setLanguageText(auto_button, "auto.mode");
    auto_button.setSelection( true );
   
    new Label( gRadio, SWT.NULL );
   
      // speed test button
   
    label = new Label( gRadio, SWT.NULL );
    Messages.setLanguageText(label, "configureWizard.transfer2.test.info");

    final Button speed_test = new Button( gRadio, SWT.NULL );
   
    Messages.setLanguageText( speed_test, "configureWizard.transfer2.test" );
           
    final SelectionAdapter speed_test_listener =
      new SelectionAdapter()
      {
        public void
        widgetSelected(
          SelectionEvent arg0 )
        {
          speed_test.setEnabled( false );
         
          test_in_progress = true;
         
          updateNextEnabled();

        rootPanel.getShell().setEnabled( false );
       
          UIFunctionsManager.getUIFunctions().installPlugin(
            "mlab",
            "dlg.install.mlab",
            new UIFunctions.actionListener()
            {
              public void
              actionComplete(
                Object result )
              {
                if ( result instanceof Boolean ){
                 
                  PluginInterface pi = AzureusCoreFactory.getSingleton().getPluginManager().getPluginInterfaceByID( "mlab" );

                  IPCInterface callback =
                    new IPCInterface()
                    {
                      public Object
                      invoke(
                        String     methodName,
                        Object[]  params )
                      {
                        try{
                          if ( methodName.equals( "results" )){
                                                    
                            Map<String,Object>   results = (Map<String,Object>)params[0];
                           
                            Long  up_rate = (Long)results.get( "up" );
                           
                            if ( up_rate != null ){
                             
                              final int u = up_rate.intValue();
                             
                              if ( u > 0 ){
                               
                                Utils.execSWTThread(
                                  new Runnable()
                                  {
                                    public void
                                    run()
                                    {
                                      updateUp( u, false );
                                    }               
                                  });
                              }
                            }
                          }
                         
                          return( null );
                         
                        }finally{
                         
                          enableTest();
                        }
                      }
                   
                      public boolean
                      canInvoke(
                        String methodName,
                        Object[] params )
                      {
                        return( true );
                      }
                    };
                 
                  try{
                    pi.getIPC().invoke(
                      "runTest",
                      new Object[]{ new HashMap<String,Object>(), callback, false });
                   
                  }catch( Throwable e ){
                   
                    Debug.out( e );
                   
                    enableTest();
                  }
                }else{
               
                  try{
                    Throwable error = (Throwable)result;
                 
                    Debug.out( error );
                   
                  }finally{
                   
                    enableTest();
                  }
                }
              }
             
              protected void
              enableTest()
              {
              Utils.execSWTThread(
                  new Runnable()
                  {
                    public void
                    run()
                    {
                      speed_test.setEnabled( true );
                     
                      test_in_progress = false;
                     
                      updateNextEnabled();
                     
                      rootPanel.getShell().setEnabled( true );
                    };
                  });
              }
            })
        }
      };
   
   speed_test.addSelectionListener( speed_test_listener );
   
      // manual
   
    final Button manual_button = new Button( gRadio, SWT.RADIO );
    Messages.setLanguageText(manual_button, "manual.mode");

    new Label( gRadio, SWT.NULL );
   
      // drop down speed selector
       
    final Label manual_label = new Label( gRadio, SWT.NULL );
    Messages.setLanguageText(manual_label, "configureWizard.transfer2.mselect");

    String connection_labels[] = new String[connection_rates.length];

    connection_labels[0] = MessageText.getString( "configureWizard.transfer2.current" );
    String dial_up = MessageText.getString( "dial.up" );
   
    for (int i = 1; i < connection_rates.length; i++) {
     
      connection_labels[i] = (i<3?(dial_up+ " "):"xxx/") + DisplayFormatters.formatByteCountToBitsPerSec( connection_rates[i]/8);
    }
   
    final Combo connection_speed = new Combo(gRadio, SWT.SINGLE | SWT.READ_ONLY);
   
    for ( int i=0; i<connection_rates.length; i++ ){
     
      connection_speed.add(connection_labels[i]);
    }
   
    connection_speed.select(0);
   
    connection_speed.addListener(
      SWT.Selection,
      new Listener()
      {
        public void
        handleEvent(
          Event arg0 )
        {
          int index = connection_speed.getSelectionIndex();
                   
          updateUp( connection_rates[index]/8, true );
         }
      });
   
    final Label manual2_label = new Label( gRadio, SWT.WRAP );
    Messages.setLanguageText(manual2_label, "configureWizard.transfer2.mselect.info");
    gridData = new GridData(GridData.FILL_HORIZONTAL);
    gridData.horizontalSpan = 2;
    manual2_label.setLayoutData( gridData );

    Listener listener =
      new Listener()
    {
      public void
      handleEvent(
        Event arg0 )
      {
        boolean is_manual = manual_button.getSelection();
         
        speed_test.setEnabled( !is_manual );
       
        connection_speed.setEnabled( is_manual );
        manual_label.setEnabled( is_manual );
        manual2_label.setEnabled( is_manual );
       
        manual_mode = is_manual;
       
        updateNextEnabled();
      }
    };
    manual_button.addListener( SWT.Selection, listener );
    listener.handleEvent( null );
   
    uprate_label = new Label( panel, SWT.WRAP );
    gridData = new GridData(GridData.FILL_BOTH);
    gridData.verticalIndent=10;
    uprate_label.setLayoutData( gridData );
    updateUp( 0, true );
   
    manual_mode = false;
   
    updateNextEnabled();
   
    if ( wizard.getWizardMode() == ConfigureWizard.WIZARD_MODE_SPEED_TEST_AUTO ){
     
      Utils.execSWTThreadLater(
        0,
        new Runnable()
        {
          public void
          run()
          {
            speed_test_listener.widgetSelected( null );
          }
        });
    }
  }

  private void
  updateUp(
    int    rate,
    boolean  manual )
  {
  wizard.setConnectionUploadLimit( rate, manual );
 
  if ( rate == 0 ){
   
    uprate_label.setText( MessageText.getString( "configureWizard.transfer2.rate.unchanged" ));
   
  }else{
 
    uprate_label.setText(
      MessageText.getString( "configureWizard.transfer2.rate.changed",
      new String[]{
        DisplayFormatters.formatByteCountToBitsPerSec( rate ) + " (" + DisplayFormatters.formatByteCountToKiBEtcPerSec( rate ) + ")" ,
        DisplayFormatters.formatByteCountToKiBEtcPerSec( wizard.getUploadLimit()),
        String.valueOf( wizard.maxActiveTorrents ),
        String.valueOf( wizard.maxDownloads )
      }));
  }
  }
 
  private void
  updateNextEnabled()
  {
   wizard.setPreviousEnabled( isPreviousEnabled() );
  
   boolean enabled = isProgressEnabled();
      
    
   if ( wizard.getWizardMode() != ConfigureWizard.WIZARD_MODE_FULL ){
    
     wizard.setNextEnabled( false );
    
        wizard.setFinishEnabled( enabled );
   }else{
    
     wizard.setNextEnabled( enabled );
   }
  }
 
  public boolean
  isProgressEnabled()
  {
    if ( test_in_progress ){
     
      return( false );
    }
   
    if ( manual_mode || wizard.getConnectionUploadLimit() > 0 ){
     
      return( true );
    }
   
    return( false );
  }
 
  public boolean
  isNextEnabled()
  {
    return( isProgressEnabled() && wizard.getWizardMode() == ConfigureWizard.WIZARD_MODE_FULL);
  }
 
  public boolean
  isPreviousEnabled()
  {
    return( ! ( test_in_progress || wizard.getWizardMode() != ConfigureWizard.WIZARD_MODE_FULL ));
  }
 
  public IWizardPanel
  getFinishPanel()
  {
    return( new FinishPanel(wizard,this));
  }
 
  public IWizardPanel
  getNextPanel()
  {
    return( new NatPanel((wizard),this));
  }

}
TOP

Related Classes of org.gudy.azureus2.ui.swt.config.wizard.TransferPanel2

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.