package interfaz;
import backend.TadPila;
import backend.PilaVacia;
import java.awt.event.KeyEvent;
import java.util.logging.Level;
import java.util.logging.Logger;
import util.NumberFilter;
import javax.swing.text.AbstractDocument;
import javax.swing.text.BadLocationException;
import backend.*;
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
*
* @author Edabapra
*/
public class Interfaz extends javax.swing.JFrame
/**
* Creates new form Interfaz
*/
Pila pila = new TadPila(); //Nueva pila
public Interfaz()
initComponents();
}
/**
* This method is called from within the constructor to initialize the form.
* WARNING: Do NOT modify this code. The content of this method is always
* regenerated by the Form Editor.
*/
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-
BEGIN:initComponents
private void initComponents()
jScrollPane1 = new javax.swing.JScrollPane();
textareaMain = new javax.swing.JTextArea();
buttonMostrarPila = new javax.swing.JButton();
textfieldElementos = new javax.swing.JTextField();
buttonAggElemento = new javax.swing.JButton();
buttonDesapilar = new javax.swing.JButton();
buttonInsertCero = new javax.swing.JButton();
buttonBorrarPila = new javax.swing.JButton();
labelAvisos = new javax.swing.JLabel();
labelCopyright = new javax.swing.JLabel();
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("Taller I");
textareaMain.setColumns(20);
textareaMain.setFont(new java.awt.Font("Monospaced", 0, 14)); // NOI18N
textareaMain.setRows(5);
jScrollPane1.setViewportView(textareaMain);
buttonMostrarPila.setFont(new java.awt.Font("Consolas", 0, 12)); // NOI18N
buttonMostrarPila.setText("Mostrar Pila");
buttonMostrarPila.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonMostrarPilaActionPerformed(evt);
}
});
((AbstractDocument) textfieldElementos.getDocument()).setDocumentFilter(new
NumberFilter());
textfieldElementos.setFont(new java.awt.Font("Consolas", 0, 12)); // NOI18N
textfieldElementos.addKeyListener(new java.awt.event.KeyAdapter() {
public void keyPressed(java.awt.event.KeyEvent evt) {
textfieldElementosKeyPressed(evt);
}
});
buttonAggElemento.setFont(new java.awt.Font("Consolas", 0, 12)); // NOI18N
buttonAggElemento.setText("Agregar Elemento");
buttonAggElemento.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonAggElementoActionPerformed(evt);
}
});
buttonDesapilar.setFont(new java.awt.Font("Consolas", 0, 12)); // NOI18N
buttonDesapilar.setText("Sacar Elemento");
buttonDesapilar.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonDesapilarActionPerformed(evt);
}
});
buttonInsertCero.setFont(new java.awt.Font("Consolas", 0, 12)); // NOI18N
buttonInsertCero.setText("Insertar Cero");
buttonInsertCero.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonInsertCeroActionPerformed(evt);
}
});
buttonBorrarPila.setFont(new java.awt.Font("Consolas", 0, 12)); // NOI18N
buttonBorrarPila.setText("Limpiar Pila");
buttonBorrarPila.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
buttonBorrarPilaActionPerformed(evt);
}
});
labelAvisos.setFont(new java.awt.Font("Consolas", 0, 12)); // NOI18N
labelAvisos.setText(" ");
labelCopyright.setFont(new java.awt.Font("Consolas", 0, 14)); // NOI18N
labelCopyright.setText("Creado por: Eder Barrero & Gabriel Durango");
javax.swing.GroupLayout layout = new
javax.swing.GroupLayout(getContentPane());
getContentPane().setLayout(layout);
layout.setHorizontalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignm
ent.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 175,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(18, 18, 18)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayou
t.Alignment.LEADING)
.addComponent(textfieldElementos)
.addComponent(buttonInsertCero,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(buttonMostrarPila,
javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
Short.MAX_VALUE)
.addComponent(buttonAggElemento,
javax.swing.GroupLayout.DEFAULT_SIZE, 280, Short.MAX_VALUE)
.addGroup(layout.createSequentialGroup()
.addComponent(labelAvisos)
.addGap(0, 0, Short.MAX_VALUE))
.addGroup(layout.createSequentialGroup()
.addComponent(buttonDesapilar)
.addPreferredGap(javax.swing.LayoutStyle.ComponentP
lacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
.addComponent(buttonBorrarPila))))
.addGroup(layout.createSequentialGroup()
.addComponent(labelCopyright)
.addGap(0, 0, Short.MAX_VALUE)))
.addContainerGap())
);
layout.setVerticalGroup(
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignm
ent.LEADING)
.addGroup(layout.createSequentialGroup()
.addGap(34, 34, 34)
.addComponent(textfieldElementos,
javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE,
javax.swing.GroupLayout.PREFERRED_SIZE)
.addGap(11, 11, 11)
.addComponent(buttonAggElemento)
.addGap(11, 11, 11)
.addGroup(layout.createParallelGroup(javax.swing.GroupLayou
t.Alignment.BASELINE)
.addComponent(buttonDesapilar)
.addComponent(buttonBorrarPila))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement
.UNRELATED)
.addComponent(labelAvisos)
.addGap(9, 9, 9)
.addComponent(buttonInsertCero)
.addGap(18, 18, 18)
.addComponent(buttonMostrarPila))
.addGroup(layout.createSequentialGroup()
.addContainerGap()
.addComponent(jScrollPane1,
javax.swing.GroupLayout.PREFERRED_SIZE, 307,
javax.swing.GroupLayout.PREFERRED_SIZE)))
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED
, 12, Short.MAX_VALUE)
.addComponent(labelCopyright)
.addContainerGap())
);
pack();
}// </editor-fold>//GEN-END:initComponents
private void buttonMostrarPilaActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_buttonMostrarPilaActionPerformed
// TODO add your handling code here:
textareaMain.setText(pila.toString());
textareaMain.setCaretPosition(0); //Devolver al principio
}//GEN-LAST:event_buttonMostrarPilaActionPerformed
private void buttonAggElementoActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_buttonAggElementoActionPerformed
// TODO add your handling code here:
try {
pila.apilar(Integer.parseInt(textfieldElementos.getText()));
} catch (NumberFormatException ex) {
//Por si acaso...
labelAvisos.setText("Escriba un número válido.");
}
//Como uso un DocumentFilter para validar el jTextfield necesito hacer
//esto para vaciarlo .-.
try {
textfieldElementos.getDocument().remove(0,
textfieldElementos.getText().length());
} catch (BadLocationException ex) {
Logger.getLogger(Interfaz.class.getName()).log(Level.SEVERE, null, ex);
}
textfieldElementos.requestFocus();
buttonMostrarPila.doClick();
}//GEN-LAST:event_buttonAggElementoActionPerformed
private void buttonDesapilarActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_buttonDesapilarActionPerformed
try {
// TODO add your handling code here:
pila.desapilar();
} catch (PilaVacia ex) {
labelAvisos.setText("No hay nada que sacar.");
}
buttonMostrarPila.doClick();
}//GEN-LAST:event_buttonDesapilarActionPerformed
private void buttonBorrarPilaActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_buttonBorrarPilaActionPerformed
// TODO add your handling code here:
pila.eliminarPila();
buttonMostrarPila.doClick();
}//GEN-LAST:event_buttonBorrarPilaActionPerformed
private void buttonInsertCeroActionPerformed(java.awt.event.ActionEvent evt)
{//GEN-FIRST:event_buttonInsertCeroActionPerformed
try {
pila.agregarCero(pila);
} catch (PilaVacia ex) {
//Ignorar :)
}
}//GEN-LAST:event_buttonInsertCeroActionPerformed
private void textfieldElementosKeyPressed(java.awt.event.KeyEvent evt) {//GEN-
FIRST:event_textfieldElementosKeyPressed
// TODO add your handling code here:
if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
buttonAggElemento.doClick();
}
}//GEN-LAST:event_textfieldElementosKeyPressed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton buttonAggElemento;
private javax.swing.JButton buttonBorrarPila;
private javax.swing.JButton buttonDesapilar;
private javax.swing.JButton buttonInsertCero;
private javax.swing.JButton buttonMostrarPila;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JLabel labelAvisos;
private javax.swing.JLabel labelCopyright;
private javax.swing.JTextArea textareaMain;
private javax.swing.JTextField textfieldElementos;
// End of variables declaration//GEN-END:variables
}