About the Utility wizard for basic schematic datasets configuration Sample
[C#]
frmAdvanced.cs
// Copyright 2010 ESRI
//
// All rights reserved under the copyright laws of the United States
// and applicable international laws, treaties, and conventions.
//
// You may freely redistribute and use this sample code, with or
// without modification, provided you include the original copyright
// notice and use restrictions.
//
// See the use restrictions at <your ArcGIS install location>/DeveloperKit10.0/userestrictions.txt.
using System;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ESRI.ArcGIS.Schematic;
namespace SchematicCreateBasicSettingsAddIn
{
public partial class frmAdvanced : Form
{
public event EventHandler<AdvancedEvents> doneFormEvent;
public string strLayers;
public string strNodeLayers;
public NameValueCollection m_myCol = new NameValueCollection();
public NameValueCollection m_colFieldsToCreate = new NameValueCollection();
public frmAdvanced()
{
InitializeComponent();
this.Load += new EventHandler(frmAdvanced_Load);
}
void frmAdvanced_Load(object sender, EventArgs e)
{
string[] myItems;
char[] splitter = { ';' };
//handle the tab for attributes
myItems = strLayers.Split(splitter);
foreach (string s in myItems)
{
if (s.Length > 0)
{
this.tvFeatureClasses.Nodes.Add(s, s);
}
}
//handle the root nodes dropdown
myItems = strNodeLayers.Split(splitter);
foreach (string s in myItems)
{
if (s.Length > 0)
{
this.cboRoot.Items.Add(s);
}
}
}
private void chkApplyAlgo_CheckedChanged(object sender, EventArgs e)
{
if (chkApplyAlgo.Checked == true)
{
cboDirection.Enabled = true;
cboRoot.Enabled = true;
}
else
{
cboDirection.Enabled = false;
cboDirection.Text = "";
cboRoot.Enabled = false;
cboRoot.Text = "";
}
}
private void btnDone_Click(object sender, EventArgs e)
{
//raise event back to controller
Dictionary<string, string> dicAlgoParams = new Dictionary<string, string>();
string strAlgo = "";
string strRoot = "";
if (chkApplyAlgo.Checked == true)
{
dicAlgoParams.Add("Direction", cboDirection.Text);
strAlgo = "SmartTree";
strRoot = cboRoot.Text;
}
AdvancedEvents evts = new AdvancedEvents(strAlgo, dicAlgoParams, strRoot, m_colFieldsToCreate);
this.doneFormEvent(sender, evts);
m_myCol.Clear();
m_colFieldsToCreate.Clear();
}
private void chkUseAttributes_CheckedChanged(object sender, EventArgs e)
{
if (chkUseAttributes.Checked == true)
{
tvFeatureClasses.Enabled = true;
chkFields.Enabled = true;
}
else
{
tvFeatureClasses.Enabled = false;
chkFields.Enabled = false;
chkFields.Items.Clear();
m_colFieldsToCreate.Clear();
}
}
private void chkFields_SelectedIndexChanged(object sender, EventArgs e)
{
string[] strFields = m_colFieldsToCreate.GetValues(tvFeatureClasses.SelectedNode.Name.ToString());
if (strFields != null)
{
//clear that key and start over
m_colFieldsToCreate.Remove(tvFeatureClasses.SelectedNode.Name.ToString());
}
if (chkFields.CheckedItems.Count > 0)
{
foreach (string s in chkFields.CheckedItems)
{
m_colFieldsToCreate.Add(tvFeatureClasses.SelectedNode.Name.ToString(), s);
}
}
}
private void tvFeatureClasses_AfterSelect(object sender, TreeViewEventArgs e)
{
string strFCName = e.Node.Text.ToString();
//load chkfields
chkFields.Items.Clear();
string[] strFields = m_myCol.GetValues(strFCName);
foreach (string s in strFields)
{
chkFields.Items.Add(s);
}
//re-check the boxes if they already did check some
if (m_colFieldsToCreate.Count > 0)
{
int x = -1;
string[] strCheckedItems = m_colFieldsToCreate.GetValues(tvFeatureClasses.SelectedNode.Name.ToString());
if (strCheckedItems != null)
{
foreach (string s in strCheckedItems)
{
x = chkFields.FindStringExact(s, -1);
if (x != -1)
{
chkFields.SetItemChecked(x, true);
}
}
}
}
}
}
}
[Visual Basic .NET]
frmAdvanced.vb
' Copyright 2010 ESRI
'
' All rights reserved under the copyright laws of the United States
' and applicable international laws, treaties, and conventions.
'
' You may freely redistribute and use this sample code, with or
' without modification, provided you include the original copyright
' notice and use restrictions.
'
' See the use restrictions at <your ArcGIS install location>/DeveloperKit10.0/userestrictions.txt.
Imports System
Imports System.Collections.Generic
Imports System.Collections.Specialized
Imports System.ComponentModel
Imports System.Drawing
Imports System.Linq
Imports System.Text
Imports System.Windows.Forms
Imports ESRI.ArcGIS.Schematic
Partial Public Class frmAdvanced
Public Event doneFormEvent As EventHandler(Of AdvancedEvents)
Public strLayers As String
Public strNodeLayers As String
Public m_myCol As NameValueCollection = New NameValueCollection()
Public m_colFieldsToCreate As NameValueCollection = New NameValueCollection()
Public Sub New()
InitializeComponent()
AddHandler Me.Load, New EventHandler(AddressOf frmAdvanced_Load)
End Sub
Sub frmAdvanced_Load(ByVal sender As Object, ByVal e As EventArgs)
Dim myItems() As String
Dim splitter() As Char = {";"}
myItems = strLayers.Split(splitter)
For Each s As String In myItems
If (s.Length > 0) Then
Me.tvFeatureClasses.Nodes.Add(s, s)
End If
Next
myItems = strNodeLayers.Split(splitter)
For Each s As String In myItems
If (s.Length > 0) Then
Me.cboRoot.Items.Add(s)
End If
Next
End Sub
Private Sub chkApplyAlgo_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
If (chkApplyAlgo.Checked = True) Then
cboDirection.Enabled = True
cboRoot.Enabled = True
Else
cboDirection.Enabled = False
cboDirection.Text = ""
cboRoot.Enabled = False
cboRoot.Text = ""
End If
End Sub
Private Sub btnDone_Click(ByVal sender As Object, ByVal e As EventArgs)
'raise event back to controller
Dim dicAlgoParams As Dictionary(Of String, String) = New Dictionary(Of String, String)()
Dim strAlgo As String = ""
Dim strRoot As String = ""
If (chkApplyAlgo.Checked = True) Then
dicAlgoParams.Add("Direction", cboDirection.Text)
strAlgo = "SmartTree"
strRoot = cboRoot.Text
End If
Dim evts As AdvancedEvents = New AdvancedEvents(strAlgo, dicAlgoParams, strRoot, m_colFieldsToCreate)
RaiseEvent doneFormEvent(sender, evts)
m_myCol.Clear()
m_colFieldsToCreate.Clear()
End Sub
Private Sub chkUseAttributes_CheckedChanged(ByVal sender As Object, ByVal e As EventArgs)
If (chkUseAttributes.Checked = True) Then
tvFeatureClasses.Enabled = True
chkFields.Enabled = True
Else
tvFeatureClasses.Enabled = False
chkFields.Enabled = False
chkFields.Items.Clear()
m_colFieldsToCreate.Clear()
End If
End Sub
Private Sub chkFields_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs)
Dim strFields() As String = m_colFieldsToCreate.GetValues(tvFeatureClasses.SelectedNode.Name.ToString())
If (strFields IsNot Nothing) Then
'clear that key and start over
m_colFieldsToCreate.Remove(tvFeatureClasses.SelectedNode.Name.ToString())
End If
If (chkFields.CheckedItems.Count > 0) Then
For Each s As String In chkFields.CheckedItems
m_colFieldsToCreate.Add(tvFeatureClasses.SelectedNode.Name.ToString(), s)
Next
End If
End Sub
Private Sub tvFeatureClasses_AfterSelect(ByVal sender As Object, ByVal e As TreeViewEventArgs)
Dim strFCName As String = e.Node.Text.ToString()
'load chkfields
chkFields.Items.Clear()
Dim strFields() As String = m_myCol.GetValues(strFCName)
For Each s As String In strFields
chkFields.Items.Add(s)
Next
're-check the boxes if they already did check some
If (m_colFieldsToCreate.Count > 0) Then
Dim x As Integer = -1
Dim strCheckedItems() As String = m_colFieldsToCreate.GetValues(tvFeatureClasses.SelectedNode.Name.ToString())
If (strCheckedItems IsNot Nothing) Then
For Each s As String In strCheckedItems
x = chkFields.FindStringExact(s, -1)
If (x <> -1) Then
chkFields.SetItemChecked(x, True)
End If
Next
End If
End If
End Sub
End Class