Simulador de circuitos digitales avanzados

Análisis

Guardar Archivos.

El archivo .dc es guardado por medio de la clase SaveFile.java la cual es llamada por el botón derecho con el mismo nombre. Este lee los datos provenientes del ArrayList desde la clase DigitalCircuit. Este arreglo contiene todos los objetos dibujados en la pantalla por medio del menú Edit. De esta forma SaveFile.java con el método write() itera sobre los componentes y reescribe su posición en .dc. Con cada iteración se escribe “GATE”, luego el nombre de la compuerta, luego su valor de id, luego su posición 'x' y su posición 'y', finalmente su valor de retardo. Es pertinente acotar que id y delay son utilizados en la creación de nuevas instancias de estos objetos, con la clase OpenFile.java.

Abrir archivos

Para abrir archivos y reincorporarlos en DigitalCircuit.java, lo primero que se realiza es leer el archivo .dc buscando por el tag “GATE”. Luego se itera sobre este, con el método addComp() de OpenFile.java y se agrega cada componente con sus coordenado de posición a un nuevo ArrayList. El método getComponents() de OpenFile.java permite devolver esta lista para se incluida en el circuito digital original.

Gráficos

Para la generación de gráficos se instancia la clase GraphPanel.java desde GraphFame.java que posee los métodos necesarios para graficar. Estos métodos corresponden a la librería Jfree.chart y Jfree.common que son importadas desde GraphPanel.java. Cada vez que llamo al constructor de Gmeter.java, una nueva instancia de GraphFrame.java es generada y es desplegado un nuevo JDialog. El método que permite el despliegue de los datos es addValue(float, int) de la clase GraphPanel.java. Este es llamado desde clase Meter.java específicamente del metodo log(float). Así cada vez que en simulate() de la clase Simulator.java es llamado log(float), se agrega un nuevo dato a GraphPanel.java

Pintar Wires y Gates

Para colorear Wires y Gates. Se llama al método changeSelColor() de cada compuerta desde el EditMenuListener.java el cual itera sobre los métodos selSelColor(Color) de cada compuerta. Anteriormente se despliega un JcolorChooser.showDialog(...) el cual despliega un menú para dar el valor a Color. De esta forma se pueden recolorear las figuras tanto para su selección como para su estado libre.