Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin
scrollbar

...

Panel
borderStylesolid

Contents

Page Tree
rootTOOLS:Tutorial
startDepth3

Exercise outline

The goal of this exercise is to visualize information about created volume models in the Properties window.

Create a new object properties class

Add a new folder to the plugin project named a new folder named ObjectProperties. In this folder, create a new class named VolumeModelObjectProperties.cs and add the following codeadapt the contents as shown below:

Code Block
using System.ComponentModel;
using DelftTools.Shell.Gui;
using DeltaShell.Plugin.DemoApp.Models;

namespace DeltaShell.PluginPlugins.DemoAppVolumeModel.ObjectProperties
{
    [DisplayName("Volume model information")]
    public class VolumeModelProperties : ObjectProperties<VolumeModel>ObjectProperties<Models.VolumeModel>
    {
        [Category("General")]
        [DisplayName("Name")]
        [Description("Name of this volume model")]
        public string Name
        {
            get { return data.Name; }
            getset { data.Name = value; }
        }

        [Category("Input")]
        [DisplayName("Number of catchments")]
        [Description("Number of catchments in the basin")]
        public int NumberOfCatchments
        {
            get { return data.Basin.Catchments.Count; }
        }

        [Category("Input")]
        [DisplayName("Number of time steps")]
        [Description("Number of time steps in the precipitation time series")]
        public int NumberOfPrecipitationTimeSteps
        {
            get { return data.Precipitation.Time.Values.Count; }
        }
    }
}

The \[DisplayName\], \[Category\] and \[Description\] aspects are used for categorizing and decorating the object properties (see the results of the exercise).

Info

The object properties class derives is derived from the ObjectProperties base class so that it can be registered in the gui plugin (see the next step).

Wiki Markup

Register the object properties in the gui plugin class

Register the object properties in the gui plugin by adding the following code to VolumeModelGuiPlugin.cs:

Code Block
using System.Collections.Generic;
using DeltaShell.PluginPlugins.DemoAppVolumeModel.ObjectProperties;

and

Code Block
        public override IEnumerable<PropertyInfo> GetPropertyInfos()
               {
                        yield return new PropertyInfo<VolumeModelPropertyInfo<Models.VolumeModel, VolumeModelProperties>();
               }

Delta Shell should now be able to find matching object properties after selecting a volume model in the Project window.

Exercise results

Setup Set up a volume model as described in the results of a the previous exercise (see Create a simple hydrological model).

Then, select the created volume model in the Project view window and inspect the Properties window; a properties grid should be visible like as shown in the following image:

Wiki Markup
*\[TODO\]*
Add screenshot of property grid for a volume model (with imported catchments and time series data)

Ensure Image Added

Make sure that editing the name Name property actually results in a change of the name of the volume model in the Project window.

Info

You might have already noticed that clicking Clicking on other items in the Project window results in showing a corresponding their respective property grid in the Properties window too. This is because ; Delta Shell already defines object properties for all its basic data structures out of the box.



scrollbar