wiki:FLASH_CONTENT_BASIC_R3
Last modified 16 years ago Last modified on 09/11/09 16:35:29

Error: Macro BackLinksMenu(None) failed
compressed data is corrupt

Error: Macro TicketQuery(summary=FLASH_CONTENT_BASIC_R3, format=table, col=summary|owner|status|type|component|priority|effort|importance, rows=description|analysis_owners|analysis_reviewers|analysis_score|design_owners|design_reviewers|design_score|implementation_owners|implementation_reviewers|implementation_score|test_owners|test_reviewers|test_score|) failed
current transaction is aborted, commands ignored until end of transaction block

Analysis

Overview

In this revision of the task we should include a flash frame inside Sophie 2. The main goal is this frame to be fully interactive, however for this iteration we will only show this frame with no interaction implemented.

Task requirements

  • Create a prototype of a flash frame that allows flash movies to be shown inside a book.
    • At this point we'll have only the URL of swf file as resource, not the entire swf.
    • No sound will be supported.
    • The frame should be persisted (although the .swf file itself will not be).
  • Add 'Flash movie' item in the insert menu

Task result

The result should be source code.

Implementation idea

  • Create a new module org.sophie2.extra.func.flash
  • Use the functionality provided by the former revision of this task and GROUP_WRAPPERS_R0.

FLASH_CONTENT_BASIC_R1
FLASH_CONTENT_BASIC_R2
GROUP_WRAPPERS_R0

How to demo

  • Start the application.
  • Insert a flash frame.

Design

It was decided to use the module org.sophie2.extra.func.browser. In the class BrowserModule register the flash frame resource(FlashFrameR4) as an extension for ResourceR4, register the logic associated with the flash frame(FlashLogic) as an extension to SimpleOperation and register an insert menu item for flash frames(InsertFlashItem) as an extension to AutoVisualProvider.
Add new package org.sophie2.extra.func.browser.flash.

  • Create a new package org.sophie2.extra.func.browser.flash.bridge in which a class FlashNativeBridge resides. This should extend NativeBridge that is in org.sophie2.base.natlib. The FlashNativeBridge will perform the communication between the java and c++ part.
  • Create a new package org.sophie2.extra.func.browser.flash.messages
    • Create in it a class FlashMessages in which the ids of the responses and the commands are defined as public static final int fields. Also create factory methods to create the different types of messages in this class.
    • Create a class FlashSizeResponse in it that extends org.sophie2.base.natlib.interfaces.Response and that represents a response containing the current size of the flash player.
    • Create a class FlashFrameResponse in it that extends org.sophie2.base.natlib.interfaces.Response and that represents a response containing the current frame in the flash player.
    • Create a class FlashTimeToEventResponse in it that extends org.sophie2.base.natlib.interfaces.Response and that represents a response containing the time until the next flash event in milliseconds.
  • In the package org.sophie2.extra.func.browser.model
    • Create a class called FlashFrameH that extends FrameH and is the frame helper for the flash frame.
    • Create a class called FlashFrameR4 that extends FrameR4 and represents the resource associated with the flash frame.
  • In the package org.sophie2.extra.func.browser.flash.view
    • Create a class FlashFrameView that extends FrameView and constructs the associated scene element for the flash frame. In that class create a thread that redraws the flash frame when the time to the next event has expired(i.e. the current frame in the flash player has changed).
    • Create a class InsertFlashItem that extends AppMenuItem and represents the insert menu entry associated with the flash frame.
    • Create an enumeration FlashLogic that extends OperationDef and encapsulates the logic behind the actions performed on a flash frame.
    • Create a class FlashHaloButton in that package that extends ClickHaloButton. This halo button should provide the change url functionality.
  • Create a package org.sophi2.extra.func.browser.flash.util
    • Create a class FlashHandler in that package that represents a wrapper for FlashNativeBridge and provides an easier interface.

Test can be found here [6265]

Implementation

(Describe and link the implementation results here (from the wiki or the repository).)

Testing

(Place the testing results here.)

Comments

(Write comments for this or later revisions here.)