Bitacora #7 del Chmaquina

DESARROLLO

se muestran algunas de las funciones mas importantes que se encuentran en la clase principal del proyecto:
Main:
public File cargar_archivo() {
try {
File archivo = new File(“”);
JFileChooser JFC = new JFileChooser();
JFC.setFileFilter(new FileNameExtensionFilter(“todos los archivos *.ch”, “CH”, “ch”));
int op = JFC.showOpenDialog(null);
if (op == 0) {
String PATH = JFC.getSelectedFile().getAbsolutePath();
if (PATH.endsWith(“.ch”)) {
archivo = JFC.getSelectedFile();
} else {
JOptionPane.showMessageDialog(null, “Tipo de archivo incompatible”, “Error”, 2);
}
return archivo;
}
}
La anterior funcion se encarga de abrir el jfilechooser para poder realizar la búsqueda de un chprograma en la computadora y ademas se asegura que aparezcan archivos con la extensión de un programa de este tipo.
Initialize()
private void initialize() {
this.frmChmaquinaV = new JFrame();
this.frmChmaquinaV.setResizable(false);
this.frmChmaquinaV.setTitle(“ChMaquina V1.0”);
this.frmChmaquinaV.setSize(800, 800);
this.frmChmaquinaV.getContentPane().setBackground(Color.LIGHT_GRAY);
FondoDePantalla Interface = new FondoDePantalla();
Interface.setImagen(Toolkit.getDefaultToolkit().getImage(“.\\bin\\img\\Interface.jpg”));
Interface.setBorder(null);
this.frmChmaquinaV.getContentPane().add((Component)Interface, “Center”);
Interface.setLayout(null);
this.Estado = new JLabel(“Apagado”);
this.Estado.setBounds(70, 51, 89, 14);
Interface.add(this.Estado);
this.btnEncendidio = new JButton(“Encender”);
this.btnEncendidio.setBounds(310, 11, 89, 23);
this.btnEncendidio.addActionListener(this);
Interface.add(this.btnEncendidio);
this.btnCargar = new JButton(“Cargar”);
this.btnCargar.setBounds(410, 11, 89, 23);
this.btnCargar.setEnabled(false);
this.btnCargar.addActionListener(this);
Interface.add(this.btnCargar);
this.tamKernel = new JSpinner();
this.tamKernel.setBounds(653, 7, 50, 20);
this.tamKernel.setModel(new SpinnerNumberModel(49, 10, 100, 1));
this.tamKernel.setEnabled(true);
Interface.add(this.tamKernel);
JLabel lblKernel = new JLabel(“Kernel”);
lblKernel.setBounds(593, 12, 46, 14);
Interface.add(lblKernel);
this.tamMemoria = new JSpinner();
this.tamMemoria.setModel(new SpinnerNumberModel(100, 100, 9999, 1));
this.tamMemoria.setBounds(653, 43, 50, 20);
Interface.add(this.tamMemoria);
JLabel lblMemoria = new JLabel(“Memoria”);
lblMemoria.setBounds(593, 43, 65, 14);
Interface.add(lblMemoria);
JScrollPane scrollPantalla = new JScrollPane();
scrollPantalla.setBounds(296, 211, 188, 109);
scrollPantalla.setEnabled(false);
Interface.add(scrollPantalla);
Pantalla = new JTextArea();
Pantalla.setForeground(Color.WHITE);
Pantalla.setBackground(Color.BLACK);
Pantalla.setText(“PANTALLA”);
Pantalla.setEditable(false);
scrollPantalla.setViewportView(Pantalla);
JScrollPane scrollImpresora = new JScrollPane();
scrollImpresora.setBounds(10, 485, 89, 87);
Interface.add(scrollImpresora);
Impresora = new JTextArea();
Impresora.setEditable(false);
scrollImpresora.setViewportView(Impresora);
JLabel lblMemoriaTabla = new JLabel(“Memoria”);
lblMemoriaTabla.setBounds(593, 118, 80, 20);
Interface.add(lblMemoriaTabla);
JScrollPane scrollMemoria = new JScrollPane();
scrollMemoria.setBounds(586, 135, 198, 523);
Interface.add(scrollMemoria);
this.memoria = new JTable(1, 2);
this.memoria.setEnabled(false);
this.memoria.setCellSelectionEnabled(true);
this.memoria.setColumnSelectionAllowed(true);
this.memoria.setAutoResizeMode(0);
scrollMemoria.setViewportView(this.memoria);
this.memoria.setModel(modeloTable);
Ejecucion = new JTextField();
Ejecucion.setEditable(false);
Ejecucion.setBounds(314, 87, 199, 20);
Interface.add(Ejecucion);
Ejecucion.setColumns(10);
JLabel lblEjecucion = new JLabel(“Ejecutando”);
lblEjecucion.setBounds(377, 61, 80, 14);
Interface.add(lblEjecucion);
Contador = new JTextField();
Contador.setBounds(314, 108, 53, 20);
Contador.setEditable(false);
Interface.add(Contador);
Contador.setColumns(10);
JLabel lblContadorPrograma = new JLabel(“Programa”);
lblContadorPrograma.setBounds(314, 127, 65, 14);
Interface.add(lblContadorPrograma);
Acumulador = new JTextField();
Acumulador.setBounds(377, 108, 136, 20);
Acumulador.setEditable(false);
Interface.add(Acumulador);
Acumulador.setColumns(10);
JLabel lblAcumulador = new JLabel(“Acumulador”);
lblAcumulador.setBounds(405, 127, 80, 14);
Interface.add(lblAcumulador);
this.btnEjecutar = new JButton(“Ejecución”);
this.btnEjecutar.setBounds(296, 153, 89, 23);
this.btnEjecutar.addActionListener(this);
this.btnEjecutar.setEnabled(false);
Interface.add(this.btnEjecutar);
this.btnLineaALinea = new JButton(“Linea a Linea”);
this.btnLineaALinea.setBounds(405, 153, 118, 23);
this.btnLineaALinea.addActionListener(this);
this.btnLineaALinea.setEnabled(false);
Interface.add(this.btnLineaALinea);
JScrollPane scrollProgramaT = new JScrollPane();
scrollProgramaT.setBounds(10, 150, 163, 121);
Interface.add(scrollProgramaT);
listProgramasT = new JList();
scrollProgramaT.setViewportView(listProgramasT);
listProgramasT.setModel(modelo_listaTrue);
JLabel lblProgramasT = new JLabel(“Prog. Cargados”);
lblProgramasT.setBounds(10, 272, 108, 20);
Interface.add(lblProgramasT);
this.btnProgramasT = new JButton(“Ver”);
this.btnProgramasT.setBounds(108, 272, 65, 20);
this.btnProgramasT.setEnabled(false);
this.btnProgramasT.addActionListener(this);
Interface.add(this.btnProgramasT);
JScrollPane scrollProgramaF = new JScrollPane();
scrollProgramaF.setBounds(10, 300, 163, 121);
Interface.add(scrollProgramaF);
listProgramasF = new JList();
scrollProgramaF.setViewportView(listProgramasF);
listProgramasF.setModel(modelo_listaFalse);
JLabel lblProgramasF = new JLabel(“Prog. Errores”);
lblProgramasF.setBounds(10, 420, 80, 20);
Interface.add(lblProgramasF);
this.btnProgramasF = new JButton(“Abrir”);
this.btnProgramasF.setBounds(108, 420, 65, 20);
this.btnProgramasF.setEnabled(false);
this.btnProgramasF.addActionListener(this);
Interface.add(this.btnProgramasF);
JLabel lblDetalles = new JLabel(“Detalles”);
lblDetalles.setBounds(295, 411, 50, 14);
Interface.add(lblDetalles);
JScrollPane scrollDetalles = new JScrollPane();
scrollDetalles.setBounds(296, 424, 200, 170);
Interface.add(scrollDetalles);
this.listDetalles = new JList();
this.listDetalles.setEnabled(false);
this.listDetalles.setModel(modelo_listaDetalles);
scrollDetalles.setViewportView(this.listDetalles);
JLabel lblImpresora = new JLabel(“Impresora”);
lblImpresora.setBounds(10, 470, 89, 14);
Interface.add(lblImpresora);
this.lblAutor = new JLabel(“Victor Manuel Grajales 910072”);
this.lblAutor.setBounds(10, 11, 151, 14);
Interface.add(this.lblAutor);
}
En la anterior función se inicializan todos los objetos que harán parte de la interfaz gráfica del ChMaquina
ActionPerfomed
public void actionPerformed(ActionEvent e) {
int i;
int i2;
Object fuente = e.getSource();
if (fuente == this.btnEncendidio) {
if (!encendido) {
this.btnEncendidio.setText(“Apagar”);
this.btnCargar.setEnabled(true);
this.tamKernel.setEnabled(false);
this.tamMemoria.setEnabled(false);
this.btnProgramasT.setEnabled(false);
this.btnProgramasF.setEnabled(false);
this.btnEjecutar.setEnabled(false);
this.btnLineaALinea.setEnabled(false);
this.Estado.setText(“Modo Kernel”);
modeloTable.addColumn(“Pos”);
modeloTable.addColumn(“Instrucci\u00f3n”);
this.columna1 = this.memoria.getColumn(“Pos”);
this.columna1.setPreferredWidth(30);
this.columna2 = this.memoria.getColumn(“Instrucci\u00f3n”);
this.columna2.setPreferredWidth(155);
this.memoria.setModel(modeloTable);
int i3 = 0;
while (i3 < 100) {
this.prefijos[i3] = 1;
++i3;
}
modoK = false;
int memoria_contador = (Integer)this.tamMemoria.getValue();
int kernel_contador = (Integer)this.tamKernel.getValue();
if (memoria_contador < 100) {
memoria_contador = 100;
}
if (memoria_contador > 999) {
memoria_contador = 999;
}
if (kernel_contador < 10) {
kernel_contador = 10;
}
if (kernel_contador > 100) {
kernel_contador = 100;
}
this.tamMemoria.setEnabled(false);
this.tamKernel.setEnabled(false);
vectorDeMemoria = new String[memoria_contador];
Main.vectorDeMemoria[0] = “”;
mem_disponible = memoria_contador – kernel_contador – 1;
reservado = kernel_contador;
contador_programa = reservado + 1;
modeloTable.setNumRows(memoria_contador);
i2 = 0;
while (i2 < memoria_contador) {
modeloTable.setValueAt(i2, i2, 0);
++i2;
}
modeloTable.setValueAt(“Acumulador”, 0, 1);
i2 = 1;
while (i2 <= kernel_contador) {
Main.vectorDeMemoria[i2] = “Sistema Operativo”;
++i2;
}
Main.refrescar(1, kernel_contador);
encendido = true;
} else {
this.btnEncendidio.setText(“Inicar”);
this.btnCargar.setEnabled(false);
this.tamKernel.setEnabled(true);
this.tamMemoria.setEnabled(true);
this.Estado.setText(“Apagado”);
modeloTable = new DefaultTableModel();
this.memoria.setModel(modeloTable);
this.btnCargar.setEnabled(false);
this.btnProgramasT.setEnabled(false);
this.btnProgramasF.setEnabled(false);
this.btnEjecutar.setEnabled(false);
this.btnLineaALinea.setEnabled(false);
Acumulador.setText(null);
Contador.setText(null);
Ejecucion.setText(null);
mem_disponible = 0;
encendido = false;
modelo_listaTrue.clear();
modelo_listaFalse.clear();
modelo_listaDetalles.clear();
programasT.clear();
programasF.clear();
this.errores.clear();
variables.clear();
}
}
try {
if (fuente == this.btnProgramasF && modelo_listaFalse.getSize() != 0) {
ErroresProgramas cep = new ErroresProgramas((ArrayList)programasF.get(listProgramasF.getSelectedIndex()));
cep.setVisible(true);
}
if (fuente == this.btnProgramasT) {
modelo_listaDetalles.clear();
if (modelo_listaTrue.getSize() != 0) {
ArrayList temporal = (ArrayList)programasT.get(listProgramasT.getSelectedIndex());
modelo_listaDetalles.addElement(“Prefijo del programa: ” + temporal.get(6));
ArrayList variables = (ArrayList)temporal.get(3);
modelo_listaDetalles.addElement(“Variables [ Tipo ]”);
modelo_listaDetalles.addElement(“”);
i2 = 0;
while (i2 < variables.size()) {
modelo_listaDetalles.addElement(temporal.get(6) + ((String[])variables.get(i2))[0] + ” [ ” + ((String[])variables.get(i2))[1] + ” ]”);
++i2;
}
modelo_listaDetalles.addElement(“”);
modelo_listaDetalles.addElement(“”);
modelo_listaDetalles.addElement(“Etiquetas utilizadas: “);
ArrayList etiquetas = (ArrayList)temporal.get(4);
i = 0;
while (i < etiquetas.size()) {
modelo_listaDetalles.addElement(temporal.get(6) + ((String[])etiquetas.get(i))[0] + ” ( ” + ((String[])etiquetas.get(i))[1] + ” )”);
++i;
}
}
}
}
catch (Exception ex) {
JOptionPane.showMessageDialog(null, “Seleccione alg\u00fan elemento”, “Error”, 0);
}
if (fuente == this.btnCargar) {
try {
this.archivo = this.cargar_archivo();
this.recupera = this.sintaxis.Revisar_sintaxis(this.archivo);
if (this.recupera != null) {
this.btnEjecutar.setEnabled(true);
this.btnLineaALinea.setEnabled(true);
this.btnProgramasT.setEnabled(true);
this.btnProgramasF.setEnabled(true);
this.errores = (ArrayList)this.recupera.get(2);
if (this.errores.size() == 0) {
ArrayList lineas = (ArrayList)this.recupera.get(5);
ArrayList variable = (ArrayList)this.recupera.get(3);
int cantidad_lineas = 0;
i = 0;
while (i < lineas.size()) {
String lee = (String)lineas.get(i);
String tem = lee.replaceAll(” “, “”);
if (!tem.equals(“”) && !lee.substring(0, 2).equals(“//”)) {
++cantidad_lineas;
}
++i;
}
if (mem_disponible > cantidad_lineas + variable.size()) {
this.recupera.add(this.asignar_prefijo());
ArrayList etiqueta = (ArrayList)this.recupera.get(4);
modelo_listaTrue.addElement(this.recupera.get(0));
if (etiqueta.size() > 0) {
int contador_temporal = contador_programa;
int j = 0;
while (j < etiqueta.size()) {
int pos_eti = Integer.parseInt(((String[])etiqueta.get(j))[1]);
int i4 = 1;
while (i4 <= lineas.size()) {
String lee = (String)lineas.get(i4 – 1);
String tem = lee.replaceAll(” “, “”);
if (!tem.equals(“”)) {
if (!lee.substring(0, 2).equals(“//”)) {
if (i4 == pos_eti) {
String[] eti = new String[]{this.recupera.get(6) + ((String[])etiqueta.get(j))[0], Integer.toString(contador_temporal)};
etiquetas.add(eti);
++i4;
++contador_temporal;
continue;
}
++i4;
++contador_temporal;
continue;
}
++i4;
continue;
}
++i4;
}
++j;
}
}
int inicio = contador_programa;
int i5 = 0;
while (i5 < lineas.size()) {
String lee = (String)lineas.get(i5);
String tem = lee.replaceAll(” “, “”);
if (!tem.equals(“”) && !lee.substring(0, 2).equals(“//”)) {
Main.vectorDeMemoria[Main.contador_programa] = this.recupera.get(6) + (String)lineas.get(i5);
++contador_programa;
}
++i5;
}
int fin = contador_programa + variable.size();
mem_disponible -= fin – inicio;
this.recupera.add(inicio);
this.recupera.add(fin – 1);
this.recupera.add(cantidad_lineas);
this.recupera.add(Float.valueOf(tiempo_llegada + (float)(cantidad_lineas / 4)));
tiempo_llegada += (float)(cantidad_lineas / 4);
int i6 = 0;
while (i6 < variable.size()) {
Main.vectorDeMemoria[Main.contador_programa] = “”;
String[] var = new String[]{this.recupera.get(6) + ((String[])variable.get(i6))[0], Integer.toString(contador_programa), ((String[])variable.get(i6))[1], ((String[])variable.get(i6))[2]};
variables.add(var);
++i6;
++contador_programa;
}
Main.refrescar(inicio, fin);
programasT.add(this.recupera);
} else {
JOptionPane.showMessageDialog(null, “Espacio de memoria insuficiente”, “Error al cargar”, 0);
}
} else {
programasF.add(this.recupera);
modelo_listaFalse.addElement(this.recupera.get(0));
}
}
}
catch (Exception ex2) {
System.out.println(“Boton error”);
System.out.println(ex2);
}
}
if (fuente == this.btnEjecutar) {
Pantalla.setText(null);
this.btnEjecutar.setEnabled(false);
this.btnLineaALinea.setEnabled(false);
this.Estado.setText(“Modo Usuario”);
programasEjecutar = programasT;
if (programasEjecutar.size() != 0) {
int i7 = 0;
while (i7 < programasEjecutar.size()) {
ChMaquina.ejecutar((ArrayList)programasEjecutar.get(i7), false);
++i7;
}
} else {
JOptionPane.showMessageDialog(null, “Cargue por lo menos un programa para iniciar la ejecuci\u00f3n”);
}
this.btnLineaALinea.setEnabled(true);
this.btnEjecutar.setEnabled(true);
this.Estado.setText(“Modo Kernel”);
}
if (fuente == this.btnLineaALinea) {
Pantalla.setText(null);
this.btnEjecutar.setEnabled(false);
this.btnLineaALinea.setEnabled(false);
this.Estado.setText(“Modo Usuario”);
programasEjecutar = programasT;
if (programasEjecutar.size() != 0) {
int i8 = 0;
while (i8 < programasEjecutar.size()) {
ChMaquina.ejecutar((ArrayList)programasEjecutar.get(i8), true);
++i8;
}
} else {
JOptionPane.showMessageDialog(null, “Cargue por lo menos un programa para iniciar la ejecuci\u00f3n”);
}
this.btnLineaALinea.setEnabled(true);
this.btnEjecutar.setEnabled(true);
this.Estado.setText(“Modo Kernel”);
}
}
static /* synthetic */ JFrame access$0(Main mainPage) {
return mainPage.frmChmaquinaV;
}
}

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s