Ticket #2183 (closed feature: obsolete)

Opened 10 years ago

Last modified 8 years ago

embedded-frame-content-hud - Page controls on/off, eventually their position

Reported by: deyan Owned by: deni
Priority: major Milestone: X3
Component: uncategorized Version: 2.0
Keywords: Cc:
Category: unknown Effort: 2
Importance: 70 Ticket_group:
Estimated Number of Hours: 0 Add Hours to Ticket: 0
Billable?: yes Total Hours: 0
Analysis_owners: dido Design_owners: deni
Imp._owners: deni Test_owners:
Analysis_reviewers: deni Changelog:
Design_reviewers: meddle Imp._reviewers: meddle, todor
Test_reviewers: Analysis_score: 4
Design_score: 4 Imp._score: 4
Test_score: 0

Description (last modified by todor) (diff)

• the author needs to be able to set the visibility of the forward/back arrows in an embedded book
• the author needs to be able to change the graphic design of the forward/back arrows in an embedded book
• the author needs to be able to set the position of the forward/back arrows in an embedded book

Change History

comment:1 Changed 10 years ago by deyan

  • Importance changed from 60 to 70
  • Summary changed from embedded-frame-content-hud to embedded-frame-content-hud – Page controls on/off, eventually their position

Batch update from file report_1.csv

comment:2 Changed 10 years ago by deyan

  • Summary changed from embedded-frame-content-hud – Page controls on/off, eventually their position to embedded-frame-content-hud – Page controls on/off, eventually their position

Batch update from file 0911261.csv

comment:3 Changed 10 years ago by todor

  • Category set to unknown
  • Description modified (diff)
  • Analysis_score set to 0
  • Test_score set to 0
  • Summary changed from embedded-frame-content-hud – Page controls on/off, eventually their position to embedded-frame-content-hud - Page controls on/off, eventually their position
  • Design_score set to 0
  • Imp._score set to 0

comment:4 Changed 10 years ago by dido

  • Owner set to dido
  • Status changed from new to s1a_analysis_started
  • Analysis_owners set to dido

comment:5 Changed 10 years ago by dido

  • Status changed from s1a_analysis_started to s1b_analysis_finished

ANALYSIS

  • Allow the user to create link actions that navigate through embedded frame content. This way we can ensure that embedded frame content is customizable and can be positioned anywhere inside the book.
    • Use the currently existing actions "Go to previous page", "Go to next page", "Go to page..." and add combo box as a propety to them.
    • The combo box default item should be "current book".
      • If there are no embedded book or pdf files, the second item in the list should be "There are no other items that could be used" - or some message like that. This second list item should be disabled and the user won't be able selected it.
      • If there are some embedded books or pdf files, their names should appear inside the combo box list and the user should be able to select them.
  • Create set of default navigation buttons for embedded frame. Allow the user to show/hide them via specific frame hud.
  • Implement all features from the list above for embedded books frames. (OPTIONAL) If there is time implement them for pdf files too.

comment:6 Changed 10 years ago by deni

  • Status changed from s1b_analysis_finished to s1c_analysis_ok

comment:7 Changed 10 years ago by deni

  • Design_owners set to deni
  • Status changed from s1c_analysis_ok to s2a_design_started
  • Imp._owners set to deni
  • Analysis_reviewers set to deni
  • Analysis_score changed from 0 to 4
  • Owner changed from dido to deni
  • I'm not sure whether I'll implement the following requirement:
    • If there are no embedded book or pdf files, the second item in the list should be "There are no other items that could be used" - or some message like that.

