/// <summary> /// Construtor para <typeparamref name="MapaDeReferencia"/>. /// </summary> /// <param name="entradaReferenciada">Is the linked entry.</param> /// <param name="subEntradaOrigem">Is the source Element that references the entry.</param> /// <param name="source">Is the source Simbolo that references the entry.</param> /// <param name="simboloDestino">Is the target referencied Simbolo (entry owner).</param> public MapaDeReferencia(MapaDeEntrada mapaDeEntrada, SubEntrada subEntradaOrigem) { //SimboloOrigemId: if (subEntradaOrigem is Nocao) { SimboloOrigemId = (subEntradaOrigem as Nocao).Simbolo.Id; } else { SimboloOrigemId = (subEntradaOrigem as Impacto).Simbolo.Id; } //SimboloDestinoId: var entrada = subEntradaOrigem.Store.ElementDirectory.FindElement(mapaDeEntrada.EntradaId) as Entrada; if (entrada is Simbolo) { SimboloDestinoId = entrada.Id; } else if (entrada is Sinonimo) { SimboloDestinoId = (entrada as Sinonimo).Simbolo.Id; } else { throw new ArgumentException($"Entrada não é Simbolo nem Sinonimo."); } EntradaReferenciada = mapaDeEntrada.EntradaUnica; SubEntradaOrigemId = subEntradaOrigem.Id; }
/// <summary> /// Check whether newly added nocao references some entry and adds it if necessary /// </summary> /// <param name="nocao">Is the newly added nocao.</param> public void AnalisaEAdicionaMapaDeReferenciaParaNovaSubEntrada(SubEntrada subEntrada) { foreach (var mapaEntrada in VisualLALMapeamento.Instance.MapaEntradas) { AnalisaEAdicionaMapaDeReferencia(mapaEntrada, subEntrada); } }
/// <summary> /// Removes all Link map that references from nocao specified. /// </summary> /// <param name="nocao"></param> public void RemoverReferenciasDeSubEntrada(SubEntrada subEntrada) { var referencias = new List <MapaDeReferencia> ( _lista.Where(mRef => mRef.SubEntradaOrigemId.Equals(subEntrada.Id)) ); foreach (var referencia in referencias) { Remove(referencia); } }
private void AnalisaEAdicionaMapaDeReferencia(MapaDeEntrada mapaEntrada, SubEntrada subEntrada) { var textoContemAlgumaEntrada = subEntrada.Texto.ContainsExtactExpression(mapaEntrada.EntradaUnica); if (textoContemAlgumaEntrada) { var novoMapaDeReferencia = new MapaDeReferencia(mapaEntrada, subEntrada); if (!Contem(novoMapaDeReferencia)) { Adiciona(novoMapaDeReferencia); } } }
public static SizeD ObterTamanho(SimboloCompartment compartimento, SubEntrada subEntrada) { if (compartimento == null) { return(new SizeD(0, 0)); } //nomeSubEntradaCompartimento string nomeSubEntradaCompartimento; if (subEntrada is Nocao) { nomeSubEntradaCompartimento = "NocaoCompartment"; } else { nomeSubEntradaCompartimento = "ImpactoCompartment"; } //subCompartimento var subCompartimento = compartimento.NestedChildShapes .Where(s => s is ElementListCompartment) .Where(s => (s as ElementListCompartment).Name.Equals(nomeSubEntradaCompartimento)) .FirstOrDefault() as ElementListCompartment; if (subCompartimento == null) { return(new SizeD(0, 0)); } //textField var textField = subCompartimento.ShapeFields .Where(s => s.Name == "HdrText") .FirstOrDefault() as TextField; if (textField == null) { return(new SizeD(0, 0)); } //novoSize var novoSize = Measure(textField, compartimento, subEntrada.Texto); return(novoSize); }
/// <summary> /// Updates link maps from newly changed nocao. /// </summary> /// <param name="nocao">Is the newly changed nocao.</param> public void AtualizaMapaDeReferenciaAposAlteracaoDeSubEntrada(SubEntrada subEntrada) { RemoverReferenciasDeSubEntrada(subEntrada); AnalisaEAdicionaMapaDeReferenciaParaNovaSubEntrada(subEntrada); }