package eu.jucy.gui.downloadqueue; import helpers.GH; import helpers.SizeEnum; import java.util.ArrayList; import java.util.Comparator; import java.util.List; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Image; import eu.jucy.gui.GuiHelpers; import eu.jucy.gui.Lang; import eu.jucy.gui.Priority; import uc.IUser; import uc.LanguageKeys; import uc.files.downloadqueue.AbstractDownloadQueueEntry; import uihelpers.IconManager; import uihelpers.TableViewerAdministrator.ColumnDescriptor; public abstract class DownloadQueueColumns extends ColumnDescriptor<AbstractDownloadQueueEntry> { protected DownloadQueueColumns(int defaultColumnSize, String columnName,int style) { super(defaultColumnSize, columnName, style); } @Override public Image getImage(AbstractDownloadQueueEntry x) { return null; } public static class DQFile extends DownloadQueueColumns { public DQFile() { super(150, Lang.FileCol, SWT.LEAD); } @Override public String getText(AbstractDownloadQueueEntry x) { return x.getFileName(); } @Override public Image getImage(AbstractDownloadQueueEntry element) { String filename = ((AbstractDownloadQueueEntry)element).getFileName(); return IconManager.get().getIconByFilename(filename); } } public static class DQStatus extends DownloadQueueColumns { public DQStatus() { super(80, Lang.Status, SWT.LEAD); } @Override public String getText(AbstractDownloadQueueEntry dqe) { boolean downloadrunning = dqe.getNrOfRunningDownloads() > 0; // .isDownloading(); int uploadersOnline = 0; for (IUser u: dqe.getUsers()) { if (u.isOnline()) { uploadersOnline++; } } int totalUploaders = dqe.getUsers().size(); if (totalUploaders == 0) { return Lang.NoUsers; } else if (downloadrunning) { return Lang.Downloading+"..."; } else if (totalUploaders == 1) { if (uploadersOnline == 0) { return LanguageKeys.UserOffline; } else { return Lang.UserOnline; } } else if(uploadersOnline == 0 ) { return String.format(Lang.AllXUsersOffline,totalUploaders); } else { return String.format(Lang.XOfYUsersOnline,uploadersOnline, totalUploaders); } } } public static class DQSize extends DownloadQueueColumns { public DQSize() { super(80, Lang.Size, SWT.LEAD); } @Override public String getText(AbstractDownloadQueueEntry dqe) { return SizeEnum.getReadableSize( dqe.getSize()); } @Override public Comparator<AbstractDownloadQueueEntry> getComparator() { return new Comparator<AbstractDownloadQueueEntry>() { public int compare(AbstractDownloadQueueEntry o1, AbstractDownloadQueueEntry o2) { return Long.valueOf(o1.getSize()).compareTo(o2.getSize()); } }; } } public static class DQDownloaded extends DownloadQueueColumns { public DQDownloaded() { super(150, Lang.Downloaded, SWT.LEAD); } @Override public String getText(AbstractDownloadQueueEntry dqe) { long downloaded= dqe.getDownloadedBytes(); return SizeEnum.getReadableSize(downloaded)+"("+GuiHelpers.toPercentString(downloaded, dqe.getSize()) +")"; } } public static class DQPriority extends DownloadQueueColumns { public DQPriority() { super(40, Lang.Priority, SWT.LEAD); } @Override public String getText(AbstractDownloadQueueEntry dqe) { int priority = dqe.getPriority(); return Priority.getPriority(priority).toString()+" ("+priority+")"; } } public static class DQUsers extends DownloadQueueColumns { public DQUsers() { super(50, Lang.Users, SWT.LEAD); } @Override public String getText(AbstractDownloadQueueEntry dqe) { List<String> s = new ArrayList<String>(); for (IUser usr:dqe.getUsers()) { s.add(usr.getNick()); } return GH.concat(s, ";"); } } public static class DQPath extends DownloadQueueColumns { public DQPath() { super(80, Lang.Path, SWT.LEAD); } @Override public String getText(AbstractDownloadQueueEntry dqe) { return dqe.getFolder().toString(); } } public static class DQExactSize extends DownloadQueueColumns { public DQExactSize() { super(80, Lang.ExactSize, SWT.TRAIL); } @Override public String getText(AbstractDownloadQueueEntry dqe) { return SizeEnum.getExactSharesize(dqe.getSize()); } @Override public Comparator<AbstractDownloadQueueEntry> getComparator() { return new Comparator<AbstractDownloadQueueEntry>() { public int compare(AbstractDownloadQueueEntry o1, AbstractDownloadQueueEntry o2) { return Long.valueOf(o1.getSize()).compareTo(o2.getSize()); } }; } } public static class DQErrors extends DownloadQueueColumns { public DQErrors() { super(40, Lang.Errors, SWT.LEAD); } @Override public String getText(AbstractDownloadQueueEntry dqe) { return ""; //TODO showing errors for dqe in the gui } } public static class DQAdded extends DownloadQueueColumns { public DQAdded() { super(60, Lang.Added, SWT.LEAD); } @Override public String getText(AbstractDownloadQueueEntry dqe) { return GuiHelpers.dateToString( dqe.getAdded() ); } } public static class DQTTHRoot extends DownloadQueueColumns { public DQTTHRoot() { super(120, Lang.TTHRoot, SWT.LEAD); } @Override public String getText(AbstractDownloadQueueEntry dqe) { return dqe.getID().toString(); } } }