- 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
- 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 ...)
- Merget most of the feature property classes into feature classes, use configured EditActions where necessary for business logic.
- Improve Drag & Drop API
- Improve TreeView API
- add/remove columns is a mess (see ITableView / TableView)
- Improve TableView API
- 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)
- Clean-up database and remove duplicate classes (Delta Shell + SOBEK 3.1 plugins)
- 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?)