Version 3 (modified by pap, 16 years ago) (diff) |
---|
Analysis
(Give as much as possible of the needed information for designing and implementing the task in the following sections.)
Overview
- Links allow the user to add interaction between different pages, page elements or frame contents.
- When a specific event happens with a source then the corresponding action is taken.
- The appearance of elements with defined links may be different in different states of the link.
- LINKS_COMMONS_R0? has more on this issue.
- Links have effect only when opened in sophie reader or when in preview mode.
- Changes done by links are not to be persisted.
Task requirements
- Define a model for links - how will triggers and actions be represented.
- Define how links are to be made part of the book and persisted.
- Define how different styles will be represented.
- Define a GUI for manipulation of links.
- Define some basic link triggers and actions.(look at subtasks for details)
- Text links(when triggering events are performed on text content) are not mandatory for now.
- Some additional tasks should be done - the preview mode of the book and the interactivity of scenes.
Task result
The result of this task should be source code.
Implementation idea
- Define the Link as a list of LinkRules
- The later are pairs of (Trigger, Action)
- Actions are a class hierarchy
- Define an OperationR3 that will handle all the links in the application instance
Related
LINKS_MANIPULATION_R0
LINKS_ACTIONS_COMMON_R0
LINKS_ACTIONS_NAVIGATING_R0?
LINKS_ACTIONS_SHOWING_R0
LINKS_ACTIONS_PLAYING_R0
LINKS_ACTIONS_MULTI_PARAMETERS_R0?
LINKS_ACTIONS_ANNOBEAMS_R0?
How to demo
- Run Sophie2
- Make a book with two frames
- Add a link to the first frame that on some action toggles the visibility of the second frame
- Switch in preview mode
- Perform the triggering action several times to demonstrate the showing and hiding of the second frame.
Design
(Describe your design here.)
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.)