Analysis
Overview
This group of tasks is about displaying resources and changes in one or more palettes. A user should be able to:
- See all resources and filter them by several criteria.
- See detailed information about a selected resource.
- See a preview of a selected resource.
- See a list of changes for a given resource.
- See detailed information (preview) for a given change.
Task requirements
- Separate things related to resources in a new module - org.sophie2.main.func.resources.
- It should contain extensions for all the palettes and other visual elements needed.
- Define an UI for the palette(s) that will be used:
- How will resources be displayed (list, table, etc.)
- How will resources be filtered (buttons/icons, combo box, etc.)
- Where and how will the preview and the meta information be displayed.
- Where will changes and change details be listed.
- Which goes where (which tab, which palette).
- Provide internal support for list filtering and connect it with the UI.
- Filtering at least by resource type is required. Other filters might be applied if there is enough time left.
- Implement the defined UI (previewing is not required to be working at this revision).
- Ensure that change grouping works (at least to some extent).
Task result
- UI design.
- Source code.
Implementation idea
- See the specs listed in the Related section for an idea of what is required.
- See how filtering is implemented in ProLists to see if this can be used in the palettes.
- For the UI consider having two tabs:
- Resources (with palettes Resources, Resource Details and Resource Preview).
- Changes (with palettes Changes and Change Details, probably Versions at a later stage).
Related
APP_RESOURCE_LIST_FILTER
APP_RESOURCE_CHANGE_LIST
How to demo
- Show the palette with all the resources listed.
- Filter only a certain kind of a resource.
- Select a resource to see its details.
- See changes and change details display.
Design
The UI for working with resources and changes will consist of the following:
- Resources tab - by default in the right flap.
- Resources palette - a palette showing the name of the resource and the date of creation of the resource.
- Resource Details palette - a panel palette showing the meta information about resources and a preview of the resource:
- it should also allow editing resource properties.
- it should update its information according to the selection in the Resources palette.
- the preview is not required to be working at this iteration.
- Resource Preview palette - a panel palette showing the preview of the selected resource (this doesn't need to be working at this iteration).
- Changes tab - by default in the right flap.
- Resources palette - the same palette as the one in the Resources tab.
- Changes palette - a palette showing the changes to the selected resource (should update according to the selection in the Resources palette).
- Change Details palette - a panel palette showing details about the selected change (should update according to the selection in the Changes palette).
- In the future the Versions palette will probably come here.
At the top of the Resources palette there will be buttons for filtering resources by their type (Image, Audio, Video, Text, From File). They should be multi-selectable. A button "Show/hide all" will be present that will trigger displaying all resources. Below the buttons there will be a search field that can provide extra filtering of the resources. After it follows the list of the displayed resources. Here is a sample diagram of what the Resource tab will look like:
A new module org.sophie2.main.func.resources will be created. Its BundleActivator(the MainFuncResources class) will register all the necessary extensions and skin parts for the palettes. Existing classes for the palettes will be moved to this module (currently they are in trunk/sophie2-platform/modules/org.sophie2.main.app.layout/src/main/java/org/sophie2/main/app/layout/right/resources:
- ResourcesTab
- ChangesTab
- AllResourcesPalette
- AllChangesPalette
- ResourceMetaPalette (it will be renamed to ResourceDetailsPalette)
The BookExtrasPalette and DummyExtra in this package will be moved and the package will be removed (this will help improve modularization). A new class for ChangeDetailsPalette will be created. Search will not be implemented at this iteration.
A RwProp<ProListFilter> filter() will be added to the ListPalette. It will hold the filter currently applied to the list of items the palette holds (by default no filter is applied). The items() method should use this filter(). Any user functionality that wants to apply a filter to the list should set it in that property.
Grouping changes does not work well if AutoChanges are not written or poorly written. All places in code where this happens will be reviewed and fixed accordingly.
Implementation
Since there was not enough time to achieve all of the above, the implementation has been time-boxed and currently supports the following functionality:
- Listing resources by their type (Image, Audio, Video, Text) via toggle buttons.
- Listing resource details in a new palette.
- Listing all changes.
A palette can not be shown in two different tabs so another way of selecting a resource to display its changes should be found. At this iteration no modifications of the Changes tab and palette are made. At the next iteration the following should be considered:
- A change in the UI for the filtering - buttons will tend to take too much space. Consider a combo box.
- Registering resource type buttons (or items in a list) as extensions, so that different modules can provide them.
- Creating an editable ChangeDetailsPalette (similar to the ResourceDetailsPalette).
- Displaying changes for a selected resource (this might require some UI changes).
This is the changeset with the merged changes from the release branch: [2306]
Testing
Place the testing results here.
Comments
Write comments for this or later revisions here.