package eu.jucy.gui.downloadsview;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.TreeItem;
import eu.jucy.gui.downloadqueue.DQProgressPainter;
import eu.jucy.gui.transferview.UCProgressPainter;
import uc.files.downloadqueue.AbstractDownloadQueueEntry;
import uc.files.transfer.IFileTransfer;
import uc.protocols.client.ClientProtocol;
import uihelpers.SUIJob;
public class DownloadProgressPainter implements Listener, ISelectionChangedListener {
public static void addPainter(TreeViewer treeViewer) {
final Tree tree = treeViewer.getTree();
DownloadProgressPainter dpp = new DownloadProgressPainter();
tree.addListener(SWT.PaintItem,dpp);
treeViewer.addSelectionChangedListener(dpp);
new SUIJob(tree) {
@Override
public void run() {
tree.redraw();
schedule(500);
}
}.schedule(1000);
}
private IFileTransfer selected;
private AbstractDownloadQueueEntry parentOfSlected;
public void selectionChanged(SelectionChangedEvent event) {
IStructuredSelection sel = (IStructuredSelection)event.getSelection();
if (sel.getFirstElement() instanceof ClientProtocol) {
IFileTransfer ft = (IFileTransfer) ((ClientProtocol)sel.getFirstElement()).getFileTransfer();
selected = ft;
parentOfSlected = selected.getFti().getDqe();
} else {
selected = null;
parentOfSlected = null;
}
}
public void handleEvent(Event event) {
if (event.index != 1) {
return;
}
TreeItem ti = (TreeItem)event.item;
Object o = ti.getData();
if (o instanceof ClientProtocol) {
IFileTransfer ft = ((ClientProtocol)o).getFileTransfer();
if (ft != null) {
UCProgressPainter.drawFileTransfer(ft , event.gc,event);
}
} else if (o instanceof AbstractDownloadQueueEntry) {
DQProgressPainter.drawADQE(
(AbstractDownloadQueueEntry)o,
ti.getParent(),
event.gc,
event,
o.equals(parentOfSlected)? selected:null);
}
}
}