プラグインエントリポイントインターフェース

Namespace: FVIL.Parser
Assembly: FVILforms (in FVILforms.dll) Version: 3.1.0.0 (3.1.0.9)

Syntax

C#
public interface IParserEntryPoint
Visual Basic
Public Interface IParserEntryPoint

Remarks

WIL-Builder プラグインがロードされたときに初期化処理を行う必要がある場合は このインターフェースを実装してください。 また、ノードツリーを WIL-Builder の Function List に追加することもできます。

但し、現在は WIL-Builder プロジェクトの PluginAssemblyName に指定されたアセンブリのみを対象にしています。 それ以外のプラグインは、このインフェースを実装していても無効です。


WIL-Builder のプロジェクト設定ダイアログ:

後述のソースコードをビルドして生成されたアセンブリを 下図のように WIL-Builder プロジェクト設定ダイアログの PluginAssemblyName に指定して WIL-Builder を再起動します。


WIL-Builder の Function List

WIL-Builder を再起動すると下図のように Function List にノードツリーが追加されます。

Examples

C# Copy imageCopy
// $Revision: 1.1 $

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Reflection;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System.Runtime.Serialization;
using System.Security.Permissions;
using fvalgcli;

namespace User
{
    /// <summary>
    /// エントリポイント
    /// </summary>
    public class EntryPoint : FVIL.Parser.IParserEntryPoint
    {
        /// <summary>
        /// 初期化
        /// </summary>
        public virtual void Setup()
        {
            // TODO: ここに初期化処理を実装してください.
        }

        /// <summary>
        /// 解放
        /// </summary>
        public virtual void TearDown()
        {
            // TODO: ここに解放処理を実装してください.
        }

        /// <summary>
        /// ユニットノードの生成
        /// </summary>
        /// <param name="units">生成したユニットツリーの格納先</param>
        public virtual void CreateUnits(List<FVIL.Parser.ParserNodeUnit> units)
        {
            Assembly asm = Assembly.GetExecutingAssembly();

            // ----- 1 階層目.
            FVIL.Parser.ParserNodeFolder dstnodes = new FVIL.Parser.ParserNodeFolder("ユーザープラグイン", "Function");
            string DirIcon1 = "BookClosed";

            try
            {
                // ----- 2 階層目.
                try
                {
                    FVIL.Parser.ParserNodeFolder child_nodes = new FVIL.Parser.ParserNodeFolder("Category1", DirIcon1);
                    dstnodes.ParserNodes.Add(child_nodes);

                    child_nodes.ParserNodes.Add(new ParserNodeUser1());
                    child_nodes.ParserNodes.Add(new ParserNodeUser2());
                }
                catch (System.Exception ex)
                {
                    FVIL.Log.ProcessLog.Logs.Add(FVIL.Log.LogLevel.Error, "Category1: {0}", ex.Message);
                }
            }
            catch (System.Exception ex)
            {
                FVIL.Log.ProcessLog.Logs.Add(FVIL.Log.LogLevel.Error, "ユーザープラグイン: {0}", ex.Message);
            }

            units.Add(dstnodes);
        }
    }

    /// <summary>
    /// ノード1
    /// </summary>
    [System.SerializableAttribute()]
    [System.ComponentModel.TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter))]
    public partial class ParserNodeUser1 : FVIL.Parser.ParserNodeUnit
    {
        public ParserNodeUser1()
        {
            this.Name = "ノード1";
            this.ImageKey = "GrayScale";
        }

        public override void Execute(object sender, System.EventArgs e)
        {
        }
    }

    /// <summary>
    /// ノード2
    /// </summary>
    [System.SerializableAttribute()]
    [System.ComponentModel.TypeConverterAttribute(typeof(System.ComponentModel.ExpandableObjectConverter))]
    public partial class ParserNodeUser2 : FVIL.Parser.ParserNodeUnit
    {
        public ParserNodeUser2()
        {
            this.Name = "ノード2";
            this.ImageKey = "Binary";
        }

        public override void Execute(object sender, System.EventArgs e)
        {
        }
    }
}


