/******************************************************************************* * Copyright (c) 2010 Eric Bodden. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Eric Bodden - initial API and implementation ******************************************************************************/ /** * */ package de.bodden.tamiflex.views; import org.eclipse.core.resources.IProject; import org.eclipse.swt.graphics.Image; public abstract class TreeObject { public final static TreeParent INVISIBLE_ROOT_NODE = new ResolvedMethodNode("","",""); public enum Kind {CATEGORY, TRACEFILE, ONLINEMONITOR, CLASS, METHOD, FIELD}; protected String name; protected TreeParent parent; protected Kind kind; public TreeObject(String name, Kind kind) { this.name = name; this.kind = kind; } public String getName() { return name; } public void setParent(TreeParent parent) { this.parent = parent; } public TreeParent getParent() { return parent; } public String toString() { return getName(); } public Object[] getChildren() { return new Object[0]; } public boolean hasChildren() { return false; } public abstract Image getImage(); public abstract void handleDoubleClick(); public IProject getProject() { TreeObject parent = this.parent; while(parent.getParent()!=INVISIBLE_ROOT_NODE) { parent = parent.getParent(); } return ((TreeParent)parent).getProject(); } public Kind getKind() { return kind; } }