コード例 #1
0
  /** 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();
  }
コード例 #2
0
  /** 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();
  }