⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filesview.java

📁 java 文件下载器。可自定义
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   FilesView.java

package org.gudy.azureus2.ui.swt.views;

import com.aelitis.azureus.core.AzureusCoreOperation;
import com.aelitis.azureus.core.AzureusCoreOperationTask;
import com.aelitis.azureus.ui.common.table.*;
import java.io.File;
import java.util.*;
import org.eclipse.swt.dnd.*;
import org.eclipse.swt.graphics.Point;
import org.eclipse.swt.widgets.*;
import org.gudy.azureus2.core3.config.COConfigurationManager;
import org.gudy.azureus2.core3.config.ParameterListener;
import org.gudy.azureus2.core3.disk.DiskManagerFileInfo;
import org.gudy.azureus2.core3.disk.DiskManagerFileInfoSet;
import org.gudy.azureus2.core3.download.*;
import org.gudy.azureus2.core3.internat.MessageText;
import org.gudy.azureus2.core3.logging.*;
import org.gudy.azureus2.core3.torrent.TOTorrent;
import org.gudy.azureus2.core3.util.*;
import org.gudy.azureus2.ui.swt.*;
import org.gudy.azureus2.ui.swt.views.file.FileInfoView;
import org.gudy.azureus2.ui.swt.views.table.TableViewSWT;
import org.gudy.azureus2.ui.swt.views.table.TableViewSWTMenuFillListener;
import org.gudy.azureus2.ui.swt.views.table.impl.TableViewSWTImpl;
import org.gudy.azureus2.ui.swt.views.table.impl.TableViewTab;
import org.gudy.azureus2.ui.swt.views.tableitems.files.DoneItem;
import org.gudy.azureus2.ui.swt.views.tableitems.files.FileExtensionItem;
import org.gudy.azureus2.ui.swt.views.tableitems.files.FirstPieceItem;
import org.gudy.azureus2.ui.swt.views.tableitems.files.ModeItem;
import org.gudy.azureus2.ui.swt.views.tableitems.files.NameItem;
import org.gudy.azureus2.ui.swt.views.tableitems.files.PathItem;
import org.gudy.azureus2.ui.swt.views.tableitems.files.PercentItem;
import org.gudy.azureus2.ui.swt.views.tableitems.files.PieceCountItem;
import org.gudy.azureus2.ui.swt.views.tableitems.files.PriorityItem;
import org.gudy.azureus2.ui.swt.views.tableitems.files.ProgressGraphItem;
import org.gudy.azureus2.ui.swt.views.tableitems.files.RemainingPiecesItem;
import org.gudy.azureus2.ui.swt.views.tableitems.files.SizeItem;
import org.gudy.azureus2.ui.swt.views.tableitems.files.StorageTypeItem;
import org.gudy.azureus2.ui.swt.views.utils.ManagerUtils;

// Referenced classes of package org.gudy.azureus2.ui.swt.views:
//			IView

