コード例 #1
0
        private void UpdateTreeView()
        {
            var previousTreeView = TreeView;

            var newTreeView = new ObservableCollection <TreeViewItemViewModel>();

            var ts = _magazzinoUtensile.GetTools <Utensile>(_measureUnit);

            var tipies = from t in ts
                         group t by t.GetType()
                         into tg
                         select tg;

            foreach (var tipy in tipies)
            {
                string groupName;

                _toolDictName.TryGetValue(tipy.Key, out groupName);

                var toolTypeTreeView = new ToolTypeItemViewModel(groupName);

                toolTypeTreeView.OnItemSelected += OnItemSelected;

                newTreeView.Add(toolTypeTreeView);

                foreach (var utensile in tipy)
                {
                    var t = ToolTreeViewItemViewModel.GetViewModel(utensile, toolTypeTreeView);

                    t.OnItemSelected += OnItemSelected;

                    toolTypeTreeView.Children.Add(t);
                }
            }

            /*
             * Ora itero vecchio albero per mantenere struttura,
             *
             */

            foreach (var treeViewItemViewModel in previousTreeView)
            {
                foreach (var toolTypeItemViewModel in newTreeView)
                {
                    if (treeViewItemViewModel.Label == toolTypeItemViewModel.Label && treeViewItemViewModel.IsExpanded)
                    {
                        toolTypeItemViewModel.IsExpanded = true;

                        var oldChildren = treeViewItemViewModel.Children.OfType <ToolTreeViewItemViewModel>();
                        var newChildre  = toolTypeItemViewModel.Children.OfType <ToolTreeViewItemViewModel>();

                        foreach (var oldChild in oldChildren)
                        {
                            if (oldChild.IsExpanded)
                            {
                                foreach (var newChild in newChildre)
                                {
                                    if (oldChild.Tool.ToolGuid == newChild.Tool.ToolGuid)
                                    {
                                        newChild.IsExpanded = true;
                                    }
                                }
                            }
                        }
                    }
                }
            }

            TreeView = newTreeView;

            //if (TreeView.Count > 0)
            //    TreeView.Clear();

            //foreach (var keyValuePair in _toolDictName)
            //{
            //    var tools = _magazzinoUtensile.GetTools(keyValuePair.Key, _measureUnit);

            //    var drillTreeItem = new ToolTypeItemViewModel(keyValuePair.Value);

            //    drillTreeItem.OnItemSelected += TOnItemSelected;

            //    foreach (var drillTool in tools)
            //    {
            //        var t = ToolTreeViewItemViewModel.GetViewModel(drillTool, drillTreeItem);

            //        t.OnItemSelected += TOnItemSelected;

            //        drillTreeItem.Children.Add(t);
            //    }

            //    TreeView.Add(drillTreeItem);

            //}
        }
コード例 #2
0
        /*
         * todo :
         * questi 2 metodi sono simili.
         *
         * magari fare - 1 metodo che ti da il tipo dell'utensile
         *
         * per create tool basta usare activator per avere oggetto
         *
         * per compatibletools usi il tipo per avere la lista di oggetti da magazzino utensile.
         *
         * in casi particolari controlli che alla lavorazione non sia legata un'interfaccia per avere
         * parametri per filtrare ricerca.
         * es IDiametroPuntaForatura
         * cosi restituisco solo punte con diametro certi in tutti altri casi è ok qualsiasi parametro..
         */

        internal List <Utensile> GetCompatibleTools(LavorazioniEnumOperazioni operationType, MagazzinoUtensile magazzino)
        {
            IEnumerable <Utensile> tools = null;

            switch (operationType)
            {
            case LavorazioniEnumOperazioni.FresaturaSpianaturaFinitura:
            case LavorazioniEnumOperazioni.FresaturaSpianaturaSgrossatura:
                tools = magazzino.GetTools <FresaSpianare>(MeasureUnit);
                break;


            case LavorazioniEnumOperazioni.AllargaturaBareno:
            case LavorazioniEnumOperazioni.Sgrossatura:
            case LavorazioniEnumOperazioni.Finitura:
            //case LavorazioniEnumOperazioni.SgrossaturaTrocoidale:
            case LavorazioniEnumOperazioni.FresaturaFilettare:
                tools = magazzino.GetTools <FresaCandela>(MeasureUnit);
                break;

            case LavorazioniEnumOperazioni.Smussatura:
            case LavorazioniEnumOperazioni.ForaturaSmusso:
            {
                tools = magazzino.GetTools <Svasatore>(MeasureUnit);
            } break;

            case LavorazioniEnumOperazioni.ForaturaPunta:
            {
                tools = magazzino.GetTools <Punta>(MeasureUnit);
                /* filtro punta diametro */
            } break;

            case LavorazioniEnumOperazioni.ForaturaCentrino:
            {
                tools = magazzino.GetTools <Centrino>(MeasureUnit);
            } break;


            case LavorazioniEnumOperazioni.ForaturaLamatore:
            {
                tools = magazzino.GetTools <Lamatore>(MeasureUnit);
            } break;


            case LavorazioniEnumOperazioni.ForaturaBareno:
            {
                tools = magazzino.GetTools <Bareno>(MeasureUnit);
            } break;

            case LavorazioniEnumOperazioni.ForaturaAlesatore:
            {
                tools = magazzino.GetTools <Alesatore>(MeasureUnit);
            } break;

            default:
            {
                throw new NotImplementedException("DrBaseClass.GetCompTools");
                //return magazzino.GetDrill(DiametroForatura, unit);
            } break;
            }

            if (tools != null)
            {
                return(tools.ToList());
            }

            return(null);
        }