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

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

/**
* Created on Mar 7, 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.net.URLEncoder;

import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.*;

import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.util.AERunnable;
import org.gudy.azureus2.core3.util.AEThread2;
import org.gudy.azureus2.core3.util.Debug;

import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.components.LinkLabel;
import org.gudy.azureus2.ui.swt.components.shell.ShellFactory;
import org.gudy.azureus2.ui.swt.mainwindow.Colors;

import com.aelitis.azureus.core.devices.DeviceManagerException;
import com.aelitis.azureus.core.devices.DeviceOfflineDownloader;
import com.aelitis.azureus.ui.swt.imageloader.ImageLoader;
import com.aelitis.azureus.util.ConstantsVuze;

/**
* @author TuxPaper
* @created Mar 7, 2009
*
*/
public class
DevicesODFTUX
{
  private static final String URL_LEARN_MORE = "/devices/offlinedownloader.start";

  private DeviceOfflineDownloader    device;
 
  private Display display;

  private Shell shell;
   
  private Font boldFont;
  private Font titleFont;
  private Font subTitleFont;
  private Font textInputFont;
 
  private Button  turnOnButton;
  private Label  noSpaceWarning;
 
  private String    dev_image_key;
  private ImageLoader imageLoader;

  protected
  DevicesODFTUX(
    DeviceOfflineDownloader    _device )
 
    throws DeviceManagerException
  {
    device  = _device;
   
    final long avail = device.getSpaceAvailable( false );
     
    Utils.execSWTThread(
      new AERunnable()
      {
        public void
        runSupport()
        {
          open( avail == 0 );
        }
      });
  }


  private void
  open(
    boolean    no_space_available )
  {
    imageLoader = ImageLoader.getInstance();

    shell = ShellFactory.createMainShell(SWT.TITLE | SWT.CLOSE | SWT.RESIZE);
   
    shell.setSize(650,400);
   
    Utils.centreWindow(shell);
   
    shell.setMinimumSize(550,400);
   
    display = shell.getDisplay();
   
    Utils.setShellIcon(shell);
   
    createFonts();
   
    shell.setText(MessageText.getString("devices.activation"));
   
    shell.addListener(SWT.Dispose, new Listener() {
      public void handleEvent(Event event) {

        imageLoader.releaseImage("wizard_header_bg");
       
        if ( dev_image_key != null ){
         
          imageLoader.releaseImage( dev_image_key );
        }
       
        if(titleFont != null && !titleFont.isDisposed()) {
          titleFont.dispose();
        }
       
        if(textInputFont != null && !textInputFont.isDisposed()) {
          textInputFont.dispose();
        }
       
        if(boldFont != null && !boldFont.isDisposed()) {
          boldFont.dispose();
        }
       
        if(subTitleFont != null && !subTitleFont.isDisposed()) {
          subTitleFont.dispose();
        }
      }
    });
   
    Composite header = new Composite(shell, SWT.NONE);
    header.setBackgroundMode(SWT.INHERIT_DEFAULT);
    header.setBackgroundImage(imageLoader.getImage("wizard_header_bg"));
   
    Label topSeparator = new Label(shell,SWT.SEPARATOR |SWT.HORIZONTAL);
   
    Composite main = new Composite(shell, SWT.NONE);
   
    main.setBackground( Colors.white );
   
    Label bottomSeparator = new Label(shell,SWT.SEPARATOR |SWT.HORIZONTAL);
   
    Composite footer = new Composite(shell, SWT.NONE);
   
    FormLayout layout = new FormLayout();
    shell.setLayout(layout);
   
    FormData data;
   
    data = new FormData();
    data.top = new FormAttachment(0,0);
    data.left = new FormAttachment(0,0);
    data.right = new FormAttachment(100,0);
    //data.height = 50;
    header.setLayoutData(data);
   
    data = new FormData();
    data.top = new FormAttachment(header,0);
    data.left = new FormAttachment(0,0);
    data.right = new FormAttachment(100,0);
    topSeparator.setLayoutData(data);
   
    data = new FormData();
    data.top = new FormAttachment(topSeparator,0);
    data.left = new FormAttachment(0,0);
    data.right = new FormAttachment(100,0);
    data.bottom = new FormAttachment(bottomSeparator,0);
    main.setLayoutData(data);
   
    data = new FormData();
    data.left = new FormAttachment(0,0);
    data.right = new FormAttachment(100,0);
    data.bottom = new FormAttachment(footer,0);
    bottomSeparator.setLayoutData(data);
   
    data = new FormData();
    data.bottom = new FormAttachment(100,0);
    data.left = new FormAttachment(0,0);
    data.right = new FormAttachment(100,0);
    footer.setLayoutData(data);
   
    populateHeader(header);
   
    populateMain( main, no_space_available );
   
    populateFooter( footer, no_space_available );
     
    shell.setDefaultButton(turnOnButton);

    shell.layout();
   
    Utils.centreWindow(shell);
   
    turnOnButton.setFocus();
   
    shell.open();
  }

  private void
  populateHeader(
    Composite header)
  {
    header.setBackground(display.getSystemColor(SWT.COLOR_WHITE));
   
    Label title = new Label(header, SWT.WRAP);
   
    title.setFont(titleFont);
   
    title.setText( MessageText.getString("devices.turnon.title") );
   
    FillLayout layout = new FillLayout();
   
    layout.marginHeight = 10;
   
    layout.marginWidth = 10;
   
    header.setLayout(layout);
  }
 

  private void
  populateMain(
    Composite   main,
    boolean    no_space_available )
  {
    String manufacturer = device.getManufacturer();
   
    boolean  is_belkin = manufacturer.toLowerCase().contains( "belkin");
       
    Label image_area = new Label(main, SWT.NONE);
   
    String  router_text;
   
    if ( is_belkin ){
     
      dev_image_key = "image.device.logo.belkin";
     
      router_text = MessageText.getString( "devices.router" );
     
    }else{
      router_text = MessageText.getString( "devices.od" );
    }
   
    if ( dev_image_key != null ){
      image_area.setImage(imageLoader.getImage( dev_image_key ));
    }
   
    Label text1 = new Label(main, SWT.WRAP);
    text1.setBackground( Colors.white );
    text1.setFont( textInputFont );
    text1.setText( MessageText.getString("devices.od.turnon.text1", new String[]{ (is_belkin?"Belkin":"Vuze" ) + " " + router_text }));

    Label text2 = new Label(main, SWT.WRAP);
    text2.setBackground( Colors.white );
    text2.setFont( textInputFont );
    text2.setText( MessageText.getString("devices.od.turnon.text2", new String[]{ router_text }));
   
    noSpaceWarning = new Label(main, SWT.WRAP);
    noSpaceWarning.setBackground( Colors.white );
    noSpaceWarning.setFont( textInputFont );
    noSpaceWarning.setText( MessageText.getString("devices.od.turnon.text3", new String[]{ router_text }));
    noSpaceWarning.setForeground( Colors.red );
    noSpaceWarning.setVisible( no_space_available );

    Label link = new Label(main, SWT.WRAP);
    link.setBackground( Colors.white );
    link.setFont( textInputFont );
    link.setText( MessageText.getString("devices.od.turnon.learn") );
   
    String url = URL_LEARN_MORE;
   
    try{
      url += "?man=" + URLEncoder.encode( manufacturer, "UTF-8" );
     
    }catch( Throwable e ){
     
      Debug.out( e );
    }

    url = ConstantsVuze.getDefaultContentNetwork().getExternalSiteRelativeURL(url, true);

    LinkLabel.makeLinkedLabel( link, url );
   
   
    FormLayout layout = new FormLayout();
    layout.marginHeight = 5;
    layout.marginWidth = 50;
    layout.spacing = 5;
   
    main.setLayout(layout);
    FormData data;
   
    data = new FormData();
    data.top = new FormAttachment(0, 20);
    data.left = new FormAttachment(0);
    image_area.setLayoutData(data);
   
    data = new FormData();
    data.top = new FormAttachment(image_area,10);
    data.left = new FormAttachment(0);
    data.right = new FormAttachment(100);
    text1.setLayoutData(data);
   
    data = new FormData();
    data.top = new FormAttachment(text1, 10 );
    data.left = new FormAttachment(0);
    data.right = new FormAttachment(100);
    text2.setLayoutData(data);
   
    data = new FormData();
    data.top = new FormAttachment(text2, 10 );
    data.left = new FormAttachment(0);
    data.right = new FormAttachment(100);
    noSpaceWarning.setLayoutData(data);
   
    data = new FormData();
    data.top = new FormAttachment(noSpaceWarning, 10 );
    data.left = new FormAttachment(0);
    link.setLayoutData(data);
  }
 

 
  private void
  createFonts()
  { 
    FontData[] fDatas = shell.getFont().getFontData();
   
    for(int i = 0 ; i < fDatas.length ; i++) {
      fDatas[i].setStyle(SWT.BOLD);
    }
    boldFont = new Font(display,fDatas);
   
   
    for(int i = 0 ; i < fDatas.length ; i++) {
      if(org.gudy.azureus2.core3.util.Constants.isOSX) {
        fDatas[i].setHeight(12);
      } else {
        fDatas[i].setHeight(10);
      }
    }
    subTitleFont = new Font(display,fDatas);
   
    for(int i = 0 ; i < fDatas.length ; i++) {
      if(org.gudy.azureus2.core3.util.Constants.isOSX) {
        fDatas[i].setHeight(17);
      } else {
        fDatas[i].setHeight(14);
      }
    }
    titleFont = new Font(display,fDatas);
   
   
    for(int i = 0 ; i < fDatas.length ; i++) {
      if(org.gudy.azureus2.core3.util.Constants.isOSX) {
        fDatas[i].setHeight(14);
      } else {
        fDatas[i].setHeight(12);
      }
      fDatas[i].setStyle(SWT.NONE);
    }
    textInputFont = new Font(display,fDatas)
  }
 
  private void
  populateFooter(
    Composite         footer,
    final boolean      no_space_available )
  {
    final Button  dont_ask_again = new Button( footer, SWT.CHECK );
    dont_ask_again.setText(MessageText.getString("general.dont.ask.again"));
    dont_ask_again.setSelection( true );
   
    Button cancelButton = new Button(footer,SWT.PUSH);
    cancelButton.setText(MessageText.getString("button.nothanks"));
     
    turnOnButton = new Button(footer,SWT.PUSH);
    turnOnButton.setText(MessageText.getString("Button.turnon"));
   
   
    FormLayout layout = new FormLayout();
    layout.marginHeight = 5;
    layout.marginWidth = 5;
    layout.spacing = 5;
   
    footer.setLayout(layout);
    FormData data;
     
    data = new FormData();
    data.left = new FormAttachment(0,45);
    data.right = new FormAttachment(turnOnButton);
    dont_ask_again.setLayoutData(data);

    data = new FormData();
    data.right = new FormAttachment(100);
    data.width = 100;
    cancelButton.setLayoutData(data);
   
    data = new FormData();
    data.right = new FormAttachment( cancelButton );
    data.width = 100;
    turnOnButton.setLayoutData(data);
   
   
   
    turnOnButton.addListener(
      SWT.Selection,
      new Listener()
      { 
        public void
        handleEvent(
          Event arg0 )
        {
       
          device.setEnabled( true );
         
          device.setShownFTUX();
         
          shell.close();
        }
      });
     
    turnOnButton.setEnabled( !no_space_available );
         
    new AEThread2( "scanner", true )
    {
      private long  last_avail = no_space_available?0:Long.MAX_VALUE;
     
      public void
      run()
      {
        while( !shell.isDisposed()){
         
          try{
            Thread.sleep(10*1000);
           
            final long avail = device.getSpaceAvailable( true );
           
            if ( avail != last_avail ){
             
              last_avail = avail;
             
              Utils.execSWTThread(
                new AERunnable()
                {
                  public void
                  runSupport()
                  {
                    if ( !turnOnButton.isDisposed()){
                     
                      turnOnButton.setEnabled( avail > );
                    }
                   
                    if ( !noSpaceWarning.isDisposed()){
                     
                      noSpaceWarning.setVisible( avail <= 0 );
                    }
                  }
                });
            }
          }catch( Throwable e ){         
          }
        }
      }
    }.start();
   
    cancelButton.addListener(
      SWT.Selection,
      new Listener()
      {
        public void
        handleEvent(
          Event arg0 )
        {
          device.setEnabled( false );
         
          if ( dont_ask_again.getSelection()){
           
            device.setShownFTUX();
          }
         
          shell.close();
        }
      });
  }

  protected void close() {
    Utils.execSWTThread(new AERunnable() {
      public void runSupport() {
        if (shell != null && !shell.isDisposed()) {
          shell.dispose();
        }
      }
    });
  }
}
TOP

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

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.