/// <see cref="BaseListCtrl.GetDataToDrag" /> protected override object GetDataToDrag() { ReadValueIdCollection valueIds = new ReadValueIdCollection(); foreach (ListViewItem listItem in ItemsLV.SelectedItems) { NodeField field = listItem.Tag as NodeField; if (field != null && field.ValueId != null) { valueIds.Add(field.ValueId); } } return(valueIds); }
private NodeField ParseField() { NodeField f; Match(TokenType.FieldBegin); if (Lookahead(TokenType.FieldEnd)) { f = new NodeField { Text = ParseEmpty() } } ; else { f = new NodeField { Text = ParseText() } }; Match(TokenType.FieldEnd); return(f); }
private void OnClickNodeItem(object sender, EventArgs e) { ToolStripDropDownItem toolStripDropDownItem = (ToolStripDropDownItem)sender; if (toolStripDropDownItem == null) { return; } NodeClass nodeClass = (NodeClass)toolStripDropDownItem.Tag; if (nodeClass == null) { return; } Rect rect = new Rect(m_MouseWorldPoint.x, m_MouseWorldPoint.y, EditorUtility.NodeWidth, EditorUtility.NodeHeight); NodeDesigner node = new NodeDesigner(nodeClass.Label, nodeClass.ClassType, rect); node.ID = Agent.GenNodeID(); node.Label = nodeClass.Label; node.NodeType = nodeClass.NodeType; node.ClassType = nodeClass.ClassType; node.Describe = nodeClass.Describe; //创建字段 for (int i = 0; i < nodeClass.Fields.Count; i++) { NodeField nodeField = nodeClass.Fields[i]; FieldDesigner field = EditorUtility.CreateFieldByNodeField(nodeField); if (field == null) { continue; } node.Fields.Add(field); } Agent.AddNode(node); }
/// <summary> /// Adds the properties to the control. /// </summary> private void AddProperties() { // build list of properties to read. ReadValueIdCollection nodesToRead = new ReadValueIdCollection(); Browser browser = new Browser(m_session); browser.BrowseDirection = BrowseDirection.Forward; browser.ReferenceTypeId = ReferenceTypeIds.HasProperty; browser.IncludeSubtypes = true; browser.NodeClassMask = (int)NodeClass.Variable; browser.ContinueUntilDone = true; ReferenceDescriptionCollection references = browser.Browse(m_nodeId); foreach (ReferenceDescription reference in references) { ReadValueId valueId = new ReadValueId(); valueId.NodeId = (NodeId)reference.NodeId; valueId.AttributeId = Attributes.Value; valueId.IndexRange = null; valueId.DataEncoding = null; nodesToRead.Add(valueId); } // check for empty list. if (nodesToRead.Count == 0) { return; } // read values. DataValueCollection values; DiagnosticInfoCollection diagnosticInfos; m_session.Read( null, 0, TimestampsToReturn.Neither, nodesToRead, out values, out diagnosticInfos); ClientBase.ValidateResponse(values, nodesToRead); ClientBase.ValidateDiagnosticInfos(diagnosticInfos, nodesToRead); // update control. for (int ii = 0; ii < nodesToRead.Count; ii++) { NodeField field = new NodeField(); field.ValueId = nodesToRead[ii]; field.Name = references[ii].ToString(); field.Value = values[ii].Value; field.StatusCode = values[ii].StatusCode; if (diagnosticInfos != null && diagnosticInfos.Count > ii) { field.DiagnosticInfo = diagnosticInfos[ii]; } AddItem(field, "Property", -1); } }
/// <summary> /// Adds the targets of references to the control. /// </summary> private void AddReferences(NodeId referenceTypeId, BrowseDirection browseDirection) { // fetch the attributes for the reference type. INode referenceType = m_session.NodeCache.Find(referenceTypeId); if (referenceType == null) { return; } // browse for the references. Browser browser = new Browser(m_session); browser.BrowseDirection = browseDirection; browser.ReferenceTypeId = referenceTypeId; browser.IncludeSubtypes = true; browser.NodeClassMask = 0; browser.ContinueUntilDone = true; ReferenceDescriptionCollection references = browser.Browse(m_nodeId); // add results to list. foreach (ReferenceDescription reference in references) { NodeField field = new NodeField(); field.Name = referenceType.ToString(); field.Value = reference.ToString(); field.StatusCode = StatusCodes.Good; AddItem(field, "ReferenceType", -1); } }
private void AddItem(NodeField field, string v1, int v2) { throw new NotImplementedException(); }
/// <summary> /// Adds the attributes to the control. /// </summary> private void AddAttributes() { // build list of attributes to read. ReadValueIdCollection nodesToRead = new ReadValueIdCollection(); foreach (uint attributeId in Attributes.GetIdentifiers()) { ReadValueId valueId = new ReadValueId(); valueId.NodeId = m_nodeId; valueId.AttributeId = attributeId; valueId.IndexRange = null; valueId.DataEncoding = null; nodesToRead.Add(valueId); } // read attributes. DataValueCollection values; DiagnosticInfoCollection diagnosticInfos; m_session.Read( null, 0, TimestampsToReturn.Neither, nodesToRead, out values, out diagnosticInfos); ClientBase.ValidateResponse(values, nodesToRead); ClientBase.ValidateDiagnosticInfos(diagnosticInfos, nodesToRead); // update control. for (int ii = 0; ii < nodesToRead.Count; ii++) { // check if node supports attribute. if (values[ii].StatusCode == StatusCodes.BadAttributeIdInvalid) { continue; } NodeField field = new NodeField(); field.ValueId = nodesToRead[ii]; field.Name = Attributes.GetBrowseName(nodesToRead[ii].AttributeId); field.Value = values[ii].Value; field.StatusCode = values[ii].StatusCode; if (diagnosticInfos != null && diagnosticInfos.Count > ii) { field.DiagnosticInfo = diagnosticInfos[ii]; } AddItem(field, "SimpleItem", -1); } }
internal abstract long other(NodeField field, Org.Neo4j.Kernel.impl.store.record.RelationshipRecord relationship);
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes: //ORIGINAL LINE: RelationshipField(NodeField node) { this.NODE = node; } private org.neo4j.consistency.store.RecordReference<org.neo4j.kernel.impl.store.record.RelationshipRecord> buildFromCache(org.neo4j.kernel.impl.store.record.RelationshipRecord relationship, long reference, long nodeId, org.neo4j.consistency.store.RecordAccess records) { org.neo4j.consistency.checking.cache.CacheAccess_Client cacheAccess = records.cacheAccess().client(); if(!cacheAccess.withinBounds(nodeId)) { cacheAccess.incAndGetCount(org.neo4j.consistency.statistics.Counts_Type.correctSkipCheck); return org.neo4j.consistency.store.RecordReference_SkippingReference.skipReference(); } if(reference != cacheAccess.getFromCache(nodeId, SLOT_RELATIONSHIP_ID)) { if(referenceShouldBeSkipped(relationship, reference, records)) { cacheAccess.incAndGetCount(org.neo4j.consistency.statistics.Counts_Type.correctSkipCheck); return org.neo4j.consistency.store.RecordReference_SkippingReference.skipReference(); } cacheAccess.incAndGetCount(org.neo4j.consistency.statistics.Counts_Type.missCheck); return records.relationship(reference); } org.neo4j.kernel.impl.store.record.RelationshipRecord rel = new org.neo4j.kernel.impl.store.record.RelationshipRecord(reference); rel.setCreated(); if(cacheAccess.getFromCache(nodeId, SLOT_SOURCE_OR_TARGET) == SOURCE) { rel.setFirstNode(nodeId); } else { rel.setSecondNode(nodeId); } rel = populateRelationshipFromCache(nodeId, rel, cacheAccess); return new org.neo4j.consistency.store.DirectRecordReference<>(rel, records); } private boolean referenceShouldBeSkipped(org.neo4j.kernel.impl.store.record.RelationshipRecord relationship, long reference, org.neo4j.consistency.store.RecordAccess records) { return(records.cacheAccess().isForward() && reference > relationship.getId()) || (!records.cacheAccess().isForward() && reference < relationship.getId()); } @Override public void checkConsistency(org.neo4j.kernel.impl.store.record.RelationshipRecord relationship, CheckerEngine<org.neo4j.kernel.impl.store.record.RelationshipRecord,org.neo4j.consistency.report.ConsistencyReport_RelationshipConsistencyReport> engine, org.neo4j.consistency.store.RecordAccess records) { org.neo4j.consistency.checking.cache.CacheAccess_Client cacheAccess = records.cacheAccess().client(); if(!endOfChain(relationship)) { org.neo4j.consistency.store.RecordReference<org.neo4j.kernel.impl.store.record.RelationshipRecord> referred = null; long reference = valueFrom(relationship); long nodeId = -1; if(records.shouldCheck(reference, org.neo4j.consistency.checking.full.MultiPassStore.RELATIONSHIPS)) { nodeId = NODE == NodeField.SOURCE ? relationship.getFirstNode() : relationship.getSecondNode(); if(org.neo4j.kernel.impl.store.record.Record.NO_NEXT_RELATIONSHIP.is(cacheAccess.getFromCache(nodeId, SLOT_RELATIONSHIP_ID))) { referred = org.neo4j.consistency.store.RecordReference_SkippingReference.skipReference(); cacheAccess.incAndGetCount(org.neo4j.consistency.statistics.Counts_Type.noCacheSkip); } else { referred = buildFromCache(relationship, reference, nodeId, records); if(referred == org.neo4j.consistency.store.RecordReference_SkippingReference.skipReference<org.neo4j.kernel.impl.store.record.RelationshipRecord>()) { cacheAccess.incAndGetCount(org.neo4j.consistency.statistics.Counts_Type.skipCheck); } } } else { if(referenceShouldBeSkipped(relationship, reference, records)) { referred = org.neo4j.consistency.store.RecordReference_SkippingReference.skipReference(); } } engine.comparativeCheck(referred, this); if(referred != org.neo4j.consistency.store.RecordReference_SkippingReference.skipReference<org.neo4j.kernel.impl.store.record.RelationshipRecord>()) { cacheAccess.incAndGetCount(org.neo4j.consistency.statistics.Counts_Type.checked); linkChecked(cacheAccess); } } else { cacheAccess.incAndGetCount(org.neo4j.consistency.statistics.Counts_Type.checked); linkChecked(cacheAccess); } } @Override public void checkReference(org.neo4j.kernel.impl.store.record.RelationshipRecord record, org.neo4j.kernel.impl.store.record.RelationshipRecord referred, CheckerEngine<org.neo4j.kernel.impl.store.record.RelationshipRecord,org.neo4j.consistency.report.ConsistencyReport_RelationshipConsistencyReport> engine, org.neo4j.consistency.store.RecordAccess records) { NodeField field = NodeField.select(referred, node(record)); if(field == null) { otherNode(engine.report(), referred); } else { org.neo4j.consistency.checking.cache.CacheAccess_Client cacheAccess = records.cacheAccess().client(); if(other(field, referred) != record.getId()) { if(referred.isCreated()) { org.neo4j.consistency.store.RecordReference<org.neo4j.kernel.impl.store.record.RelationshipRecord> refRel = records.relationship(referred.getId()); referred = (org.neo4j.kernel.impl.store.record.RelationshipRecord)((org.neo4j.consistency.store.DirectRecordReference) refRel).record(); checkReference(record, referred, engine, records); cacheAccess.incAndGetCount(org.neo4j.consistency.statistics.Counts_Type.skipBackup); } else { cacheAccess.incAndGetCount(org.neo4j.consistency.statistics.Counts_Type.checkErrors); noBackReference(engine == null ? null : engine.report(), referred); } } else { if(!referenceShouldBeSkipped(record, referred.getId(), records) && !referred.inUse()) { engine.report().notUsedRelationshipReferencedInChain(referred); } if(referred.isCreated()) { cacheAccess.clearCache(node(record)); } } } } abstract boolean endOfChain(org.neo4j.kernel.impl.store.record.RelationshipRecord record); RelationshipField(NodeField node) { this.NODE = node; }
void DrawInspector() { if (selectedNode == null) { return; } // Debug.Log (selectedNode); // if (Event.current.type != EventType.Repaint || Event.current.type != EventType.Layout || Event.current.type != ) // return; GUIStyle nodeTypeStyle = new GUIStyle(EditorStyles.label); nodeTypeStyle.alignment = TextAnchor.UpperCenter; nodeTypeStyle.fontStyle = FontStyle.Bold; EditorGUILayout.LabelField(selectedNode.Id, nodeTypeStyle); DrawId(); if (_fields != null) { for (int i = 0; i < _fields.Count; i++) { EditorGUILayout.Separator(); EditorGUILayout.BeginVertical(); FieldInfo field = _fields[i]; string fieldName = field.Name; NodeField nodeField = _fieldToAttributeDict[field]; if (nodeField.GetType() == typeof(NodeField)) { CustomFieldDrawer customFieldDrawer = CustomFieldDrawerManager.GetCustomFieldDrawer(field.FieldType); if (customFieldDrawer == null) { // draw normally if you can...? if (field.FieldType == typeof(bool)) { field.SetValue(selectedNode, EditorGUILayout.ToggleLeft(nodeField.label, (bool)field.GetValue(selectedNode))); } } else { customFieldDrawer.targetField = field; customFieldDrawer.targetNode = selectedNode; customFieldDrawer.Draw(); } } else if (nodeField.GetType() == typeof(VariableGetter)) { VariableGetter getterAttr = (VariableGetter)nodeField; if (getterAttr.overrideField == null) { // no override just draw normal DrawVariableDropdown(field, getterAttr); } else { string fieldValue = (string)field.GetValue(selectedNode); if (fieldValue == null) { // draw field normally } } } else if (nodeField.GetType() == typeof(VariableSetter)) { VariableSetter setterAttr = (VariableSetter)nodeField; DrawVariableDropdown(field, setterAttr); } EditorGUILayout.EndVertical(); } // EditorGUILayout.BeginVertical(EditorStyles.textArea); EditorGUILayout.Separator(); EditorGUILayout.LabelField("Comments"); GUIStyle commentStyle = new GUIStyle(EditorStyles.textArea); commentStyle.fixedHeight = 100; EditorGUILayout.TextArea("", commentStyle); } if (Application.isPlaying) { EditorGUILayout.TextArea(selectedNode.StateMessage, GUILayout.Height(60)); } if (redrawInspector) { GUI.FocusControl(null); redrawInspector = false; } }