001/* 002 * JGrapes Event Driven Framework 003 * Copyright (C) 2017-2018 Michael N. Lipp 004 * 005 * This program is free software; you can redistribute it and/or modify it 006 * under the terms of the GNU Affero General Public License as published by 007 * the Free Software Foundation; either version 3 of the License, or 008 * (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, but 011 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 012 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License 013 * for more details. 014 * 015 * You should have received a copy of the GNU Affero General Public License along 016 * with this program; if not, see <http://www.gnu.org/licenses/>. 017 */ 018 019package org.jgrapes.webconsole.jqueryui; 020 021import java.net.URL; 022import org.jgrapes.webconsole.base.ResourceNotFoundException; 023 024/** 025 * Represents a theme provider. 026 */ 027public abstract class ThemeProvider { 028 029 /** 030 * Return the id of the theme. 031 * 032 * @return the result 033 */ 034 public abstract String themeId(); 035 036 /** 037 * Return the name of the theme. The default implementation 038 * uses the theme id, replaces underscores with spaces and 039 * capitalizes the first character. 040 * 041 * @return the result 042 */ 043 @SuppressWarnings("PMD.UselessParentheses") 044 public String themeName() { 045 return (Character.toUpperCase(themeId().charAt(0)) 046 + themeId().substring(1)).replace('_', ' '); 047 } 048 049 /** 050 * Find the requested resource. 051 * 052 * @param name the resource name 053 * @return the data as input stream 054 */ 055 public URL getResource(String name) 056 throws ResourceNotFoundException { 057 URL resource = getClass().getResource(name); 058 if (resource == null) { 059 throw new ResourceNotFoundException(); 060 } 061 return resource; 062 } 063}