/** * Gets singleton instance. * * @return Singleton instance. */ public synchronized static TimelineEngine getInstance() { if (TimelineEngine.instance == null) { TimelineEngine.instance = new TimelineEngine(); } return TimelineEngine.instance; }
void runTimelineOperation(Timeline timeline, TimelineOperationKind operationKind, Runnable operationRunnable) { synchronized (LOCK) { this.getAnimatorThread(); switch (operationKind) { case CANCEL: this.cancelTimeline(timeline); return; case END: this.endTimeline(timeline); return; case RESUME: this.resumeTimeline(timeline); return; case SUSPEND: this.suspendTimeline(timeline); return; case ABORT: this.abortTimeline(timeline); return; } operationRunnable.run(); } }
private void checkCallbackThread() { if (!callbackQueue.isEmpty()) { getCallbackThread(); } }
private void checkAnimatorThread() { if (!isTimelinesEmpty()) { getAnimatorThread(); } }
void playScenario(TimelineScenario scenario) { synchronized (LOCK) { getAnimatorThread(); Set<TimelineScenario.TimelineScenarioActor> readyActors = scenario .getReadyActors(); // System.err.println(Thread.currentThread().getName() + // " : adding"); this.runningScenarios.add(scenario); checkAnimatorThread(); for (TimelineScenario.TimelineScenarioActor readyActor : readyActors) { readyActor.play(); } } }
void playLoop(Timeline timeline, long msToSkip) { synchronized (LOCK) { getAnimatorThread(); if (!timeline.isLooping) { throw new IllegalArgumentException( Timeline existing = this.getRunningTimeline(timeline); if (existing == null) { TimelineState oldState = timeline.getState(); timeline.toCancelAtCycleBreak = false; this.addTimeline(timeline); this.callbackCallTimelineStateChanged(timeline, oldState); } else { existing.toCancelAtCycleBreak = false;
/** * Resume the specified timeline instance. * * @param timeline * Timeline to resume. */ private void resumeTimeline(Timeline timeline) { getAnimatorThread(); if (this.runningTimelines.contains(timeline)) { TimelineState oldState = timeline.getState(); if (oldState != TimelineState.SUSPENDED) return; timeline.popState(); this.callbackCallTimelineStateChanged(timeline, oldState); } }
this.callbackCallTimelineStateChanged(timeline, TimelineState.READY); this.callbackCallTimelineStateChanged( timeline, TimelineState.PLAYING_FORWARD); timeline.pushState(TimelineState.READY); timeline.timeUntilPlay = timeline.cycleDelay; this.callbackCallTimelineStateChanged( timeline, TimelineState.PLAYING_FORWARD); this.callbackCallTimelineStateChanged( timeline, TimelineState.PLAYING_FORWARD); this.callbackCallTimelineStateChanged(timeline, TimelineState.PLAYING_REVERSE); this.callbackCallTimelineStateChanged(timeline, oldState); timeline.popState(); if (timeline.getState() != TimelineState.IDLE) { this.callbackCallTimelineStateChanged(timeline, TimelineState.DONE); } else { this.callbackCallTimelinePulse(timeline);
synchronized (LOCK) { try { if (isTimelinesEmpty()) { return; this.callbackCallTimelineStateChanged(timeline, TimelineState.READY); this.callbackCallTimelineStateChanged( timeline, TimelineState.PLAYING_FORWARD); timeline.pushState(TimelineState.READY); timeline.timeUntilPlay = timeline.cycleDelay; this.callbackCallTimelineStateChanged( timeline, TimelineState.PLAYING_FORWARD); this.callbackCallTimelineStateChanged( timeline, TimelineState.PLAYING_FORWARD); this.callbackCallTimelineStateChanged(timeline, TimelineState.PLAYING_REVERSE); this.callbackCallTimelineStateChanged(timeline, oldState); timeline.popState(); if (timeline.getState() != TimelineState.IDLE) {
void runTimelineScenario(TimelineScenario timelineScenario, Runnable timelineScenarioRunnable) { synchronized (LOCK) { this.getAnimatorThread(); timelineScenarioRunnable.run(); } }
void playLoop(Timeline timeline, long msToSkip) { synchronized (LOCK) { getAnimatorThread(); if (!timeline.isLooping) { throw new IllegalArgumentException( Timeline existing = this.getRunningTimeline(timeline); if (existing == null) { TimelineState oldState = timeline.getState(); timeline.toCancelAtCycleBreak = false; this.addTimeline(timeline); this.callbackCallTimelineStateChanged(timeline, oldState); } else { existing.toCancelAtCycleBreak = false;
/** * Resume the specified timeline instance. * * @param timeline * Timeline to resume. */ private void resumeTimeline(Timeline timeline) { getAnimatorThread(); if (this.runningTimelines.contains(timeline)) { TimelineState oldState = timeline.getState(); if (oldState != TimelineState.SUSPENDED) return; timeline.popState(); this.callbackCallTimelineStateChanged(timeline, oldState); } }
this.callbackCallTimelineStateChanged(timeline, TimelineState.READY); this.callbackCallTimelineStateChanged( timeline, TimelineState.PLAYING_FORWARD); timeline.pushState(TimelineState.READY); timeline.timeUntilPlay = timeline.cycleDelay; this.callbackCallTimelineStateChanged( timeline, TimelineState.PLAYING_FORWARD); this.callbackCallTimelineStateChanged( timeline, TimelineState.PLAYING_FORWARD); this.callbackCallTimelineStateChanged(timeline, TimelineState.PLAYING_REVERSE); this.callbackCallTimelineStateChanged(timeline, oldState); timeline.popState(); if (timeline.getState() != TimelineState.IDLE) { this.callbackCallTimelineStateChanged(timeline, TimelineState.DONE); } else { this.callbackCallTimelinePulse(timeline);
void runTimelineScenario(TimelineScenario timelineScenario, Runnable timelineScenarioRunnable) { synchronized (LOCK) { this.getAnimatorThread(); timelineScenarioRunnable.run(); } // this.waitingTimelineScenarios.add(timelineScenarioRunnable); // this.waitingTimelineScenariosMap.put(timelineScenario, // timelineScenarioRunnable); }
void playLoop(Timeline timeline, long msToSkip) { synchronized (LOCK) { getAnimatorThread(); if (!timeline.isLooping) { throw new IllegalArgumentException( Timeline existing = this.getRunningTimeline(timeline); if (existing == null) { TimelineState oldState = timeline.getState(); timeline.toCancelAtCycleBreak = false; this.addTimeline(timeline); this.callbackCallTimelineStateChanged(timeline, oldState); } else {
void runTimelineOperation(Timeline timeline, TimelineOperationKind operationKind, Runnable operationRunnable) { synchronized (LOCK) { this.getAnimatorThread(); switch (operationKind) { case CANCEL: this.cancelTimeline(timeline); return; case END: this.endTimeline(timeline); return; case RESUME: this.resumeTimeline(timeline); return; case SUSPEND: this.suspendTimeline(timeline); return; case ABORT: this.abortTimeline(timeline); return; } operationRunnable.run(); } }
/** * Resume the specified timeline instance. * * @param timeline * Timeline to resume. */ private void resumeTimeline(Timeline timeline) { getAnimatorThread(); if (this.runningTimelines.contains(timeline)) { TimelineState oldState = timeline.getState(); if (oldState != TimelineState.SUSPENDED) return; timeline.popState(); this.callbackCallTimelineStateChanged(timeline, oldState); } }
void runTimelineScenario(TimelineScenario timelineScenario, Runnable timelineScenarioRunnable) { synchronized (LOCK) { this.getAnimatorThread(); timelineScenarioRunnable.run(); } }
/** * Simple constructor. Defined private for singleton. * * @see #getInstance() */ private TimelineEngine() { this.runningTimelines = new HashSet<Timeline>(); this.runningScenarios = new HashSet<TimelineScenario>(); this.callbackQueue = new LinkedBlockingQueue<Runnable>(); this.callbackThread = this.getCallbackThread(); }
/** * Gets singleton instance. * * @return Singleton instance. */ public synchronized static TimelineEngine getInstance() { if (TimelineEngine.instance == null) { TimelineEngine.instance = new TimelineEngine(); } return TimelineEngine.instance; }