Sistema de sugerencias y alerta de errores - franciscaconcha/ProyectoLogisim GitHub Wiki

Este proyecto involucra el desarrollo de nuevas opciones y disponer de soluciones a errores en Logisim.

Alcances

La idea es que, al presentarse un error dentro de la aplicación, se disponga de un sistema de alerta de soluciones u opciones con el fin de simplificar el uso de Logisim.

### Análisis El objetivo del análisis es obtener una imagen clara de cómo está desarrollada la aplicación y evaluar cómo se desarrollarán los cambios. Esto involucra:

  • Buscar en que métodos del código se hacen los análisis
  • Cuáles son los objetos que representan las compuertas
  • Objetos que representan entradas y salidas
  • Método que fi nalmente pinta la pantalla
  • Análisis de Swing-Menu

### Objetivos Específicos Una vez hecho el análisis se implementarán las mejoras buscadas, que es lograr darle al usuario claras soluciones mientras se cometan errores en circuitos u otros. Esto involucra:

  • Decidir como hacer menú
  • Ubicar correctamente el menú
  • Colocar las opciones de acuerdo al análisis de errores
  • Llamar a los métodos correspondientes por opción
  • Pintar circuito mejorado

### Desarrollo Luego de realizar el análisis del código y tener un conocimiento básico para poder trabajar sobre este, realizaron las siguientes tareas:

  1. Definición de errores de Logisim a manejar: De modo de simplificar y enfocar en una mejora sustancial, se decidió priorizar el uso del tiempo en el error de anchos incompatibles que presenta logisim, esto con el fin de lograr una mejora significativa.

  2. Investigación de clases a modificar: En búsqueda de la clase específica en la cual incorporar nuestras modificaciones para lograr los objetivos anteriormente planteados se encontraron fundamentalmente, las clases Frame y Canvas. La clase Frame es la encargada de visualizar la ventana con los distintos menús de las aplicación; en esta clase se agregó el menú de soluciones para que el usuario pueda seleccionar que cambio aplicar sobre el circuito. Junto con esto, la clase Canvas es la encargada de mostrar el circuito en la ventana y errores, por lo cual se utilizó para obtener los componentes de los circuitos y modificarlos según correspondiera.

  3. Definición de modo de visualización de sugerencias: Con el fin de enfocar el buen desempeño de la corrección de errores, se decidió dejar de una forma simple la visualización e interacción con el usuario. Por lo cual simplemente se utilizó un menú desplegable con las posibles opciones para corregir el circuito actual. Este menú desplegable fue desarrollado utilizando JMenu, el cual contiene Menus, que representan subcircuitos, asociados a él los cuales contienen botones (JMenuItem) que representan las sugerencias para modificar el subcircuito.

  4. Modificación del circuito actual: Para lograr esto, a cada botón del menú se le asoció un listener, el cual es el encargado de modificar el subcircuito seleccionado. Para esto, el listener genera un conjunto de acciones de modificación de atributos, esto para modificar los anchos de cada una de las componentes, y le da este conjunto al proyecto para que lleve a cabo dichas acciones.

Tareas Futuras

Para la siguiente entrega se planea mejorar la visualización y usabilidad del sistema de sugerencias, de modo que este sea mucho más interactivo para el usuario. En concreto, se planea realizar las siguientes tareas:

  • Al momento que el usuario pose el cursor en algunas de las opciones de subcircuitos a modificar, los cables de dicho subcircuito cambien su color, de modo de visualizar específicamente que subcircuito será modificado al implementar el cambio.Esto debido a que el menú de sugerencias no especifica a que subcircuito se le va a aplicar el cambio, y ante un circuito muy grande, esto significa una dificultad extra para el usuario.
  • Modificar el color del botón en el momento que el error se presente; idealmente que el menú cambie de color al determinado previamente por Logisim para ese tipo de error. Esto con el fin de avisar visualmente que el menú está disponible y contiene sugerencias útiles para el usuario.

Requerimientos

Requerimientos especificos del proyecto

Integrantes sub-grupo

José Tapia

Willy Maikowski

Felipe Rodríguez

Ignacio Valderrama