Fixed bug in removing a highlighted element.

Added comments.
This commit is contained in:
Chris Cromer 2016-07-03 11:17:17 -04:00
parent 4ac689ec15
commit 71bf0201e6
3 changed files with 506 additions and 406 deletions

View File

@ -29,22 +29,27 @@ public class Grafico {
* Duración de la animación. * Duración de la animación.
*/ */
static final public int DURACION = 150; static final public int DURACION = 150;
/** /**
* Tipo de dibujo rectuangular. * Tipo de dibujo rectuangular.
*/ */
static final public int RECTANGULO = 0; static final public int RECTANGULO = 0;
/** /**
* Tipo de dibujo circular. * Tipo de dibujo circular.
*/ */
static final public int CIRCULO = 1; static final public int CIRCULO = 1;
/** /**
* Tipo de dibjuo texto * Tipo de dibjuo texto
*/ */
static final public int TEXTO = 2; static final public int TEXTO = 2;
/** /**
* La escena donde está cosas graficas. * La escena donde está cosas graficas.
*/ */
final private Scene scene; final private Scene scene;
/** /**
* Los elementos destacados. * Los elementos destacados.
*/ */
@ -117,6 +122,7 @@ public class Grafico {
* Crear la linea circular con flecha. * Crear la linea circular con flecha.
* *
* @param cajas int: La cantidad de cajas que están. * @param cajas int: La cantidad de cajas que están.
*
* @return StackPane: Devolver el stackpane que contiene la linea horizontal. * @return StackPane: Devolver el stackpane que contiene la linea horizontal.
*/ */
public static Pane crearLineaCircular(int cajas) { public static Pane crearLineaCircular(int cajas) {
@ -158,6 +164,7 @@ public class Grafico {
* *
* @param colores Colores: Los colores para dar color al rectangulo. * @param colores Colores: Los colores para dar color al rectangulo.
* @param label String: El texto por el ID de fxml. * @param label String: El texto por el ID de fxml.
*
* @return StackPane: Devolver el stackpane que contiene el rectangulo y texto. * @return StackPane: Devolver el stackpane que contiene el rectangulo y texto.
*/ */
public static StackPane crearCaja(Colores colores, String label) { public static StackPane crearCaja(Colores colores, String label) {
@ -182,6 +189,7 @@ public class Grafico {
* @param colores Colores: Los colores para dar color al rectangulo. * @param colores Colores: Los colores para dar color al rectangulo.
* @param label String: El texto por el ID de fxml. * @param label String: El texto por el ID de fxml.
* @param texto String: El texto a colocar dentro el rectangulo. * @param texto String: El texto a colocar dentro el rectangulo.
*
* @return StackPane: Devolver el stackpane que contiene el rectangulo y texto. * @return StackPane: Devolver el stackpane que contiene el rectangulo y texto.
*/ */
public static StackPane crearCaja(Colores colores, String label, String texto) { public static StackPane crearCaja(Colores colores, String label, String texto) {
@ -206,6 +214,7 @@ public class Grafico {
* *
* @param colores Colores: Los colores para dar color a los rectangulos. * @param colores Colores: Los colores para dar color a los rectangulos.
* @param label String: El texto por el ID de fxml. * @param label String: El texto por el ID de fxml.
*
* @return StackPane: Devolver el stackpane que contiene los rectangulos y textos. * @return StackPane: Devolver el stackpane que contiene los rectangulos y textos.
*/ */
public static StackPane crearHashCajas(Colores colores, String label) { public static StackPane crearHashCajas(Colores colores, String label) {
@ -356,23 +365,24 @@ public class Grafico {
*/ */
public void removerDestacar() { public void removerDestacar() {
if (destacados.size() != 0) { if (destacados.size() != 0) {
for (int i = 0; i < destacados.size(); i++) { int size = destacados.size();
destacados.get(i).getSequentialTransition().stop(); for (int i = 0; i < size; i++) {
destacados.get(0).getSequentialTransition().stop();
if (destacados.get(i).getTipo() == RECTANGULO) { if (destacados.get(0).getTipo() == RECTANGULO) {
Rectangle rectangle = (Rectangle) scene.lookup(destacados.get(i).getId()); Rectangle rectangle = (Rectangle) scene.lookup(destacados.get(0).getId());
rectangle.setFill(destacados.get(i).getColor()); rectangle.setFill(destacados.get(0).getColor());
} }
else if (destacados.get(i).getTipo() == CIRCULO) { else if (destacados.get(0).getTipo() == CIRCULO) {
Circle circle = (Circle) scene.lookup(destacados.get(i).getId()); Circle circle = (Circle) scene.lookup(destacados.get(0).getId());
circle.setFill(destacados.get(i).getColor()); circle.setFill(destacados.get(0).getColor());
} }
else { else {
Text text = (Text) scene.lookup(destacados.get(i).getId()); Text text = (Text) scene.lookup(destacados.get(0).getId());
text.setStroke(destacados.get(i).getColor()); text.setStroke(destacados.get(0).getColor());
} }
destacados.remove(i); destacados.remove(0);
} }
} }
} }
@ -435,6 +445,7 @@ public class Grafico {
/** /**
* Devolver el color anterior antes que fue destacado. * Devolver el color anterior antes que fue destacado.
*
* @return Color: El color anterior. * @return Color: El color anterior.
*/ */
public Color getColor() { public Color getColor() {

View File

@ -1,29 +1,67 @@
package cl.cromer.estructuras; package cl.cromer.estructuras;
/**
* La estructura de un elemento de una Tabla Hash.
*/
public class HashItem { public class HashItem {
/**
* La llave.
*/
final private String llave; final private String llave;
/**
* El valor.
*/
final private int valor; final private int valor;
/**
* Donde el elemento está en el array.
*/
private int indice; private int indice;
/**
* Inicilizar.
*
* @param llave String: La llave del elemento.
* @param valor int: El valor del elemento.
*/
public HashItem(String llave, int valor) { public HashItem(String llave, int valor) {
this.llave = llave; this.llave = llave;
this.valor = valor; this.valor = valor;
} }
/**
* Devolver la llave del elemento.
*
* @return String: La llave.
*/
public String getLlave() { public String getLlave() {
return llave; return llave;
} }
/**
* Devolver el valor del elemento.
*
* @return int: El valor.
*/
public int getValor() { public int getValor() {
return valor; return valor;
} }
/**
* Devolver el indice del elemento.
*
* @return int: El indice.
*/
public int getIndice() { public int getIndice() {
return indice; return indice;
} }
/**
* Cambiar el indice.
*
* @param indice int: El indice.
*/
public void setIndice(int indice) { public void setIndice(int indice) {
this.indice = indice; this.indice = indice;
} }

View File

@ -1,23 +1,50 @@
package cl.cromer.estructuras; package cl.cromer.estructuras;
/**
* Esta clase es tipo de estructura de dato Tabla Hash.
*
* @author Chris Cromer
*/
public class HashTable { public class HashTable {
/**
* El array donde están todos los elementos de la tabla hash.
*/
final private HashItem hashArray[]; final private HashItem hashArray[];
/**
* El tamaño maximo de la tabla hash.
*/
final private int tamano; final private int tamano;
/**
* Cantidad de elementos que están en la tabla hash.
*/
private int size; private int size;
/**
* Inicilizar.
*
* @param tamano int: El tamaño maximo de la tabla hash.
*/
public HashTable(int tamano) { public HashTable(int tamano) {
this.tamano = tamano; this.tamano = tamano;
hashArray = new HashItem[tamano]; hashArray = new HashItem[tamano];
} }
/**
* Devolver la cantidad de elementos que están en la tabla.
*
* @return int: La cantidad.
*/
public int size() { public int size() {
return size; return size;
} }
/** /**
* Este metodo crea un hash muy único. * Este metodo crea un hash muy único.
*
* @param string String: El string a hashear. * @param string String: El string a hashear.
*
* @return int: El hash a devolver. * @return int: El hash a devolver.
*/ */
@SuppressWarnings("unused") @SuppressWarnings("unused")
@ -43,6 +70,14 @@ public class HashTable {
return (Math.abs(sum) % tamano); return (Math.abs(sum) % tamano);
} }
/**
* Insertar una llave y valor en la tabla hash.
*
* @param llave String: La llave para identificar un elemento.
* @param valor int: El valor a insertar.
*
* @return boolean: Verdad si fue insertado, sino está llena la tabla hash.
*/
public boolean insertar(String llave, int valor) { public boolean insertar(String llave, int valor) {
HashItem hashItem = new HashItem(llave, valor); HashItem hashItem = new HashItem(llave, valor);
int hashIndice = hash(hashItem.getLlave()); int hashIndice = hash(hashItem.getLlave());
@ -84,6 +119,13 @@ public class HashTable {
return hash % tamano; return hash % tamano;
} }
/**
* Eliminar un elemento de la tabla hash.
*
* @param llave String: La llave a elminar.
*
* @return boolean: Verdad si fue borrado, sino no existiá.
*/
public boolean eliminar(String llave) { public boolean eliminar(String llave) {
HashItem hashItem = new HashItem(llave, 0); HashItem hashItem = new HashItem(llave, 0);
int hashIndice = hash(hashItem.getLlave()); int hashIndice = hash(hashItem.getLlave());
@ -91,6 +133,7 @@ public class HashTable {
while (hashArray[hashIndice] != null && hashArray[hashIndice].getLlave() != null && i < tamano) { while (hashArray[hashIndice] != null && hashArray[hashIndice].getLlave() != null && i < tamano) {
if (hashArray[hashIndice].getLlave().equals(llave)) { if (hashArray[hashIndice].getLlave().equals(llave)) {
hashArray[hashIndice] = null; hashArray[hashIndice] = null;
size--;
return true; return true;
} }
hashIndice++; hashIndice++;
@ -100,6 +143,13 @@ public class HashTable {
return false; return false;
} }
/**
* Buscar una llave en la tabla hash.
*
* @param llave String: La llave a buscar.
*
* @return HashItem: Devolver el elemento que contine la llave.
*/
public HashItem buscar(String llave) { public HashItem buscar(String llave) {
for (int i = 0; i < tamano; i++) { for (int i = 0; i < tamano; i++) {
if (hashArray[i] != null && hashArray[i].getLlave().equals(llave)) { if (hashArray[i] != null && hashArray[i].getLlave().equals(llave)) {
@ -113,6 +163,7 @@ public class HashTable {
* Devolver el valor que está guardado en cada indice. Se usa para construir la grafica. * Devolver el valor que está guardado en cada indice. Se usa para construir la grafica.
* *
* @param indice int: El indice que desea ver. * @param indice int: El indice que desea ver.
*
* @return String: El valor que está en dicho indice. * @return String: El valor que está en dicho indice.
*/ */
public HashItem getIndice(int indice) { public HashItem getIndice(int indice) {