blob: 3c9e16d77197ad4a2eb7e6e24d8f9091b9947f93 [file] [log] [blame]
/****************************************************************************
* 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.ui;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.ecf.presence.roster.IRoster;
import org.eclipse.ecf.presence.roster.IRosterEntry;
import org.eclipse.ecf.presence.roster.IRosterGroup;
import org.eclipse.ecf.presence.roster.IRosterItem;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.ui.model.IWorkbenchAdapter2;
/**
* Adapter factory for adapter to IWorkbenchAdapter2 (foreground and background
* color and font for labels). Subclasses may override as appropriate.
*/
public class RosterWorkbenchAdapter2Factory implements IAdapterFactory {
private IWorkbenchAdapter2 rosterAdapter = new IWorkbenchAdapter2() {
public RGB getBackground(Object element) {
return getBackgroundForRoster((IRoster) element);
}
public FontData getFont(Object element) {
return getFontForRoster((IRoster) element);
}
public RGB getForeground(Object element) {
return getForegroundForRoster((IRoster) element);
}
};
private IWorkbenchAdapter2 rosterGroupAdapter = new IWorkbenchAdapter2() {
public RGB getBackground(Object element) {
return getBackgroundForRosterGroup((IRosterGroup) element);
}
public FontData getFont(Object element) {
return getFontForRosterGroup((IRosterGroup) element);
}
public RGB getForeground(Object element) {
return getForegroundForRosterGroup((IRosterGroup) element);
}
};
private IWorkbenchAdapter2 rosterItemAdapter = new IWorkbenchAdapter2() {
public RGB getBackground(Object element) {
return getBackgroundForRosterItem((IRosterItem) element);
}
public FontData getFont(Object element) {
return getFontForRosterItem((IRosterItem) element);
}
public RGB getForeground(Object element) {
return getForegroundForRosterItem((IRosterItem) element);
}
};
private IWorkbenchAdapter2 rosterEntryAdapter = new IWorkbenchAdapter2() {
public RGB getBackground(Object element) {
return getBackgroundForRosterEntry((IRosterEntry) element);
}
public FontData getFont(Object element) {
return getFontForRosterEntry((IRosterEntry) element);
}
public RGB getForeground(Object element) {
return getForegroundForRosterEntry((IRosterEntry) element);
}
};
public Object getAdapter(Object adaptableObject, Class adapterType) {
if (adapterType.equals(IWorkbenchAdapter2.class)) {
if (adaptableObject instanceof IRoster)
return rosterAdapter;
if (adaptableObject instanceof IRosterGroup)
return rosterGroupAdapter;
if (adaptableObject instanceof IRosterEntry)
return rosterEntryAdapter;
if (adaptableObject instanceof IRosterItem)
return rosterItemAdapter;
}
return null;
}
/**
* @param element
* to get foreground color for. This implementation returns null,
* meaning that the default color will be used. Subclasses should
* override as appropriate.
* @return RGB to use as foreground color. If <code>null</code> use
* default color
*/
protected RGB getForegroundForRosterEntry(IRosterEntry element) {
return null;
}
/**
* @param element
* to get fontdata for. This implementation returns null, meaning
* that the default font will be used. Subclasses should override
* as appropriate.
* @return FontData to use for rendering given element. If <code>null</code>
* use default FontData
*/
protected FontData getFontForRosterEntry(IRosterEntry element) {
return null;
}
/**
* @param element
* to get background color for. This implementation returns null,
* meaning that the default color will be used. Subclasses should
* override as appropriate.
* @return RGB to use as background color. If <code>null</code> use
* default color
*/
protected RGB getBackgroundForRosterEntry(IRosterEntry element) {
return null;
}
/**
* @param element
* to get foreground color for. This implementation returns null,
* meaning that the default color will be used. Subclasses should
* override as appropriate.
* @return RGB to use as foreground color. If <code>null</code> use
* default color
*/
protected RGB getForegroundForRosterItem(IRosterItem element) {
return null;
}
/**
* @param element
* to get fontdata for. This implementation returns null, meaning
* that the default font will be used. Subclasses should override
* as appropriate.
* @return FontData to use for rendering given element. If <code>null</code>
* use default FontData
*/
protected FontData getFontForRosterItem(IRosterItem element) {
return null;
}
/**
* @param element
* to get background color for. This implementation returns null,
* meaning that the default color will be used. Subclasses should
* override as appropriate.
* @return RGB to use as background color. If <code>null</code> use
* default color
*/
protected RGB getBackgroundForRosterItem(IRosterItem element) {
return null;
}
/**
* @param element
* to get foreground color for. This implementation returns null,
* meaning that the default color will be used. Subclasses should
* override as appropriate.
* @return RGB to use as foreground color. If <code>null</code> use
* default color
*/
protected RGB getForegroundForRosterGroup(IRosterGroup element) {
return null;
}
/**
* @param element
* to get fontdata for. This implementation returns null, meaning
* that the default font will be used. Subclasses should override
* as appropriate.
* @return FontData to use for rendering given element. If <code>null</code>
* use default FontData
*/
protected FontData getFontForRosterGroup(IRosterGroup element) {
return null;
}
/**
* @param element
* to get background color for.
* @return RGB to use as background color. If <code>null</code> use
* default color
*/
protected RGB getBackgroundForRosterGroup(IRosterGroup element) {
return null;
}
/**
* @param element
* to get foreground color for.
* @return RGB to use as foreground color. If <code>null</code> use
* default color
*/
protected RGB getForegroundForRoster(IRoster element) {
return null;
}
/**
* @param element
* to get fontdata for. This implementation returns null, meaning
* that the default font will be used. Subclasses should override
* as appropriate.
* @return FontData to use for rendering given element. If <code>null</code>
* use default FontData
*/
protected FontData getFontForRoster(IRoster element) {
return null;
}
/**
* @param element
* to get background color for. This implementation returns null,
* meaning that the default color will be used. Subclasses should
* override as appropriate.
* @return RGB to use as background color. If <code>null</code> use
* default color
*/
protected RGB getBackgroundForRoster(IRoster element) {
return null;
}
public Class[] getAdapterList() {
return new Class[] { IWorkbenchAdapter2.class };
}
}