/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void mainTree_BeforeSelect(object sender, TreeViewCancelEventArgs e) { // Check if the control have been modified if( mainPanel.Controls.Count != 0 ) { if( !(mainPanel.Controls[0] is XmlViewer) ) { BaseControl baseControl = mainPanel.Controls[0] as BaseControl; mainTree.SelectedNode.NodeFont = new Font( mainTree.Font, FontStyle.Regular ); NoBoldNode oNode = null; if( baseControl is CustomControls.PolicySet ) { oNode = new PolicySet(((CustomControls.PolicySet)baseControl).PolicySetElement); } else if( baseControl is CustomControls.PolicySet ) { oNode = new Policy(((CustomControls.Policy)baseControl).PolicyElement); } else if( baseControl is CustomControls.Rule ) { oNode = new Rule(((CustomControls.Rule)baseControl).RuleElement); } else if( baseControl is CustomControls.TargetItem ) { pol.TargetItemBaseReadWrite element = ((CustomControls.TargetItem)baseControl).TargetItemBaseElement; oNode = new TargetItem(element); } else if( baseControl is CustomControls.Obligations ) { oNode = new Obligations(((CustomControls.Obligations)baseControl).ObligationsElement); } else if( baseControl is ContextCustomControls.Attribute ) { oNode = new Attribute( ((ContextCustomControls.Attribute)baseControl).AttributeElement ); } else if( baseControl is ContextCustomControls.Resource ) { oNode = new Resource( ((ContextCustomControls.Resource)baseControl).ResourceElement ); } if( oNode != null ) { mainTree.SelectedNode = oNode; mainTree.SelectedNode.Text = oNode.Text; } } } }
private void DeleteFromTarget( TargetItem childNode ) { Target parentNode = (Target)mainTree.SelectedNode.Parent; pol.TargetItemBaseReadWrite element = childNode.TargetItemDefinition; if( element is pol.ActionElementReadWrite ) { AnyAction anyAction = new AnyAction(); parentNode.Nodes.Add( anyAction ); parentNode.TargetDefinition.Actions.ItemsList = null; parentNode.TargetDefinition.Actions.IsAny = true; } else if( element is pol.ResourceElementReadWrite ) { AnyResource anyResource = new AnyResource(); parentNode.Nodes.Add( anyResource ); parentNode.TargetDefinition.Resources.ItemsList = null; parentNode.TargetDefinition.Resources.IsAny = true; } else if( element is pol.SubjectElementReadWrite ) { AnySubject anySubject = new AnySubject(); parentNode.Nodes.Add( anySubject ); parentNode.TargetDefinition.Subjects.ItemsList = null; parentNode.TargetDefinition.Subjects.IsAny = true; } }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="args"></param> private void CreateTargetItem( object sender, EventArgs args ) { if( mainTree.SelectedNode is AnySubject ) { AnySubject anyNode = (AnySubject)mainTree.SelectedNode; Target targetNode = (Target)anyNode.Parent; int idx = targetNode.Nodes.IndexOf( anyNode ); targetNode.Nodes.RemoveAt( idx ); pol.TargetMatchReadWriteCollection matchCollection = new pol.TargetMatchReadWriteCollection(); matchCollection.Add( new pol.SubjectMatchElementReadWrite( InternalFunctions.StringEqual, new pol.AttributeValueElementReadWrite( InternalDataTypes.XsdString, "Somebody", XacmlVersion.Version11 ), //TODO: check version new pol.SubjectAttributeDesignatorElement( InternalDataTypes.XsdString, false, SubjectElement.ActionSubjectId, "", "", XacmlVersion.Version11 ), XacmlVersion.Version11 ) ); //TODO: check version pol.SubjectElementReadWrite targetItem = new pol.SubjectElementReadWrite( matchCollection, XacmlVersion.Version11 ); //TODO: check version TargetItem targetItemNode = new TargetItem( targetItem ); targetNode.Nodes.Insert( idx, targetItemNode ); targetNode.TargetDefinition.Subjects.IsAny = false; targetNode.TargetDefinition.Subjects.ItemsList.Add( targetItem ); targetItemNode.NodeFont = new Font( mainTree.Font, FontStyle.Bold ); mainTree.SelectedNode = targetItemNode; } else if( mainTree.SelectedNode is AnyAction ) { AnyAction anyActionNode = (AnyAction)mainTree.SelectedNode; Target targetNode = (Target)anyActionNode.Parent; int idx = targetNode.Nodes.IndexOf( anyActionNode ); targetNode.Nodes.RemoveAt( idx ); pol.TargetMatchReadWriteCollection matchCollection = new pol.TargetMatchReadWriteCollection(); matchCollection.Add( new pol.ActionMatchElementReadWrite( InternalFunctions.StringEqual, new pol.AttributeValueElementReadWrite( InternalDataTypes.XsdString, "DoSomething", XacmlVersion.Version11 ), //TODO: check version new pol.ActionAttributeDesignatorElement( InternalDataTypes.XsdString, false, ActionElement.ActionId, "", XacmlVersion.Version11 ), XacmlVersion.Version11 ) ); //TODO: check version pol.ActionElementReadWrite action = new pol.ActionElementReadWrite( matchCollection, XacmlVersion.Version11 ); //TODO: check version TargetItem actionNode = new TargetItem( action ); targetNode.Nodes.Insert( idx, actionNode ); targetNode.TargetDefinition.Actions.IsAny = false; targetNode.TargetDefinition.Actions.ItemsList.Add( action ); actionNode.NodeFont = new Font( mainTree.Font, FontStyle.Bold ); mainTree.SelectedNode = actionNode; } else if( mainTree.SelectedNode is AnyResource ) { AnyResource anyNode = (AnyResource)mainTree.SelectedNode; Target targetNode = (Target)anyNode.Parent; int idx = targetNode.Nodes.IndexOf( anyNode ); targetNode.Nodes.RemoveAt( idx ); pol.TargetMatchReadWriteCollection matchCollection = new pol.TargetMatchReadWriteCollection(); matchCollection.Add( new pol.ResourceMatchElementReadWrite( InternalFunctions.StringEqual, new pol.AttributeValueElementReadWrite( InternalDataTypes.XsdString, "Something", XacmlVersion.Version11 ), //TODO: check version new pol.ResourceAttributeDesignatorElement( InternalDataTypes.XsdString, false, ResourceElement.ResourceId, "", XacmlVersion.Version11 ), XacmlVersion.Version11 ) ); //TODO: check version pol.ResourceElementReadWrite targetItem = new pol.ResourceElementReadWrite( matchCollection, XacmlVersion.Version11 ); //TODO: check version TargetItem targetItemNode = new TargetItem( targetItem ); targetNode.Nodes.Insert( idx, targetItemNode ); targetNode.TargetDefinition.Resources.IsAny = false; targetNode.TargetDefinition.Resources.ItemsList.Add( targetItem ); targetItemNode.NodeFont = new Font( mainTree.Font, FontStyle.Bold ); mainTree.SelectedNode = targetItemNode; } }