コード例 #1
0
        private void LlenaItems(InterfaseListaDeElementos laLista)
        {
            // Añade los elementos.
            IDictionary <Vía, IList <BuscadorDePosiblesErroresDeRuteo.ElementoDePosibleErrorDeRuteo> > erroresDeRuteo = miBuscadorDePosiblesErroresDeRuteo.PosiblesErrorDeRuteo;

            foreach (KeyValuePair <Vía, IList <BuscadorDePosiblesErroresDeRuteo.ElementoDePosibleErrorDeRuteo> > ítem in erroresDeRuteo)
            {
                // Crea el grupo.
                Vía           vía   = ítem.Key;
                ListViewGroup grupo = new ListViewGroup(vía.Nombre);
                laLista.Groups.Add(grupo);

                // Añade los elementos de las incongruencia a la lista.
                IList <BuscadorDePosiblesErroresDeRuteo.ElementoDePosibleErrorDeRuteo> elementosDePosibleErrorDeRuteo = ítem.Value;
                foreach (BuscadorDePosiblesErroresDeRuteo.ElementoDePosibleErrorDeRuteo elementoDePosibleErrorDeRuteo in elementosDePosibleErrorDeRuteo)
                {
                    ElementoConEtiqueta elemento = new ElementoConEtiqueta(elementoDePosibleErrorDeRuteo.Vía);
                    // Si el elemento es un posible error entonces le ponemos un fondo amarillo.
                    if (elementoDePosibleErrorDeRuteo.EsPosibleError)
                    {
                        laLista.AñadeItem(elemento, Color.PaleGoldenrod, grupo, elementoDePosibleErrorDeRuteo.Detalle);
                    }
                    else
                    {
                        laLista.AñadeItem(elemento, grupo, elementoDePosibleErrorDeRuteo.Detalle);
                    }
                }
            }
        }
コード例 #2
0
        private void EnDibujóElementos(object elEnviador, EventArgs losArgumentos)
        {
            miMapa.PuntosAddicionales.Clear();
            double mínimaLatitud  = double.PositiveInfinity;
            double máximaLatitud  = double.NegativeInfinity;
            double mínimaLongitud = double.PositiveInfinity;
            double máximaLongitud = double.NegativeInfinity;

            // Dibuja los nodos como puntos addicionales para resaltarlos.
            foreach (int índiceSeleccionado in miLista.SelectedIndices)
            {
                ElementoConEtiqueta         elemento = (ElementoConEtiqueta)miLista.Items[índiceSeleccionado].Tag;
                InformaciónNodoDesconectado posibleNodoDesconectado = (InformaciónNodoDesconectado)elemento.Etiqueta;

                // Dibuja la vía destino.
                miMapa.PolilíneasAdicionales.Add(new InterfaseMapa.PolilíneaAdicional(
                                                     posibleNodoDesconectado.NodoDestino.Vía.Coordenadas,
                                                     miLápizDeViaDestino));

                // Dibuja los nodos y los nodos ruteables
                DibujaNodos(posibleNodoDesconectado.PosibleNodoDesconectado.Vía);
                DibujaNodos(posibleNodoDesconectado.NodoDestino.Vía);

                // Dibuja el nodo destino.
                miMapa.PuntosAddicionales.Add(new InterfaseMapa.PuntoAdicional(
                                                  posibleNodoDesconectado.NodoDestino.Coordenadas,
                                                  miPincelDeBordeDeNodo,
                                                  11));

                // Dibuja el posible nodo desconectado.
                miMapa.PuntosAddicionales.Add(new InterfaseMapa.PuntoAdicional(
                                                  posibleNodoDesconectado.PosibleNodoDesconectado.Coordenadas,
                                                  miPincelDeBordeDeNodo,
                                                  13));
                miMapa.PuntosAddicionales.Add(new InterfaseMapa.PuntoAdicional(
                                                  posibleNodoDesconectado.PosibleNodoDesconectado.Coordenadas,
                                                  miPincelDePosibleNodoDesconectado,
                                                  9));

                InterfaseMapa.ActualizaRectánguloQueEncierra(
                    posibleNodoDesconectado.PosibleNodoDesconectado.Coordenadas,
                    ref mínimaLatitud,
                    ref máximaLatitud,
                    ref mínimaLongitud,
                    ref máximaLongitud);
            }

            // Muestra los nodos desconectados.
            const float margen            = 0.0001f;
            RectangleF  rectánguloVisible = new RectangleF(
                (float)mínimaLongitud - margen,
                (float)mínimaLatitud - margen,
                (float)(máximaLongitud - mínimaLongitud) + (2 * margen),
                (float)(máximaLatitud - mínimaLatitud) + (2 * margen));

            miMapa.RectánguloVisibleEnCoordenadas = rectánguloVisible;
        }
