VictorDevCode21 / first_project_edd

First project of the course EDD.
0 stars 0 forks source link

Unselect branches using the button of the WelcomeInterface #15

Closed VictorDevCode21 closed 3 days ago

VictorDevCode21 commented 3 days ago

New methods in GUI:

public LinkedList getBranches() { // Supongamos que tienes una lista de sucursales en tu clase GUI return this.branches; // Devuelve la lista de sucursales como una lista de Strings }

public NetworkTrain getNetworkTrain() {
    return this.networkTrain;  // Donde networkTrain es la instancia de tu grafo
}

public void removeBranch(Station branchName) {
    branches.remove(branchName);  // Remueve la sucursal de la lista
    // Actualiza la visualización del grafo, si corresponde.
    updateGraph();
}

public void updateGraph() {
    if (graphStreamGraph == null || networkTrain == null) {
        return;  // Si el grafo o la red no están cargados, no hay nada que actualizar
    }

    // Limpiar el grafo actual para volver a cargar la red desde el estado actual de `networkTrain`
    graphStreamGraph.clear();

    // Volver a agregar todas las estaciones y conexiones desde la red de transporte
    LinkedList<Station> allStations = networkTrain.getStations();

    // Recorrer todas las estaciones de la red y añadirlas al grafo de GraphStream
    for (Station station : allStations) {
        addStationToGraph(station.getName());  // Añadir la estación al grafo

        // Obtener los vecinos (conexiones) de la estación actual
        LinkedList<Station> neighbors = networkTrain.getNeighbors(station);

        for (Station neighbor : neighbors) {
            addEdgeIfNotExists(station.getName(), neighbor.getName());  // Añadir las conexiones si no existen
        }
    }

    // Colorear las sucursales en verde para diferenciarlas
    for (Station branch : branches) {
        if (graphStreamGraph.getNode(branch.getName()) != null) {
            graphStreamGraph.getNode(branch.getName()).setAttribute("ui.style", "fill-color: green;");
            graphStreamGraph.getNode(branch.getName()).setAttribute("ui.label", branch.getName());  // Mostrar el nombre de la estación
        }
    }

    // Volver a mostrar el grafo en la interfaz
    graphStreamGraph.display();
}

Changes on Page3, implemented the button and the list to remove some branches:

private void removeBranchButtonActionPerformed(java.awt.event.ActionEvent evt) {
// Obtiene el texto ingresado por el usuario String branchName = inputRemoveBranch.getText().trim();

    // Verifica si el texto no está vacío
    if (!branchName.isEmpty()) {
        // Obtiene la referencia a la instancia de NetworkTrain a través de GUI
        NetworkTrain networkTrain = gui.getNetworkTrain();  // Asumo que tienes un método en GUI para obtener el grafo

        // Busca la sucursal en NetworkTrain (el grafo) y la elimina
        Station branchStation = networkTrain.getStationByName(branchName); // Método en NetworkTrain para obtener la estación
        if (branchStation != null) {
            gui.removeBranch(branchStation); // Llama al método removeBranch en GUI para eliminar la sucursal
            displayBranchesList(); // Actualiza la lista en el TextArea
            gui.updateGraph(); // Actualiza el grafo después de eliminar la sucursal
        } else {
            // Si la sucursal no existe, puedes mostrar un mensaje de error o manejar el caso
            System.out.println("Sucursal no encontrada.");
        }
    }
}     

// Método para obtener la lista de sucursales desde GUI y mostrarla en el TextArea private void displayBranchesList() { LinkedList branches = gui.getBranches(); // Obtiene la lista de sucursales desde GUI StringBuilder branchesText = new StringBuilder();

    // Recorre la lista y convierte cada estación a una cadena de texto
    for (int i = 0; i < branches.size(); i++) {
        Station branch = branches.get(i); // Obtiene cada estación
        branchesText.append(branch.getName()).append("\n"); // Convierte a texto
    }

    // Actualiza el TextArea con la lista de sucursales
    showBranchesList.setText(branchesText.toString());
}

Changes in WelcomeInterface:

private void deleteBranchActionPerformed(java.awt.event.ActionEvent evt) {
if (gui == null) { // Solo crea la instancia una vez si no existe gui = new GUI(); } // Obtén la lista de sucursales desde GUI LinkedList branches = gui.getBranches();

    // Pasa las sucursales a la interfaz Page3
    Page3 p3 = new Page3(gui);  // Le pasamos la lista de sucursales y la instancia de GUI
    ShowPanel(p3);  // Muestra la interfaz
}