コード例 #1
0
ファイル: Main.cs プロジェクト: Chenguang-Zhu/ICE-C5
        private void BuildModel()
        {
            stateList.Items.Clear();

              var items = new List<ListViewItem>();
              LangModel = langProvider.GetLanguageSpecificModel(currentModel, viewOpts);
              states = LangModel.States.ToArray();
              var oldRoot = unfoldingRoot;
              SkeletonItem selectedSkel = null;
              if (oldRoot != null && SelectedNode() != null) {
            selectedSkel = SelectedNode().skel;
              }
              unfoldingRoot = new SkeletonItem(this, states.Length);
              allItems = unfoldingRoot.PopulateRoot(states);

              var idx = 0;
              foreach (var i in states) {
            var it = new ListViewItem(new string[] { idx.ToString(), i.Name, "" });
            it.Tag = i;
            items.Add(it);
            idx++;
              }
              stateList.Items.AddRange(items.ToArray());
              unfoldingRoot.Expanded = true;

              if (oldRoot == null) {
            SetState(0);
            stateList.Items[0].Selected = true;
            SetColumnSizes();
              } else {
            var mapping = new Dictionary<SkeletonItem, SkeletonItem>();
            unfoldingRoot.SyncWith(mapping, oldRoot);
            SkeletonItem newIt = null;
            while (selectedSkel != null) {
              if (mapping.TryGetValue(selectedSkel, out newIt)) break;
              selectedSkel = selectedSkel.parent;
            }
            if (CurrentState >= stateList.Items.Count)
              CurrentState = 0;
            if (PreviousState >= stateList.Items.Count)
              PreviousState = -1;
            if (newIt != null) GotoNode(newIt);
            SyncStateListValues();
            UpdateMatches(true);
              }
        }
コード例 #2
0
        private void BuildModel()
        {
            stateList.Items.Clear();

            var items = new List <ListViewItem>();

            LangModel = langProvider.GetLanguageSpecificModel(currentModel, viewOpts);
            states    = LangModel.States.ToArray();
            var          oldRoot      = unfoldingRoot;
            SkeletonItem selectedSkel = null;

            if (oldRoot != null && SelectedNode() != null)
            {
                selectedSkel = SelectedNode().skel;
            }
            unfoldingRoot = new SkeletonItem(this, states.Length);
            allItems      = unfoldingRoot.PopulateRoot(states);

            var idx = 0;

            foreach (var i in states)
            {
                var it = new ListViewItem(new string[] { idx.ToString(), i.Name, "" });
                it.Tag = i;
                items.Add(it);
                idx++;
            }
            stateList.Items.AddRange(items.ToArray());
            unfoldingRoot.Expanded = true;

            if (oldRoot == null)
            {
                SetState(0);
                stateList.Items[0].Selected = true;
                SetColumnSizes();
            }
            else
            {
                var mapping = new Dictionary <SkeletonItem, SkeletonItem>();
                unfoldingRoot.SyncWith(mapping, oldRoot);
                SkeletonItem newIt = null;
                while (selectedSkel != null)
                {
                    if (mapping.TryGetValue(selectedSkel, out newIt))
                    {
                        break;
                    }
                    selectedSkel = selectedSkel.parent;
                }
                if (CurrentState >= stateList.Items.Count)
                {
                    CurrentState = 0;
                }
                if (PreviousState >= stateList.Items.Count)
                {
                    PreviousState = -1;
                }
                if (newIt != null)
                {
                    GotoNode(newIt);
                }
                SyncStateListValues();
                UpdateMatches(true);
            }
        }