/******************************************************************************* * Copyright (c) 2011, 2014 Frank Appel 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: * Frank Appel - initial API and implementation * EclipseSource - bug 348056: Eliminate compiler warnings ******************************************************************************/ package org.eclipse.rap.rwt.testfixture.internal.engine; import java.util.Arrays; import java.util.List; import org.eclipse.rap.rwt.RWT; import org.eclipse.rap.rwt.internal.theme.Theme; import org.eclipse.rap.rwt.internal.theme.ThemeManager; public class ThemeManagerHelper { private static ThemeManager themeManager; public static void resetThemeManager() { if( isThemeManagerAvailable() ) { doThemeManagerReset(); } } public static void resetThemeManagerIfNeeded() { if( isThemeManagerResetNeeded() ) { doThemeManagerReset(); } } public static ThemeManager ensureThemeManager() { if( themeManager == null ) { themeManager = new TestThemeManager(); } return themeManager; } private static void doThemeManagerReset() { ( ( TestThemeManager )themeManager ).resetInstanceInTestCases(); } private static boolean isThemeManagerResetNeeded() { boolean result = isThemeManagerAvailable(); if( result ) { List<String> registeredThemeIds = Arrays.asList( themeManager.getRegisteredThemeIds() ); if( registeredThemeIds.size() == 2 ) { result = !registeredThemeIds.contains( ThemeManager.FALLBACK_THEME_ID ) || !registeredThemeIds.contains( RWT.DEFAULT_THEME_ID ); } } return result; } private static boolean isThemeManagerAvailable() { return themeManager != null; } public static class TestThemeManager extends ThemeManager { boolean initialized; boolean activated; boolean deactivated; @Override public void initialize() { if( !initialized ) { // Register empty default theme. Execute tests against fall-back theme. registerTheme( new Theme( RWT.DEFAULT_THEME_ID, "RAP Default Theme", null ) ); initialized = true; } } @Override public void activate() { if( !activated ) { super.activate(); activated = true; } deactivated = false; } @Override public void deactivate() { // ignore reset for test cases to improve performance deactivated = true; } @Override public String[] getRegisteredThemeIds() { String[] result = new String[ 0 ]; if( !deactivated ) { result = super.getRegisteredThemeIds(); } return result; } public void resetInstanceInTestCases() { initialized = false; activated = false; super.deactivate(); } } }