Package com.aelitis.azureus.ui.swt.devices

Source Code of com.aelitis.azureus.ui.swt.devices.DeviceInfoArea

/**
* Created on Mar 2, 2009
*
* 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.ui.swt.devices;

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.events.SelectionListener;
import org.eclipse.swt.layout.*;
import org.eclipse.swt.widgets.*;

import org.gudy.azureus2.core3.util.Constants;
import org.gudy.azureus2.core3.util.Debug;
import org.gudy.azureus2.plugins.PluginException;
import org.gudy.azureus2.plugins.installer.*;
import org.gudy.azureus2.plugins.update.UpdateCheckInstance;
import org.gudy.azureus2.ui.swt.Messages;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.views.utils.ManagerUtils;

import com.aelitis.azureus.core.AzureusCoreFactory;
import com.aelitis.azureus.core.devices.*;
import com.aelitis.azureus.ui.UIFunctionsManager;
import com.aelitis.azureus.ui.mdi.MdiEntry;
import com.aelitis.azureus.ui.mdi.MultipleDocumentInterface;
import com.aelitis.azureus.ui.swt.UIFunctionsManagerSWT;
import com.aelitis.azureus.ui.swt.mdi.MdiEntrySWT;
import com.aelitis.azureus.ui.swt.mdi.MultipleDocumentInterfaceSWT;
import com.aelitis.azureus.ui.swt.skin.SWTSkinObject;
import com.aelitis.azureus.ui.swt.views.skin.SkinView;

/**
* @author TuxPaper
* @created Mar 2, 2009
*
*/
public class DeviceInfoArea
  extends SkinView
{
  private DeviceMediaRenderer device;
  private Composite main;
  private Composite parent;

  // @see com.aelitis.azureus.ui.swt.views.skin.SkinView#skinObjectInitialShow(com.aelitis.azureus.ui.swt.skin.SWTSkinObject, java.lang.Object)
  public Object skinObjectInitialShow(SWTSkinObject skinObject, Object params) {

    MultipleDocumentInterfaceSWT mdi = UIFunctionsManagerSWT.getUIFunctionsSWT().getMDISWT();
    if (mdi != null) {
      MdiEntrySWT entry = mdi.getEntryFromSkinObject(skinObject);
      if (entry != null) {
        device = (DeviceMediaRenderer) entry.getDatasource();
      }
    }
   
    parent = (Composite) skinObject.getControl();

    return null;
  }

  // @see com.aelitis.azureus.ui.swt.views.skin.SkinView#skinObjectShown(com.aelitis.azureus.ui.swt.skin.SWTSkinObject, java.lang.Object)
  public Object skinObjectShown(SWTSkinObject skinObject, Object params) {
    super.skinObjectShown(skinObject, params);
   
    if (device == null) {
      initDeviceOverview();
    } else {
      initDeviceView();
    }
    return null;
  }
 
  // @see com.aelitis.azureus.ui.swt.views.skin.SkinView#skinObjectHidden(com.aelitis.azureus.ui.swt.skin.SWTSkinObject, java.lang.Object)
  public Object skinObjectHidden(SWTSkinObject skinObject, Object params) {
    Utils.disposeComposite(main);
    return super.skinObjectHidden(skinObject, params);
  }

  /**
   *
   *
   * @since 4.1.0.5
   */
  private void initDeviceView() {
    main = new Composite( parent, SWT.NONE);
    GridLayout layout = new GridLayout();
    layout.numColumns = 1;
    layout.marginTop = 4;
    layout.marginBottom = 4;
    layout.marginHeight = 4;
    layout.marginWidth = 4;
    main.setLayout(layout);
    GridData grid_data;
    main.setLayoutData(Utils.getFilledFormData());
   
      // control
   
    Composite control = new Composite(main, SWT.NONE);
    layout = new GridLayout();
    layout.numColumns = 3;
    layout.marginLeft = 0;
    control.setLayout(layout);

      // browse to local dir
   
    grid_data = new GridData(GridData.FILL_HORIZONTAL);
    grid_data.horizontalSpan = 1;
    control.setLayoutData(grid_data);

      Label dir_lab = new Label( control, SWT.NONE );
      dir_lab.setText( "Local directory: " + device.getWorkingDirectory().getAbsolutePath());

   
      Button show_folder_button = new Button( control, SWT.PUSH );
       
       Messages.setLanguageText( show_folder_button, "MyTorrentsView.menu.explore");
      
       show_folder_button.addSelectionListener(
         new SelectionAdapter()
         {
           public void
           widgetSelected(
             SelectionEvent e )
           {
            
             ManagerUtils.open( device.getWorkingDirectory());
           }
         });
      
       new Label( control, SWT.NONE );
      
       if ( device.canFilterFilesView()){
        
        final Button show_xcode_button = new Button( control, SWT.CHECK );
       
         Messages.setLanguageText( show_xcode_button, "devices.xcode.only.show");
        
         show_xcode_button.setSelection( device.getFilterFilesView());
        
         show_xcode_button.addSelectionListener(
           new SelectionAdapter()
           {
             public void
             widgetSelected(
               SelectionEvent e )
             {            
               device.setFilterFilesView( show_xcode_button.getSelection());
             }
           });
       }
      
       final Button btnReset = new Button(main, SWT.PUSH);
       btnReset.setText("Forget Default Profile Choice");
       btnReset.addSelectionListener(new SelectionListener() {
        public void widgetSelected(SelectionEvent e) {
          device.setDefaultTranscodeProfile(null);
          btnReset.setEnabled(false);
        }
     
        public void widgetDefaultSelected(SelectionEvent e) {
        }
      });
      try {
        btnReset.setEnabled(device.getDefaultTranscodeProfile() != null);
      } catch (TranscodeException e1) {
        btnReset.setEnabled(false);
      }
      btnReset.setLayoutData(new GridData());
      
       parent.getParent().layout();
  }

  protected void initDeviceOverview() {
    // DeviceInfoArea isn't used, but if it were we'd want to
    // do a check to see if Core is available yet..
    final PluginInstaller installer = AzureusCoreFactory.getSingleton().getPluginManager().getPluginInstaller();
    boolean hasItunes = AzureusCoreFactory.getSingleton().getPluginManager().getPluginInterfaceByID(
        "azitunes") != null;

    main = new Composite( parent, SWT.NONE);
    main.setLayoutData(Utils.getFilledFormData());
    FormLayout layout = new FormLayout();
    layout.marginWidth = layout.marginHeight = 5;
    main.setLayout(layout);
   
 
    FormData fd;

    Control top;
    if (hasItunes) {
      Button itunes_button = new Button(main, SWT.NULL);
      top = itunes_button;

      itunes_button.setText("Install iTunes Integration");

      itunes_button.addListener(SWT.Selection, new Listener() {
        public void handleEvent(Event arg0) {
          try {
            StandardPlugin itunes_plugin = installer.getStandardPlugin("azitunes");

            itunes_plugin.install(false);

          } catch (Throwable e) {

            Debug.printStackTrace(e);
          }
        }
      });

      fd = new FormData();
      fd.left = new FormAttachment(0, 0);
      fd.top = new FormAttachment(0, 4);

      itunes_button.setLayoutData(fd);
    } else {
      Label lblItunesInstalled = new Label(main, SWT.WRAP);
      top = lblItunesInstalled;
      lblItunesInstalled.setText("iTunes support is available");
    }
   
    if (Constants.isCVSVersion()) {
      //buildBetaArea(main, top);
    }
    parent.getParent().layout();
  }           
   

  private void buildBetaArea(Composite parent, Control above) {
    FormData fd;

    Group betaArea = new Group(parent, SWT.NONE);
    betaArea.setText("Beta Debug");
    betaArea.setLayout(new FormLayout());
    fd = Utils.getFilledFormData();
    fd.top = new FormAttachment(above, 5);
    betaArea.setLayoutData(fd);
   
    fd = new FormData();
    fd.left   = new FormAttachment(0,0);
    fd.right  = new FormAttachment(100,0);
    fd.top  = new FormAttachment(0, 0);

    Label label = new Label( betaArea, SWT.NULL );
   
    label.setText( "Transcode Providers:" );
   
    label.setLayoutData( fd );
   
    Button vuze_button = new Button( betaArea, SWT.NULL );
   
    vuze_button.setText( "Install Vuze Transcoder" );
   
    if (AzureusCoreFactory.isCoreRunning()) {
      final PluginInstaller installer = AzureusCoreFactory.getSingleton().getPluginManager().getPluginInstaller();

      StandardPlugin vuze_plugin = null;
     
      try{
        vuze_plugin = installer.getStandardPlugin( "vuzexcode" );
       
      }catch( Throwable e ){ 
      }
     
      if ( vuze_plugin == null || vuze_plugin.isAlreadyInstalled()){
       
        vuze_button.setEnabled( false );
      }
     
      final StandardPlugin  f_vuze_plugin = vuze_plugin;
     
      vuze_button.addListener(
          SWT.Selection,
          new Listener()
          {
            public void
            handleEvent(
                Event arg0 )
            {
              try{
                f_vuze_plugin.install( false );
               
              }catch( Throwable e ){
               
                Debug.printStackTrace(e);
              }
            }
          });
     
      fd = new FormData();
      fd.left   = new FormAttachment(0,0);
      fd.top  = new FormAttachment(label,4);
     
      vuze_button.setLayoutData( fd );
    }
     

    Control top = vuze_button;
   
   
    TranscodeProvider[] providers = DeviceManagerFactory.getSingleton().getTranscodeManager().getProviders();
   
    for ( TranscodeProvider provider: providers ){
     
      fd = new FormData();
      fd.left   = new FormAttachment(0,10);
      fd.right  = new FormAttachment(100,0);
      fd.top  = new FormAttachment(top,4);

      Label prov_lab = new Label( betaArea, SWT.NULL );
     
      prov_lab.setText( provider.getName());
     
      prov_lab.setLayoutData( fd );
     
      top = prov_lab;
     
      TranscodeProfile[] profiles = provider.getProfiles();
     
      String line = null;
      for ( TranscodeProfile profile: profiles ){
       
        if (line == null) {
          line = profile.getName();
        } else {
          line += ", " + profile.getName();
        }
       
      }

      if (line != null) {
        fd = new FormData();
        fd.left   = new FormAttachment(0,25);
        fd.right  = new FormAttachment(100,0);
        fd.top  = new FormAttachment(top,4);
 
        Label prof_lab = new Label( betaArea, SWT.WRAP );
       
        prof_lab.setText("Profiles: " + line);
       
        prof_lab.setLayoutData( fd );
       
        top = prof_lab;
      }
    }
   
      // both - installer test
   
    final Button both_button = new Button( betaArea, SWT.NULL );

    both_button.setText( "Test! Install RSSGen and AZBlog!" );
   

    if (AzureusCoreFactory.isCoreRunning()) {
      final PluginInstaller installer = AzureusCoreFactory.getSingleton().getPluginManager().getPluginInstaller();

      StandardPlugin plugin1 = null;
      StandardPlugin plugin2 = null;
     
      try{
        plugin1 = installer.getStandardPlugin( "azrssgen" );
       
      }catch( Throwable e ){ 
      }
     
      try{
        plugin2 = installer.getStandardPlugin( "azblog" );
       
      }catch( Throwable e ){ 
      }
     
      if ( plugin1 != null && plugin2 != null ){
       
        final Composite install_area = new Composite( betaArea, SWT.BORDER );
       
        fd = new FormData();
        fd.left   = new FormAttachment(both_button,0);
        fd.right  = new FormAttachment(100,0);
        fd.top  = new FormAttachment(top,4);
        fd.bottom  = new FormAttachment(100,0);
       
        install_area.setLayoutData( fd );
       
        final StandardPlugin  f_plugin1 = plugin1;
        final StandardPlugin  f_plugin2 = plugin2;
       
        both_button.addListener(
            SWT.Selection,
            new Listener()
            {
              public void
              handleEvent(
                  Event arg0 )
              {
                both_button.setEnabled( false );
               
                try{
                  Map<Integer,Object>  properties = new HashMap<Integer, Object>();
                 
                  properties.put( UpdateCheckInstance.PT_UI_STYLE, UpdateCheckInstance.PT_UI_STYLE_SIMPLE );
                 
                  properties.put( UpdateCheckInstance.PT_UI_PARENT_SWT_COMPOSITE, install_area );
                 
                  properties.put( UpdateCheckInstance.PT_UI_DISABLE_ON_SUCCESS_SLIDEY, true );
                 
                  installer.install(
                      new InstallablePlugin[]{ f_plugin1, f_plugin2 },
                      false,
                      properties,
                      new PluginInstallationListener()
                      {
                        public void
                        completed()
                        {
                          System.out.println( "Install completed!" );
                         
                          tidy();
                        }
                       
                        public void
                        cancelled()
                        {
                          System.out.println( "Install cancelled" );
                         
                          tidy();
                        }
                       
                        public void
                        failed(
                            PluginException  e )
                        {
                          System.out.println( "Install failed: " + e );
                         
                          tidy();
                        }
                       
                        protected void
                        tidy()
                        {
                          Utils.execSWTThread(
                              new Runnable()
                              {
                                public void
                                run()
                                {
                                  Control[] kids = install_area.getChildren();
                                 
                                  for ( Control c: kids ){
                                   
                                    c.dispose();
                                  }
                                 
                                  both_button.setEnabled( true );
                                }
                              });
                        }
                      });
                 
                }catch( Throwable e ){
                 
                  Debug.printStackTrace(e);
                }
              }
            });
      }else{
       
        both_button.setEnabled(false);
      }
     
      fd = new FormData();
      fd.left   = new FormAttachment(0,0);
      fd.top  = new FormAttachment(top,4);
      fd.bottom  = new FormAttachment(100,0);
     
      both_button.setLayoutData( fd );
    }

  }
}
TOP

Related Classes of com.aelitis.azureus.ui.swt.devices.DeviceInfoArea

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.