/**************************************************************************** * Copyright (c) 2004 Composent, Inc. and others. * 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: * Composent, Inc. - initial API and implementation *****************************************************************************/ package org.eclipse.ecf.presence.roster; import org.eclipse.core.runtime.Assert; import org.eclipse.core.runtime.IAdapterManager; import org.eclipse.ecf.internal.presence.PresencePlugin; /** * Base class implmentation of {@link IRosterItem} super interface. This class * is a superclass for the {@link RosterEntry} and {@link RosterGroup} classes. */ public class RosterItem implements IRosterItem { protected String name; protected IRosterItem parent; protected RosterItem() { // protected root constructor } public RosterItem(IRosterItem parent, String name) { Assert.isNotNull(name); this.parent = parent; this.name = name; } /* * (non-Javadoc) * * @see org.eclipse.ecf.presence.roster.IRosterItem#getName() */ public String getName() { return name; } /* * (non-Javadoc) * * @see org.eclipse.ecf.presence.roster.IRosterItem#getParent() */ public IRosterItem getParent() { return parent; } /* * (non-Javadoc) * * @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class) */ public Object getAdapter(Class adapter) { if (adapter.isInstance(this)) { return this; } IAdapterManager adapterManager = PresencePlugin.getDefault().getAdapterManager(); if (adapterManager == null) return null; return adapterManager.loadAdapter(this, adapter.getName()); } public IRoster getRoster() { if (this instanceof IRoster) return (IRoster) this; IRosterItem p = getParent(); while (p != null && !(p instanceof IRoster)) p = p.getParent(); return (IRoster) p; } }