-
Notifications
You must be signed in to change notification settings - Fork 2
/
TODO
175 lines (91 loc) · 6.41 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
TODO ObjectManager
==================
ObjectManager is loosely based on some mockups and ideas:
- http://jesseross.com/clients/etoile/ui/concepts/03/workspace_100.jpg
- http://jesseross.com/clients/etoile/ui/interface/800x480.png
- http://jesseross.com/clients/etoile/ui/concepts/01/workspace_300.jpg
- http://jesseross.com/clients/etoile/ui/concepts/02/workspace_400.jpg
Current Work
------------
- Implement toolbar item validation
- Fix commit crash (Attempted to commit changes to deleted persistent root) on Undo/Redo following a selective undo
- Fix deleted tags present in COObject.tags incoming relationship
- Fix lock error logged in the console
- Fix tag collection editor in Inspector
- Fix missing commits for object editing from the Inspector
- Fix Inspector appearing very briefly at the wrong location (if there is no event following the mouse up event in the menu)
- The layout update phase (run when we are done processing the mouse up in the menu) doesn't position the inspector at all... Another event must occur to run a new layout phase to position the inspector correctly.
- Improve Tag Filter Filter to give up the focus on a cancel button click (see the Search field behavior in Mac OS X Finder)
- Requires a custom EtoileUI control or a NSSearchFieldCell subclass that implements this behavior (there is no delegate API to do so)
- Fix Icon View crash
- Force grid alignment in the Icon View (letting the user positions icons seems useless)
- Finish Search support in History Browser
- Fix ugly issues in EtoileUI tool related selection management (see -[OMBrowserContentController selectAll:])
- Fix EtoileUI to support some mechanism to declare a initial focused item (similar to -[NSWindow initialFirstResponder])
- See -[OMAppController browseMainGroup:]
Missing Features
----------------
- Add New Tag For Selection to the Object menu
- Improve Inspector
- Add fields
- Variations (aka Branches)
- Cheap Copy checkbox (or something label telling the object is a cheap copy) + a button to show the parent or original Object
- Support showing additional fields based on the object type
- Image: preview and image size (width and height)
- Bookmark: URL
- Decide whether we should list attachements and their URLs
- Opening Objects (using UTIs to decide which service we use)
- Requires some service registry to bind editors/viewers to UTIs
- Implement Open in History Browser (for opening a past version)
- Opening other stores than the default one
- Add 'Open Other CoreObject Store…' to the Application menu
- Once a CoreObject Store is picked in the Open panel, a new manager window appears
- Needs some badges or hints (perhaps in the titlebar) to indicate which manager windows relate to which stores
- New Object From Template…
- Add a template picker to EtoileUI
- Pick and drop to move objects around
- Link (default)
- Copy (option key)
- Move (command + option key or perhaps just command key)
- Deleted objects smart group and Object Undeletion
- Time-based smart groups (in When section of the source list)
- Import/Export. ObjectManager should support just few basic types at least initially:
- Bookmark
- Image
- ?
- Support opening multiple manager windows
- Fine-grained control over the grid used in the Icon View
- Note Management
- Note Library
- Notes can include Lists e.g. Todo or Buy lists.
- Simple Note View (actived if the Notes library is selected)
- Something similar to Google Keep but a bit smarter and with a better usability
- Would provide a very basic Outliner to edit lists
- Notes can be opened in a real Outliner (notes are just normal outliner documents) or a Structured Text Editor
- Full-blown Outliner documents can be browsed in the ObjectManager (using the Note View or the List view)
- Add resize separator between source list, content view and inspector (this means to support resize separators in EtoileUI)
- Implement New Smart Group
- Will require a dedicated predicate editor (on GNUstep there is no NSPredicateEditor), the best choice is probably to build our own with EtoileUI. This shouldn't be very hard if we add a metamodel for predicate and we use ETModelRenderer to generate the UI. The resulting UI would be much more flexible than the Apple's predicate editor too.
Future Work
-----------
- Library Management (creation, deletion, export and import)
- Temporal Search against the store
- For now we just support searching the latest object revisions in memory
- Device Representations e.g. external hard disks
- Filesystem Browsing (as an advanced option) using COFile and CODirectory
- Activity Reporting to track and manage progresses copy, deletion, downloads, etc. in a Unified UI
- Either in the ObjectManager itself or in a distinct application (e.g. Activity Manager)
- Etoile or CoreObject-based applications can use this UI to report about their background tasks
- Provide a special COObject subclass in CoreObject or EtoileUI to report progresses (e.g. CO(User)Operation). This would let us use the store as persistent distributed notification center. For example, a WebBrowser makes a new commit on a COUserOperation instance each time, the download progresses a bit, and the Activity Reporter automatically gets a store update as a result.
- Use Small Control Sizes in the Inspector (or at least a small font size)
- Add some Print support, especially for printing Notes (very low-priority)
Open Questions
--------------
- For a library, should we present a size that includes the children objects
- For COGroup/Tag size, we consider that children objects are not really contained and doesn't enter in the size computation (moreover knowing the boundaries for the size computation could be really tricky for nested groups)
- How should we construct the manager window title for a multiple selection in the source list (for now we just use the first selected object name + 'and more')
- Decide whether we want to add Open in New Window or New Window to Object menu
- Would allow to browse the selection while keeping the currently browsed group visible
- Would be disabled for objects that don't appear in the source list
- Add Show Original to the Object menu for cheap copies or is it enough to provide a button in the Inspector
- Is the Inspector good enough to edit Tags applied to one or several Objects.... Should we also support a contextual popover-like UI or some variation on the Tag filtering UI