📄 filesview.java
字号:
// 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 + -