Diagram / Diagram DOM / Libraries / Libraries
Libraries
 About Libraries

In NOV Diagram for .NET libraries are represented by the NLibrary element. Libraries are the root element of the NLibraryDocument class, which is typically displayed by an instance of the NLibraryView class. A library is designed to contain multiple library items, that can be dragged and dropped on a drawing view. In this way libraries facilitate the management of reusable drawing clippings. Each library item can contain one or multiple shapes, so it is virtually possible to store any drawing clipping in a reusable library item.

Typically in end-user applications the user needs to be presented with multiple libraries from which to create shapes. The Library Browser UI element facilitates the management of multiple libraries in end-user applications.

 Library Items

Libraries contain library items. Library items are represented by the NLibraryItem class. Library items contain reusable drawing clippings that you can drag and drop inside drawing views. The content of a library item are the page items contained inside the NPageItemCollection accessible from the Items property of the library item. Inside the library the library item is rendered as an Image-Text pair. The image is automatically generated by the library item. The text can be assigned by the user by setting the library item Text property. The following example demonstrates how to create a library item:

Create Library Item
Copy Code
NShape shape = new NBasicShapesFactory().CreateShape(ENBasicShapes.Rectangle);
NLibraryItem libraryItem = new NLibraryItem();
libraryItem.Name = "Rectangle";
libraryItem.Text = "Rectangle";
libraryItem.Tooltip = new NTooltip("Drag and drop me onto the drawing");
libraryItem.Items.Add(shape);
 Libraries and Shape Factories

Shape factories are the most common way to create predefined shapes in code. NOV Diagram includes two shape factories:

  • Basic shapes factory - includes commonly used basic shapes like rectangles, triangles, circles, stars and so on.
  • Connectors shapes factory - includes commonly used connector shapes.

The following code example demonstrates how to create a rectangle basic shape and a line connector shape:

Create shapes from shape factories
Copy Code
NBasicShapeFactory basicShapes = new NBasicShapeFactory();
NShape rectShape = basicShapes.CreateShape(ENBasicShape.Rectangle);

NConnectorShapeFactory connectorShapes = new NConnectorShapeFactory();
NShape connector = connectorShapes.CreateShape(ENConnectorShape.Line);

Shape factories can generate entire libraries that contain a library item for each shape generated by the factory. The following code example demonstrates how to create a library from the basic shapes factory:

Create a library from a shape factory
Copy Code
NBasicShapesFactory basicShapesFactory = new NBasicShapesFactory();
NLibrary library = basicShapesFactory.CreateLibrary();
 Loading and Using Libraries

The NLibraryDocument class provides the following static methods for loading shape libraries:

  • FromStream - loads a library from a stream.
    Copy Code
    string filePath = NPath.Current.Combine("ShapeLibraries", "Business", "Brainstorming Shapes.nlb");
    using (Stream stream = File.OpenRead(filePath))
    {
        NLibraryDocument libraryDocument = NLibraryDocument.FromStream(stream);
    }
    
  • FromResource - loads a library from an embedded resource.
    Copy Code
    NLibraryDocument libraryDocument = NLibraryDocument.FromResource(Assembly.GetExecutingAssembly(), resourceName);
    
  • FromNevronResource - loads a library from a Nevron resource.
    Copy Code
    NLibraryDocument libraryDocument = NLibraryDocument.FromNevronResource(NResources.RBIN_MyShapeLibrary_nlb);
    
  • FromFileAsync - asynchronously loads a library from a file.
    Copy Code
    NFile libraryFile = NApplication.ResourcesFolder.GetFile(NPath.Current.Combine(
            "ShapeLibraries", "Business", "Brainstorming Shapes.nlb"));
    NLibraryDocument.FromFileAsync(libraryFile).Then(
        libraryDocument =>
        {
            // Do something with the library
        }
    );
    

After the library is loaded, you can easily create shapes with it:

Create a shape from the library
Copy Code
NLibrary library = libraryDocument.Content;
NShape shape = library.CreateShape(0);
drawingView.ActivePage.Items.Add(shape);

Nevron Open Vision (NOV) comes with more than 350 predefined shape libraries (NLB files). They are placed in the "Resources\ShapeLibraries" sub folder of the Nevron Open Vision installation. For more information open the Predefined Libraries topic.

 Libraries View Type

Libraries are designed to be displayed in several view types, which are enumerated by the ENLibraryViewType enumeration, that currently contains the following values:

  • List
  • Icons
  • Thumbnails

The view type of a library is controlled by the ViewType property that accepts a value from the ENLibraryViewType enumeration. For each view type the library contains a specific settings object, that is derived from the NLibraryItemsView abstract class. The following table summarizes the library view settings objects for each specific type of view:

View Type Class Accessible via Property Description
Icons

NIconsLibraryItemsView

IconsItemsView

Controls the settings of the Icons items view. By default the preview size is set to 32x32 dips.
List

NListLibraryItemsView

ListItemsView

Controls the settings of the List items view. By default the preview size is set to 16x16 dips.
Thumbnails

NThumbnailsLibraryItemsView

ThumbnailsItemsView

Controls the settings of the Thumbnails items view. By default the preview size is set to 64x64 dips.

In this way you can adjust the settings for a specific library view type, by altering the properties of the respective view type settings object. The following code example instructs the library to display the previews in Icons view in 24x24 size and specifies the custom horizontal and vertical spacing between the items:

Changing the settings for a specific library view type
Copy Code
library.ViewType = ENLibraryViewType.Icons;
library.IconsItemsView.PreviewSize = new NSize(24, 24);
library.IconsItemsView.HorizontalSpacing = 5;
library.IconsItemsView.VerticalSpacing = 10;
 Library Display Order

By default libraries are displaying their items in the order in which they are defined (added to the library). It is in many cases useful to order the items by their name, so that the user can search for a specific shape by name more quickly. The library display order is controlled the LibraryDisplayOrder property that accepts value from the ENLibraryDisplayOrder enumeration. The following code example displays the items inside a library by their name ascending order:

Changing the library display order
Copy Code
library.DisplayOrder = ENLibraryDisplayOrder.NameAscending;
See Also