Package org.gudy.azureus2.ui.console

Source Code of org.gudy.azureus2.ui.console.UI

/* Written and copyright 2001-2003 Tobias Minich.
* Distributed under the GNU General Public License; see the README file.
* This code comes with NO WARRANTY.
*
*
* Main.java
*
* Created on 22. August 2003, 00:04
*/

package org.gudy.azureus2.ui.console;


import java.io.File;
import java.io.PrintStream;
import java.net.URL;

import org.apache.log4j.Logger;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.torrentdownloader.TorrentDownloaderFactory;
import org.gudy.azureus2.core3.util.FileUtil;
import org.gudy.azureus2.core3.util.TorrentUtils;
import org.gudy.azureus2.plugins.PluginInterface;
import org.gudy.azureus2.plugins.ui.UIException;
import org.gudy.azureus2.plugins.ui.UIInputReceiver;
import org.gudy.azureus2.plugins.ui.UIInstance;
import org.gudy.azureus2.plugins.ui.UIInstanceFactory;
import org.gudy.azureus2.plugins.ui.UIManager;
import org.gudy.azureus2.plugins.ui.UIManagerEvent;
import org.gudy.azureus2.plugins.ui.UIManagerEventListener;
import org.gudy.azureus2.plugins.ui.UIMessage;
import org.gudy.azureus2.ui.common.IUserInterface;
import org.gudy.azureus2.ui.common.UIConst;
import org.gudy.azureus2.ui.console.multiuser.UserManager;
import org.gudy.azureus2.ui.console.multiuser.commands.UserCommand;