コード例 #3
0
        private void EnMenúCambiarTipo(object elObjecto, EventArgs losArgumentos)
        {
            // Retornamos si no hay PDIs.
            if (Lista.SelectedIndices.Count == 0)
            {
                return;
            }

            List <Pdi> pdis = new List <Pdi>();

            foreach (int indice in Lista.SelectedIndices)
            {
                ListViewItem item = Lista.Items[indice];

                // El Tag del item de la lista tiene que ser un ElementoConEtiqueta con un PDI.
                ElementoConEtiqueta elemento = item.Tag as ElementoConEtiqueta;
                if (elemento == null)
                {
                    throw new InvalidOperationException(string.Format("El Tag del item de la lista tiene que ser un ElementoConEtiqueta, pero es: {0}", item.Tag.GetType()));
                }
                Pdi pdi = elemento.ElementoDelMapa as Pdi;
                if (pdi == null)
                {
                    throw new InvalidOperationException(string.Format("El elemento del item de la lista tiene que ser un Pdi, pero es: {0}", elemento.ElementoDelMapa.GetType()));
                }

                // Añade el PDI a la lista.
                pdis.Add(pdi);
            }

            // Muestra la ventana para cambiar el Tipo.
            VentanaCambiarTipoDePdi ventanaCambiarTipo = new VentanaCambiarTipoDePdi {
                Pdis = pdis
            };
            DialogResult resultado = ventanaCambiarTipo.ShowDialog();

            if (resultado == DialogResult.OK)
            {
                // Cambia los tipos evitando que se generen eventos con
                // cada cambio.
                ManejadorDePdis.SuspendeEventos();
                foreach (Pdi pdi in pdis)
                {
                    pdi.ActualizaTipo(ventanaCambiarTipo.TipoNuevo, "Cambio Manual");
                }

                // Restablece los eventos en el manejador de mapa.
                ManejadorDePdis.RestableceEventos();

                // Envía el evento indicando que se editaron PDIs.
                EnvíaEventoEditó();
            }
        }
コード例 #4
0
    /// <summary>
    /// Añade un item a la lista.
    /// </summary>
    /// <param name="elElementoConEtiqueta">El elemento dado.</param>
    /// <param name="elColorDeFondo">El color de fondo.</param>
    /// <param name="elGrupo">El grupo.</param>
    /// <param name="losSubItemsAdicionales">Los textos de los subitems adicionales</param>
    public override void AñadeItem(ElementoConEtiqueta elElementoConEtiqueta, Color elColorDeFondo, ListViewGroup elGrupo, string[] losSubItemsAdicionales)
    {
      // Verifica que el elemento es un PDI.
      Pdi pdi = elElementoConEtiqueta.ElementoDelMapa as Pdi;
      if (pdi == null)
      {
        throw new ArgumentException("El elemento debe ser tipo Pdi. pero es " + elElementoConEtiqueta.ElementoDelMapa.GetType());
      }

      // Añade el PDI a la lista.
      
      List<string> subItems = new List<string> {
          pdi.Coordenadas.Latitud.ToString(FormatoDeCoordenada, miFormatoNumérico),
          pdi.Coordenadas.Longitud.ToString(FormatoDeCoordenada, miFormatoNumérico)};
      subItems.AddRange(losSubItemsAdicionales);

      base.AñadeItem(elElementoConEtiqueta, elColorDeFondo, elGrupo, subItems.ToArray());
    }
