/*
* File : Wizard.java Created : 12 oct. 2003 14:30:57 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.maketorrent;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.FileTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import com.aelitis.azureus.core.*;
import org.gudy.azureus2.core3.config.*;
import org.gudy.azureus2.core3.torrent.TOTorrentCreator;
import org.gudy.azureus2.core3.util.TorrentUtils;
import org.gudy.azureus2.ui.swt.URLTransfer;
import org.gudy.azureus2.ui.swt.Utils;
import org.gudy.azureus2.ui.swt.wizard.Wizard;
/**
* @author Olivier
*
*/
public class
NewTorrentWizard
extends Wizard
{
static final int TT_LOCAL = 1;
static final int TT_EXTERNAL = 2;
static final int TT_DECENTRAL = 3;
static final String TT_EXTERNAL_DEFAULT = "http://";
static final String TT_DECENTRAL_DEFAULT = TorrentUtils.getDecentralisedEmptyURL().toString();
private static String default_open_dir = COConfigurationManager.getStringParameter( "CreateTorrent.default.open", "" );
private static String default_save_dir = COConfigurationManager.getStringParameter( "CreateTorrent.default.save", "" );
private static String comment = COConfigurationManager.getStringParameter( "CreateTorrent.default.comment", "" );
private static int tracker_type = COConfigurationManager.getIntParameter( "CreateTorrent.default.trackertype", TT_LOCAL );
static{
// default the default to the "save torrents to" location
if ( default_save_dir.length() == 0 ){
default_save_dir = COConfigurationManager.getStringParameter( "General_sDefaultTorrent_Directory", "" );
}
}
//false : singleMode, true: directory
boolean create_from_dir;
String singlePath = "";
String directoryPath = "";
String savePath = "";
String trackerURL = TT_EXTERNAL_DEFAULT;
boolean computed_piece_size = true;
long manual_piece_size;
boolean useMultiTracker = false;
boolean useWebSeed = false;
private boolean addOtherHashes = COConfigurationManager.getBooleanParameter( "CreateTorrent.default.addhashes", false );
String multiTrackerConfig = "";
List trackers = new ArrayList();
String webSeedConfig = "";
Map webseeds = new HashMap();
boolean autoOpen = false;
boolean autoHost = false;
boolean permitDHT = true;
boolean privateTorrent = false;
TOTorrentCreator creator = null;
public
NewTorrentWizard(
AzureusCore azureus_core,
Display display)
{
super(azureus_core, "wizard.title");
cancel.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event arg0) {
if(creator != null) creator.cancel();
}
});
trackers.add(new ArrayList());
trackerURL = Utils.getLinkFromClipboard(display,false);
ModePanel panel = new ModePanel(this, null);
createDropTarget(getWizardWindow());
this.setFirstPanel(panel);
}
protected int
getTrackerType()
{
return( tracker_type );
}
protected void
setTrackerType(
int type )
{
tracker_type = type;
COConfigurationManager.setParameter( "CreateTorrent.default.trackertype", tracker_type );
}
protected String
getDefaultOpenDir()
{
return( default_open_dir );
}
protected void
setDefaultOpenDir(
String d )
{
default_open_dir = d;
COConfigurationManager.setParameter( "CreateTorrent.default.open", default_open_dir );
}
protected String
getDefaultSaveDir()
{
return( default_save_dir );
}
protected void
setDefaultSaveDir(
String d )
{
default_save_dir = d;
COConfigurationManager.setParameter( "CreateTorrent.default.save", default_save_dir );
}
void setComment(String s) {
comment = s;
COConfigurationManager.setParameter("CreateTorrent.default.comment",comment);
}
String getComment() {
return (comment);
}
private void createDropTarget(final Control control) {
DropTarget dropTarget = new DropTarget(control, DND.DROP_DEFAULT | DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_LINK);
dropTarget.setTransfer(new Transfer[] { URLTransfer.getInstance(), FileTransfer.getInstance()});
dropTarget.addDropListener(new DropTargetAdapter() {
public void dragOver(DropTargetEvent event) {
if(URLTransfer.getInstance().isSupportedType(event.currentDataType)) {
event.detail = getCurrentPanel() instanceof ModePanel ? DND.DROP_LINK : DND.DROP_NONE;
}
}
public void drop(DropTargetEvent event) {
if (event.data instanceof String[]) {
String[] sourceNames = (String[]) event.data;
if (sourceNames == null || sourceNames.length != 1)
event.detail = DND.DROP_NONE;
if (event.detail == DND.DROP_NONE)
return;
File droppedFile = new File(sourceNames[0]);
if (getCurrentPanel() instanceof ModePanel) {
if (droppedFile.isFile()) {
singlePath = droppedFile.getAbsolutePath();
((ModePanel) getCurrentPanel()).activateMode(true);
} else if (droppedFile.isDirectory()) {
directoryPath = droppedFile.getAbsolutePath();
((ModePanel) getCurrentPanel()).activateMode(false);
}
} else if (getCurrentPanel() instanceof DirectoryPanel) {
if (droppedFile.isDirectory())
((DirectoryPanel) getCurrentPanel()).setFilename(droppedFile.getAbsolutePath());
} else if (getCurrentPanel() instanceof SingleFilePanel) {
if (droppedFile.isFile())
((SingleFilePanel) getCurrentPanel()).setFilename(droppedFile.getAbsolutePath());
}
} else if (getCurrentPanel() instanceof ModePanel) {
trackerURL = ((URLTransfer.URLType)event.data).linkURL;
((ModePanel) getCurrentPanel()).updateTrackerURL();
}
}
});
}
protected void
setPieceSizeComputed()
{
computed_piece_size = true;
}
public boolean
getPieceSizeComputed()
{
return( computed_piece_size );
}
protected void
setPieceSizeManual(
long _value )
{
computed_piece_size = false;
manual_piece_size = _value;
}
protected long
getPieceSizeManual()
{
return( manual_piece_size );
}
protected void
setAddOtherHashes(
boolean o )
{
addOtherHashes = o;
COConfigurationManager.setParameter( "CreateTorrent.default.addhashes", addOtherHashes );
}
protected boolean
getAddOtherHashes()
{
return( addOtherHashes );
}
} |