Separate Delta Shell and Plugins (delete *ALL* direct dependencies between plugins) and use NuGet to manage / develop / deploy Delta Shell and plugins
IEditableObject, EditAction, undo/redo - document, review and simplify. Nested editable objects do not work nice, implement EditableObject attribute, use it consistently with EditAction
Delta Shell Developer Guide (wiki)
Create conceptual diagram showing all important components of the Delta Shell / SOBEK
List and short description of all existing components
Extend CollectionChange to multiple items
Remove dependency on IProjectItem in IModel and IDataItem, IActivity: make it a composition and two separate contexts: (Project + Folder + ProjectItem) - (IActivity - Model - ...)
Extend DataItems to exchange values *only* when it is asked, this is a minimal requirement for parallel (asynchroneous) model runs.
Bubbling of CollectionChange and PropertyChange must happen automatically in ModelBase, derived models, Functions
ModelBase OnInputCollectionChange and OnInputPropertyChange etc should work on ALL aggregated and composed items of the model
MemberwiseClone results in broken objects since it copies ~InstanceCreadentials, find out what to do.
Geospatial
Review map editing functionality including topology, interaction, rendering
Create new map layers using ILayerFactory (introduce it!)
Eliminate need for custom map tools such as HydroNetworkEditorMapTool
Move common controls (such as Map Contents, Layer Properties Dialog, Attribute Editor) to SharpMap.UI
Remove dependencies on IGui from all views
Clone / CopyFrom, ICloneable / IDeepCloneable / ICopyFrom - clean-up all this mess ... maybe solve it at framework level (clone all properties based on Composition / Aggregation).
Decide what to copy during copy/paste or other action, use one consistent way for *all* schematization items (e.g. skip / generate Name, Id, HydroId)
Solve problem with multiple inheritance mapping (NHibernate). Option 1: prevent multiple inheritance at all (use composition). Option 2: implement custom NH type MultipleInhericanceType<TSource, TTarget> and use it during mapping.
Replace all occurances of ((INotifyPropertyChange)value).PropertyChanged += OnSomethingPropertyChanged; by some nicer code. Think about Aspect on property, Observable<...> or other handy utility applied globally.
Automatycally set all inverse properties on property set / collection add (e.g. BranchFeature.Branch, Branch.Network ...)
Merge most of the feature property classes into feature classes, use configured EditActions where necessary for business logic.
Improve Drag & Drop API
Improve TreeView API
In TreeViewNodePresenterBase::OnCollectionChanged it tries to do 'treeView.Nodes.Remove(node)'; that rarely works!! Should remove from node.Parent.Nodes?
Improve TableView API
add/remove columns is a mess (see ITableView / TableView)
Improve provider logic (finding the best fitting view, properties, ContextMenu, NodePresenter etc. for a type)
Fix working with units
Extend views to support multiple items (via view context as an option)
Improve handling of ViewContexs
Improve view creation / resolving logic (double-click on item opens view for parent>parent>parent object but can also open view for this object), currently it is too implicit (CreateView changes view.Data to a different object and Delta Shell should check it)
Analyze and remove redundant events (using event tree)
TreeView
MapControl
Replace all Timers by DelayedEventHandler and fine-tune them
Review and fix all WorkInProgress tests
Review / fix all HACKs in Delta Shell + SOBEK plugins
Remove code dependencies between plugins, keep them loosely coupled.
Fews plugin should not know anything about specific plugin of Flow1D, RTC
Flow1D should not know about RR, RR should not know about Flow1D, ...
Make them talk via API (Delta Shell, Hydro, etc.)
What to do with forms used overall (MapView, CoverageView ...), pull-up?
Tests
Improve conventions for integration tests (they must be easy to find, should not be mixed with unit tests)
Minimize dependencies in integration tests
Improve existing code (eliminate HACKS)
Water Flow Model 1D Boundary / Lateral Data
Review RR schematiaztion and model classes
Review WAQ classes
Separate NetworkEditor and HydroNetworkEditor
Introduce support for file-based models at framework level
Use per-model directory in project data folder
Rely on IFileBased for all file-based model items
Keep model data directory in-sync with Project
GetAllItemsRecursive
Use object tree + [Aggregation] instead of custom implementation
Minimize number of GetAllItemsRecursive calls
Go to most recent / stable version of 3rd party libraries:
Gdal
NetCdf
IKVM
etc..
Take into account class-hierarchy when searching for nodepresenters or property classes
Use providers for Importers/Exporters similar to views and nodepresenters (what about property classes?)
Implement something like SynchronizedEventedList which can keep other list in synch with original list and take build/destroy methods, see e.g. HydroNetworkRoutesLayerController, DataItemSet, ...
Integrate Netron 2.5 + Cobalt into trunk (Swf.Controls)
Separate data hierarchy/organisation from data-application. Hierarchy/organisation should be responsibility of IProjectItem (Parent, Children, etc...)