/** Eliminar un edge del grafoNoDirigido y mostrar el codigo en la pantalla. */ @FXML protected void botonEliminarEdge() { if (scene == null) { initializeGrafo(); } String tipo = getTipoString(); String codigoTexto = new Scanner( getClass() .getResourceAsStream( "/cl/cromer/estructuras/code/grafo" + tipo + "/eliminarEdge")) .useDelimiter("\\Z") .next(); codigoGrafo.setText(codigoTexto); if (valorNodo1.getText() != null && !valorNodo1.getText().trim().equals("") && valorNodo2.getText() != null && !valorNodo2.getText().trim().equals("")) { GrafoNodo[] nodos = getNodosEdge(); if (grafoTipos.getTipo() == Grafo.Tipos.NO_DIRIGIDO) { if (nodos[0] == null || nodos[1] == null || !noDirigido.nodeExists(nodos[0]) || !noDirigido.nodeExists(nodos[1])) { Main.mostrarError(resourceBundle.getString("grafoNoNodo"), resourceBundle); } else if (!noDirigido.edgeExists(nodos[0], nodos[1])) { Main.mostrarError(resourceBundle.getString("grafoNoEdge"), resourceBundle); } else { noDirigido.removeEdge(nodos[0], nodos[1]); } } else { if (nodos[0] == null || nodos[1] == null || dirigido.findVertexByName(String.valueOf(nodos[0].getValue())) == null || dirigido.findVertexByName(String.valueOf(nodos[1].getValue())) == null) { Main.mostrarError(resourceBundle.getString("grafoNoNodo"), resourceBundle); } else if (!edgeExists(nodos[0], nodos[1])) { Main.mostrarError(resourceBundle.getString("grafoNoEdge"), resourceBundle); } else { dirigido.removeEdge( dirigido.findVertexByName(String.valueOf(nodos[0].getValue())), dirigido.findVertexByName(String.valueOf(nodos[1].getValue()))); } } valorNodo1.setText(""); valorNodo2.setText(""); if (grafoTipos.getTipo() == Grafo.Tipos.PESO) { valorPeso.setText(""); } } else { Main.mostrarError(resourceBundle.getString("grafoNoEdge"), resourceBundle); } generarGrafico(); }
/** Insertar un edge al grafoNoDirigido y mostrar el codigo en la pantalla. */ @FXML protected void botonInsertarEdge() { if (scene == null) { initializeGrafo(); } String tipo = getTipoString(); String codigoTexto = new Scanner( getClass() .getResourceAsStream( "/cl/cromer/estructuras/code/grafo" + tipo + "/insertarEdge")) .useDelimiter("\\Z") .next(); codigoGrafo.setText(codigoTexto); if (valorNodo1.getText() != null && !valorNodo1.getText().trim().equals("") && valorNodo2.getText() != null && !valorNodo2.getText().trim().equals("")) { GrafoNodo[] nodos = getNodosEdge(); if (grafoTipos.getTipo() == Grafo.Tipos.NO_DIRIGIDO) { if (nodos[0] == null || nodos[1] == null || !noDirigido.nodeExists(nodos[0]) || !noDirigido.nodeExists(nodos[1])) { Main.mostrarError(resourceBundle.getString("grafoNoNodo"), resourceBundle); } else if (noDirigido.edgeExists(nodos[0], nodos[1])) { Main.mostrarError(resourceBundle.getString("grafoEdgeExiste"), resourceBundle); } else { noDirigido.addEdge(nodos[0], nodos[1]); } } else { if (nodos[0] == null || nodos[1] == null || dirigido.findVertexByName(String.valueOf(nodos[0].getValue())) == null || dirigido.findVertexByName(String.valueOf(nodos[1].getValue())) == null) { Main.mostrarError(resourceBundle.getString("grafoNoNodo"), resourceBundle); } else if (edgeExists(nodos[0], nodos[1])) { Main.mostrarError(resourceBundle.getString("grafoEdgeExiste"), resourceBundle); } else { int peso = PESO_PREDETERMINADO; if (grafoTipos.getTipo() == Grafo.Tipos.PESO && valorPeso.getText() != null && !valorPeso.getText().trim().equals("")) { try { peso = Integer.valueOf(valorPeso.getText()); } catch (NumberFormatException exception) { peso = PESO_PREDETERMINADO; } } dirigido.addEdge( dirigido.findVertexByName(String.valueOf(nodos[0].getValue())), dirigido.findVertexByName(String.valueOf(nodos[1].getValue())), peso); } } valorNodo1.setText(""); valorNodo2.setText(""); if (grafoTipos.getTipo() == Grafo.Tipos.PESO) { valorPeso.setText(""); } } else { Main.mostrarError(resourceBundle.getString("grafoNoNumero"), resourceBundle); } generarGrafico(); }