Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.amdema.asclient;
- import com.amdema.asclient.controller.*;
- import com.amdema.asclient.model.Colaborador;
- import java.io.IOException;
- import java.net.ServerSocket;
- import java.net.URL;
- import java.time.format.DateTimeFormatter;
- import java.util.Locale;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import com.amdema.asclient.utils.Alerta;
- import com.amdema.asclient.utils.Window;
- import javafx.application.Application;
- import javafx.application.Platform;
- import javafx.fxml.FXMLLoader;
- import javafx.scene.Parent;
- import javafx.scene.Scene;
- import javafx.scene.image.Image;
- import javafx.stage.Stage;
- import javafx.stage.StageStyle;
- import javax.imageio.ImageIO;
- public class MainApp extends Application {
- public static Stage mainStage;
- public static Stage loadingStage;
- public static Stage reportStage;
- public static ReportController mainController;
- // AMDEMA PYTHON SERVER RUNNING AT ASIA MACHINE
- public static final String SERVERURL = "http://10.13.30.252:5000";
- //public static final String SERVERURL = "http://0.0.0.0:5000";
- // FTP SERVER RUNNING AT ASIA MACHINE
- public static final String FTPURL = "10.13.30.252";
- //public static final String FTPURL = "localhost";
- public static final String FTPUSER = "FTP_ASQUALITY";
- public static final String FTPPASSWORD = "amdema@2018";
- // LOGGED IN COLABORADOR
- public static Colaborador colaborador;
- public static long validade = 3; // Validade das senhas dos colaboradores em meses
- public static ServerSocket programLock;
- // TODO: Change it to a util function or a collection of functions
- public static DateTimeFormatter dtf = DateTimeFormatter.ofPattern("dd/MM/yyyy", new Locale("pt", "BR"));
- // STYLE TO BE ADDED TO EVERY NEW STAGE
- public static URL style;
- @Override
- public void start(Stage stage) throws Exception {
- MainApp.mainStage = stage;
- Parent root = FXMLLoader.load(getClass().getResource("/fxml/Login.fxml"));
- style = getClass().getResource("/styles/bootstrap3.css");
- try {
- programLock = new ServerSocket(5003);
- } catch (Exception ex) {
- Alerta.alertarErro("Erro", "O Sistema já está aberto em outra aplicação!");
- System.exit(0);
- }
- // Adiciona um listener, qnd fechar o programa, libera o socket
- Runtime.getRuntime().addShutdownHook(new Thread(() -> {
- try {
- programLock.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- })
- );
- Scene scene = new Scene(root);
- scene.getStylesheets().add("/styles/bootstrap3.css");
- // Adiciona o Icon Tray
- Platform.setImplicitExit(false);
- javax.swing.SwingUtilities.invokeLater(this::addAppToTray);
- MainApp.mainStage.setScene(scene);
- MainApp.mainStage.setTitle("Login");
- MainApp.mainStage.setResizable(true);
- MainApp.mainStage.sizeToScene();
- MainApp.mainStage.centerOnScreen();
- MainApp.mainStage.show();
- MainApp.mainStage.getIcons().clear();
- Image icon = new Image("/images/logo_icon_desk.png");
- MainApp.mainStage.getIcons().add(icon);
- createWindows();
- }
- /**
- * The main() method is ignored in correctly deployed JavaFX application.
- * main() serves only as fallback in case the application can not be
- * launched through deployment artifacts, e.g., in IDEs with limited FX
- * support. NetBeans ignores main().
- *
- * @param args the command line arguments
- */
- public static void main(String[] args) {
- launch(args);
- }
- public static void createWindows() {
- Window.addWindow(new Window<VideosDeAjudaController>(
- "VideosDeAjuda",
- "Videos de Ajuda",
- true, false));
- Window.addWindow(new Window<SenhaEsquecidaController>(
- "SenhaEsquecida",
- "Pedir Nova Senha",
- false, false));
- Window.addWindow(new Window<MinhasOcorrenciasController>(
- "MinhasOcorrencias",
- "Minhas Ocorrências",
- true, false));
- Window.addWindow(new Window<RelatorioEficaciaController>(
- "RelatorioEficacia",
- "Relatório Eficácia",
- true, false));
- Window.addWindow(new Window<DetalheApontamentoController>(
- "DetalheApontamento",
- "Detalhes Ocorrência",
- false, false));
- Window.addWindow(new Window<RelatorioLossController>(
- "RelatorioLoss",
- "Relatório de Loss",
- true, false));
- Window.addWindow(new Window<RelatorioController>(
- "Relatorio",
- "Relatório de Ocorrências",
- true, false));
- Window.addWindow(new Window<ListaQualidadesController>(
- "ListaQualidades",
- "Planos de Ação",
- true, false));
- Window.addWindow(new Window<CadastroQualidadeController>(
- "CadastroQualidade",
- "Plano de Ação",
- false, false));
- }
- public static LoadingGeralController loading(FXMLLoader loader) {
- Parent root = null;
- try {
- root = loader.load();
- } catch (IOException ex) {
- Logger.getLogger(MainApp.class.getName()).log(Level.SEVERE, null, ex);
- }
- LoadingGeralController lc = loader.getController();
- Scene scene = new Scene(root);
- scene.getStylesheets().add("/styles/bootstrap3.css");
- loadingStage = new Stage();
- loadingStage.setScene(scene);
- loadingStage.initStyle(StageStyle.UNDECORATED);
- loadingStage.setResizable(false);
- loadingStage.centerOnScreen();
- lc.setLabel("Carregando...");
- loadingStage.show();
- loadingStage.toFront();
- loadingStage.setAlwaysOnTop(true);
- loadingStage.requestFocus();
- return lc;
- }
- public void abrirMinhasOcorrencias() {
- // Get current Window status
- int status = Window.getWindow("MinhasOcorrencias").getStatus();
- // Open the Window
- Window<MinhasOcorrenciasController> window = Window.openWindow("MinhasOcorrencias");
- // Test if the new status is ERROR, else if the old status was closed
- if (window.getStatus() == Window.ERROR) {
- // TODO: PopUp de Erro
- } else if (status == Window.CLOSED) {
- // Call the loading function
- window.getController().show();
- }
- }
- private void addAppToTray() {
- try {
- // Pega o Toolkit AWT.
- java.awt.Toolkit.getDefaultToolkit();
- // Testa se o OS suporta Icon Tray
- if (!java.awt.SystemTray.isSupported()) {
- System.out.println("No system tray support, application exiting.");
- } else {
- // Setup do icon tray
- java.awt.SystemTray tray = java.awt.SystemTray.getSystemTray();
- java.awt.Image image = ImageIO.read(getClass().getClassLoader().getResource("images/logo_icon_tray.png"));
- java.awt.TrayIcon trayIcon = new java.awt.TrayIcon(image);
- // Duplo clique mostra o MainStage dnv
- trayIcon.addActionListener(event -> Platform.runLater(this::showStage));
- // Adiciona itens ao menu do Icon Tray
- java.awt.MenuItem openItem = new java.awt.MenuItem("Abrir");
- openItem.addActionListener(event -> Platform.runLater(() -> {
- reportStage.show();
- }));
- // Adiciona itens ao menu do Icon Tray
- java.awt.MenuItem openOcorrencias = new java.awt.MenuItem("Minhas Ocorrências");
- openOcorrencias.addActionListener(event -> Platform.runLater(() -> {
- abrirMinhasOcorrencias();
- }));
- // Configura a fonte do Menu
- java.awt.Font defaultFont = java.awt.Font.decode(null);
- java.awt.Font boldFont = defaultFont.deriveFont(java.awt.Font.BOLD);
- openItem.setFont(boldFont);
- // Adiciona o Sair do programa
- java.awt.MenuItem exitItem = new java.awt.MenuItem("Sair");
- exitItem.addActionListener(event -> {
- tray.remove(trayIcon);
- Platform.exit();
- });
- final java.awt.PopupMenu popup = new java.awt.PopupMenu();
- popup.add(openItem);
- popup.addSeparator();
- popup.add(exitItem);
- trayIcon.setPopupMenu(popup);
- // Adiciona o Icon Tray ao Tray
- trayIcon.setImageAutoSize(true);
- tray.add(trayIcon);
- }
- } catch (java.awt.AWTException e) {
- System.out.println("Unable to init system tray");
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- /**
- * Shows the application stage and ensures that it is brought ot the front
- * of all stages.
- */
- private void showStage() {
- if (mainStage != null) {
- mainStage.show();
- mainStage.toFront();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement