package rtt.ui.content.main; import java.util.ArrayList; import java.util.List; import org.eclipse.swt.graphics.Image; import rtt.core.manager.Manager; import rtt.ui.content.IContent; import rtt.ui.content.ReloadInfo; import rtt.ui.model.RttProject; public abstract class AbstractContent implements IContent { protected static final IContent[] EMPTY_ARRAY = new IContent[0]; protected IContent parent = null; protected List<IContent> childs; public AbstractContent(IContent parent) { this.parent = parent; childs = new ArrayList<IContent>(); } @Override public RttProject getProject() { if (parent != null) { return parent.getProject(); } return null; } @Override public void reload(ReloadInfo info, Manager manager) {} @Override public void notifyChanges() {} @Override public IContent getParent() { return parent; } @Override public boolean hasChildren() { if (childs == null) { return false; } return !childs.isEmpty(); } @Override public IContent[] getChildren() { if (childs == null) { return EMPTY_ARRAY; } return childs.toArray(new IContent[childs.size()]); } public Image getImage() { return getIcon().getImage(!hasChildren()); } @SuppressWarnings("unchecked") @Override public <T> T getContent(Class<T> clazz) { if (clazz == this.getClass()) { return (T) this; } if (parent instanceof IContent) { return ((IContent) parent).getContent(clazz); } return null; } @Override public String getToolTip() { return ""; } protected abstract ContentIcon getIcon(); }