@Override
	public void actionPerformed(ActionEvent e) {
		if(e.getSource()==radio_dij_mono || e.getSource()==radio_dij_bi) {
			panel.remove(combine_space);
			panel.remove(combine);
			panel.repaint();
			panel.validate();
		} else if(e.getSource()==radio_dij_bis) {
			panel.add(combine_space);
			panel.add(combine);
			panel.repaint();
			panel.validate();
		} else {
			String fp_n = filepath_noeuds.getText();
			String fp_a = filepath_arcs.getText();
			
			int indice_depart = 0, indice_arrive = 0;
			try {
				indice_depart = Integer.parseInt(depart.getText());
				indice_arrive = Integer.parseInt(arrive.getText());
			} catch(Exception ex) {
				JOptionPane.showMessageDialog(this, "Something wrong happened: indices of the nodes must be integers.", "Oops!", JOptionPane.ERROR_MESSAGE);
				return;
			}
			
			double coef = combine.getValue(); // 1 = Full Distance
			coef = coef/100;
			
			Graph g0 = new Graph();
			try {
				generateGraph(g0, fp_n, fp_a);
			} catch (IOException ex) {
				JOptionPane.showMessageDialog(this, "Something wrong happened: Graph can't be generated from non-existing or invalid files.", "Oops!", JOptionPane.ERROR_MESSAGE);
				return;
			}
			
			try {
				Result result = null;
				if(getSelection(button_group)==radio_dij_mono) {
					MonoObjectiveDijkstra dij = new MonoObjectiveDijkstra(g0);
					result = dij.run(g0.getNode(indice_depart), g0.getNode(indice_arrive));
				} else if(getSelection(button_group)==radio_dij_bi) {
					BiOjectiveDijkstra dij = new BiOjectiveDijkstra(g0);
					result = dij.run(g0.getNode(indice_depart), g0.getNode(indice_arrive));
				} else {
					SimulatedBiOjectiveDijkstra dij = new SimulatedBiOjectiveDijkstra(g0);
					result = dij.run(g0.getNode(indice_depart), g0.getNode(indice_arrive), coef);
				}
				
				new ResultatFrame(result.toString());
			} catch(Exception ex) {
				JOptionPane.showMessageDialog(this, "Something wrong happened: Algorithm failed.", "Oops!", JOptionPane.ERROR_MESSAGE);
			}
		}
	}