/*
* File : ShareUtils.java
* Created : 08-Jan-2004
* By : parg
*
* 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.sharing;
/**
* @author parg
*
*/
import java.io.File;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.*;
import com.aelitis.azureus.core.*;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.ui.swt.mainwindow.TorrentOpener;
public class
ShareUtils
{
public static void
shareFile(
final AzureusCore azureus_core,
final Shell shell )
{
new AEThread("shareFile")
{
public void
runSupport()
{
Display display = shell.getDisplay();
final String[] path = { null };
final AESemaphore sem = new AESemaphore("ShareUtils:file");
display.asyncExec(new AERunnable() {
public void runSupport()
{
try{
FileDialog dialog = new FileDialog(shell, SWT.SYSTEM_MODAL | SWT.OPEN);
dialog.setFilterPath( TorrentOpener.getFilterPathData() );
dialog.setText(MessageText.getString("MainWindow.dialog.share.sharefile"));
path[0] = TorrentOpener.setFilterPathData( dialog.open() );
}finally{
sem.release();
}
}
});
sem.reserve();
if ( path[0] != null ){
shareFile( azureus_core, path[0] );
}
}
}.start();
}
public static void
shareDir(
AzureusCore azureus_core,
Shell shell )
{
shareDirSupport( azureus_core, shell, false, false );
}
public static void
shareDirContents(
AzureusCore azureus_core,
Shell shell,
boolean recursive )
{
shareDirSupport( azureus_core, shell, true, recursive );
}
protected static void
shareDirSupport(
final AzureusCore azureus_core,
final Shell shell,
final boolean contents,
final boolean recursive )
{
new AEThread("shareDirSupport")
{
public void
runSupport()
{
Display display = shell.getDisplay();
final String[] path = { null };
final AESemaphore sem = new AESemaphore("ShareUtils:dir");
display.asyncExec(new AERunnable() {
public void runSupport()
{
try{
DirectoryDialog dialog = new DirectoryDialog(shell, SWT.SYSTEM_MODAL);
dialog.setFilterPath( TorrentOpener.getFilterPathData() );
dialog.setText(
contents?
MessageText.getString("MainWindow.dialog.share.sharedircontents") +
(recursive?"("+MessageText.getString("MainWindow.dialog.share.sharedircontents.recursive")+")":""):
MessageText.getString("MainWindow.dialog.share.sharedir"));
path[0] = TorrentOpener.setFilterPathData( dialog.open() );
}finally{
sem.release();
}
}
});
sem.reserve();
if ( path[0] != null ){
if ( contents ){
shareDirContents( azureus_core, path[0], recursive );
}else{
shareDir( azureus_core, path[0] );
}
}
}
}.start();
}
public static void
shareFile(
final AzureusCore azureus_core,
final String file_name )
{
new AEThread("shareFile")
{
public void
runSupport()
{
try{
azureus_core.getPluginManager().getDefaultPluginInterface().getShareManager().addFile(new File(file_name));
}catch( Throwable e ){
Debug.printStackTrace( e );
}
}
}.start();
}
public static void
shareDir(
final AzureusCore azureus_core,
final String file_name )
{
new AEThread("shareDir")
{
public void
runSupport()
{
try{
azureus_core.getPluginManager().getDefaultPluginInterface().getShareManager().addDir(new File(file_name));
}catch( Throwable e ){
Debug.printStackTrace( e );
}
}
}.start();
}
public static void
shareDirContents(
final AzureusCore azureus_core,
final String file_name,
final boolean recursive )
{
new AEThread("shareDirCntents")
{
public void
runSupport()
{
try{
azureus_core.getPluginManager().getDefaultPluginInterface().getShareManager().addDirContents(new File(file_name), recursive);
}catch( Throwable e ){
Debug.printStackTrace( e );
}
}
}.start();
}
}