SZSTerminal.java 8.16 KB
package org.emercit.szsterminal;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;

import java.awt.Color;
import java.awt.GridLayout;
import java.awt.GridBagLayout;
import java.awt.GridBagConstraints;

import javax.swing.border.BevelBorder;
import javax.swing.border.CompoundBorder;
import javax.swing.border.SoftBevelBorder;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.border.LineBorder;

import java.awt.Dimension;

import javax.swing.table.TableModel;

import java.util.ArrayList;
import java.util.List;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Date;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;

import javax.swing.SwingWorker;
import javax.swing.JButton;
import javax.swing.ImageIcon;

import java.awt.Font;

import javax.swing.*;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.event.ChangeListener;
import javax.swing.event.ChangeEvent;

import java.awt.Toolkit;
import java.awt.Rectangle;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.HttpURLConnection;
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.URL;
import java.util.Scanner;

import org.emercit.components.*;

import java.awt.Dialog.ModalExclusionType;
import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import com.google.gson.Gson;

import java.beans.*;

import org.emercit.model.*;
import org.emercit.config.*;
import org.emercit.service.*;


import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;
import org.apache.log4j.PropertyConfigurator;

public class SZSTerminal {

	private static JFrame mainFrame;
	private static JPanel mainPanel;
	public static JPnlHeader jpnlheader;

	
	public static JPnlCurrent pnlcurrent = new JPnlCurrent();
	public static JPnlLog jpnllog = new JPnlLog();
	public static JPnlContacts jpnlcontacts = new JPnlContacts();
	public static JPnlControl jpnlcontrol = new JPnlControl();

	public static SirenJNI siren = new SirenJNI();

	private static Timer ftdTimerMain = new Timer();

	public static DlgConfirm dlgconfirm = new DlgConfirm();
	

	
	private static class ftdTimerTask extends TimerTask {

		@Override
		public void run() {
			EventQueue.invokeLater(new Runnable() {

			//	@Override
				public void run() {
					
					
					
					
					
					
	
					DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss");
					Date date = new Date();
					Calendar cal = Calendar.getInstance();

					jpnlheader.UpdateTime("Сегодня:"+ dateFormat.format(cal.getTime()));
				
 					jpnlheader.ChangeConnectImg(SData.INSTANCE.isConnect());
 			
 					
					if (SData.INSTANCE.isConnect()){
										
				     		                  
						jpnlheader.setTitleSubscriver(SData.INSTANCE.getData().titlesubscriber);
						
						jpnlcontacts.setTitleContact(SData.INSTANCE.getData().titlecontact);
						
				     		                  
				     		         		/*
				     		         		 * Текущее состояние датчиков
						 					*/
											 new SwingWorker<Void, Void>()
				     		                  {
				     		                     protected Void doInBackground() throws Exception
				     		                     {
				     		                 
							 						List<MdlEvent> lstEvent = new ArrayList<MdlEvent>();
							 						
							 						ModelResponse mdl=SData.INSTANCE.getData();
							     					for (EventAgk eventagk : mdl.lsteventagkstate) {
							
							     						MdlEvent ev = new MdlEvent(eventagk.id, 
							     												   eventagk.id_agk,
							     												   eventagk.river, 
							     												   eventagk.datetime, 
							     												   eventagk.value,
							     												   eventagk.id_status, 
							     												   eventagk.repair, 
							     												   eventagk.opendoor,
							     												   eventagk.veracity);
							
							     						lstEvent.add(ev);
							     					}
							
							     					pnlcurrent.setListEventCurrent(lstEvent);
					     					
							     					return null;
			     		                    
				     		                     }
				     		                     
				     		                  }.execute();
					     					
					     					
					     					
				     		                  	/*
							     				 * События для подтверждения
							     				 */
				     						 new SwingWorker<Void, Void>()
				     		                  {
				     		                     protected Void doInBackground() throws Exception
				     		                     {
				     		                  
								     			
							     		                    	ModelResponse mdl=SData.INSTANCE.getData();
							     		                    	
							     		                    	
							     		                    	
								     					for (EventAgk eventagk : mdl.lsteventagkconfirm) {
							
								     						
								     						SData.INSTANCE.RemoveEvent();
								     						
								     						MdlEvent ev = new MdlEvent(eventagk.id, eventagk.id_agk,
								     								eventagk.river, eventagk.datetime, eventagk.value,
								     								eventagk.id_status, eventagk.repair, eventagk.opendoor,
								     								eventagk.veracity);
							
								     						ev.setSiren(mdl.siren);
								     						
								     					
								     							dlgconfirm.setEvent(ev);
								     					
								     							dlgconfirm.setVisible(true);
								     						
								     						
					     						
								     						}
					     			      	
		     		                        return null;
		     		                    
		     		                     }
		     		                     
		     		                  }.execute(); 					
					}
					
				}
			});
		}

	}

	public static void main(String[] args) {
		
		
		
		
		   PropertyConfigurator.configure("log4j.properties");
		
		
		
		
		
		
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
						//	siren.sirenOff();

				} catch (Exception e) {

				}
				
				
				
				mainFrame = new JFrame();
				mainFrame.setSize(800, 600);
				mainFrame.setUndecorated(false);
				mainFrame.setResizable(false);
				mainFrame.setVisible(true);
				mainPanel = new JPanel();
				Toolkit tk = Toolkit.getDefaultToolkit();
				int xSize = ((int) tk.getScreenSize().getWidth());
				int ySize = ((int) tk.getScreenSize().getHeight());
				// mainFrame.setSize(xSize,ySize);

				mainPanel.setBackground(UIManager
						.getColor("Separator.foreground"));

				mainPanel.setBounds(0, 0, xSize, ySize);

				jpnlheader = new JPnlHeader("");
				jpnlheader.setBounds(10, 10, 770, 50);
				jpnlheader.setBackground(new Color(168, 181, 224));
				mainPanel.add(jpnlheader);

				// pnlcurrent.setBounds(10, 70, 770, 470);
				List<Event> lstevent = new ArrayList<Event>();
				
				
			
				JTabbedPane jtp = new JTabbedPane();
				jtp.setFont(new Font("Tahoma", Font.PLAIN, 14));
				mainPanel.add(jtp);
				jtp.setBounds(10, 70, 780, 520);

				ImageIcon imgJournal = new ImageIcon(getClass().getResource(
						"/journal.png"));
				ImageIcon imgCurrent = new ImageIcon(getClass().getResource(
						"/current.png"));
				ImageIcon imgContact = new ImageIcon(getClass().getResource(
						"/contacts.png"));
				ImageIcon imgControl = new ImageIcon(getClass().getResource(
						"/update.png"));

				jtp.addTab("Текущее состояние", imgCurrent, pnlcurrent);
				jtp.addTab("Журнал", imgJournal, jpnllog);
				jtp.addTab("Контакты", imgContact, jpnlcontacts);
				jtp.addTab("Управление", imgControl, jpnlcontrol);

				mainFrame.setAlwaysOnTop(true);

				mainPanel.setBackground(UIManager
						.getColor("Separator.foreground"));
				jpnlheader.SetBlue();

				mainPanel.setLayout(null);
				mainFrame.getContentPane().add(mainPanel);

				Config config=new Config();
				SData.INSTANCE.SetConfig(config);
				Runnable rTScan = new TScan();
				
				Thread tScan = new Thread(rTScan);
				tScan.start();

				ftdTimerMain.schedule(new ftdTimerTask(), 0, 1000);

			}
		});
	}
}