コード例 #5
0
        private void LlenaItems(InterfaseListaDeElementos laLista)
        {
            // Añade los elementos.
            IList <InformaciónNodoDesconectado> posibleNodosDesconectados = miBuscadorDePosiblesNodosDesconectados.PosibleNodosDesconectados;

            foreach (InformaciónNodoDesconectado posibleNodoDesconectado in posibleNodosDesconectados)
            {
                ElementoConEtiqueta elemento = new ElementoConEtiqueta(
                    posibleNodoDesconectado.PosibleNodoDesconectado.Vía,
                    posibleNodoDesconectado);

                laLista.AñadeItem(
                    elemento,
                    posibleNodoDesconectado.PosibleNodoDesconectado.Coordenadas.ToString(),
                    posibleNodoDesconectado.Distancia.ToString("0.0"),
                    posibleNodoDesconectado.Detalle);
            }
        }
コード例 #6
0
        /// <summary>
        /// Añade un item a la lista.
        /// </summary>
        /// <param name="elElementoConEtiqueta">El elemento dado.</param>
        /// <param name="elColorDeFondo">El color de fondo.</param>
        /// <param name="elGrupo">El grupo.</param>
        /// <param name="losSubItemsAdicionales">Los textos de los subitems adicionales</param>
        public override void AñadeItem(ElementoConEtiqueta elElementoConEtiqueta, Color elColorDeFondo, ListViewGroup elGrupo, params string[] losSubItemsAdicionales)
        {
            // Verifica que el elemento es una Vía.
            Vía vía = elElementoConEtiqueta.ElementoDelMapa as Vía;

            if (vía == null)
            {
                throw new ArgumentException("El elemento debe ser tipo Vía. pero es " + elElementoConEtiqueta.ElementoDelMapa.GetType());
            }

            // Añade la Vía a la lista.
            List <string> subItems = new List <string> {
                vía.CampoParámetrosDeRuta.LímiteDeVelocidad.ToString(),
                          vía.CampoParámetrosDeRuta.ClaseDeRuta.ToString(),
                          vía.CampoParámetrosDeRuta.ToString()
            };

            subItems.AddRange(losSubItemsAdicionales);

            base.AñadeItem(elElementoConEtiqueta, elColorDeFondo, elGrupo, subItems.ToArray());
        }
コード例 #7
0
        private void LlenaItems(InterfaseListaDeElementos laLista)
        {
            // Añade los elementos.
              IList<InformaciónNodoDesconectado> posibleNodosDesconectados = miBuscadorDePosiblesNodosDesconectados.PosibleNodosDesconectados;
              foreach (InformaciónNodoDesconectado posibleNodoDesconectado in posibleNodosDesconectados)
              {
            ElementoConEtiqueta elemento = new ElementoConEtiqueta(
              posibleNodoDesconectado.PosibleNodoDesconectado.Vía,
              posibleNodoDesconectado);

            laLista.AñadeItem(
              elemento,
              posibleNodoDesconectado.PosibleNodoDesconectado.Coordenadas.ToString(),
              posibleNodoDesconectado.Distancia.ToString("0.0"),
              posibleNodoDesconectado.Detalle);
              }
        }
