@Override public FlavorDescriptor getFlavor(String flavorName) { if (flavorName == null) { return null; } return themeStylingService.getFlavor(flavorName); }
@Override public LogoDescriptor getLogo(String flavorName) { if (flavorName == null) { return null; } return themeStylingService.getLogo(flavorName); }
@Override public FlavorDescriptor getFlavor(String flavorName) { if (flavorReg != null) { FlavorDescriptor flavor = flavorReg.getFlavor(flavorName); if (flavor != null) { FlavorDescriptor clone = flavor.clone(); clone.setLogo(computeLogo(flavor, new ArrayList<>())); clone.setPalettePreview(computePalettePreview(flavor, new ArrayList<>())); clone.setFavicons(computeIcons(flavor, new ArrayList<>())); return clone; } } return null; }
@Override public void unregisterContribution(Object contribution, String extensionPoint, ComponentInstance contributor) { if (contribution instanceof FlavorDescriptor) { FlavorDescriptor flavor = (FlavorDescriptor) contribution; flavorReg.removeContribution(flavor); } else if (contribution instanceof Resource) { Resource resource = (Resource) contribution; unregisterResource(resource); } else if (contribution instanceof SimpleStyle) { SimpleStyle style = (SimpleStyle) contribution; unregisterResource(getResourceFromStyle(style)); } else if (contribution instanceof PageDescriptor) { PageDescriptor page = (PageDescriptor) contribution; if (page.hasResources()) { WebResourceManager wrm = Framework.getService(WebResourceManager.class); wrm.unregisterResourceBundle(page.getComputedResourceBundle()); } pageReg.removeContribution(page); } else if (contribution instanceof NegotiationDescriptor) { NegotiationDescriptor neg = (NegotiationDescriptor) contribution; negReg.removeContribution(neg); } else { log.error(String.format( "Unknown contribution to the theme " + "styling service, extension point '%s': '%s", extensionPoint, contribution)); } }
protected List<IconDescriptor> computeIcons(FlavorDescriptor flavor, List<String> flavors) { if (flavor != null) { List<IconDescriptor> localIcons = flavor.getFavicons(); if (localIcons == null || localIcons.isEmpty()) { String extendsFlavorName = flavor.getExtendsFlavor(); if (!StringUtils.isBlank(extendsFlavorName)) { if (flavors.contains(extendsFlavorName)) { // cyclic dependency => abort log.error("Cyclic dependency detected in flavor '" + flavor.getName() + "' hierarchy"); return null; } else { // retrieved the extended icons flavors.add(flavor.getName()); FlavorDescriptor extendedFlavor = getFlavor(extendsFlavorName); if (extendedFlavor != null) { localIcons = computeIcons(extendedFlavor, flavors); } else { log.warn("Extended flavor '" + extendsFlavorName + "' not found"); } } } } return localIcons; } return null; }
protected Map<String, Map<String, String>> getPresetsByCat(FlavorDescriptor flavor) { String flavorName = flavor.getName(); List<FlavorPresets> presets = computePresets(flavor, new ArrayList<>()); Map<String, Map<String, String>> presetsByCat = new HashMap<>(); if (presets != null) { for (FlavorPresets myPreset : presets) { String content = myPreset.getContent(); if (content == null) { log.error("Null content for preset with source '" + myPreset.getSrc() + "' in flavor '" + flavorName + "'"); } else { String cat = myPreset.getCategory(); Map<String, String> allEntries; if (presetsByCat.containsKey(cat)) { Map<String, String> newEntries = PaletteParser.parse(content.getBytes(), myPreset.getSrc()); if (newEntries != null) { allEntries.putAll(newEntries); + "preset with source '%s' in flavor '%s'", myPreset.getSrc(), flavorName), e);
@Override public WroModel create() { WroModel model = new WroModel(); ThemeStylingService ts = Framework.getService(ThemeStylingService.class); WebResourceManager ws = Framework.getService(WebResourceManager.class); ResourceContextImpl rcontext = new ResourceContextImpl(); List<PageDescriptor> pages = ts.getPages(); for (PageDescriptor page : pages) { String groupName = page.getName(); Group group = new Group(groupName); List<String> bundleNames = page.getResourceBundles(); for (String bundleName : bundleNames) { List<Resource> resources = ws.getResources(rcontext, bundleName, ResourceType.any.name()); if (resources != null) { for (Resource resource : resources) { ro.isdc.wro.model.resource.Resource wr = toWroResource(bundleName, resource); if (wr != null) { group.addResource(wr); } } } } model.addGroup(group); } return model; }
protected PalettePreview computePalettePreview(FlavorDescriptor flavor, List<String> flavors) { if (flavor != null) { PalettePreview localPalette = flavor.getPalettePreview(); if (localPalette == null) { String extendsFlavorName = flavor.getExtendsFlavor(); if (!StringUtils.isBlank(extendsFlavorName)) { if (flavors.contains(extendsFlavorName)) { // cyclic dependency => abort log.error("Cyclic dependency detected in flavor '" + flavor.getName() + "' hierarchy"); return null; } else { // retrieved the extended colors flavors.add(flavor.getName()); FlavorDescriptor extendedFlavor = getFlavor(extendsFlavorName); if (extendedFlavor != null) { localPalette = computePalettePreview(extendedFlavor, flavors); } else { log.warn("Extended flavor '" + extendsFlavorName + "' not found"); } } } } return localPalette; } return null; }
protected LogoDescriptor computeLogo(FlavorDescriptor flavor, List<String> flavors) { if (flavor != null) { LogoDescriptor localLogo = flavor.getLogo(); if (localLogo == null) { String extendsFlavorName = flavor.getExtendsFlavor(); if (!StringUtils.isBlank(extendsFlavorName)) { if (flavors.contains(extendsFlavorName)) { // cyclic dependency => abort log.error("Cyclic dependency detected in flavor '" + flavor.getName() + "' hierarchy"); return null; } else { // retrieved the extended logo flavors.add(flavor.getName()); FlavorDescriptor extendedFlavor = getFlavor(extendsFlavorName); if (extendedFlavor != null) { localLogo = computeLogo(extendedFlavor, flavors); } else { log.warn("Extended flavor '" + extendsFlavorName + "' not found"); } } } } return localLogo; } return null; }
protected List<FlavorPresets> computePresets(FlavorDescriptor flavor, List<String> flavors) { List<FlavorPresets> presets = new ArrayList<>(); if (flavor != null) { List<FlavorPresets> localPresets = flavor.getPresets(); if (localPresets != null) { presets.addAll(localPresets); } String extendsFlavorName = flavor.getExtendsFlavor(); if (!StringUtils.isBlank(extendsFlavorName)) { if (flavors.contains(extendsFlavorName)) { // cyclic dependency => abort log.error("Cyclic dependency detected in flavor '" + flavor.getName() + "' hierarchy"); return presets; } else { // retrieve the extended presets flavors.add(flavor.getName()); FlavorDescriptor extendedFlavor = getFlavor(extendsFlavorName); if (extendedFlavor != null) { List<FlavorPresets> parentPresets = computePresets(extendedFlavor, flavors); if (parentPresets != null) { presets.addAll(0, parentPresets); } } else { log.warn("Extended flavor '" + extendsFlavorName + "' not found"); } } } } return presets; }
/** * Returns favicons for current flavor. * * @since 7.4 */ public List<IconDescriptor> getFavicons() { if (currentFavicons == null) { String flavor = getCurrentFlavor(); FlavorDescriptor f = themeStylingService.getFlavor(flavor); currentFavicons = new ArrayList<IconDescriptor>(); if (f != null) { List<IconDescriptor> icons = f.getFavicons(); currentFavicons.addAll(icons); } } return currentFavicons; }
@Override public List<PageDescriptor> getPages() { List<PageDescriptor> pages = new ArrayList<>(); List<String> names = pageReg.getPageNames(); PageDescriptor globalPage = pageReg.getPage("*"); for (String name : names) { if ("*".equals(name)) { continue; } PageDescriptor page = pageReg.getPage(name); if (page != null) { // merge with global resources mergePage(page, globalPage); } pages.add(page); } return pages; }
@Override public List<FlavorDescriptor> getFlavors(String themePageName) { List<String> flavorNames = getFlavorNames(themePageName); if (flavorNames != null) { List<FlavorDescriptor> flavors = new ArrayList<>(); for (String flavorName : flavorNames) { FlavorDescriptor flavor = getFlavor(flavorName); if (flavor != null) { flavors.add(flavor); } } return flavors; } return null; }
@Override public Map<String, String> getPresetVariables(String flavorName) { Map<String, String> res = new HashMap<>(); FlavorDescriptor flavor = getFlavor(flavorName); if (flavor == null) { return res; } Map<String, Map<String, String>> presetsByCat = getPresetsByCat(flavor); for (String cat : presetsByCat.keySet()) { Map<String, String> entries = presetsByCat.get(cat); for (Map.Entry<String, String> entry : entries.entrySet()) { res.put(entry.getKey() + " (" + ThemeStylingService.FLAVOR_MARKER + " " + cat + ")", entry.getValue()); } } return res; }
@Override public String getDefaultTheme() { if (defaultPage == null) { defaultPage = themeStylingService.negotiate("jsfDefaultPage", FacesContext.getCurrentInstance()); } return defaultPage; }
@Override public String getResult(String target, Object context) { FacesContext faces = null; if (context instanceof FacesContext) { faces = (FacesContext) context; } else { return null; } String theme = (String) faces.getExternalContext().getRequestMap().get(getProperty("negotiatedPageVariable")); if (theme != null) { ThemeStylingService service = Framework.getService(ThemeStylingService.class); return service.getDefaultFlavorName(theme); } return null; } }
public String getCurrentPage() { if (currentPage == null) { currentPage = themeStylingService.negotiate("jsfPage", FacesContext.getCurrentInstance()); if (currentPage == null) { // BBB currentPage = getDefaultTheme(); } } return currentPage; }
public String getCurrentFlavor() { if (currentFlavor == null) { // put current page name to request for flavor negotiation FacesContext faces = FacesContext.getCurrentInstance(); HttpServletRequest request = (HttpServletRequest) faces.getExternalContext().getRequest(); request.setAttribute("jsfPage", getCurrentPage()); currentFlavor = themeStylingService.negotiate("jsfFlavor", FacesContext.getCurrentInstance()); } return currentFlavor; }