FileDocCategorySizeDatePackage
PathItem.javaAPI DocAzureus 3.0.3.43487Mon Jul 24 05:33:50 BST 2006org.gudy.azureus2.ui.swt.views.tableitems.files

PathItem

public class PathItem extends org.gudy.azureus2.ui.swt.views.table.utils.CoreTableColumn implements TableCellRefreshListener

Fields Summary
Constructors Summary
public PathItem()
Default Constructor

    super("path", ALIGN_LEAD, POSITION_LAST, 200, TableManager.TABLE_TORRENT_FILES);
  
Methods Summary
private static java.lang.StringdeterminePath(org.gudy.azureus2.core3.disk.DiskManagerFileInfo fileInfo)

    
    if( fileInfo == null ) {
    	return "";
    }
    
    /**
     * Simple torrents always have a forward slash, since the path
     * will always be relative to the download location.
     */
    if (fileInfo.getDownloadManager().getTorrent().isSimpleTorrent()) {
    	return "/"; // Should this be File.separator?
    }

   	boolean has_link = fileInfo.getLink() != null;
   	boolean show_full_path = FilesView.show_full_path;
   	
   	File dl_save_path_file = fileInfo.getDownloadManager().getAbsoluteSaveLocation();
   	String dl_save_path = dl_save_path_file.getPath() + File.separator;

   	File file = fileInfo.getFile(true);
   	
   	/**
   	 * Figure out whether we should show the full path anyway.
   	 * We'll do this if the path is relative to he current
   	 * download save path.
   	 */
   	//  
   	if (has_link && !show_full_path) {
   		show_full_path = !file.getAbsolutePath().startsWith(dl_save_path);
   	}
   	String path = "";
  	
    if (show_full_path) { 
    	  
	      try {
	          path = file.getParentFile().getCanonicalPath();
	      }
	      catch( IOException e ) {
	          path = file.getParentFile().getAbsolutePath();
	      }
	      
	      if ( !path.endsWith( File.separator )){
	    	  
	    	  path += File.separator;
	      }
	      
    }else{
    	
    	path = file.getAbsolutePath().substring(dl_save_path.length());
    	if (path.length() == 0) {
    		path = "/";
    	}
    	else {
    		if (path.charAt(0) == File.separatorChar) {
    			path = path.substring(1);
    		}
    		int	pos = path.lastIndexOf(File.separator);
    	  
    		if (pos > 0 ) {
    			path = File.separator + path.substring( 0, pos );
    		}
    		else {
    			path = File.separator;
    		}
      }
    }
    
    return path;
  
public voidrefresh(TableCell cell)

    DiskManagerFileInfo fileInfo = (DiskManagerFileInfo)cell.getDataSource();
    cell.setText(determinePath(fileInfo));