close Warning: Can't synchronize with repository "(default)" (/var/svn/mms does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Last modified 14 years ago

#556 new task

Edición avanzada en MMS

Reported by: Pedro Gea Owned by: Pedro Gea
Priority: critical Milestone: Next
Component: General Keywords:
Cc:

Description

Se crea un tique para coordinar todas las acciones destinadas a mejorar o ampliar los mecanismos de edición de MMS.

Entre estos mecanismos se encuentran:

  • La duplicación de objetos (#344)
  • La eliminación de objetos (#398)
  • Los mecanismos copiar/pegar (#443, #515)
  • La fusión o combinación de objetos (#323, #430)
  • Otros mecanismos derivados (#397)

Junto a la implementación de estos mecanismos hay que comprobar la estabilidad y coherencia de los objetos ante dichas actuaciones.

Se consideran necesarios los siguientes pasos:

  • Implementar un portapapeles (véase #443). Se sugiere extraer el portapapeles del contenedor de MMS, usar verdaderas referencias en lugar de direcciones de memoria y permitir el copiado sólo de conjuntos homogéneos de objetos.
  • Revisar los enlaces (relaciones indirectas entre objetos) para posibilitar un enlazado retardado o bajo demanda como el de las @Variable que facilite los mecanismos de edición así como la creación de jerarquías sofisticadas sin tener que atender al orden.
  • Implementar los mecanismos de copiado y pegado desde las propias instancias, de modo que estos mecanismos no sean exclusividad de la GUI y favoreciendo los mecanismos: GUI -> instance -> Clipboard en los que es la instancia la que accede al portapapeles.
  • Estudiar las distintas posibilidades de pegado: manteniendo originales, sustituyendo originales, fusionando objetos, añadiéndolos como copias, etc.

Change History (13)

comment:1 Changed 14 years ago by Pedro Gea

(In [2319]) Se crea un nuevo objeto portapapeles Clipboard en el paquete MMS, fuera del contenedor Container.
Se revisa el mecanismo para crear el contenedor como objeto único al crear así también al portapapeles.
Se revisan los mecanismos copiar/pegar ya implementados en el módulo de variables, ubicándolos en las propias instancias: ::Edit.Copy y ::Edit.Paste.
Refs #556

comment:2 Changed 14 years ago by Pedro Gea

Otro punto importante a considerar son los mecanismos del tipo reemplazar, que si se implementan de modo distinto a borrar y crear de nuevo, pueden facilitar tareas de fusión de objetos o de modificación de objetos como #386 y #420.

comment:3 Changed 14 years ago by Pedro Gea

(In [2327]) Se revisan las clases abstractas @ObjectLinker y @ObjectLinked destinadas a facilitar la gestión de enlaces (referencias) entre objetos que no tienen una relación directa en el árbol de objetos padre-hijo.
Se añaden nuevos métodos para facilitar la gestión de los enlaces: _AppendLink, _RemoveLink, _DestroyLinkSet.
Se derivan las m-variables y las c-variables de los objetos enlazadores (@ObjectLinker)
Se revisan los métodos SetName de los objetos enlazados.
Se sustituyen los métodos _.UpdateMVariableName, _.UpdateMElementName por llamadas a _OnLinkedChangeIdentifier.
Se revisa el sistema de enlaces retardado de las variables, se introducen nuevos métodos: _Link* y _Unlink* y se unifican los conjuntos de enlaces (_variables) y referencias (_dependences).
Refs #512, #528, #556

comment:4 Changed 14 years ago by Pedro Gea

(In [2328]) Se revisa el uso de los métodos _OnChange_ObjectLinker, _OnChangeIdentifier_ObjectLinker y _OnDestroy_ObjectLinker en los métodos _OnChange, _OnChangeIdentifier y _.Destroy.
Se sugiere la necesidad de revisar los métodos _.Update*Name y _.Update*Identifier para no tener que indicar el antiguo nombre o identificador haciendo uso de la referencia _this y la comparación entre objetos.
Refs #528, #556

comment:5 Changed 14 years ago by Pedro Gea

(In [2331]) Se corrige un problema de ineficiencia misterioso.
Refs #556

comment:6 Changed 14 years ago by Pedro Gea

(In [2340]) Se amplía @ObjectLinker con nuevos métodos.
Se revisa la clase @Variable.
Se introduce el enlace retardado en @MVariable, @MCombination y @MEquivalence
Refs #556

comment:7 Changed 14 years ago by Pedro Gea

(In [2348]) Se generaliza el uso de MMS.FindIndexByInfo y MMS.ObtainByInfo.
Refs #326, #556

comment:8 Changed 14 years ago by Pedro Gea

(In [2349]) Se introduce el enlace retardado en @CVariable y @Hierarchy.
Refs #556

comment:9 Changed 14 years ago by Pedro Gea

(In [2352]) Se renombran como de uso interno los métodos AppendParameter y RemoveParameter del modelo.
Refs #556

comment:10 Changed 14 years ago by Pedro Gea

(In [2353]) Se revisa la gestión de los enlaces.
Se permiten duplicados en los enlazadores (linkers).
Se introduce SameNameBlock en la búsqueda de enlazadores.
Se introduce el enlace retardado en @CConstraint, @Submodel y @ExpTerm.
Refs #556

comment:11 Changed 14 years ago by Pedro Gea

(In [2354]) Se revisan los mensajes de error cuando no se encuentran los objetos enlazados
Refs #556

comment:12 Changed 14 years ago by Pedro Gea

(In [2359]) Se revisan los métodos de enlazado individuales de tipo _Link_[Object]
Refs #556

comment:13 Changed 14 years ago by Pedro Gea

(In [2370]) Se introducen dos nuevas funciones para facilitar las gestiones en los métodos de edición.
Refs #556

Note: See TracTickets for help on using tickets.