Fixed bug in removing a highlighted element.
Added comments.
This commit is contained in:
parent
4ac689ec15
commit
71bf0201e6
@ -25,428 +25,439 @@ import java.util.List;
|
|||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
public class Grafico {
|
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.
|
|
||||||
*/
|
|
||||||
static final public int RECTANGULO = 0;
|
|
||||||
/**
|
|
||||||
* Tipo de dibujo circular.
|
|
||||||
*/
|
|
||||||
static final public int CIRCULO = 1;
|
|
||||||
/**
|
|
||||||
* Tipo de dibjuo texto
|
|
||||||
*/
|
|
||||||
static final public int TEXTO = 2;
|
|
||||||
/**
|
|
||||||
* La escena donde está cosas graficas.
|
|
||||||
*/
|
|
||||||
final private Scene scene;
|
|
||||||
/**
|
|
||||||
* Los elementos destacados.
|
|
||||||
*/
|
|
||||||
final private List<Destacados> destacados;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Graficar una escena.
|
* Tipo de dibujo rectuangular.
|
||||||
*
|
*/
|
||||||
* @param scene La scene a destacar.
|
static final public int RECTANGULO = 0;
|
||||||
*/
|
|
||||||
public Grafico(Scene scene) {
|
|
||||||
this.scene = scene;
|
|
||||||
destacados = new ArrayList<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear una flecha que apunta por abajo.
|
* Tipo de dibujo circular.
|
||||||
*
|
*/
|
||||||
* @return StackPane: Devolver el stackpane que contiene la flecha.
|
static final public int CIRCULO = 1;
|
||||||
*/
|
|
||||||
public static StackPane crearFlechaAbajo() {
|
|
||||||
Polygon polygon = new Polygon();
|
|
||||||
polygon.getPoints().addAll(
|
|
||||||
0.0, 0.0,
|
|
||||||
10.0, 0.0,
|
|
||||||
5.0, 10.0
|
|
||||||
);
|
|
||||||
|
|
||||||
StackPane stackPane = new StackPane();
|
/**
|
||||||
stackPane.getChildren().addAll(polygon);
|
* Tipo de dibjuo texto
|
||||||
return stackPane;
|
*/
|
||||||
}
|
static final public int TEXTO = 2;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear una flecha que apunta por arriba.
|
* La escena donde está cosas graficas.
|
||||||
*
|
*/
|
||||||
* @return StackPane: Devolver el stackpane que contiene la flecha.
|
final private Scene scene;
|
||||||
*/
|
|
||||||
public static StackPane crearFlechaArriba() {
|
|
||||||
Polygon polygon = new Polygon();
|
|
||||||
polygon.getPoints().addAll(
|
|
||||||
5.0, 0.0,
|
|
||||||
0.0, 10.0,
|
|
||||||
10.0, 10.0
|
|
||||||
);
|
|
||||||
|
|
||||||
StackPane stackPane = new StackPane();
|
/**
|
||||||
stackPane.getChildren().addAll(polygon);
|
* Los elementos destacados.
|
||||||
return stackPane;
|
*/
|
||||||
}
|
final private List<Destacados> destacados;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear una linea vertical.
|
* Graficar una escena.
|
||||||
*
|
*
|
||||||
* @return StackPane: Devolver el stackpane que contiene la linea vertical.
|
* @param scene La scene a destacar.
|
||||||
*/
|
*/
|
||||||
public static StackPane crearLineaVertical() {
|
public Grafico(Scene scene) {
|
||||||
Line line = new Line();
|
this.scene = scene;
|
||||||
line.setStartX(20);
|
destacados = new ArrayList<>();
|
||||||
line.setEndX(20);
|
}
|
||||||
line.setStartY(0);
|
|
||||||
line.setEndY(20);
|
|
||||||
|
|
||||||
StackPane stackPane = new StackPane();
|
/**
|
||||||
stackPane.getChildren().addAll(line);
|
* Crear una flecha que apunta por abajo.
|
||||||
return stackPane;
|
*
|
||||||
}
|
* @return StackPane: Devolver el stackpane que contiene la flecha.
|
||||||
|
*/
|
||||||
|
public static StackPane crearFlechaAbajo() {
|
||||||
|
Polygon polygon = new Polygon();
|
||||||
|
polygon.getPoints().addAll(
|
||||||
|
0.0, 0.0,
|
||||||
|
10.0, 0.0,
|
||||||
|
5.0, 10.0
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
StackPane stackPane = new StackPane();
|
||||||
* Crear la linea circular con flecha.
|
stackPane.getChildren().addAll(polygon);
|
||||||
*
|
return stackPane;
|
||||||
* @param cajas int: La cantidad de cajas que están.
|
}
|
||||||
* @return StackPane: Devolver el stackpane que contiene la linea horizontal.
|
|
||||||
*/
|
|
||||||
public static Pane crearLineaCircular(int cajas) {
|
|
||||||
int height = (cajas - 1) * (40 + 20 + 10);
|
|
||||||
height = height + 20 + 10;
|
|
||||||
|
|
||||||
Line top = new Line();
|
/**
|
||||||
top.setStartY(20);
|
* Crear una flecha que apunta por arriba.
|
||||||
top.setEndY(20);
|
*
|
||||||
top.setStartX(0);
|
* @return StackPane: Devolver el stackpane que contiene la flecha.
|
||||||
top.setEndX(20);
|
*/
|
||||||
|
public static StackPane crearFlechaArriba() {
|
||||||
|
Polygon polygon = new Polygon();
|
||||||
|
polygon.getPoints().addAll(
|
||||||
|
5.0, 0.0,
|
||||||
|
0.0, 10.0,
|
||||||
|
10.0, 10.0
|
||||||
|
);
|
||||||
|
|
||||||
Polygon flechaDerecha = new Polygon();
|
StackPane stackPane = new StackPane();
|
||||||
flechaDerecha.getPoints().addAll(
|
stackPane.getChildren().addAll(polygon);
|
||||||
10.0, 15.0,
|
return stackPane;
|
||||||
20.0, 20.0,
|
}
|
||||||
10.0, 25.0
|
|
||||||
);
|
|
||||||
|
|
||||||
Line vertical = new Line();
|
/**
|
||||||
vertical.setStartY(20);
|
* Crear una linea vertical.
|
||||||
vertical.setEndY(height);
|
*
|
||||||
|
* @return StackPane: Devolver el stackpane que contiene la linea vertical.
|
||||||
|
*/
|
||||||
|
public static StackPane crearLineaVertical() {
|
||||||
|
Line line = new Line();
|
||||||
|
line.setStartX(20);
|
||||||
|
line.setEndX(20);
|
||||||
|
line.setStartY(0);
|
||||||
|
line.setEndY(20);
|
||||||
|
|
||||||
Line bottom = new Line();
|
StackPane stackPane = new StackPane();
|
||||||
bottom.setStartY(height);
|
stackPane.getChildren().addAll(line);
|
||||||
bottom.setEndY(height);
|
return stackPane;
|
||||||
bottom.setStartX(0);
|
}
|
||||||
bottom.setEndX(20);
|
|
||||||
|
/**
|
||||||
|
* Crear la linea circular con flecha.
|
||||||
|
*
|
||||||
|
* @param cajas int: La cantidad de cajas que están.
|
||||||
|
*
|
||||||
|
* @return StackPane: Devolver el stackpane que contiene la linea horizontal.
|
||||||
|
*/
|
||||||
|
public static Pane crearLineaCircular(int cajas) {
|
||||||
|
int height = (cajas - 1) * (40 + 20 + 10);
|
||||||
|
height = height + 20 + 10;
|
||||||
|
|
||||||
|
Line top = new Line();
|
||||||
|
top.setStartY(20);
|
||||||
|
top.setEndY(20);
|
||||||
|
top.setStartX(0);
|
||||||
|
top.setEndX(20);
|
||||||
|
|
||||||
|
Polygon flechaDerecha = new Polygon();
|
||||||
|
flechaDerecha.getPoints().addAll(
|
||||||
|
10.0, 15.0,
|
||||||
|
20.0, 20.0,
|
||||||
|
10.0, 25.0
|
||||||
|
);
|
||||||
|
|
||||||
|
Line vertical = new Line();
|
||||||
|
vertical.setStartY(20);
|
||||||
|
vertical.setEndY(height);
|
||||||
|
|
||||||
|
Line bottom = new Line();
|
||||||
|
bottom.setStartY(height);
|
||||||
|
bottom.setEndY(height);
|
||||||
|
bottom.setStartX(0);
|
||||||
|
bottom.setEndX(20);
|
||||||
|
|
||||||
|
|
||||||
Pane stackPane = new Pane();
|
Pane stackPane = new Pane();
|
||||||
stackPane.getChildren().addAll(top, flechaDerecha, vertical, bottom);
|
stackPane.getChildren().addAll(top, flechaDerecha, vertical, bottom);
|
||||||
|
|
||||||
return stackPane;
|
return stackPane;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear un rectangulo.
|
* Crear un rectangulo.
|
||||||
*
|
*
|
||||||
* @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) {
|
*/
|
||||||
Rectangle rectangle = new Rectangle();
|
public static StackPane crearCaja(Colores colores, String label) {
|
||||||
rectangle.setHeight(40);
|
Rectangle rectangle = new Rectangle();
|
||||||
rectangle.setWidth(40);
|
rectangle.setHeight(40);
|
||||||
rectangle.setFill(colores.getFondo());
|
rectangle.setWidth(40);
|
||||||
rectangle.setStroke(Color.BLACK);
|
rectangle.setFill(colores.getFondo());
|
||||||
rectangle.setId("caja_" + label);
|
rectangle.setStroke(Color.BLACK);
|
||||||
Text text = new Text();
|
rectangle.setId("caja_" + label);
|
||||||
text.setId("texto_" + label);
|
Text text = new Text();
|
||||||
text.setStroke(colores.getTexto());
|
text.setId("texto_" + label);
|
||||||
|
text.setStroke(colores.getTexto());
|
||||||
|
|
||||||
StackPane stackPane = new StackPane();
|
StackPane stackPane = new StackPane();
|
||||||
stackPane.getChildren().addAll(rectangle, text);
|
stackPane.getChildren().addAll(rectangle, text);
|
||||||
return stackPane;
|
return stackPane;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear un rectangulo con texto adentro.
|
* Crear un rectangulo con texto adentro.
|
||||||
*
|
*
|
||||||
* @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) {
|
*/
|
||||||
Rectangle rectangle = new Rectangle();
|
public static StackPane crearCaja(Colores colores, String label, String texto) {
|
||||||
rectangle.setHeight(40);
|
Rectangle rectangle = new Rectangle();
|
||||||
rectangle.setWidth(40);
|
rectangle.setHeight(40);
|
||||||
rectangle.setFill(colores.getFondo());
|
rectangle.setWidth(40);
|
||||||
rectangle.setStroke(Color.BLACK);
|
rectangle.setFill(colores.getFondo());
|
||||||
rectangle.setId("caja_" + label);
|
rectangle.setStroke(Color.BLACK);
|
||||||
Text text = new Text();
|
rectangle.setId("caja_" + label);
|
||||||
text.setId("texto_" + label);
|
Text text = new Text();
|
||||||
text.setStroke(colores.getTexto());
|
text.setId("texto_" + label);
|
||||||
text.setText(texto);
|
text.setStroke(colores.getTexto());
|
||||||
|
text.setText(texto);
|
||||||
|
|
||||||
StackPane stackPane = new StackPane();
|
StackPane stackPane = new StackPane();
|
||||||
stackPane.getChildren().addAll(rectangle, text);
|
stackPane.getChildren().addAll(rectangle, text);
|
||||||
return stackPane;
|
return stackPane;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear 3 rectangulos.
|
* Crear 3 rectangulos.
|
||||||
*
|
*
|
||||||
* @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) {
|
*/
|
||||||
Rectangle rectangle = new Rectangle();
|
public static StackPane crearHashCajas(Colores colores, String label) {
|
||||||
rectangle.setHeight(40);
|
Rectangle rectangle = new Rectangle();
|
||||||
rectangle.setWidth(40);
|
rectangle.setHeight(40);
|
||||||
rectangle.setFill(colores.getFondo());
|
rectangle.setWidth(40);
|
||||||
rectangle.setStroke(Color.BLACK);
|
rectangle.setFill(colores.getFondo());
|
||||||
rectangle.setId("indice_caja_" + label);
|
rectangle.setStroke(Color.BLACK);
|
||||||
Text text = new Text();
|
rectangle.setId("indice_caja_" + label);
|
||||||
text.setId("indice_texto_" + label);
|
Text text = new Text();
|
||||||
text.setStroke(colores.getTexto());
|
text.setId("indice_texto_" + label);
|
||||||
|
text.setStroke(colores.getTexto());
|
||||||
|
|
||||||
StackPane stackPane1 = new StackPane();
|
StackPane stackPane1 = new StackPane();
|
||||||
stackPane1.getChildren().addAll(rectangle, text);
|
stackPane1.getChildren().addAll(rectangle, text);
|
||||||
|
|
||||||
rectangle = new Rectangle();
|
rectangle = new Rectangle();
|
||||||
rectangle.setHeight(40);
|
rectangle.setHeight(40);
|
||||||
rectangle.setWidth(120);
|
rectangle.setWidth(120);
|
||||||
rectangle.setFill(colores.getFondo());
|
rectangle.setFill(colores.getFondo());
|
||||||
rectangle.setStroke(Color.BLACK);
|
rectangle.setStroke(Color.BLACK);
|
||||||
rectangle.setId("llave_caja_" + label);
|
rectangle.setId("llave_caja_" + label);
|
||||||
text = new Text();
|
text = new Text();
|
||||||
text.setId("llave_texto_" + label);
|
text.setId("llave_texto_" + label);
|
||||||
text.setStroke(colores.getTexto());
|
text.setStroke(colores.getTexto());
|
||||||
|
|
||||||
StackPane stackPane2 = new StackPane();
|
StackPane stackPane2 = new StackPane();
|
||||||
stackPane2.getChildren().addAll(rectangle, text);
|
stackPane2.getChildren().addAll(rectangle, text);
|
||||||
|
|
||||||
rectangle = new Rectangle();
|
rectangle = new Rectangle();
|
||||||
rectangle.setHeight(40);
|
rectangle.setHeight(40);
|
||||||
rectangle.setWidth(40);
|
rectangle.setWidth(40);
|
||||||
rectangle.setFill(colores.getFondo());
|
rectangle.setFill(colores.getFondo());
|
||||||
rectangle.setStroke(Color.BLACK);
|
rectangle.setStroke(Color.BLACK);
|
||||||
rectangle.setId("valor_caja_" + label);
|
rectangle.setId("valor_caja_" + label);
|
||||||
text = new Text();
|
text = new Text();
|
||||||
text.setId("valor_texto_" + label);
|
text.setId("valor_texto_" + label);
|
||||||
text.setStroke(colores.getTexto());
|
text.setStroke(colores.getTexto());
|
||||||
|
|
||||||
StackPane stackPane3 = new StackPane();
|
StackPane stackPane3 = new StackPane();
|
||||||
stackPane3.getChildren().addAll(rectangle, text);
|
stackPane3.getChildren().addAll(rectangle, text);
|
||||||
|
|
||||||
HBox hBox = new HBox();
|
HBox hBox = new HBox();
|
||||||
hBox.getChildren().addAll(stackPane1, stackPane2, stackPane3);
|
hBox.getChildren().addAll(stackPane1, stackPane2, stackPane3);
|
||||||
hBox.setAlignment(Pos.TOP_CENTER);
|
hBox.setAlignment(Pos.TOP_CENTER);
|
||||||
|
|
||||||
StackPane stackPane = new StackPane();
|
StackPane stackPane = new StackPane();
|
||||||
stackPane.getChildren().addAll(hBox);
|
stackPane.getChildren().addAll(hBox);
|
||||||
return stackPane;
|
return stackPane;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Destacar un elemento
|
* Destacar un elemento
|
||||||
*
|
*
|
||||||
* @param id int: El indice a destacar.
|
* @param id int: El indice a destacar.
|
||||||
* @param tipo int: El tipo de objeto a destacar, {@value #RECTANGULO}, {@value #CIRCULO} o {@value #TEXTO}
|
* @param tipo int: El tipo de objeto a destacar, {@value #RECTANGULO}, {@value #CIRCULO} o {@value #TEXTO}
|
||||||
*/
|
*/
|
||||||
public void destacar(String id, int tipo) {
|
public void destacar(String id, int tipo) {
|
||||||
if (tipo != RECTANGULO && tipo != CIRCULO && tipo != TEXTO) {
|
if (tipo != RECTANGULO && tipo != CIRCULO && tipo != TEXTO) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Colores colores = new Colores();
|
Colores colores = new Colores();
|
||||||
Rectangle rectangle = null;
|
Rectangle rectangle = null;
|
||||||
Circle circle = null;
|
Circle circle = null;
|
||||||
Text text = null;
|
Text text = null;
|
||||||
if (tipo == RECTANGULO) {
|
if (tipo == RECTANGULO) {
|
||||||
rectangle = (Rectangle) scene.lookup(id);
|
rectangle = (Rectangle) scene.lookup(id);
|
||||||
}
|
}
|
||||||
else if (tipo == CIRCULO) {
|
else if (tipo == CIRCULO) {
|
||||||
circle = (Circle) scene.lookup(id);
|
circle = (Circle) scene.lookup(id);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
text = (Text) scene.lookup(id);
|
text = (Text) scene.lookup(id);
|
||||||
}
|
}
|
||||||
PauseTransition changeColor[] = new PauseTransition[Colores.MAX_COLORS];
|
PauseTransition changeColor[] = new PauseTransition[Colores.MAX_COLORS];
|
||||||
for (int i = 0; i < Colores.MAX_COLORS; i++) {
|
for (int i = 0; i < Colores.MAX_COLORS; i++) {
|
||||||
if (tipo == RECTANGULO) {
|
if (tipo == RECTANGULO) {
|
||||||
changeColor[i] = createPauseTransition(rectangle, colores.getFondo());
|
changeColor[i] = createPauseTransition(rectangle, colores.getFondo());
|
||||||
}
|
}
|
||||||
else if (tipo == CIRCULO) {
|
else if (tipo == CIRCULO) {
|
||||||
changeColor[i] = createPauseTransition(circle, colores.getFondo());
|
changeColor[i] = createPauseTransition(circle, colores.getFondo());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
changeColor[i] = createPauseTransition(text, colores.getTexto());
|
changeColor[i] = createPauseTransition(text, colores.getTexto());
|
||||||
}
|
}
|
||||||
colores.siguinteColor();
|
colores.siguinteColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tipo == RECTANGULO) {
|
if (tipo == RECTANGULO) {
|
||||||
destacados.add(new Destacados(tipo, id, (Color) rectangle.getFill(), new SequentialTransition(changeColor)));
|
destacados.add(new Destacados(tipo, id, (Color) rectangle.getFill(), new SequentialTransition(changeColor)));
|
||||||
}
|
}
|
||||||
else if (tipo == CIRCULO) {
|
else if (tipo == CIRCULO) {
|
||||||
destacados.add(new Destacados(tipo, id, (Color) circle.getFill(), new SequentialTransition(changeColor)));
|
destacados.add(new Destacados(tipo, id, (Color) circle.getFill(), new SequentialTransition(changeColor)));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
destacados.add(new Destacados(tipo, id, (Color) text.getStroke(), new SequentialTransition(changeColor)));
|
destacados.add(new Destacados(tipo, id, (Color) text.getStroke(), new SequentialTransition(changeColor)));
|
||||||
}
|
}
|
||||||
|
|
||||||
destacados.get(destacados.size() - 1).getSequentialTransition().setCycleCount(Animation.INDEFINITE);
|
destacados.get(destacados.size() - 1).getSequentialTransition().setCycleCount(Animation.INDEFINITE);
|
||||||
destacados.get(destacados.size() - 1).getSequentialTransition().play();
|
destacados.get(destacados.size() - 1).getSequentialTransition().play();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear un animacion de transicion usando colores que cambian.
|
* Crear un animacion de transicion usando colores que cambian.
|
||||||
*
|
*
|
||||||
* @param rectangle Rectangle: El objeto que desea animar.
|
* @param rectangle Rectangle: El objeto que desea animar.
|
||||||
* @param colorBackground Color: Color del fondo de destacar.
|
* @param colorBackground Color: Color del fondo de destacar.
|
||||||
*
|
*
|
||||||
* @return PauseTransition: La transition creado con los elementos y colores.
|
* @return PauseTransition: La transition creado con los elementos y colores.
|
||||||
*/
|
*/
|
||||||
private static PauseTransition createPauseTransition(Rectangle rectangle, Color colorBackground) {
|
private static PauseTransition createPauseTransition(Rectangle rectangle, Color colorBackground) {
|
||||||
PauseTransition changeColor = new PauseTransition(new Duration(DURACION));
|
PauseTransition changeColor = new PauseTransition(new Duration(DURACION));
|
||||||
changeColor.setOnFinished(actionEvent -> rectangle.setFill(colorBackground));
|
changeColor.setOnFinished(actionEvent -> rectangle.setFill(colorBackground));
|
||||||
return changeColor;
|
return changeColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear un animacion de transicion usando colores que cambian.
|
* Crear un animacion de transicion usando colores que cambian.
|
||||||
*
|
*
|
||||||
* @param circle Circle: El objeto que desea animar.
|
* @param circle Circle: El objeto que desea animar.
|
||||||
* @param colorBackground Color: Color del fondo de destacar.
|
* @param colorBackground Color: Color del fondo de destacar.
|
||||||
*
|
*
|
||||||
* @return PauseTransition: La transition creado con los elementos y colores.
|
* @return PauseTransition: La transition creado con los elementos y colores.
|
||||||
*/
|
*/
|
||||||
private static PauseTransition createPauseTransition(Circle circle, Color colorBackground) {
|
private static PauseTransition createPauseTransition(Circle circle, Color colorBackground) {
|
||||||
PauseTransition changeColor = new PauseTransition(new Duration(DURACION));
|
PauseTransition changeColor = new PauseTransition(new Duration(DURACION));
|
||||||
changeColor.setOnFinished(actionEvent -> circle.setFill(colorBackground));
|
changeColor.setOnFinished(actionEvent -> circle.setFill(colorBackground));
|
||||||
return changeColor;
|
return changeColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Crear un animacion de transicion usando colores que cambian.
|
* Crear un animacion de transicion usando colores que cambian.
|
||||||
*
|
*
|
||||||
* @param text Text: El texto que desea animar.
|
* @param text Text: El texto que desea animar.
|
||||||
* @param colorText Color: Color del texto.
|
* @param colorText Color: Color del texto.
|
||||||
*
|
*
|
||||||
* @return PauseTransition: La transition creado con los elementos y colores.
|
* @return PauseTransition: La transition creado con los elementos y colores.
|
||||||
*/
|
*/
|
||||||
private static PauseTransition createPauseTransition(Text text, Color colorText) {
|
private static PauseTransition createPauseTransition(Text text, Color colorText) {
|
||||||
PauseTransition changeColor = new PauseTransition(new Duration(DURACION));
|
PauseTransition changeColor = new PauseTransition(new Duration(DURACION));
|
||||||
changeColor.setOnFinished(actionEvent -> text.setStroke(colorText));
|
changeColor.setOnFinished(actionEvent -> text.setStroke(colorText));
|
||||||
return changeColor;
|
return changeColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remover todos los elementos destacados.
|
* Remover todos los elementos destacados.
|
||||||
*/
|
*/
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clase de elemento destacado.
|
* Clase de elemento destacado.
|
||||||
*
|
*
|
||||||
* @author Chris Cromer
|
* @author Chris Cromer
|
||||||
*/
|
*/
|
||||||
final static private class Destacados {
|
final static private class Destacados {
|
||||||
/**
|
/**
|
||||||
* El tipo de objeto que está destacado.
|
* El tipo de objeto que está destacado.
|
||||||
*/
|
*/
|
||||||
final private int tipo;
|
final private int tipo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El id del elemento destacado.
|
* El id del elemento destacado.
|
||||||
*/
|
*/
|
||||||
final private String id;
|
final private String id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* El color anterior del elemento destacado.
|
* El color anterior del elemento destacado.
|
||||||
*/
|
*/
|
||||||
final private Color color;
|
final private Color color;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* La animación del elemento destacado.
|
* La animación del elemento destacado.
|
||||||
*/
|
*/
|
||||||
final private SequentialTransition sequentialTransition;
|
final private SequentialTransition sequentialTransition;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inicilizar.
|
* Inicilizar.
|
||||||
* @param tipo int: El tipo de elemento destacado, {@value #RECTANGULO}, {@value #CIRCULO} o {@value #TEXTO}.
|
* @param tipo int: El tipo de elemento destacado, {@value #RECTANGULO}, {@value #CIRCULO} o {@value #TEXTO}.
|
||||||
* @param id String: El id para identificar el elemento.
|
* @param id String: El id para identificar el elemento.
|
||||||
* @param color Color: El color anterior para cambiarlo cuando {@link #removerDestacar()} es usado.
|
* @param color Color: El color anterior para cambiarlo cuando {@link #removerDestacar()} es usado.
|
||||||
* @param sequentialTransition SequentialTransition: La animación a usar.
|
* @param sequentialTransition SequentialTransition: La animación a usar.
|
||||||
*/
|
*/
|
||||||
public Destacados(int tipo, String id, Color color, SequentialTransition sequentialTransition) {
|
public Destacados(int tipo, String id, Color color, SequentialTransition sequentialTransition) {
|
||||||
this.tipo = tipo;
|
this.tipo = tipo;
|
||||||
this.id = id;
|
this.id = id;
|
||||||
this.color = color;
|
this.color = color;
|
||||||
this.sequentialTransition = sequentialTransition;
|
this.sequentialTransition = sequentialTransition;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el tipo de elemento destacado.
|
* Devolver el tipo de elemento destacado.
|
||||||
* @return int: El tipo destacado.
|
* @return int: El tipo destacado.
|
||||||
*/
|
*/
|
||||||
public int getTipo() {
|
public int getTipo() {
|
||||||
return tipo;
|
return tipo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver el ID de elemento destacado.
|
* Devolver el ID de elemento destacado.
|
||||||
* @return String: El ID destacado.
|
* @return String: El ID destacado.
|
||||||
*/
|
*/
|
||||||
public String getId() {
|
public String getId() {
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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() {
|
*/
|
||||||
return color;
|
public Color getColor() {
|
||||||
}
|
return color;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Devolver la animación que es en uso con el elemento.
|
* Devolver la animación que es en uso con el elemento.
|
||||||
* @return SequentialTransition: La animación.
|
* @return SequentialTransition: La animación.
|
||||||
*/
|
*/
|
||||||
public SequentialTransition getSequentialTransition() {
|
public SequentialTransition getSequentialTransition() {
|
||||||
return sequentialTransition;
|
return sequentialTransition;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,30 +1,68 @@
|
|||||||
package cl.cromer.estructuras;
|
package cl.cromer.estructuras;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* La estructura de un elemento de una Tabla Hash.
|
||||||
|
*/
|
||||||
public class HashItem {
|
public class HashItem {
|
||||||
final private String llave;
|
/**
|
||||||
|
* La llave.
|
||||||
|
*/
|
||||||
|
final private String llave;
|
||||||
|
|
||||||
final private int valor;
|
/**
|
||||||
|
* El valor.
|
||||||
|
*/
|
||||||
|
final private int valor;
|
||||||
|
|
||||||
private int indice;
|
/**
|
||||||
|
* Donde el elemento está en el array.
|
||||||
|
*/
|
||||||
|
private int indice;
|
||||||
|
|
||||||
public HashItem(String llave, int valor) {
|
/**
|
||||||
this.llave = llave;
|
* Inicilizar.
|
||||||
this.valor = valor;
|
*
|
||||||
}
|
* @param llave String: La llave del elemento.
|
||||||
|
* @param valor int: El valor del elemento.
|
||||||
|
*/
|
||||||
|
public HashItem(String llave, int valor) {
|
||||||
|
this.llave = llave;
|
||||||
|
this.valor = valor;
|
||||||
|
}
|
||||||
|
|
||||||
public String getLlave() {
|
/**
|
||||||
return llave;
|
* Devolver la llave del elemento.
|
||||||
}
|
*
|
||||||
|
* @return String: La llave.
|
||||||
|
*/
|
||||||
|
public String getLlave() {
|
||||||
|
return llave;
|
||||||
|
}
|
||||||
|
|
||||||
public int getValor() {
|
/**
|
||||||
return valor;
|
* Devolver el valor del elemento.
|
||||||
}
|
*
|
||||||
|
* @return int: El valor.
|
||||||
|
*/
|
||||||
|
public int getValor() {
|
||||||
|
return valor;
|
||||||
|
}
|
||||||
|
|
||||||
public int getIndice() {
|
/**
|
||||||
return indice;
|
* Devolver el indice del elemento.
|
||||||
}
|
*
|
||||||
|
* @return int: El indice.
|
||||||
|
*/
|
||||||
|
public int getIndice() {
|
||||||
|
return indice;
|
||||||
|
}
|
||||||
|
|
||||||
public void setIndice(int indice) {
|
/**
|
||||||
this.indice = indice;
|
* Cambiar el indice.
|
||||||
}
|
*
|
||||||
|
* @param indice int: El indice.
|
||||||
|
*/
|
||||||
|
public void setIndice(int indice) {
|
||||||
|
this.indice = indice;
|
||||||
|
}
|
||||||
}
|
}
|
@ -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 {
|
||||||
final private HashItem hashArray[];
|
/**
|
||||||
|
* El array donde están todos los elementos de la tabla hash.
|
||||||
|
*/
|
||||||
|
final private HashItem hashArray[];
|
||||||
|
|
||||||
final private int tamano;
|
/**
|
||||||
private int size;
|
* El tamaño maximo de la tabla hash.
|
||||||
|
*/
|
||||||
|
final private int tamano;
|
||||||
|
|
||||||
public HashTable(int tamano) {
|
/**
|
||||||
|
* Cantidad de elementos que están en la tabla hash.
|
||||||
|
*/
|
||||||
|
private int size;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Inicilizar.
|
||||||
|
*
|
||||||
|
* @param tamano int: El tamaño maximo de la tabla hash.
|
||||||
|
*/
|
||||||
|
public HashTable(int tamano) {
|
||||||
this.tamano = tamano;
|
this.tamano = tamano;
|
||||||
hashArray = new HashItem[tamano];
|
hashArray = new HashItem[tamano];
|
||||||
}
|
}
|
||||||
|
|
||||||
public int size() {
|
/**
|
||||||
|
* Devolver la cantidad de elementos que están en la tabla.
|
||||||
|
*
|
||||||
|
* @return int: La cantidad.
|
||||||
|
*/
|
||||||
|
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,7 +70,15 @@ public class HashTable {
|
|||||||
return (Math.abs(sum) % tamano);
|
return (Math.abs(sum) % tamano);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean insertar(String llave, int valor) {
|
/**
|
||||||
|
* 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) {
|
||||||
HashItem hashItem = new HashItem(llave, valor);
|
HashItem hashItem = new HashItem(llave, valor);
|
||||||
int hashIndice = hash(hashItem.getLlave());
|
int hashIndice = hash(hashItem.getLlave());
|
||||||
int i = 0;
|
int i = 0;
|
||||||
@ -84,14 +119,22 @@ public class HashTable {
|
|||||||
return hash % tamano;
|
return hash % tamano;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean eliminar(String llave) {
|
/**
|
||||||
|
* 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) {
|
||||||
HashItem hashItem = new HashItem(llave, 0);
|
HashItem hashItem = new HashItem(llave, 0);
|
||||||
int hashIndice = hash(hashItem.getLlave());
|
int hashIndice = hash(hashItem.getLlave());
|
||||||
int i = 0;
|
int i = 0;
|
||||||
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;
|
||||||
return true;
|
size--;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
hashIndice++;
|
hashIndice++;
|
||||||
hashIndice = hashIndice % tamano;
|
hashIndice = hashIndice % tamano;
|
||||||
@ -100,7 +143,14 @@ public class HashTable {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashItem buscar(String llave) {
|
/**
|
||||||
|
* 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) {
|
||||||
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)) {
|
||||||
return hashArray[i];
|
return hashArray[i];
|
||||||
@ -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) {
|
||||||
|
Loading…
Reference in New Issue
Block a user