| ====================== | |
| 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. | |