package com.anjlab.eclipse.tapestry5.views;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.ui.IContributorResourceAdapter;
/*
* The content provider class is responsible for providing objects to the
* view. It can wrap existing objects in adapters or simply return objects
* as-is. These objects may be sensitive to the current input of the view,
* or ignore it and always show the same content (like Task List, for
* example).
*/
public class TreeObject implements IAdaptable
{
private String name;
private Object data;
private TreeParent parent;
public TreeObject(String name, Object data)
{
if (name == null || data == null)
{
throw new NullPointerException("Nulls not allowed");
}
this.name = name;
this.data = data;
}
public String getName()
{
return name;
}
public Object getData()
{
return data;
}
public void setParent(TreeParent parent)
{
this.parent = parent;
}
public TreeParent getParent()
{
return parent;
}
public String toString()
{
return getName();
}
@SuppressWarnings("unchecked")
public <T> T getAdapter(Class<T> key)
{
if (key.equals(IContributorResourceAdapter.class))
{
return (T) new IContributorResourceAdapter()
{
@Override
public IResource getAdaptedResource(IAdaptable adaptable)
{
// TODO Auto-generated method stub
return (IResource) data;
}
};
}
return null;
}
@Override
public boolean equals(Object obj)
{
if (this == obj)
{
return true;
}
if (!(obj instanceof TreeObject))
{
return false;
}
TreeObject other = (TreeObject) obj;
return data.equals(other.data);
}
@Override
public int hashCode()
{
return data.hashCode() + name.hashCode();
}
}