001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.gui.animation; 003 004import java.util.Calendar; 005import java.util.Date; 006import java.util.GregorianCalendar; 007 008import org.openstreetmap.josm.data.preferences.BooleanProperty; 009 010/** 011 * Animation extension manager. Copied from Icedtea-Web. 012 * @author Jiri Vanek (Red Hat) 013 * @see <a href="http://icedtea.classpath.org/hg/icedtea-web/rev/87d3081ab573">Initial commit</a> 014 * @since 14578 015 */ 016public final class AnimationExtensionManager { 017 018 private static volatile AnimationExtension currentExtension; 019 private static final BooleanProperty PROP_ANIMATION = new BooleanProperty("gui.start.animation", true); 020 021 private AnimationExtensionManager() { 022 // Hide default constructor for utility classes 023 } 024 025 /** 026 * Returns the current animation extension. 027 * @return the current animation extension 028 */ 029 public static AnimationExtension getExtension() { 030 if (currentExtension == null) { 031 currentExtension = Boolean.TRUE.equals(PROP_ANIMATION.get()) && isChristmas() ? new ChristmasExtension() 032 : new NoExtension(); 033 } 034 return currentExtension; 035 } 036 037 private static boolean isChristmas() { 038 Calendar c = new GregorianCalendar(); 039 c.setTime(new Date()); 040 return c.get(Calendar.DAY_OF_YEAR) > 350; 041 } 042}