示例#1
0
        public void AgregarAMemoria(Splitter splitter1, TareaEntity t, int dir)
        {
            Random r     = new Random();
            Label  estlb = new Label();
            Color  c     = Color.FromArgb(r.Next(256), r.Next(256), r.Next(256));

            estlb.Text      = t.GetNombreTarea();
            estlb.Visible   = true;
            estlb.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
            estlb.BackColor = c;
            splitter1.Controls.Add(estlb);
            t.SetYPos(dir / 4);
            estlb.SetBounds(0, t.GetYPos(), 307, t.GetTamañoTarea() / 4);
        }
示例#2
0
        }//________________________________________________________________________----------------------------

        public void AgregarElementoTabAreas(TableLayoutPanel t, TareaEntity tarea)
        {
            if (filaLibreAreas.Count != 0 && encontrado == 0)
            {
                // Revisa si hay espacios disponibles si no, inserta uno nuevo
                Area prueba = new Area();
                foreach (int x in filaLibreAreas)
                {
                    prueba = null;
                    for (var node = llArea.First; node != null; node = node.Next)
                    {
                        if (node.Value.num == x)
                        {
                            prueba = node.Value;
                            break;
                        }
                    }

                    if (prueba.tam == tarea.GetTamañoTarea())
                    {
                        llArea.AddAfter(llArea.Find(prueba), new LinkedListNode <Area>(new Area(x, tarea.GetTamañoTarea(), prueba.dir, "A")));
                        llArea.Remove(prueba);
                        ActualizarTabla(t);
                        filaLibreAreas.Remove(x);
                        encontrado = 0;
                        break;
                    }
                    else if (prueba.tam > tarea.GetTamañoTarea())
                    {
                        LinkedListNode <Area> p = llArea.Find(prueba);
                        llArea.AddBefore(p, new LinkedListNode <Area>(new Area(x, tarea.GetTamañoTarea(), prueba.dir, "A")));
                        p.Value.dir = p.Previous.Value.tam + prueba.dir;
                        p.Value.tam = prueba.tam - p.Previous.Value.tam;
                        ActualizarTabla(t);
                        filaLibreAreas.Remove(x);
                        encontrado = 0;
                        filaLibreAreas.Add(x + 1);
                        numArea++;
                        break;
                    }
                    else
                    {
                        encontrado = 1;
                        AgregarElementoTabAreas(t, tarea);
                    }
                }
            }
            else if (llArea.First == null)
            {
                llArea.AddFirst(new Area(numArea, tarea.GetTamañoTarea(), 0, "A"));
                numArea++;
                AñadirUltimoATabla(t);
                DejarVacioElementoTabAreas(t, 0);
            }
            else
            {
                llArea.AddLast(new Area(numArea, tarea.GetTamañoTarea(), llArea.Last.Value.dir + llArea.Last.Value.tam, "A"));
                numArea++;
                AñadirUltimoATabla(t);
            }
            encontrado = 0;
        }
示例#3
0
        }//________________________________________________________________________----------------------------

        public ColaElement AgregarElementoTabAreas(TableLayoutPanel t, TareaEntity tarea)
        {
            //foreach (Particion a in llPart)
            //{
            //    Console.WriteLine(a.num + "|" + a.tam + "|" + a.dir + "|" + a.proceso + "|" + a.estado);
            //}
            //Console.WriteLine("\n----------------------------------\n");
            if (filaLibreAreas.Count != 0 && encontrado == 0)
            {
                // Revisa si hay espacios disponibles si no, inserta uno nuevo
                Area prueba = new Area();
                foreach (int x in filaLibreAreas)
                {
                    prueba = null;
                    for (var node = llArea.First; node != null; node = node.Next)
                    {
                        if (node.Value.num == x)
                        {
                            prueba = node.Value;
                            break;
                        }
                    }
                    if (prueba.tam == tarea.GetTamañoTarea())
                    {
                        llArea.AddAfter(llArea.Find(prueba), new LinkedListNode <Area>(new Area(x, tarea.GetTamañoTarea(), prueba.dir, "A", tarea)));
                        llArea.Remove(prueba);
                        ActualizarTabla(t);
                        filaLibreAreas.Remove(x);
                        encontrado = 0;
                        break;
                    }
                    else if (prueba.tam > tarea.GetTamañoTarea())
                    {
                        LinkedListNode <Area> p = llArea.Find(prueba);
                        llArea.AddBefore(p, new LinkedListNode <Area>(new Area(x, tarea.GetTamañoTarea(), prueba.dir, "A", tarea)));
                        p.Value.dir = p.Previous.Value.tam + prueba.dir;
                        p.Value.tam = prueba.tam - p.Previous.Value.tam;
                        ActualizarTabla(t);
                        filaLibreAreas.Remove(x);
                        encontrado = 0;
                        filaLibreAreas.Add(x + 1);
                        numArea++;
                        break;
                    }
                    else
                    {
                        encontrado = 1;
                        AgregarElementoTabAreas(t, tarea);
                    }
                }
            }
            else if (llArea.First == null)
            {
                llArea.AddFirst(new Area(numArea, tarea.GetTamañoTarea(), 0, "A", tarea));
                numArea++;
                AñadirUltimoATabla(t);
                //DejarVacioElementoTabAreas(t, 0);  PARA PRUEBA UNITARIA
            }
            else
            {
                if (llArea.Last.Value.dir + llArea.Last.Value.tam + tarea.GetTamañoTarea() > espacioDisponible)
                {
                    tarea.SetPrioridad(tarea.GetPrioridad() + 1);
                    return(new ColaElement(tarea));
                }
                llArea.AddLast(new Area(numArea, tarea.GetTamañoTarea(), llArea.Last.Value.dir + llArea.Last.Value.tam, "A", tarea));
                numArea++;
                AñadirUltimoATabla(t);
            }
            encontrado = 0;
            tarea.SetPrioridad(0);// tarea fue añadida a Tabla de Areas Disp.
            return(new ColaElement(tarea));
        }