scrollbar |
---|
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 to the plugin project a new folder named ObjectProperties. In this folder, create a new class named VolumeModelObjectProperties.cs and adapt the contents as shown below
...
Panel | ||||||
---|---|---|---|---|---|---|
| ||||||
|
...
2. Create a new class named "VolumeModelProperties"
3. Add the following contents to this class:
Code Block |
---|
using System.ComponentModel; using DelftTools.Shell.Gui; using DeltaShell.Plugin.DemoApp.Models; namespace DeltaShell.PluginPlugins.DemoAppVolumeModel.ObjectProperties { [DisplayName("Volume model parametersinformation")] 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; } set { 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 PrecipitationTimeStepsNumberOfPrecipitationTimeSteps { get { return data.Precipitation.Time.Values.Count; } } } } |
...
Info |
---|
The object properties class is derived from the ObjectProperties base class so that it can be registered in the gui plugin (see the next step). The [DisplayName], [Category] and [Description] aspects are used for categorizing and decorating the object properties (see the results of the exercise). |
Register the object properties in the gui plugin class
Register the object properties in the gui plugin by adding the following code to DemoAppGuiPlugin: VolumeModelGuiPlugin.cs:
Code Block |
---|
using System.Collections.Generic;
using DeltaShell.Plugins.VolumeModel.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
Set up a volume model as described in the results of the previous exercise (see Create a simple hydrological model).
Then, select the created volume model in the Project window and inspect the Properties window; a properties grid should be visible as shown in the following image:
Make sure that editing the Name property actually results in a change of the name of the volume model in the Project window.
Info |
---|
Clicking on other items in the Project window results in showing their respective property grid in the Properties window too; Delta Shell already defines object properties for all its basic data structures. |
scrollbar |
---|