/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package io.neocdtv.simpleplayer.player; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author xix */ public class PlayerState { private final static Logger LOGGER = Logger.getLogger(PlayerState.class.getName()); private static PlayerState INSTANCE; private PlayerStateType currentState; public static PlayerState getInstance() { if (INSTANCE == null) { INSTANCE = new PlayerState(); } return INSTANCE; } private PlayerState() { final PlayerStateType initialPlayerState = PlayerStateType.LAUNCHED; LOGGER.log(Level.INFO, "initial player state: {0}", initialPlayerState); currentState = initialPlayerState; } private void setState(PlayerStateType newState) { StringBuilder msg = new StringBuilder("changing state: "); msg.append(currentState) .append(" -> ") .append(newState); LOGGER.log(Level.INFO, msg.toString()); this.currentState = newState; } public void setToStateLaunched() { setState(PlayerStateType.LAUNCHED); } public void setToStatePlaying() { setState(PlayerStateType.PLAYING); } public void setToStatePausing() { setState(PlayerStateType.PAUSING); } public boolean isInStatePlaying() { return PlayerStateType.PLAYING.equals(currentState); } public boolean isInStagePausing() { return PlayerStateType.PAUSING.equals(currentState); } public boolean isInStateLaunched() { return PlayerStateType.LAUNCHED.equals(currentState); } private enum PlayerStateType { LAUNCHED, PLAYING, PAUSING; } }