comment:8 Changed 10 years ago by deni

  • Status changed from s2a_design_started to s2b_design_finished
  • General idea:
    • Link actions: create new ones extending the original, that have an additional ResourceRefR4 field pointing to the frame with the book we want to navigate in
    • Configuration panels:
      • Add new configuration panels for 'prev page' and 'next page' actions
      • Add a new configuration panel for 'go to page' action which extends GoToPageConfigurationPanel and register it with sortkey so that is before the sortkey of GoToPageConfigurationPanel. In this way if the embedded books module is not started, the old one will be used.
    • Link execution logic: add a new logic with operations analogous to those in NavigationActionsLogic and make sure that the sortkeys guarantee that the new operations will be preferred over the old ones.
  • Changes in the existing classes:
    • GoToPageAction will no longer implement ResourceRefWrapper. The reference to the page will be relative not from the link holder, but from the book we will navigate in. This is necessary because there is no relative reference from a frame in the main book and a page in an embedded book. Besides, the GoToPageAction working with embedded books will need to implement ResourceRefWrapper in order to manipulate the reference to the embedded book frame (and ResourceRefWrapper can manipulate only one ref).
    • In GoToPageConfigurationPanel add a new property holding the book in which the "Go to page" action will navigate.
      • In the base class it should return the current book.
      • Make AvailablePages combo box to show the pages of the book value of this property. In this way it can be used in the embedded 'go to page' configuration panel directly.
    • In LinksHud.ConfigPanel when searching for an appropriate configuration panel Class.isAssignableFrom(Class<?>) instead of equals.
    • Add a dependency of org.sophie2.extra.func.embedded on org.sophie2.main.func.links.
  • Links for navigation in embedded books:
    • Create a new package org.sophie2.extra.func.embedded.links and add all new classes and interfaces in it.
    • Link actions:
      • Common interface EmbeddedNavigationAction with the following methods:
        • ResourceRefR4 getFrame();
        • LinkAction setFrame(ResourceRefR4 ref);
      • class EmbeddedGoToPageLinkAction extends GoToPageAction implements EmbeddedNavigationAction, ResourceRefWrapper
      • class EmbeddedNextPageAction extends GoToPageAction implements EmbeddedNavigationAction, ResourceRefWrapper
      • class EmbeddedPrevPageAction extends GoToPageAction implements EmbeddedNavigationAction, ResourceRefWrapper
    • Configuration panels:
      • class EmbeddedGoToPageConfigurationPanel extends GoToPageConfigurationPanel
        • Overrides GoToPageConfigurationPanel's book property to find the book embedded in the frame pointed by the resource reference in the current action.
          • This can be slow, but I could think of another way... Please, see the implementation.
        • Adds an additional combo box which contains the current book and all embedded book frames - inner class AvailableBooks extends BoundComboBox<ResourceH> . It will be used in the other two configuration panels, too.
      • class EmbeddedNextPageConfigurationPanel extends BaseSwingVisualElement implements ActionConfigurationPanel
      • class EmbeddedPrevPageConfigurationPanel extends BaseSwingVisualElement implements ActionConfigurationPanel
    • Configuration panels logic:
      • EmbeddedConfigurationPanelsLogic with a single operation ON_SET_FRAME that is invoked when the user submits data from the AvailableBooks combo box.
      • In order to create a new link action, it will call EmbeddedNavigationAction.serFrame(ref) or do it manually. Manually means that if the previous action was GoToPageAction, it will create an EmbeddedGoToPageAction...
    • Link execution logic: EmbeddedNavigationActionsLogic with operations analogous to those in NavigationActionsLogic.
  • Changing the visibility of the navigation controls:
    • Add one composite and two templated new keys in EmbeddedBookFrameR4 and the respective getters in EmbeddedBookFrameH
    • Override the computeVisible() method in NextPageControlView and PrevPageControlView.
    • Add a halo button and hud for controlling these options:
      • class EmbeddedBooksHaloButton extends HudHaloButton in org.sophie2.extra.func.embedded.view package
      • class EmbeddedBooksHud extends HudDialog in the same package
        • Contains a title bar with close button and two toggle buttons (for the visibility of the forward/backward arrow)
        • The event that is fired by the toggle buttons and the logic that handles it are identical to those for media controls.

comment:9 Changed 10 years ago by deni

Source code: [8576]

comment:10 Changed 10 years ago by meddle

  • Status changed from s2b_design_finished to s2c_design_ok
  • Design_score changed from 0 to 4
  • Design_reviewers set to meddle
  • I didn't get easily the meaning of "Add a dependency of org.sophie2.extra.func.embedded on org.sophie2.main.func.links.", please write more Bulgarian readable English :)
  • Write JavaDoc when you are writing your classes, fix space/indent problems.
  • I think at this point the design is good, that thing with the sort keys comes from pap :)

4p

comment:11 Changed 10 years ago by deni

  • Status changed from s2c_design_ok to s3a_implementation_started

comment:12 Changed 10 years ago by deni

  • Status changed from s3a_implementation_started to s3b_implementation_finished
  • Backward compatibility: we should be able to open book that contain 'Go to page' actions with page references relative from the link holder.
    • It will not be easy to support both type of references in the related logics and the configuration panel.
    • There we will transform the references when loading the link action in GoToPageActionPersister
  • Reusing the 'Available Books' combo box in the three configuration panels:
    • In the properties (availableBook()) that manage the combo box in GoToPage-, NextPage- and PrevPageConfigurationPanel call computeElementProp(...) with ActionConfigurationPanel as parent.


comment:13 Changed 10 years ago by meddle

  • Status changed from s3b_implementation_finished to s3c_implementation_ok
  • Imp._score changed from 0 to 4
  • Imp._reviewers set to meddle, todor

Merged to the trunk at [8617].

Removed the bugfix for importing books, because it was bad, the problem is not so trivial...

4p

comment:14 Changed 8 years ago by meddle

  • Status changed from s3c_implementation_ok to closed
  • Resolution set to obsolete

Closing all the tickets before M Y1

Note: See TracTickets for help on using tickets.