/******************************************************************************* * Copyright (c) 2012 AGETO Service GmbH 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: * Gunnar Wagenknecht - initial API and implementation *******************************************************************************/ package org.eclipse.gyrex.admin.ui.logback.internal; import org.eclipse.gyrex.logback.config.model.Appender; import org.eclipse.gyrex.logback.config.model.ConsoleAppender; import org.eclipse.gyrex.logback.config.model.FileAppender; import org.eclipse.gyrex.logback.config.model.LogbackConfig; import org.eclipse.gyrex.logback.config.model.Logger; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.resource.JFaceResources; import org.eclipse.jface.resource.LocalResourceManager; import org.eclipse.jface.resource.ResourceManager; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.swt.graphics.Image; import org.apache.commons.lang.text.StrBuilder; public class LogbackLabelProvider extends LabelProvider { /** serialVersionUID */ private static final long serialVersionUID = 1L; private LocalResourceManager manager; @Override public void dispose() { if (null != manager) { manager.dispose(); manager = null; } super.dispose(); } @Override public Image getImage(final Object element) { final ImageDescriptor descriptor = getImageDescriptor(element); if (descriptor != null) return getResourceManager().createImage(descriptor); return super.getImage(element); } private ImageDescriptor getImageDescriptor(final Object element) { if (element instanceof ConsoleAppender) return LogbackUiImages.getImageDescriptor(LogbackUiImages.IMG_CONSOLE_APPENDER); if (element instanceof Appender) { final Appender appender = (Appender) element; if (appender.canSift() && appender.isSeparateLogOutputsPerMdcProperty()) return LogbackUiImages.getImageDescriptor(LogbackUiImages.IMG_SIFTING_APPENDER); return LogbackUiImages.getImageDescriptor(LogbackUiImages.IMG_APPENDER); } if (element instanceof Logger) return LogbackUiImages.getImageDescriptor(LogbackUiImages.IMG_LOGGER); if (element instanceof DefaultLogger) // return LogbackUiImages.getImageDescriptor(LogbackUiImages.IMG_LOGGER); return null; return null; } private ResourceManager getResourceManager() { if (null == manager) { manager = new LocalResourceManager(JFaceResources.getResources()); } return manager; } @Override public String getText(final Object element) { if (element instanceof LogbackConfig) return "Loback Configuration"; if (element instanceof FileAppender) { final FileAppender fileAppender = (FileAppender) element; final StrBuilder text = new StrBuilder(); text.append(fileAppender.getName()); text.append(String.format(" (-> %s)", fileAppender.getFileName())); if (null != fileAppender.getThreshold()) { text.append(String.format(" [%s]", fileAppender.getThreshold())); } if (fileAppender.isSeparateLogOutputsPerMdcProperty()) { text.append(String.format(" [mdc:%s]", fileAppender.getSiftingMdcPropertyName())); } return text.toString(); } if (element instanceof Appender) return ((Appender) element).getName(); if (element instanceof Logger) { final Logger logger = (Logger) element; final StrBuilder text = new StrBuilder(); text.append(logger.getName()).append(": "); text.append(logger.getLevel()); if (!logger.isInheritOtherAppenders()) { text.append(" (not inheriting other appenders)"); } return text.toString(); } if (element instanceof DefaultLogger) return String.format("Default Level: %s", ((DefaultLogger) element).getLevel()); if (element instanceof DefaultLogger) return String.format("Default Log Level: %s", ((DefaultLogger) element).getLevel()); if (element instanceof AppenderReference) return ((AppenderReference) element).getAppenderRef(); return String.valueOf(element); } }