Пример #1
0
        /// <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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        /// <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);
            }
        }
        /// <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);
            }
        }
 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);
            }
        }
Пример #9
0
 internal abstract long other(NodeField field, Org.Neo4j.Kernel.impl.store.record.RelationshipRecord relationship);
Пример #10
0
//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;
            }
 private void AddItem(NodeField field, string v1, int v2)
 {
     throw new NotImplementedException();
 }
Пример #12
0
        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;
            }
        }