コード例 #8
0
        /// <summary>
        /// Añade un item a la lista.
        /// </summary>
        /// <param name="elElementoConEtiqueta">El elemento dado.</param>
        /// <param name="elColorDeFondo">El color de fondo.</param>
        /// <param name="elGrupo">El grupo.</param>
        /// <param name="losSubItemsAdicionales">Los textos de los subitems adicionales</param>
        public override void AñadeItem(ElementoConEtiqueta elElementoConEtiqueta, Color elColorDeFondo, ListViewGroup elGrupo, params string[] losSubItemsAdicionales)
        {
            // Verifica que el elemento es una Vía.
              Vía vía = elElementoConEtiqueta.ElementoDelMapa as Vía;
              if (vía == null)
              {
            throw new ArgumentException("El elemento debe ser tipo Vía. pero es " + elElementoConEtiqueta.ElementoDelMapa.GetType());
              }

              // Añade la Vía a la lista.
              List<string> subItems = new List<string> {
              vía.CampoParámetrosDeRuta.LímiteDeVelocidad.ToString(),
              vía.CampoParámetrosDeRuta.ClaseDeRuta.ToString(),
              vía.CampoParámetrosDeRuta.ToString()};
              subItems.AddRange(losSubItemsAdicionales);

              base.AñadeItem(elElementoConEtiqueta, elColorDeFondo, elGrupo, subItems.ToArray());
        }
コード例 #9
0
        /// <summary>
        /// Añade un item a la lista.
        /// </summary>
        /// <param name="elElementoConEtiqueta">El elemento dado.</param>
        /// <param name="elColorDeFondo">El color de fondo.</param>
        /// <param name="elGrupo">El grupo.</param>
        /// <param name="losSubItemsAdicionales">Los textos de los subitems adicionales</param>
        public override void AñadeItem(ElementoConEtiqueta elElementoConEtiqueta, Color elColorDeFondo, ListViewGroup elGrupo, string[] losSubItemsAdicionales)
        {
            // Verifica que el elemento es un PDI.
              Pdi pdi = elElementoConEtiqueta.ElementoDelMapa as Pdi;
              if (pdi == null)
              {
            throw new ArgumentException("El elemento debe ser tipo Pdi. pero es " + elElementoConEtiqueta.ElementoDelMapa.GetType());
              }

              // Añade el PDI a la lista.

              List<string> subItems = new List<string> {
              pdi.Coordenadas.Latitud.ToString(FormatoDeCoordenada, miFormatoNumérico),
              pdi.Coordenadas.Longitud.ToString(FormatoDeCoordenada, miFormatoNumérico)};
              subItems.AddRange(losSubItemsAdicionales);

              base.AñadeItem(elElementoConEtiqueta, elColorDeFondo, elGrupo, subItems.ToArray());
        }
        private void LlenaItems(InterfaseListaDeElementos laLista)
        {
            // Añade los elementos.
              IDictionary<Vía, IList<BuscadorDePosiblesErroresDeRuteo.ElementoDePosibleErrorDeRuteo>> erroresDeRuteo = miBuscadorDePosiblesErroresDeRuteo.PosiblesErrorDeRuteo;
              foreach (KeyValuePair<Vía, IList<BuscadorDePosiblesErroresDeRuteo.ElementoDePosibleErrorDeRuteo>> ítem in erroresDeRuteo)
              {
            // Crea el grupo.
            Vía vía = ítem.Key;
            ListViewGroup grupo = new ListViewGroup(vía.Nombre);
            laLista.Groups.Add(grupo);

            // Añade los elementos de las incongruencia a la lista.
            IList<BuscadorDePosiblesErroresDeRuteo.ElementoDePosibleErrorDeRuteo> elementosDePosibleErrorDeRuteo = ítem.Value;
            foreach (BuscadorDePosiblesErroresDeRuteo.ElementoDePosibleErrorDeRuteo elementoDePosibleErrorDeRuteo in elementosDePosibleErrorDeRuteo)
            {
              ElementoConEtiqueta elemento = new ElementoConEtiqueta(elementoDePosibleErrorDeRuteo.Vía);
              // Si el elemento es un posible error entonces le ponemos un fondo amarillo.
              if (elementoDePosibleErrorDeRuteo.EsPosibleError)
              {
            laLista.AñadeItem(elemento, Color.PaleGoldenrod, grupo, elementoDePosibleErrorDeRuteo.Detalle);
              }
              else
              {
            laLista.AñadeItem(elemento, grupo, elementoDePosibleErrorDeRuteo.Detalle);
              }
            }
              }
        }