public class FilesView extends TableViewTab
	implements TableDataSourceChangedListener, TableSelectionListener, TableViewSWTMenuFillListener, TableRefreshListener, DownloadManagerStateAttributeListener, TableLifeCycleListener
{

	boolean refreshing;
	private DragSource dragSource;
	private static final TableColumnCore basicItems[] = {
		new NameItem(), new PathItem(), new SizeItem(), new DoneItem(), new PercentItem(), new FirstPieceItem(), new PieceCountItem(), new RemainingPiecesItem(), new ProgressGraphItem(), new ModeItem(), 
		new PriorityItem(), new StorageTypeItem(), new FileExtensionItem()
	};
	private DownloadManager manager;
	public static boolean show_full_path;
	private MenuItem path_item;
	private TableViewSWT tv;
	private boolean force_refresh;
	private boolean is_changing_links;

	public FilesView()
	{
		refreshing = false;
		dragSource = null;
		manager = null;
		force_refresh = false;
		is_changing_links = false;
		tv = new TableViewSWTImpl("Files", "FilesView", basicItems, "firstpiece", 0x10010002);
		setTableView(tv);
		tv.setRowDefaultIconSize(new Point(16, 16));
		tv.setEnableTabViews(true);
		tv.setCoreTabViews(new IView[] {
			new FileInfoView()
		});
		tv.setDataSourceType(org/gudy/azureus2/core3/disk/DiskManagerFileInfo);
		tv.addTableDataSourceChangedListener(this, true);
		tv.addRefreshListener(this, true);
		tv.addSelectionListener(this, false);
		tv.addMenuFillListener(this);
		tv.addLifeCycleListener(this);
	}

	public void tableDataSourceChanged(Object newDataSource)
	{
		DownloadManager old_manager = manager;
		if (newDataSource == null)
			manager = null;
		else
		if (newDataSource instanceof Object[])
			manager = (DownloadManager)((Object[])(Object[])newDataSource)[0];
		else
			manager = (DownloadManager)newDataSource;
		if (old_manager != null)
			old_manager.getDownloadState().removeListener(this, "filelinks", 1);
		if (manager != null)
			manager.getDownloadState().addListener(this, "filelinks", 1);
		tv.removeAllTableRows();
	}

	public void deselected(TableRowCore atablerowcore[])
	{
	}

	public void focusChanged(TableRowCore tablerowcore)
	{
	}

	public void selected(TableRowCore atablerowcore[])
	{
	}

	public void defaultSelected(TableRowCore rows[], int stateMask)
	{
		DiskManagerFileInfo fileInfo = (DiskManagerFileInfo)tv.getFirstSelectedDataSource();
		if (fileInfo != null && fileInfo.getAccessMode() == 1)
			Utils.launch(fileInfo.getFile(true).toString());
	}

	public void fillMenu(Menu menu)
	{
		org.eclipse.swt.widgets.Shell shell = menu.getShell();
		Object data_sources[] = tv.getSelectedDataSources().toArray();
		boolean hasSelection = data_sources.length > 0;
		MenuItem itemOpen = new MenuItem(menu, 8);
		Messages.setLanguageText(itemOpen, "FilesView.menu.open");
		Utils.setMenuItemImage(itemOpen, "run");
		menu.setDefaultItem(itemOpen);
		final boolean use_open_containing_folder = COConfigurationManager.getBooleanParameter("MyTorrentsView.menu.show_parent_folder_enabled");
		MenuItem itemExplore = new MenuItem(menu, 8);
		Messages.setLanguageText(itemExplore, (new StringBuilder()).append("MyTorrentsView.menu.").append(use_open_containing_folder ? "open_parent_folder" : "explore").toString());
		itemExplore.addListener(13, new Listener() {

			final boolean val$use_open_containing_folder;
			final FilesView this$0;

			public void handleEvent(Event event)
			{
				Object dataSources[] = tv.getSelectedDataSources().toArray();
				for (int i = dataSources.length - 1; i >= 0; i--)
				{
					DiskManagerFileInfo info = (DiskManagerFileInfo)dataSources[i];
					if (info != null)
					{
						File this_file = info.getFile(true);
						File parent_file = use_open_containing_folder ? this_file.getParentFile() : null;
						ManagerUtils.open(parent_file != null ? parent_file : this_file);
					}
				}

			}

			
			{
				this$0 = FilesView.this;
				use_open_containing_folder = flag;
				super();
			}
		});
		itemExplore.setEnabled(hasSelection);
		MenuItem itemRenameOrRetarget = null;
		MenuItem itemRename = null;
		MenuItem itemRetarget = null;
		itemRenameOrRetarget = new MenuItem(menu, 8);
		Messages.setLanguageText(itemRenameOrRetarget, "FilesView.menu.rename");
		itemRenameOrRetarget.setData("rename", Boolean.valueOf(true));
		itemRenameOrRetarget.setData("retarget", Boolean.valueOf(true));
		itemRename = new MenuItem(menu, 8);
		itemRetarget = new MenuItem(menu, 8);
		Messages.setLanguageText(itemRename, "FilesView.menu.rename_only");
		Messages.setLanguageText(itemRetarget, "FilesView.menu.retarget");
		itemRename.setData("rename", Boolean.valueOf(true));
		itemRename.setData("retarget", Boolean.valueOf(false));
		itemRetarget.setData("rename", Boolean.valueOf(false));
		itemRetarget.setData("retarget", Boolean.valueOf(true));
		MenuItem itemPriority = new MenuItem(menu, 64);
		Messages.setLanguageText(itemPriority, "FilesView.menu.setpriority");
		Menu menuPriority = new Menu(shell, 4);
		itemPriority.setMenu(menuPriority);
		MenuItem itemHigh = new MenuItem(menuPriority, 64);
		itemHigh.setData("Priority", new Integer(0));
		Messages.setLanguageText(itemHigh, "FilesView.menu.setpriority.high");
		MenuItem itemLow = new MenuItem(menuPriority, 64);
		itemLow.setData("Priority", new Integer(1));
		Messages.setLanguageText(itemLow, "FilesView.menu.setpriority.normal");
		MenuItem itemSkipped = new MenuItem(menuPriority, 64);
		itemSkipped.setData("Priority", new Integer(2));
		Messages.setLanguageText(itemSkipped, "FilesView.menu.setpriority.skipped");
		MenuItem itemDelete = new MenuItem(menuPriority, 64);
		itemDelete.setData("Priority", new Integer(3));
		Messages.setLanguageText(itemDelete, "wizard.multitracker.delete");
		new MenuItem(menu, 2);
		if (!hasSelection)
		{
			itemOpen.setEnabled(false);
			itemPriority.setEnabled(false);
			itemRenameOrRetarget.setEnabled(false);
			itemRename.setEnabled(false);
			itemRetarget.setEnabled(false);
			return;
		}
		boolean open = true;
		boolean all_compact = true;
		boolean all_skipped = true;
		boolean all_priority = true;
		boolean all_not_priority = true;
		DiskManagerFileInfo dmi_array[] = new DiskManagerFileInfo[data_sources.length];
		System.arraycopy(((Object) (data_sources)), 0, dmi_array, 0, data_sources.length);
		int storage_types[] = manager.getStorageType(dmi_array);
		for (int i = 0; i < dmi_array.length; i++)
		{
			DiskManagerFileInfo file_info = dmi_array[i];
			if (open && file_info.getAccessMode() != 1)
				open = false;
			if (all_compact && storage_types[i] != 2)
				all_compact = false;
			if (!all_skipped && !all_priority && !all_not_priority)
				continue;
			if (file_info.isSkipped())
			{
				all_priority = false;
				all_not_priority = false;
				continue;
			}
			all_skipped = false;
			if (!all_not_priority && !all_priority)
				continue;
			if (file_info.isPriority())
				all_not_priority = false;
			else
				all_priority = false;
		}

		itemOpen.setEnabled(open);
		itemRenameOrRetarget.setEnabled(manager.isPersistent());
		itemRename.setEnabled(manager.isPersistent());
		itemRetarget.setEnabled(manager.isPersistent());
		itemSkipped.setEnabled(!all_skipped);
		itemHigh.setEnabled(!all_priority);
		itemLow.setEnabled(!all_not_priority);
		itemDelete.setEnabled(!all_compact);
		itemOpen.addListener(13, new TableSelectedRowsListener(tv) {

			final FilesView this$0;

			public void run(TableRowCore row)
			{
				DiskManagerFileInfo fileInfo = (DiskManagerFileInfo)row.getDataSource(true);
				if (fileInfo.getAccessMode() == 1)
					Utils.launch(fileInfo.getFile(true).toString());
			}

			
			{
				this$0 = FilesView.this;
				super(x0);
			}
		});
		Listener rename_listener = new Listener() {

			final FilesView this$0;

			public void handleEvent(Event event)
			{
				boolean rename_it = ((Boolean)event.widget.getData("rename")).booleanValue();
				boolean retarget_it = ((Boolean)event.widget.getData("retarget")).booleanValue();
				rename(tv.getSelectedRows(), rename_it, retarget_it);
			}

			
			{
				this$0 = FilesView.this;
				super();
			}
		};
		itemRenameOrRetarget.addListener(13, rename_listener);
		itemRename.addListener(13, rename_listener);
		itemRetarget.addListener(13, rename_listener);
		Listener priorityListener = new Listener() {

			final FilesView this$0;

			public void handleEvent(Event event)
			{
				changePriority(((Integer)event.widget.getData("Priority")).intValue(), tv.getSelectedRows());
			}

			
			{
				this$0 = FilesView.this;
				super();
			}
		};
		itemHigh.addListener(13, priorityListener);
		itemLow.addListener(13, priorityListener);
		itemSkipped.addListener(13, priorityListener);
		itemDelete.addListener(13, priorityListener);
	}

	private String askForRenameFilename(DiskManagerFileInfo fileInfo)
	{
		SimpleTextEntryWindow dialog = new SimpleTextEntryWindow(Display.getDefault());
		dialog.setTitle("FilesView.rename.filename.title");
		dialog.setMessage("FilesView.rename.filename.text");
		dialog.setPreenteredText(fileInfo.getFile(true).getName(), false);
		dialog.allowEmptyInput(false);
		dialog.prompt();
		if (!dialog.hasSubmittedInput())
			return null;
		else
			return dialog.getSubmittedInput();
	}

	private String askForRetargetedFilename(DiskManagerFileInfo fileInfo)
	{
		FileDialog fDialog = new FileDialog(Utils.findAnyShell(), 0x22000);
		File existing_file = fileInfo.getFile(true);
		fDialog.setFilterPath(existing_file.getParent());
		fDialog.setFileName(existing_file.getName());
		fDialog.setText(MessageText.getString("FilesView.rename.choose.path"));
		return fDialog.open();
	}

	private String askForSaveDirectory(DiskManagerFileInfo fileInfo)
	{
		DirectoryDialog dDialog = new DirectoryDialog(Utils.findAnyShell(), 0x22000);
		File current_dir = fileInfo.getFile(true).getParentFile();
		dDialog.setFilterPath(current_dir.getPath());
		dDialog.setText(MessageText.getString("FilesView.rename.choose.path.dir"));
		return dDialog.open();
	}

	private boolean askCanOverwrite(File file)
	{
		return MessageBoxWindow.open("FilesView.messagebox.rename.id", 288, 32, true, Display.getDefault(), "warning", MessageText.getString("FilesView.rename.confirm.delete.title"), MessageText.getString("FilesView.rename.confirm.delete.text", new String[] {
			file.toString()
		})) == 32;
	}

	private void moveFile(final DiskManagerFileInfo fileInfo, final File target)
	{
		final boolean result[] = {
			false
		};
		is_changing_links = true;
		FileUtil.runAsTask(new AzureusCoreOperationTask() {

			final boolean val$result[];
			final DiskManagerFileInfo val$fileInfo;
			final File val$target;
			final FilesView this$0;

			public void run(AzureusCoreOperation operation)
			{
				result[0] = fileInfo.setLink(target);
			}

			
			{
				this$0 = FilesView.this;
				result = aflag;
				fileInfo = diskmanagerfileinfo;
				target = file;
				super();
			}
		});
		is_changing_links = false;
		if (!result[0])
		{
			MessageBox mb = new MessageBox(Utils.findAnyShell(), 33);
			mb.setText(MessageText.getString("FilesView.rename.failed.title"));
			mb.setMessage(MessageText.getString("FilesView.rename.failed.text"));
			mb.open();
		}
	}

	protected void rename(TableRowCore rows[], boolean rename_it, boolean retarget_it)
	{
		String save_dir;
		boolean paused;
		if (manager == null)
			return;
		if (rows.length == 0)
			return;
		save_dir = null;
		if (!rename_it && retarget_it)
		{
			save_dir = askForSaveDirectory((DiskManagerFileInfo)rows[0].getDataSource(true));
			if (save_dir == null)
				return;
		}
		paused = false;
		int i = 0;
_L1:
		TableRowCore row;
		DiskManagerFileInfo fileInfo;
		File existing_file;
		File f_target;
		if (i >= rows.length)
			break MISSING_BLOCK_LABEL_281;
		row = rows[i];
		fileInfo = (DiskManagerFileInfo)rows[i].getDataSource(true);
		existing_file = fileInfo.getFile(true);
		f_target = null;
		if (rename_it && retarget_it)
		{
			String s_target = askForRetargetedFilename(fileInfo);
			if (s_target != null)
				f_target = new File(s_target);
		} else
		if (rename_it)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -