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); } } } }
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; }
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ó(); } }
/// <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. 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); } }
/// <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()); }
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); } }
/// <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()); }
/// <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); } } } }