• Switch to .NET 4.5 / PostSharp 2.1 / IronPython 2.7 + NumPy/SciPy
  • 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)
  • 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?)
  • 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...)
  • No labels