blob: e55f58a060e0774bf60d56cf217f51546d8548b5 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2005 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.ui.internal.themes;
import java.util.Set;
import org.eclipse.core.commands.common.EventManager;
import org.eclipse.jface.resource.ColorRegistry;
import org.eclipse.jface.resource.FontRegistry;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.ui.themes.ITheme;
/**
* @since 3.0
*/
public class CascadingTheme extends EventManager implements ITheme {
private CascadingFontRegistry fontRegistry;
private CascadingColorRegistry colorRegistry;
private ITheme currentTheme;
private IPropertyChangeListener listener = new IPropertyChangeListener() {
public void propertyChange(PropertyChangeEvent event) {
fire(event);
}
};
/**
* @param colorRegistry
* @param fontRegistry
*/
public CascadingTheme(ITheme currentTheme,
CascadingColorRegistry colorRegistry,
CascadingFontRegistry fontRegistry) {
this.currentTheme = currentTheme;
this.colorRegistry = colorRegistry;
this.fontRegistry = fontRegistry;
fontRegistry.addListener(listener);
colorRegistry.addListener(listener);
}
/**
* @param event
*/
protected void fire(PropertyChangeEvent event) {
Object[] listeners = getListeners();
for (int i = 0; i < listeners.length; i++) {
((IPropertyChangeListener) listeners[i]).propertyChange(event);
}
}
/* (non-Javadoc)
* @see org.eclipse.ui.themes.ITheme#addPropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
*/
public void addPropertyChangeListener(IPropertyChangeListener listener) {
addListenerObject(listener);
}
/* (non-Javadoc)
* @see org.eclipse.ui.themes.ITheme#removePropertyChangeListener(org.eclipse.jface.util.IPropertyChangeListener)
*/
public void removePropertyChangeListener(IPropertyChangeListener listener) {
removeListenerObject(listener);
}
/* (non-Javadoc)
* @see org.eclipse.ui.themes.ITheme#getId()
*/
public String getId() {
return currentTheme.getId();
}
/* (non-Javadoc)
* @see org.eclipse.ui.themes.ITheme#getLabel()
*/
public String getLabel() {
return currentTheme.getLabel();
}
/* (non-Javadoc)
* @see org.eclipse.ui.themes.ITheme#getColorRegistry()
*/
public ColorRegistry getColorRegistry() {
return colorRegistry;
}
/* (non-Javadoc)
* @see org.eclipse.ui.themes.ITheme#getFontRegistry()
*/
public FontRegistry getFontRegistry() {
return fontRegistry;
}
/* (non-Javadoc)
* @see org.eclipse.ui.themes.ITheme#dispose()
*/
public void dispose() {
colorRegistry.removeListener(listener);
fontRegistry.removeListener(listener);
}
/* (non-Javadoc)
* @see org.eclipse.ui.themes.ITheme#getString(java.lang.String)
*/
public String getString(String key) {
return currentTheme.getString(key);
}
/* (non-Javadoc)
* @see org.eclipse.ui.themes.ITheme#getInt(java.lang.String)
*/
public int getInt(String key) {
return currentTheme.getInt(key);
}
/* (non-Javadoc)
* @see org.eclipse.ui.themes.ITheme#getBoolean(java.lang.String)
*/
public boolean getBoolean(String key) {
return currentTheme.getBoolean(key);
}
/* (non-Javadoc)
* @see org.eclipse.ui.themes.ITheme#keySet()
*/
public Set keySet() {
return currentTheme.keySet();
}
}