/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.gui.resources.internal;
import org.apache.commons.logging.LogFactory;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import de.rcenvironment.core.gui.resources.api.ColorManager;
import de.rcenvironment.core.gui.resources.api.ComponentImageManager;
import de.rcenvironment.core.gui.resources.api.FontManager;
import de.rcenvironment.core.gui.resources.api.ImageManager;
/**
* Standard bundle activator.
*
* @author Robert Mischke
*/
public class Activator implements BundleActivator {
/**
* Creates an {@link ImageManager} on startup.
*
* @param bundleContext (not used)
*/
@Override
public void start(BundleContext bundleContext) {
synchronized (ImageManager.class) {
ImageManager instance = ImageManager.getInstance();
if (instance != null) {
throw new IllegalStateException("Image manager already present");
}
ImageManager.setInstance(new ImageManagerImpl());
}
synchronized (FontManager.class) {
FontManager instance = FontManager.getInstance();
if (instance != null) {
throw new IllegalStateException("Font manager already present");
}
FontManager.setInstance(new FontManagerImpl());
}
synchronized (ColorManager.class) {
ColorManager instance = ColorManager.getInstance();
if (instance != null) {
throw new IllegalStateException("Color manager already present");
}
ColorManager.setInstance(new ColorManagerImpl());
}
synchronized (ComponentImageManager.class) {
//TODO add check if component image manger is already present, see above ^
ComponentImageManager.getInstance();
}
}
/**
* Disposes the previously created {@link ImageManager} on shutdown.
*
* @param bundleContext (not used)
*/
@Override
public void stop(BundleContext bundleContext) {
synchronized (ImageManager.class) {
ImageManager oldInstance = ImageManager.getInstance();
if (oldInstance == null) {
// this can happen if initialization failed, so don't throw another exception
LogFactory.getLog(getClass()).warn("No image manager present on shutdown");
return;
}
ImageManager.setInstance(null);
((ImageManagerImpl) oldInstance).dispose();
}
synchronized (FontManager.class) {
FontManager oldInstance = FontManager.getInstance();
if (oldInstance == null) {
// this can happen if initialization failed, so don't throw another exception
LogFactory.getLog(getClass()).warn("No font manager present on shutdown");
return;
}
ImageManager.setInstance(null);
((FontManagerImpl) oldInstance).dispose();
}
synchronized (ColorManager.class) {
ColorManager oldInstance = ColorManager.getInstance();
if (oldInstance == null) {
// this can happen if initialization failed, so don't throw another exception
LogFactory.getLog(getClass()).warn("No color manager present on shutdown");
return;
}
ColorManager.setInstance(null);
((ColorManagerImpl) oldInstance).dispose();
}
}
}