/* * � Copyright IBM Corp. 2010, 2013 * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.ibm.xsp.extlib.util; import javax.faces.context.FacesContext; import com.ibm.xsp.context.FacesContextEx; import com.ibm.xsp.core.Version; import com.ibm.xsp.stylekit.StyleKitImpl; import com.ibm.xsp.stylekit.ThemeControl; /** * Some utility used to deal with themes. */ public class ThemeUtil { public static final Version ONEUI_NONE = new Version(0, 0); // Not OneUI public static final Version ONEUI_V1 = new Version(1, 0); // OneUI v1 - old, should not be used anymore public static final Version ONEUI_V2 = new Version(2, 0); // OneUI v2 public static final Version ONEUI_V21 = new Version(2, 1); // OneUI v2.1 (8.5.3 and above) public static final Version ONEUI_V3 = new Version(3, 0); // OneUI v3.0 (9.0.0 and above) public static final Version ONEUI_V302 = new Version(3, 0, 2); // OneUI v3.0.2 (9.0.0 and above) public static final Version ONEUI_IDX_V13 = new Version(1, 3, 0, "idx"); // $NON-NLS-1$ // OneUI IDX v1.3 (9.0.1 and above) /** * No longer needed - was for pre-853 runtime. */ @Deprecated public static String getDefaultRendererType(ThemeControl c, String defaultRenderer) { return defaultRenderer; } public static Version getOneUIVersion(FacesContext context) { return getOneUIVersion((FacesContextEx)context); } public static Version getOneUIVersion(FacesContextEx context) { Version v = (Version)context.getAttributes().get("extlib.oneui.Version"); // $NON-NLS-1$ if(v!=null) { return v; } v = findOneUIVersion(context); context.getAttributes().put("extlib.oneui.Version", v); // $NON-NLS-1$ return v; } private static Version findOneUIVersion(FacesContextEx ctxEx) { for(StyleKitImpl st = (StyleKitImpl)ctxEx.getStyleKit(); st!=null; st=st.getParent()) { if(st.getName().startsWith("oneui")) { // $NON-NLS-1$ String oneui = st.getName(); if(oneui.equals("oneui")) { // $NON-NLS-1$ return ONEUI_V1; } if(oneui.equals("oneuiv2") || oneui.startsWith("oneuiv2_")) { // $NON-NLS-1$ $NON-NLS-2$ return ONEUI_V2; } if(oneui.equals("oneuiv2.1") || oneui.startsWith("oneuiv2.1_")) { // $NON-NLS-1$ $NON-NLS-2$ return ONEUI_V21; } if(oneui.equals("oneuiv3") || oneui.startsWith("oneuiv3_")) { // $NON-NLS-1$ $NON-NLS-2$ return ONEUI_V3; } if(oneui.equals("oneuiv3.0.2") || oneui.startsWith("oneuiv3.0.2_")) { // $NON-NLS-1$ $NON-NLS-2$ return ONEUI_V302; } if(oneui.equals("oneui_idx_v1.3") || oneui.startsWith("oneui_idx_v1.3_")) { // $NON-NLS-1$ $NON-NLS-2$ return ONEUI_IDX_V13; } } } // OneUI is not enabled return ONEUI_NONE; } public static boolean isOneUITheme(FacesContextEx context) { return getOneUIVersion(context)!=ONEUI_NONE; } public static boolean isOneUIVersion(FacesContext context, int major, int minor, int micro) { Version v = getOneUIVersion(context); if(v.getMajor()==major && v.getMinor()==minor && v.getMicro()==micro) { return true; } return false; } public static boolean isOneUIVersion(FacesContext context, int major, int minor) { Version v = getOneUIVersion(context); if(v.getMajor()==major && v.getMinor()==minor) { return true; } return false; } public static boolean isOneUIVersion(int major, int minor, int micro) { return isOneUIVersion(FacesContext.getCurrentInstance(), major, minor, micro); } public static boolean isOneUIVersion(int major, int minor) { return isOneUIVersion(FacesContext.getCurrentInstance(), major, minor); } public static boolean isOneUIVersionAtLeast(FacesContext context, int major, int minor) { Version v = getOneUIVersion(context); if(v.getMajor()>major) { return true; } if(v.getMajor()==major) { if(v.getMinor()>=minor) { return true; } } return false; } public static boolean isOneUIVersionAtLeast(int major, int minor) { return isOneUIVersionAtLeast(FacesContext.getCurrentInstance(), major, minor); } }