📄 filesview.java
字号:
if (!result[0]){
MessageBox mb = new MessageBox(getComposite().getShell(),SWT.ICON_ERROR | SWT.OK);
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) {
if (manager == null) {return;}
if (rows.length == 0) {return;}
String save_dir = null;
if (!rename_it && retarget_it) {
save_dir = askForSaveDirectory((DiskManagerFileInfo)rows[0].getDataSource(true));
if (save_dir == null) {return;}
}
boolean paused = false;
try {
for (int i=0; i<rows.length; i++) {
TableRowCore row = rows[i];
DiskManagerFileInfo fileInfo = (DiskManagerFileInfo)rows[i].getDataSource(true);
File existing_file = fileInfo.getFile(true);
File 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) {
String s_target = askForRenameFilename(fileInfo);
if (s_target != null)
f_target = new File(existing_file.getParentFile(), s_target);
}
else {
// Parent directory has changed.
f_target = new File(save_dir, existing_file.getName());
}
// So are we doing a rename?
if (f_target == null) {continue;}
if (!paused) {paused = manager.pause();}
if (f_target.exists()){
// Nothing to do.
if (f_target.equals(existing_file))
continue;
// A rewrite will occur, so we need to ask the user's permission.
else if (existing_file.exists() && !askCanOverwrite(existing_file))
continue;
// If we reach here, then it means we are doing a real move, but there is
// no existing file.
}
moveFile(fileInfo, f_target);
row.invalidate();
}
}
finally {
if (paused){manager.resume();}
}
}
protected void
changePriority(
int type ,
TableRowCore[] rows )
{
if ( manager == null){
return;
}
boolean paused = false;
try{
for (int i=0;i<rows.length;i++){
DiskManagerFileInfo fileInfo = (DiskManagerFileInfo)rows[i].getDataSource(true);
boolean this_paused;
if ( type == 0){
fileInfo.setPriority(true);
this_paused = setSkipped( fileInfo, false, false );
}else if ( type == 1 ){
fileInfo.setPriority(false);
this_paused = setSkipped( fileInfo, false, false );
}else if ( type == 2 ){
this_paused = setSkipped( fileInfo, true, false );
}else{
this_paused = setSkipped( fileInfo, true, true );
}
paused = paused || this_paused;
}
}finally{
if ( paused ){
manager.resume();
}
}
}
protected boolean
setSkipped(
DiskManagerFileInfo info,
boolean skipped,
boolean delete_action )
{
// if we're not managing the download then don't do anything other than
// change the file's priority
if ( !manager.isPersistent()){
info.setSkipped( skipped );
return( false );
}
File existing_file = info.getFile(true);
int existing_storage_type = info.getStorageType();
// we can't ever have storage = COMPACT and !skipped
int new_storage_type;
if ( existing_file.exists()){
if (!skipped ){
new_storage_type = DiskManagerFileInfo.ST_LINEAR;
}else{
boolean delete_file;
if ( delete_action ){
delete_file =
MessageBoxWindow.open(
"FilesView.messagebox.delete.id",
SWT.OK | SWT.CANCEL,
SWT.OK, true,
getComposite().getDisplay(),
MessageBoxWindow.ICON_WARNING,
MessageText.getString( "FilesView.rename.confirm.delete.title" ),
MessageText.getString( "FilesView.rename.confirm.delete.text", new String[]{ existing_file.toString()})) == SWT.OK;
}else{
// OK, too many users have got confused over the option to truncate files when selecting
// do-not-download so I'm removing it
delete_file = false;
/*
delete_file =
MessageBoxWindow.open(
"FilesView.messagebox.skip.id",
SWT.YES | SWT.NO,
SWT.YES | SWT.NO,
getComposite().getDisplay(),
MessageBoxWindow.ICON_WARNING,
MessageText.getString( "FilesView.rename.confirm.delete.title" ),
MessageText.getString( "FilesView.skip.confirm.delete.text", new String[]{ existing_file.toString()})) == SWT.YES;
*/
}
if ( delete_file ){
new_storage_type = DiskManagerFileInfo.ST_COMPACT;
}else{
new_storage_type = DiskManagerFileInfo.ST_LINEAR;
}
}
}else{
if ( skipped ){
boolean compact_disabled = MessageBoxWindow.getRememberedDecision(
"FilesView.messagebox.skip.id",
SWT.YES | SWT.NO ) == SWT.NO;
if ( compact_disabled ){
new_storage_type = DiskManagerFileInfo.ST_LINEAR;
}else{
new_storage_type = DiskManagerFileInfo.ST_COMPACT;
}
}else{
new_storage_type = DiskManagerFileInfo.ST_LINEAR;
}
}
boolean ok;
boolean paused = false;
if ( existing_storage_type != new_storage_type ){
if ( new_storage_type == DiskManagerFileInfo.ST_COMPACT ){
paused = manager.pause();
}
ok = info.setStorageType( new_storage_type );
}else{
ok = true;
}
if ( ok ){
info.setSkipped( skipped );
}
return( paused );
}
/* (non-Javadoc)
* @see org.gudy.azureus2.ui.swt.IView#refresh()
*/
public synchronized void refresh(boolean bForceSort) {
if (refreshing)
return;
try {
refreshing = true;
if(getComposite() == null || getComposite().isDisposed())
return;
removeInvalidFileItems();
DiskManagerFileInfo files[] = getFileInfo();
if (files != null && getTable().getItemCount() != files.length && files.length > 0) {
Object filesCopy[] = new Object[files.length];
System.arraycopy(files, 0, filesCopy, 0, files.length);
addDataSources(filesCopy);
processDataSourceQueue();
}
super.refresh(bForceSort);
} finally {
refreshing = false;
}
}
private void removeInvalidFileItems() {
final DiskManagerFileInfo files[] = getFileInfo();
runForAllRows(new GroupTableRowRunner() {
public void run(TableRowCore row) {
DiskManagerFileInfo fileInfo = (DiskManagerFileInfo)row.getDataSource(true);
if (fileInfo != null && !containsFileInfo(files, fileInfo)) {
removeDataSource(fileInfo);
}
}
});
}
private boolean containsFileInfo(DiskManagerFileInfo[] files,
DiskManagerFileInfo file) {
//This method works with reference comparision
if(files == null || file == null) {
return false;
}
for(int i = 0 ; i < files.length ; i++) {
if(files[i] == file)
return true;
}
return false;
}
/* SubMenu for column specific tasks.
*/
public void addThisColumnSubMenu(String sColumnName, Menu menuThisColumn) {
if (sColumnName.equals("path")) {
path_item = new MenuItem( menuThisColumn, SWT.CHECK );
menuThisColumn.addListener( SWT.Show, new Listener() {
public void handleEvent(Event e) {
path_item.setSelection( show_full_path );
}
});
Messages.setLanguageText(path_item, "FilesView.fullpath");
path_item.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event e) {
show_full_path = path_item.getSelection();
columnInvalidate("path");
refreshTable(false);
COConfigurationManager.setParameter( "FilesView.show.full.path", show_full_path );
}
});
}
}
private DiskManagerFileInfo[]
getFileInfo()
{
if (manager == null)
return null;
return( manager.getDiskManagerFileInfo());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -