Analysis
(Give as much as possible of the needed information for designing and implementing the task in the following sections.)
Overview
- Text frames should allow chaining between them. That means that when text overflows from one text frame it goes to another if they are linked. Also there should be overflow indicator.
- There should be opportunity for the user to have multiple flows from different text frames.
- The user should be able to point which text frame is linked with current flow and witch is not.
- There should be automatic linking when flow text frame is used. See more at TEXT_AUTO_CHAIN_BEHAVIOUR_R0
- If there are many linked flow text frames user should have the opportunity to easily reorder/delete/unchain them.
Task requirements
- Implement unchaining of frames
- User should be able to unchain chained frames by clicking a halo button. There should be two halo buttons - one for unchaining next frame and one for unchaining previous frame. Halo buttons should have crossed arrow icon for now.
- Unchaining frames creates two new chains. The text stays in upper chain.
- Deleting the first frame of a chain removes the text. The text stays in the resources only.
- If the frame is unchained via upper halo, it stays in bottom chain
- If the frame is unchained via bottom halo, it stays in upper chain
- If the frame is deleted, again two chains are created, but the frame is not part of them anymore.
- Implement editing of non-first chained frame
- Create appropriate halos
- The halo buttons should be the same, but two halo menus are needed, one at the left upper corner and one at the right bottom, see Implementation idea
- Since the text halo won't be where it is at the moment, remove it from there (move it to top right for example)
- In the top menu, the unchain halo should be present when the frame is part of a chain
- In the bottom menu, the chain halo should be present when the frame is not part of a chain. Otherwise, the unchain halo should be present.
- See implementation idea for further details.
Task result
Code. Unchainable frames. Deleteable frames for the chain
Implementation idea
Chain halo
Unchain halo
Chained frames
Unchaining 5 frames
Related
(Add links to related tasks that could be useful or helpful.)
How to demo
- Chain five frames on a page.
- Show the halos - first frame should have only unchain (bottom right), others should have 2 unchain halos each (up and down), Last frame should have unchain upper halo and chain bottom halo.
- Unchain the third frame.
- Show that first 2 frames remain chained
- Show that last 2 frames remain chained
- Depending on how you've unchained the frames, explain where does frame 3 belong
- Repeat the steps but delete frame 3 instead of unchaining.
Design
New halo menu will be created - TextChainTopMenu, which will be visible in the top left corner of the frame. It will be visible if the frame is part of a frame and it has previous frame chained (it is not head frame). The halo menu that has styling hud will be moved at the top right corner of the frame...its place in above the caret so this won't be a problem for now...
In TextChainMenu, new halo button will be added - TextUnchainNextHalobutton, which will be visible if the frame is part of chaining and has a next frame that can be unchained. Also this menu will be moved in bottom right corner of the frame. Helper class will be added - ChainHudHelper, which will hold the functionality about:
- unchaining : ChainHudHelper#unchain(frameContent : HotTextFrameContent, isNext : boolean) - the first argument is the content that will unchain its previous/next frame content. Unchaining will be done according to the requirements described in Task Requirements section
- whether unchain halo button is visible - ChainHudHelper#isVisible(frameContent : HotTextFrameContent, isNext : boolean) - if frameContent has next/previous chained frame the halo button will be visible
Two new methods will be added in HotTextFrameContent :
- unchainNextFrame
- unchainPrevFrame
ChainHudHelepr#unchain will call the appropriate method from HotTextFrameContent
Implementation
- The package org.sophie2.main.app.halos.frame.chains from module org.sophie2.main.app.halos is deleted, because it's obsolete and we don't use it.
- The package org.sophie2.main.app.halos.menus.text from module org.sophie2.main.app.halos is deleted, because it's obsolete and we don't use it.
There are many issues when grouping is invoked:
- when two frame are chained and one of them is grouped, the text doesn't flow in the groupped frame
- when two frame are chained and one of them is grouped, and then ungroupped, the text flows in the ungroupped frame, however in preview mode this is not the case. The text is shown only in the chain head frame
Changesets:
Merged to the trunk in [4083].
Testing
(Place the testing results here.)
Comments
(Write comments for this or later revisions here.)
Attachments
-
3chainedframespng.png
(6.4 KB) -
added by deyan 16 years ago.
Chained frames
- chain.png (625 bytes) - added by deyan 16 years ago.
- unchainNext.png (774 bytes) - added by deyan 16 years ago.
- unchaining.png (39.6 KB) - added by deyan 16 years ago.