Omet navegació

2.3.2 CF: Utilització des de Java

Exemple

Practicarem tot el que ve a continuació sobre un programa gràfic.

Aquest és el seu esquelet:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutionException;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

import com.google.api.core.ApiFuture;
import com.google.auth.oauth2.GoogleCredentials;
import com.google.cloud.firestore.DocumentChange;
import com.google.cloud.firestore.DocumentReference;
import com.google.cloud.firestore.DocumentSnapshot;
import com.google.cloud.firestore.EventListener;
import com.google.cloud.firestore.Firestore;
import com.google.cloud.firestore.FirestoreException;
import com.google.cloud.firestore.QuerySnapshot;
import com.google.firebase.FirebaseApp;
import com.google.firebase.FirebaseOptions;
import com.google.firebase.cloud.FirestoreClient;
import com.google.firebase.database.annotations.Nullable;

public class Pantalla_CrearXatCloud extends JFrame implements ActionListener {

	private static final long serialVersionUID = 1L;

	JLabel etUsuari = new JLabel("Nom Usuari:");
	JTextField usuari = new JTextField(25);

	JLabel etUltimMissatge = new JLabel("Últim missatge: ");
	JLabel ultimMissatge = new JLabel();

	JLabel etiqueta = new JLabel("Missatges:");
	JTextArea area = new JTextArea();

	JLabel etIntroduccioMissatge = new JLabel("Introdueix missatge:");
	JButton enviar = new JButton("Enviar");
	JTextField missatge = new JTextField(15);

	// en iniciar posem un contenidor per als elements anteriors
	public void iniciar() throws IOException, InterruptedException, ExecutionException {

		this.setBounds(100, 100, 450, 300);
		this.setLayout(new BorderLayout());
		// contenidor per als elements
		// Hi haurà títol. Panell de dalt: últim missatge. Panell de baix: per a
		// introduir missatge. Panell central: tot el xat

		JPanel panell11 = new JPanel(new FlowLayout());
		panell11.add(etUsuari);
		panell11.add(usuari);
		JPanel panell12 = new JPanel(new FlowLayout());
		panell12.add(etUltimMissatge);
		panell12.add(ultimMissatge);
		JPanel panell1 = new JPanel(new GridLayout(3, 1));
		panell1.add(panell11);
		panell1.add(panell12);
		getContentPane().add(panell1, BorderLayout.NORTH);

		JPanel panell2 = new JPanel(new BorderLayout());
		panell2.add(etiqueta, BorderLayout.NORTH);
		area.setForeground(Color.blue);
		JScrollPane scroll = new JScrollPane(area);
		panell2.add(scroll, BorderLayout.CENTER);
		getContentPane().add(panell2, BorderLayout.CENTER);

		JPanel panell3 = new JPanel(new FlowLayout());
		panell3.add(etIntroduccioMissatge);
		panell3.add(missatge);
		panell3.add(enviar);
		getContentPane().add(panell3, BorderLayout.SOUTH);

		setVisible(true);
		enviar.addActionListener(this);

		FileInputStream serviceAccount = new FileInputStream(
				"acces-a-dades-6e5a6-firebase-adminsdk-ei7uc-8f5d926921.json");

		FirebaseOptions options = new FirebaseOptions.Builder()
				.setCredentials(GoogleCredentials.fromStream(serviceAccount))
				.setDatabaseUrl("https://acces-a-dades-6e5a6.firebaseio.com").build();

		FirebaseApp.initializeApp(options);

		// Exemple de lectura única: senzillament sobre un ApiFuture i sobre ell get()
		// Per a posar el títol. Sobre /Xats/XatProva/nomXat

		// Exemple de listener de lectura contínua addSnapshotListener()
		// Per a posar l'últim missatge registrat. Sobre /Xats/XatProva/ultimUsuari i /Xats/XatProva/ultimMissatge

		// Exemple de listener de lectura contínua addSnapshotListener() sobre una col·lecció
		// Per a posar tota la llista de missatges. Sobre /Xats/XatProva/missatges
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == enviar) {
			// Exemple de guardar dades en Cloud Firestore
			// Per a guardar dades. Sobre /Xats/XatProva i després sobre /Xats/Xat1

		}
	}

}


I aquest és el programa principal que crida l'anterior:

import java.io.IOException;

public class CrearXatCloud {

    public static void main(String[] args) throws IOException {
        final Pantalla_CrearXatCloud finestra = new Pantalla_CrearXatCloud();
        finestra.iniciar();
    }
}