/**
*
* @author  Tobias Minich
*/
public class
UI
  extends org.gudy.azureus2.ui.common.UITemplateHeadless
  implements IUserInterface, UIInstanceFactory, UIInstance, UIManagerEventListener
{
 
  private ConsoleInput console = null;
 
  /** Creates a new instance of Main */
  /*public UI() {
  }*/
 
  public void init(boolean first, boolean others) {
    super.init(first,others);
    System.setProperty("java.awt.headless", "true");
  }
 
  public String[] processArgs(String[] args) {
    return args;
  }
 
  public void startUI() {
    super.startUI();
   
    boolean created_console = false;
   
    if ((!isStarted()) || (console == null) || (!console.isAlive())) {
//      ConsoleInput.printconsolehelp(System.out);
      System.out.println();
     
      PrintStream this_out = System.out;

      // Unless a system property tells us not to, we'll take stdout and stderr offline.
      if (!"on".equals(System.getProperty("azureus.console.noisy"))) {
      // We'll hide any output to stdout or stderr - we don't want to litter our
      // view.
      PrintStream ps = new PrintStream(new java.io.OutputStream() {
        public void write(int c) {}
        public void write(byte[] b, int i1, int i2) {}
      });
      System.setOut(ps);
      System.setErr(ps);
      org.gudy.azureus2.core3.logging.Logger.allowLoggingToStdErr(false);
      }
     
      console = new ConsoleInput("Main", UIConst.getAzureusCore(), System.in, this_out, Boolean.TRUE);
      console.printwelcome();
      console.printconsolehelp();
      created_console = true;
    }

    PluginInterface pi = UIConst.getAzureusCore().getPluginManager().getDefaultPluginInterface();
    UIManager  ui_manager = pi.getUIManager();
   
    ui_manager.addUIEventListener( this );
   
    try{
      ui_manager.attachUI( this );
    }catch( UIException e ){
      e.printStackTrace();
    }
    TorrentDownloaderFactory.initManager(UIConst.getGlobalManager(), true, true, COConfigurationManager.getStringParameter("Default save path") );

    if (created_console && System.getProperty("azureus.console.multiuser") != null) {
         UserManager manager = UserManager.getInstance(pi);
          console.registerCommand(new UserCommand(manager));
    }
   
  }
 
  public void openRemoteTorrent(String url) {
    if (console != null) {
      console.downloadRemoteTorrent(url);
      return;
    }
    console.out.println( "Downloading torrent from url: " + url );
      TorrentDownloaderFactory.downloadManaged(url);
      return;
  }
 
  public void openTorrent(String fileName) {
    if( console != null )
    {
//      System.out.println("NOT NULL CONSOLE. CAN PASS STRAIGHT TO IT!");
      console.downloadTorrent(fileName);
      return;
    }
    else
    {
//      System.out.println("NULL CONSOLE");
    }
    if( fileName.toUpperCase().startsWith( "HTTP://" ) || fileName.toUpperCase().startsWith( "HTTPS://" )) {
      console.out.println( "Downloading torrent from url: " + fileName );
      TorrentDownloaderFactory.downloadManaged( fileName );
      return;
    }
   
    try {
      if (!TorrentUtils.isTorrentFile(fileName)) {//$NON-NLS-1$
        Logger.getLogger("azureus2.ui.console").error(fileName+" doesn't seem to be a torrent file. Not added.");
        return;
      }
    } catch (Exception e) {
      Logger.getLogger("azureus2.ui.console").error("Something is wrong with "+fileName+". Not added. (Reason: "+e.getMessage()+")");
      return;
    }
    if (UIConst.getGlobalManager()!=null) {
      try {
        String downloadDir = COConfigurationManager.getDirectoryParameter("Default save path");
        console.out.println( "Adding torrent: " + fileName + " and saving to " + downloadDir);
        UIConst.getGlobalManager().addDownloadManager(fileName, downloadDir);
      } catch (Exception e) {
        Logger.getLogger("azureus2.ui.console").error("The torrent "+fileName+" could not be added.", e);
      }
    }
  }
 
  public UIInstance
  getInstance(
    PluginInterface    plugin_interface )
  {
    return( this );
  }

  public void
  detach()
 
    throws UIException
  {
  }
 
  public boolean
  eventOccurred(
    UIManagerEvent  event )
  {
    Object  data = event.getData();
   
    switch( event.getType()){
   
      case UIManagerEvent.ET_SHOW_TEXT_MESSAGE:          // data is String[] - title, message, text
      {
        String[]  bits = (String[])data;
       
        for (int i=0;i<bits.length;i++){
       
          console.out.println( bits[i] );
        }
       
        break;
      }
      case UIManagerEvent.ET_OPEN_TORRENT_VIA_FILE:        // data is File
      {
        openTorrent(((File)data).toString());
       
        break;
      }
      case UIManagerEvent.ET_OPEN_TORRENT_VIA_URL:        // data is Object[]{URL,URL,Boolean} - { torrent_url, referrer url, auto_download}
      {
        openRemoteTorrent(((URL)((Object[])data)[0]).toExternalForm());
       
        break;
      }
      case UIManagerEvent.ET_PLUGIN_VIEW_MODEL_CREATED:      // data is PluginViewModel (or subtype)
      {
        break;
      }
      case UIManagerEvent.ET_PLUGIN_CONFIG_MODEL_CREATED:    // data is PluginConfigModel (or subtype)
      {
        break;
      }
      case UIManagerEvent.ET_COPY_TO_CLIPBOARD:          // data is String
      {
        break;
      }
      case UIManagerEvent.ET_PLUGIN_VIEW_MODEL_DESTROYED:    // data is PluginViewModel (or subtype)
      {
        break;
      }
      case UIManagerEvent.ET_PLUGIN_CONFIG_MODEL_DESTROYED:    // data is PluginConfigModel (or subtype)
      {
        break;
      }
      case UIManagerEvent.ET_OPEN_URL:              // data is URL
      {
        break;
      }
      case UIManagerEvent.ET_CREATE_TABLE_COLUMN:        // data is String[] - table_id, cell_id: result is TableColumn
      {
          // need to return a dummy TableColumn as a result?
       
        return( false );

      }
      case UIManagerEvent.ET_ADD_TABLE_COLUMN:          // data is TableColumn previously created
      {
        break;
      }
      case UIManagerEvent.ET_ADD_TABLE_CONTEXT_MENU_ITEM:    // data is TableContextMenuItem
      {
        break;
      }
      case UIManagerEvent.ET_SHOW_CONFIG_SECTION:        // data is String - section id
      {
        event.setResult(new Boolean(false));
       
        break;
      }
      default:
      {
        //if (console != null && console.out != null)
         
          //console.out.println( "Unrecognised UI event '" + event.getType() + "'" );
      }
    }
   
    return( true );
  }
 
  public int promptUser(String title, String text, String[] options,
      int defaultOption) {
    console.out.println("Prompt: " + title);
    console.out.println(text);

    String sOptions = "Options: ";
    for (int i = 0; i < options.length; i++) {
      if (i != 0) {
        sOptions += ", ";
      }
      sOptions += "[" + i + "]" + options[i];
    }
   
    console.out.println(sOptions);
   
    console.out.println("WARNING: Option [" + defaultOption +
        "] automatically selected. " +
        "Console UI devs need to implement this function!");

    return defaultOption;
  }
 
  /** Not yet supported. **/
  public UIInputReceiver getInputReceiver() {
    return null;
  }
 
  public UIMessage createMessage() {
    // TODO Auto-generated method stub
    return null;
  }
}
TOP

Related Classes of org.gudy.azureus2.ui.console.UI

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.