====================== | |
core | |
====================== | |
SyncInfo | |
- represents relative sync of local and remote gives access to resources | |
TeamSubscriber | |
- creates sync infos | |
SyncInfoSet/MutableSyncInfoSet (optimized collection of sync infos - immutable) | |
SyncInfoFilter (filtering of sync sets used by actions and creation of sync sets) | |
SyncInfoCollector (collects sync infos from subscriber, and optionally from workspace. Uses background thread to collect and calculate changes. Is updated automatically with changes) | |
FilteredSyncInfoSet (filters a provided sync info set with a given filter and possible roots) | |
====================== | |
ui | |
====================== | |
ISynchronizeManager (manages the lifesycle of synchronize participants) | |
ISynchronizeView | |
ISynchronizeParticipant (shows in the sync view, has a mode, working set, and creates a page with the UI pieces) | |
Modes in sync view (DirectionFilterActionGroup) | |
SyncInfoSetCompareConfiguration (encapsulates navigation, menus, content, label providers)this | |
is used to configure a viewer in different ways based on it's use. | |
SyncInfoDiffTreeViewer/SyncInfoDiffCheckboxViewer (shows diff nodes) | |
SyncInfoDiffNode -> DiffNode | |
SyncInfoSetCompareInput | |
DiffNode | |
SyncInfoDiffNode | |
Viewer | |
ContentProvider | |
Sorter | |
LabelProvider | |
ViewerInput | |
1. sync set is created | |
2. decide how to model the sync set (hierachy, compressed, change log...) sorter... | |
3. hook up chagnen listener | |
4. ensure model doesn't change while building it? | |
5. update model dynamically | |
6. dispose of listener when input changes | |
SuperCharged MVC | |
================ | |
Sync Set Compare Input (displays a diff tree viewer with the compare panes) | |
Sync Info Compare Input (displays a compare pane for one sync info) | |
Viewer (viewers) -> view configurators (menus, content provider, label provider, controller) | |
Viewer Model (diff nodes) logical structure of sync info | |
Viewer Input (creates viewer model, keeps it up-to-date, sorter) | |
Data (sync info, sync info set) | |
1. when does the viewer model get created, it is implementation dependant | |
2. why is creating the viewer model takes a while. | |
How is progress shown? | |
====================== | |
1. actions that run jobs that affect a view's content should schedule in the view | |
- object contributions, or delegates get this for free via SubscriberAction which | |
has a schedule which will schedule via the associated IWorkbenchPart. | |
- actions programatically added to a view should be initialized with the view part or view site | |
so that it can run the job in the view's context. | |
- this will get you (1) the view icon change hint, (2) the half-busy cursor | |
2. jobs should provide meaningful progress shown in progress view | |
- this will get you (1) a job listed in the progress support showing that something is happening | |
3. if working on syncinfodiffnodes in the background you can mark the nodes as working as a hint | |
to the UI to display them differently (e.g. should make this adapter specific) | |
- this will get you (1) nodes in the sync view showing that they are being worked on | |
4. Use progress groups in refresh to show remote refresh and sync calculation as one work item. | |
- this will get you (1) one entry in the progress view for both the remote refresh and background | |
processing of sync states. no more updating sync view message. | |