package com.illumina.basespace.igv.ui.tree;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import javax.swing.JLabel;
import javax.swing.JTree;
import javax.swing.SwingWorker;
import org.broad.igv.ui.IGV;
import com.illumina.basespace.entity.Project;
import com.illumina.basespace.entity.User;
import com.illumina.basespace.igv.BaseSpaceMain;
import com.illumina.basespace.igv.BaseSpaceMain.ClientContext;
import com.illumina.basespace.igv.ui.BaseSpaceHelper;
import com.illumina.basespace.igv.ui.ImageProvider;
public class UserNode extends BaseSpaceTreeNode<User>
{
private static SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
public UserNode(User bean,UUID clientId,ClientContext clientContext)
{
super(bean,clientId,clientContext);
}
public void loadChildrenAsynch(final JTree tree)
{
final BaseSpaceTreeNode<?> treeNode = this;
SwingWorker<List<Project>,Object> worker = new SwingWorker<List<Project>,Object>()
{
@Override
protected List<Project> doInBackground() throws Exception
{
List<Project> entities = new ArrayList<Project>(1);
entities.add(BaseSpaceMain.instance().getApiClient(getClientId()).getProject(getConfig().getProjectId()).get());
return entities;
}
@Override
protected void done()
{
try
{
super.done();
List<Project> list = get();
List<BaseSpaceTreeNode<?>> decorators = new ArrayList<BaseSpaceTreeNode<?>>(list.size());
for (Project project : list)
{
ProjectNode pn = new ProjectNode(project,getClientId(),getClientContext());
decorators.add(pn);
}
addChildren(tree,treeNode,decorators);
}
catch(Throwable t)
{
BaseSpaceHelper.showErrorDialog(IGV.getMainFrame(),t);
}
}
};
worker.execute();
}
@Override
public List<? extends BaseSpaceTreeNode<?>> getChildren()
{
return null;
}
@Override
public void renderNode(JTree tree, JLabel label, User value, boolean selected, boolean expanded, boolean leaf,
int row, boolean hasFocus)
{
label.setText("Session created at " + format.format(new Date(getClientContext().getCreateTime())));
label.setIcon(ImageProvider.instance().getIcon("user.png"));
}
}