Visual Basic Copy imageCopy
' $Revision: 1.1 $

Imports System
Imports System.Collections.Generic
Imports System.ComponentModel
Imports System.Data
Imports System.Drawing
Imports System.Text
Imports System.Windows.Forms
Imports System.Reflection
Imports System.IO
Imports System.Xml
Imports System.Xml.Serialization
Imports System.Runtime.Serialization
Imports System.Security.Permissions
Imports fvalgcli

Namespace User
    ''' <summary>
    ''' エントリポイント
    ''' </summary>
    Public Class EntryPoint
        Implements FVIL.Parser.IParserEntryPoint
        ''' <summary>
        ''' 初期化
        ''' </summary>
        Public Overridable Sub Setup() Implements FVIL.Parser.IParserEntryPoint.Setup
            ' TODO: ここに初期化処理を実装してください.
        End Sub

        ''' <summary>
        ''' 解放
        ''' </summary>
        Public Overridable Sub TearDown() Implements FVIL.Parser.IParserEntryPoint.TearDown
            ' TODO: ここに解放処理を実装してください.
        End Sub

        ''' <summary>
        ''' ユニットノードの生成
        ''' </summary>
        ''' <param name="units">生成したユニットツリーの格納先</param>
        Public Overridable Sub CreateUnits(ByVal units As List(Of FVIL.Parser.ParserNodeUnit)) Implements FVIL.Parser.IParserEntryPoint.CreateUnits
            Dim asm As Assembly = Assembly.GetExecutingAssembly()

            ' ----- 1 階層目.
            Dim dstnodes As New FVIL.Parser.ParserNodeFolder("ユーザープラグイン", "Function")
            Dim DirIcon1 As String = "BookClosed"

            Try
                ' ----- 2 階層目.
                Try
                    Dim child_nodes As New FVIL.Parser.ParserNodeFolder("Category1", DirIcon1)
                    dstnodes.ParserNodes.Add(child_nodes)

                    child_nodes.ParserNodes.Add(New ParserNodeUser1())
                    child_nodes.ParserNodes.Add(New ParserNodeUser2())
                Catch ex As System.Exception
                    FVIL.Log.ProcessLog.Logs.Add(FVIL.Log.LogLevel.[Error], "Category1: {0}", ex.Message)
                End Try
            Catch ex As System.Exception
                FVIL.Log.ProcessLog.Logs.Add(FVIL.Log.LogLevel.[Error], "ユーザープラグイン: {0}", ex.Message)
            End Try

            units.Add(dstnodes)
        End Sub
    End Class

    ''' <summary>
    ''' ノード1
    ''' </summary>
    <System.SerializableAttribute> _
    <System.ComponentModel.TypeConverterAttribute(GetType(System.ComponentModel.ExpandableObjectConverter))> _
    Public Partial Class ParserNodeUser1
        Inherits FVIL.Parser.ParserNodeUnit
        Public Sub New()
            Me.Name = "ノード1"
            Me.ImageKey = "GrayScale"
        End Sub

        Public Overrides Sub Execute(sender As Object, e As System.EventArgs)
        End Sub
    End Class

    ''' <summary>
    ''' ノード2
    ''' </summary>
    <System.SerializableAttribute> _
    <System.ComponentModel.TypeConverterAttribute(GetType(System.ComponentModel.ExpandableObjectConverter))> _
    Public Partial Class ParserNodeUser2
        Inherits FVIL.Parser.ParserNodeUnit
        Public Sub New()
            Me.Name = "ノード2"
            Me.ImageKey = "Binary"
        End Sub

        Public Overrides Sub Execute(sender As Object, e As System.EventArgs)
        End Sub
    End Class
End Namespace

See Also