//
// Created by Grishul Eugeny
//
// Copyright © Grishul Eugeny 2008
//

import java.awt.Color;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.util.ArrayList;
import javax.swing.JOptionPane;
import javax.swing.SwingUtilities;
import javax.swing.Timer;
import javax.swing.UIManager;

class MainForm extends javax.swing.JDialog {
	private volatile Integer _previousTask;
	public DbLayer DbLayerInstance;
	Timer _eventsTimer;

	public MainForm( DbLayer dblayerInstance, Window parent ) {
		this( dblayerInstance, parent, ModalityType.DOCUMENT_MODAL );
	}

	public MainForm( DbLayer dblayerInstance, Window parent, ModalityType modalityType ) {
		super( parent, modalityType );

		try {
			initComponents();
			DbLayerInstance = dblayerInstance;
			_serviceLog.setSelectedIndex( 0 );

			restrictTabs();

			refreshStatisticsPage();
			refreshEmploysPage();
			refreshTasksPage();

			_adminTasksView.setCellRenderer( new ListView.Renderer() );

			_eventsTimer = new Timer( 1000, new ActionListener() {
				@Override
				public void actionPerformed( ActionEvent e ) {
					try {
						if( DbLayerInstance.getLoggedInEmployee().Role != EnterpriseRole.Chief )
							_previousTask = DbLayerInstance.getLoggedInEmployee().TaskID;

						switch( DbLayerInstance.getLoggedInEmployee().Role ) {
							case Chief:
								refreshStatisticsPage();
								break;
							case Scientist:
								updateScientistPage();
								break;
							case Tester:
								updateTesterPage();
								break;
							case SecurityMan:
								updateSecurityPage();
								break;
							case TechnicalSupport:
								updateTechsupportPage();
								break;
						}
					} catch( Throwable excpt ) {
						excpt.printStackTrace();
					}
				}
			} );
			_eventsTimer.setInitialDelay( 2000 );
			_eventsTimer.start();
		//_employsList.setM
		} catch( Throwable excpt ) {
			JOptionPane.showMessageDialog( this, excpt.getMessage() );
		}

		setLocationRelativeTo( parent );
	}

	private void refreshStatisticsPage() throws Throwable {
		_tasksTotal.setText( DbLayerInstance.getTotalTasks() + "" );
		_employeesTotal.setText( DbLayerInstance.getTotalEmployees() + "" );
		_finishedTasksTotal.setText( DbLayerInstance.getTotalFinishedTasks() + "" );
	}

	private void restrictTabs() throws Throwable {
		_roleActionsTab.removeAll();

		_serviceLog.setEnabled( DbLayerInstance.getLoggedInEmployee().Role == EnterpriseRole.Chief );

		switch( DbLayerInstance.getLoggedInEmployee().Role ) {
			case Chief:
				_roleActionsTab.add( "Статистика", _statisticsPage );
				_roleActionsTab.add( "Сотрудники", _employsPage );
				break;
			case Scientist:
				updateScientistPage();
				_roleActionsTab.add( "Научный сотрудник", _scientistPage );
				_serviceLog.setSelectedIndex( 0 );
				break;
			case Tester:
				updateTesterPage();
				refreshTesterPage();
				_roleActionsTab.add( "Тестер", _testersPage );
				_serviceLog.setSelectedIndex( 0 );
				break;
			case SecurityMan:
				updateSecurityPage();
				_roleActionsTab.add( "Служба безопасности", _securityManPage );
				_serviceLog.setSelectedIndex( 2 );
				break;
			case TechnicalSupport:
				updateTechsupportPage();
				_roleActionsTab.add( "Техподдержка", _techsupportPage );
				_serviceLog.setSelectedIndex( 1 );
				break;
		}
		_roleActionsTab.add( "Ход выполнения", _tasksPage );
	}

	private void refreshEmploysPage() throws Throwable {
		ArrayList<ListViewItem> items = new ArrayList<ListViewItem>();

		for( DbEmployee item : DbLayerInstance.getAllEmploys() ) {
			ListViewItem listItem = new ListViewItem( item.toString(), item );
			items.add( listItem );
		}

		_employsList.setModel( new ListView( items ) );
	}

	public void refreshTasksPage() throws Throwable {
		ArrayList<ListViewItem> items = new ArrayList<ListViewItem>();

		for( DbTask item : DbLayerInstance.getAllTasks( _adminShowFinished.isSelected(), _adminShowDeleted.isSelected(), TaskType.fromValue( _serviceLog.getSelectedIndex() ) ) ) {
			ListViewItem lvi = new ListViewItem( item.Name, item );

			if( item.Finished != null )
				lvi.ForeColor = Color.green;

			if( item.Deleted )
				lvi.ForeColor = Color.lightGray;

			items.add( lvi );
		}
		_adminTasksView.setModel( new ListView( items ) );


		refreshTaskHistory();
	}

	private void refreshTaskHistory() throws Throwable {
		DbTask currentTask = null;

		if( _adminTasksView.getSelectedIndex() != -1 )
			currentTask = ( DbTask ) ListView.getSelectedObjectTag( _adminTasksView );

		_adminTaskProgress.setValue( currentTask == null ? 0 : DbLayerInstance.getTaskProgressPercentage( currentTask.ID ) );

		ArrayList<ListViewItem> items = new ArrayList<ListViewItem>();

		if( currentTask != null )
			for( DbTaskProgress item : DbLayerInstance.getTaskProgress( currentTask.ID ) )
				items.add( new ListViewItem( getShortDescription( item ), item ) );

		_adminTaskReportHistory.setModel( new ListView( items ) );
	}

	private boolean isTaskValid( Integer taskID ) {
		return taskID != null && taskID != -1;
	}

	private void updateScientistPage() throws Throwable {
		try {
			DbLayerInstance.fetchNewTask( DbLayerInstance.getLoggedInEmployee() );

			_scientistReportViewer.setVisible( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) );
			_scientistTaskHistory.setVisible( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) );
			_scientistAddTaskHistory.setVisible( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) );

			if( _previousTask != DbLayerInstance.getLoggedInEmployee().TaskID )
				refreshScientistPage();
		} catch( EmployeeFiredException excpt ) {
			JOptionPane.showMessageDialog( this, "Тебя уволили, неудачник!" );
			dispose();
			System.exit( 1 );
		}
	}

	private void updateTesterPage() throws Throwable {
		try {
			DbLayerInstance.fetchNewTask( DbLayerInstance.getLoggedInEmployee() );

			_testerReportViewer.setVisible( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) );
			_testerTaskHistory.setVisible( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) );
			_testerAcceptTask.setEnabled( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) );
			_testerRejectTask.setEnabled( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) );

			if( _previousTask != DbLayerInstance.getLoggedInEmployee().TaskID )
				refreshTesterPage();
		} catch( EmployeeFiredException excpt ) {
			JOptionPane.showMessageDialog( this, "Тебя уволили, неудачник!" );
			dispose();
			System.exit( 1 );
		}

	}

	private void updateTechsupportPage() throws Throwable {
		try {
			DbLayerInstance.fetchNewTask( DbLayerInstance.getLoggedInEmployee() );

			_techsupportReportViewer.setVisible( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) );
			_techsupportEndTask.setEnabled( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) );

			if( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) )
				_techsupportReportViewer.setCurrentReport( DbLayerInstance, DbLayerInstance.getTaskProgress( DbLayerInstance.getLoggedInEmployee().TaskID ).get( 0 ).Message );
		} catch( EmployeeFiredException excpt ) {
			JOptionPane.showMessageDialog( this, "Тебя уволили, неудачник!" );
			dispose();
			System.exit( 1 );
		}

	}

	private void updateSecurityPage() throws Throwable {
		try {
			DbLayerInstance.fetchNewTask( DbLayerInstance.getLoggedInEmployee() );

			_securityReportViewer.setVisible( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) );
			_securityManEndTask.setEnabled( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) );

			if( isTaskValid( DbLayerInstance.getLoggedInEmployee().TaskID ) )
				_securityReportViewer.setCurrentReport( DbLayerInstance, DbLayerInstance.getTaskProgress( DbLayerInstance.getLoggedInEmployee().TaskID ).get( 0 ).Message );
		} catch( EmployeeFiredException excpt ) {
			JOptionPane.showMessageDialog( this, "Тебя уволили, неудачник!" );
			dispose();
			System.exit( 1 );
		}
	}

	private String getShortDescription( DbTaskProgress progress ) {
		String result = progress.Percentage + "%  ";

		if( progress.Message.Text != null )
			result += ( progress.Message.Text.length() > 36 ? progress.Message.Text.substring( 0, 36 ) + "..." : progress.Message.Text );

		return result;
	}

	private void refreshScientistPage() throws Throwable {
		ArrayList<ListViewItem> items = new ArrayList<ListViewItem>();

		if( DbLayerInstance.getLoggedInEmployee().TaskID != null && DbLayerInstance.getLoggedInEmployee().TaskID != -1 )
			for( DbTaskProgress item : DbLayerInstance.getTaskProgress( DbLayerInstance.getLoggedInEmployee().TaskID ) )
				items.add( new ListViewItem( getShortDescription( item ), item ) );

		_scientistTaskHistory.setModel( new ListView( items ) );
	}

	private void refreshTesterPage() throws Throwable {
		ArrayList<ListViewItem> items = new ArrayList<ListViewItem>();

		if( DbLayerInstance.getLoggedInEmployee().TaskID != null && DbLayerInstance.getLoggedInEmployee().TaskID != -1 )
			for( DbTaskProgress item : DbLayerInstance.getTaskProgress( DbLayerInstance.getLoggedInEmployee().TaskID ) )
				items.add( new ListViewItem( getShortDescription( item ), item ) );

		_testerTaskHistory.setModel( new ListView( items ) );
	}

	@SuppressWarnings( "unchecked" )
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        _employsContextMenu = new javax.swing.JPopupMenu();
        _newEmployeeToolStripMenuItem = new javax.swing.JMenuItem();
        _loginToolStripMenuItem = new javax.swing.JMenuItem();
        _fireEmployeeToolStripMenuItem = new javax.swing.JMenuItem();
        _tasksContextMenu = new javax.swing.JPopupMenu();
        _createTaskToolStripMenuItem = new javax.swing.JMenuItem();
        _removeTaskToolStripMenuItem = new javax.swing.JMenuItem();
        _roleActionsTab = new javax.swing.JTabbedPane();
        _statisticsPage = new javax.swing.JPanel();
        _adminNewTask = new javax.swing.JButton();
        _finishedTasksTotal = new javax.swing.JLabel();
        _tasksTotal = new javax.swing.JLabel();
        _employeesTotal = new javax.swing.JLabel();
        _employeesTotalLabel = new javax.swing.JLabel();
        _tasksTotalLabel = new javax.swing.JLabel();
        _finishedTasksLabel = new javax.swing.JLabel();
        _adminSecurityRequest = new javax.swing.JButton();
        _adminTechsupportRequest = new javax.swing.JButton();
        _employsPage = new javax.swing.JPanel();
        _employsListScroll = new javax.swing.JScrollPane();
        _employsList = new javax.swing.JList();
        _employsPhoto = new ImagePanel();
        _scientistPage = new javax.swing.JPanel();
        _scientistReportViewer = new ReportControl();
        _scientistWorkProgressLabel = new javax.swing.JLabel();
        _scientistAddTaskHistory = new javax.swing.JButton();
        _scientistSecurityRequest = new javax.swing.JButton();
        _scientistTechsupportRequest = new javax.swing.JButton();
        _scientistTaskHistoryScroll = new javax.swing.JScrollPane();
        _scientistTaskHistory = new javax.swing.JList();
        _testersPage = new javax.swing.JPanel();
        _testerReportViewer = new ReportControl();
        _testerRejectTask = new javax.swing.JButton();
        _testerAcceptTask = new javax.swing.JButton();
        _testerTaskHistoryScroll = new javax.swing.JScrollPane();
        _testerTaskHistory = new javax.swing.JList();
        _testerSecurityRequest = new javax.swing.JButton();
        _testerTechsupportRequest = new javax.swing.JButton();
        _techsupportPage = new javax.swing.JPanel();
        _techsupportReportViewer = new ReportControl();
        _techsupportEndTask = new javax.swing.JButton();
        _techsupportSecurityRequest = new javax.swing.JButton();
        _securityManPage = new javax.swing.JPanel();
        _securityReportViewer = new ReportControl();
        _securityManEndTask = new javax.swing.JButton();
        _securityTechsupportRequest = new javax.swing.JButton();
        _tasksPage = new javax.swing.JPanel();
        _adminTasksViewScroll = new javax.swing.JScrollPane();
        _adminTasksView = new javax.swing.JList();
        _adminTaskReportHistoryScroll = new javax.swing.JScrollPane();
        _adminTaskReportHistory = new javax.swing.JList();
        _adminTaskReportViewer = new ReportControl();
        _adminShowFinished = new javax.swing.JCheckBox();
        _adminShowDeleted = new javax.swing.JCheckBox();
        _serviceLog = new javax.swing.JComboBox();
        _adminTaskProgress = new javax.swing.JProgressBar();
        _adminTaskTooltip = new javax.swing.JLabel();
        _adminReportsTooltip = new javax.swing.JLabel();

        _newEmployeeToolStripMenuItem.setText("Новый");
        _newEmployeeToolStripMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _newEmployeeToolStripMenuItemActionPerformed(evt);
            }
        });
        _employsContextMenu.add(_newEmployeeToolStripMenuItem);

        _loginToolStripMenuItem.setText("Зайти");
        _loginToolStripMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _loginToolStripMenuItemActionPerformed(evt);
            }
        });
        _employsContextMenu.add(_loginToolStripMenuItem);

        _fireEmployeeToolStripMenuItem.setText("Уволить");
        _fireEmployeeToolStripMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _fireEmployeeToolStripMenuItemActionPerformed(evt);
            }
        });
        _employsContextMenu.add(_fireEmployeeToolStripMenuItem);

        _createTaskToolStripMenuItem.setText("Создать");
        _createTaskToolStripMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _createTaskToolStripMenuItemActionPerformed(evt);
            }
        });
        _tasksContextMenu.add(_createTaskToolStripMenuItem);

        _removeTaskToolStripMenuItem.setText("Удалить");
        _removeTaskToolStripMenuItem.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _removeTaskToolStripMenuItemActionPerformed(evt);
            }
        });
        _tasksContextMenu.add(_removeTaskToolStripMenuItem);

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        setTitle("Добро пожаловать!");

        _adminNewTask.setText("Новая задача");
        _adminNewTask.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _adminNewTaskActionPerformed(evt);
            }
        });

        _finishedTasksTotal.setText("jLabel6");

        _tasksTotal.setText("jLabel5");

        _employeesTotal.setText("jLabel4");

        _employeesTotalLabel.setText("Всего сотрудников:");

        _tasksTotalLabel.setText("Вирусов в разработке:");

        _finishedTasksLabel.setText("Завершенных вирусов:");

        _adminSecurityRequest.setText("Запрос в службу безопасности");
        _adminSecurityRequest.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _adminSecurityRequestActionPerformed(evt);
            }
        });

        _adminTechsupportRequest.setText("Запрос в техподдержку");
        _adminTechsupportRequest.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _adminTechsupportRequestActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout _statisticsPageLayout = new javax.swing.GroupLayout(_statisticsPage);
        _statisticsPage.setLayout(_statisticsPageLayout);
        _statisticsPageLayout.setHorizontalGroup(
            _statisticsPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(_statisticsPageLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(_statisticsPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(_statisticsPageLayout.createSequentialGroup()
                        .addComponent(_tasksTotalLabel, javax.swing.GroupLayout.DEFAULT_SIZE, 173, Short.MAX_VALUE)
                        .addGap(546, 546, 546))
                    .addGroup(_statisticsPageLayout.createSequentialGroup()
                        .addGroup(_statisticsPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(_employeesTotalLabel)
                            .addComponent(_finishedTasksLabel))
                        .addGap(36, 36, 36)
                        .addGroup(_statisticsPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(_finishedTasksTotal, javax.swing.GroupLayout.PREFERRED_SIZE, 34, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addComponent(_tasksTotal)
                            .addGroup(_statisticsPageLayout.createSequentialGroup()
                                .addComponent(_employeesTotal)
                                .addGap(287, 287, 287)
                                .addGroup(_statisticsPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                    .addComponent(_adminSecurityRequest, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 234, Short.MAX_VALUE)
                                    .addComponent(_adminNewTask, javax.swing.GroupLayout.DEFAULT_SIZE, 234, Short.MAX_VALUE)
                                    .addComponent(_adminTechsupportRequest, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 234, Short.MAX_VALUE))))
                        .addContainerGap())))
        );
        _statisticsPageLayout.setVerticalGroup(
            _statisticsPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(_statisticsPageLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(_statisticsPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(_employeesTotalLabel)
                    .addComponent(_adminNewTask)
                    .addComponent(_employeesTotal))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(_statisticsPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(_tasksTotalLabel, javax.swing.GroupLayout.PREFERRED_SIZE, 14, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(_tasksTotal))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(_statisticsPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(_finishedTasksLabel)
                    .addComponent(_finishedTasksTotal))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 189, Short.MAX_VALUE)
                .addComponent(_adminSecurityRequest)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(_adminTechsupportRequest)
                .addContainerGap())
        );

        _roleActionsTab.addTab("Статистика", _statisticsPage);

        _employsList.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                _employsListMouseClicked(evt);
            }
        });
        _employsList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                _employsListValueChanged(evt);
            }
        });
        _employsListScroll.setViewportView(_employsList);

        javax.swing.GroupLayout _employsPhotoLayout = new javax.swing.GroupLayout(_employsPhoto);
        _employsPhoto.setLayout(_employsPhotoLayout);
        _employsPhotoLayout.setHorizontalGroup(
            _employsPhotoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 299, Short.MAX_VALUE)
        );
        _employsPhotoLayout.setVerticalGroup(
            _employsPhotoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGap(0, 331, Short.MAX_VALUE)
        );

        javax.swing.GroupLayout _employsPageLayout = new javax.swing.GroupLayout(_employsPage);
        _employsPage.setLayout(_employsPageLayout);
        _employsPageLayout.setHorizontalGroup(
            _employsPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(_employsPageLayout.createSequentialGroup()
                .addComponent(_employsListScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 414, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(_employsPhoto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                .addContainerGap())
        );
        _employsPageLayout.setVerticalGroup(
            _employsPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(_employsListScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 331, Short.MAX_VALUE)
            .addComponent(_employsPhoto, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
        );

        _roleActionsTab.addTab("Сотрудники", _employsPage);

        _scientistReportViewer.setEditMode(false);

        _scientistWorkProgressLabel.setText("Ход выполнения:");

        _scientistAddTaskHistory.setText("Отчитаться");
        _scientistAddTaskHistory.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _scientistAddTaskHistoryActionPerformed(evt);
            }
        });

        _scientistSecurityRequest.setText("Запрос в службу безопасности");
        _scientistSecurityRequest.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _scientistSecurityRequestActionPerformed(evt);
            }
        });

        _scientistTechsupportRequest.setText("Запрос в техподдержку");
        _scientistTechsupportRequest.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _scientistTechsupportRequestActionPerformed(evt);
            }
        });

        _scientistTaskHistory.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                _scientistTaskHistoryValueChanged(evt);
            }
        });
        _scientistTaskHistoryScroll.setViewportView(_scientistTaskHistory);

        javax.swing.GroupLayout _scientistPageLayout = new javax.swing.GroupLayout(_scientistPage);
        _scientistPage.setLayout(_scientistPageLayout);
        _scientistPageLayout.setHorizontalGroup(
            _scientistPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, _scientistPageLayout.createSequentialGroup()
                .addComponent(_scientistReportViewer, javax.swing.GroupLayout.PREFERRED_SIZE, 445, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(_scientistPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(_scientistSecurityRequest, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
                    .addComponent(_scientistTechsupportRequest, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE)
                    .addGroup(_scientistPageLayout.createSequentialGroup()
                        .addComponent(_scientistWorkProgressLabel)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 73, Short.MAX_VALUE)
                        .addComponent(_scientistAddTaskHistory, javax.swing.GroupLayout.PREFERRED_SIZE, 107, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addComponent(_scientistTaskHistoryScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 268, Short.MAX_VALUE))
                .addContainerGap())
        );
        _scientistPageLayout.setVerticalGroup(
            _scientistPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, _scientistPageLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(_scientistPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(_scientistReportViewer, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 309, Short.MAX_VALUE)
                    .addGroup(_scientistPageLayout.createSequentialGroup()
                        .addGroup(_scientistPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                            .addComponent(_scientistWorkProgressLabel)
                            .addComponent(_scientistAddTaskHistory))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(_scientistTaskHistoryScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 222, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(_scientistSecurityRequest)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(_scientistTechsupportRequest)))
                .addContainerGap())
        );

        _roleActionsTab.addTab("Научный сотрудник", _scientistPage);

        _testerReportViewer.setEditMode(false);

        _testerRejectTask.setText("Отклонить");
        _testerRejectTask.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _testerRejectTaskActionPerformed(evt);
            }
        });

        _testerAcceptTask.setText("Принять");
        _testerAcceptTask.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _testerAcceptTaskActionPerformed(evt);
            }
        });

        _testerTaskHistory.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                _testerTaskHistoryValueChanged(evt);
            }
        });
        _testerTaskHistoryScroll.setViewportView(_testerTaskHistory);

        _testerSecurityRequest.setText("Запрос в службу безопасности");
        _testerSecurityRequest.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _testerSecurityRequestActionPerformed(evt);
            }
        });

        _testerTechsupportRequest.setText("Запрос в техподдержку");
        _testerTechsupportRequest.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _testerTechsupportRequestActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout _testersPageLayout = new javax.swing.GroupLayout(_testersPage);
        _testersPage.setLayout(_testersPageLayout);
        _testersPageLayout.setHorizontalGroup(
            _testersPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(_testersPageLayout.createSequentialGroup()
                .addComponent(_testerReportViewer, javax.swing.GroupLayout.PREFERRED_SIZE, 452, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(_testersPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(_testersPageLayout.createSequentialGroup()
                        .addComponent(_testerTaskHistoryScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 261, Short.MAX_VALUE)
                        .addContainerGap())
                    .addGroup(_testersPageLayout.createSequentialGroup()
                        .addComponent(_testerSecurityRequest, javax.swing.GroupLayout.DEFAULT_SIZE, 261, Short.MAX_VALUE)
                        .addContainerGap())
                    .addGroup(_testersPageLayout.createSequentialGroup()
                        .addComponent(_testerRejectTask, javax.swing.GroupLayout.DEFAULT_SIZE, 176, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                        .addComponent(_testerAcceptTask)
                        .addGap(10, 10, 10))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, _testersPageLayout.createSequentialGroup()
                        .addComponent(_testerTechsupportRequest, javax.swing.GroupLayout.DEFAULT_SIZE, 261, Short.MAX_VALUE)
                        .addContainerGap())))
        );
        _testersPageLayout.setVerticalGroup(
            _testersPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(_testerReportViewer, javax.swing.GroupLayout.DEFAULT_SIZE, 331, Short.MAX_VALUE)
            .addGroup(_testersPageLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(_testersPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(_testerRejectTask)
                    .addComponent(_testerAcceptTask))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(_testerTaskHistoryScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 226, Short.MAX_VALUE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(_testerSecurityRequest)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(_testerTechsupportRequest)
                .addGap(7, 7, 7))
        );

        _roleActionsTab.addTab("Тестер", _testersPage);

        _techsupportReportViewer.setEditMode(false);

        _techsupportEndTask.setText("Завершить");
        _techsupportEndTask.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _techsupportEndTaskActionPerformed(evt);
            }
        });

        _techsupportSecurityRequest.setText("Запрос в службу безопасности");
        _techsupportSecurityRequest.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _techsupportSecurityRequestActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout _techsupportPageLayout = new javax.swing.GroupLayout(_techsupportPage);
        _techsupportPage.setLayout(_techsupportPageLayout);
        _techsupportPageLayout.setHorizontalGroup(
            _techsupportPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(_techsupportPageLayout.createSequentialGroup()
                .addComponent(_techsupportReportViewer, javax.swing.GroupLayout.PREFERRED_SIZE, 455, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(_techsupportPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(_techsupportSecurityRequest, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE)
                    .addComponent(_techsupportEndTask, javax.swing.GroupLayout.DEFAULT_SIZE, 258, Short.MAX_VALUE))
                .addContainerGap())
        );
        _techsupportPageLayout.setVerticalGroup(
            _techsupportPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(_techsupportReportViewer, javax.swing.GroupLayout.DEFAULT_SIZE, 331, Short.MAX_VALUE)
            .addGroup(_techsupportPageLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(_techsupportEndTask)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 263, Short.MAX_VALUE)
                .addComponent(_techsupportSecurityRequest)
                .addContainerGap())
        );

        _roleActionsTab.addTab("Техподдержка", _techsupportPage);

        _securityReportViewer.setEditMode(false);

        _securityManEndTask.setText("Завершить");
        _securityManEndTask.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _securityManEndTaskActionPerformed(evt);
            }
        });

        _securityTechsupportRequest.setText("Запрос в техподдержку");
        _securityTechsupportRequest.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _securityTechsupportRequestActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout _securityManPageLayout = new javax.swing.GroupLayout(_securityManPage);
        _securityManPage.setLayout(_securityManPageLayout);
        _securityManPageLayout.setHorizontalGroup(
            _securityManPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(_securityManPageLayout.createSequentialGroup()
                .addComponent(_securityReportViewer, javax.swing.GroupLayout.PREFERRED_SIZE, 439, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(_securityManPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(_securityManEndTask, javax.swing.GroupLayout.DEFAULT_SIZE, 274, Short.MAX_VALUE)
                    .addComponent(_securityTechsupportRequest, javax.swing.GroupLayout.DEFAULT_SIZE, 274, Short.MAX_VALUE))
                .addContainerGap())
        );
        _securityManPageLayout.setVerticalGroup(
            _securityManPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, _securityManPageLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(_securityManEndTask)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 263, Short.MAX_VALUE)
                .addComponent(_securityTechsupportRequest)
                .addContainerGap())
            .addComponent(_securityReportViewer, javax.swing.GroupLayout.DEFAULT_SIZE, 331, Short.MAX_VALUE)
        );

        _roleActionsTab.addTab("Служба безопасности", _securityManPage);

        _adminTasksView.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                _adminTasksViewMouseClicked(evt);
            }
        });
        _adminTasksView.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                _adminTasksViewValueChanged(evt);
            }
        });
        _adminTasksViewScroll.setViewportView(_adminTasksView);

        _adminTaskReportHistory.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
            public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
                _adminTaskReportHistoryValueChanged(evt);
            }
        });
        _adminTaskReportHistoryScroll.setViewportView(_adminTaskReportHistory);

        _adminTaskReportViewer.setEditMode(false);

        _adminShowFinished.setText("Показать завершенные");
        _adminShowFinished.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _adminShowFinishedActionPerformed(evt);
            }
        });

        _adminShowDeleted.setText("Показать удаленные");
        _adminShowDeleted.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _adminShowDeletedActionPerformed(evt);
            }
        });

        _serviceLog.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Вирусы", "Техподдержка", "Секьюрити" }));
        _serviceLog.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                _serviceLogActionPerformed(evt);
            }
        });

        _adminTaskTooltip.setText("TaskTooltip");

        _adminReportsTooltip.setText("Отчеты:");

        javax.swing.GroupLayout _tasksPageLayout = new javax.swing.GroupLayout(_tasksPage);
        _tasksPage.setLayout(_tasksPageLayout);
        _tasksPageLayout.setHorizontalGroup(
            _tasksPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(_tasksPageLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(_tasksPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(_adminTasksViewScroll, javax.swing.GroupLayout.PREFERRED_SIZE, 121, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(_adminTaskTooltip))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(_tasksPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(_tasksPageLayout.createSequentialGroup()
                        .addGroup(_tasksPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(_adminTaskReportHistoryScroll, 0, 0, Short.MAX_VALUE)
                            .addComponent(_adminTaskProgress, javax.swing.GroupLayout.DEFAULT_SIZE, 175, Short.MAX_VALUE))
                        .addGap(6, 6, 6)
                        .addGroup(_tasksPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(_tasksPageLayout.createSequentialGroup()
                                .addComponent(_adminShowFinished)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 92, Short.MAX_VALUE)
                                .addComponent(_serviceLog, javax.swing.GroupLayout.PREFERRED_SIZE, 164, javax.swing.GroupLayout.PREFERRED_SIZE))
                            .addComponent(_adminShowDeleted)
                            .addComponent(_adminTaskReportViewer, javax.swing.GroupLayout.DEFAULT_SIZE, 401, Short.MAX_VALUE)))
                    .addComponent(_adminReportsTooltip))
                .addContainerGap())
        );
        _tasksPageLayout.setVerticalGroup(
            _tasksPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, _tasksPageLayout.createSequentialGroup()
                .addGroup(_tasksPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(_adminReportsTooltip)
                    .addComponent(_adminTaskTooltip))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(_tasksPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(_tasksPageLayout.createSequentialGroup()
                        .addComponent(_adminTaskReportHistoryScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 286, Short.MAX_VALUE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(_adminTaskProgress, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, _tasksPageLayout.createSequentialGroup()
                        .addGroup(_tasksPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(_adminTasksViewScroll, javax.swing.GroupLayout.DEFAULT_SIZE, 311, Short.MAX_VALUE)
                            .addGroup(_tasksPageLayout.createSequentialGroup()
                                .addGroup(_tasksPageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                                    .addComponent(_adminShowFinished)
                                    .addComponent(_serviceLog, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(_adminShowDeleted)
                                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                .addComponent(_adminTaskReportViewer, javax.swing.GroupLayout.DEFAULT_SIZE, 263, Short.MAX_VALUE)))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)))
                .addContainerGap())
        );

        _roleActionsTab.addTab("Ход выполнения", _tasksPage);

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(_roleActionsTab, javax.swing.GroupLayout.DEFAULT_SIZE, 734, Short.MAX_VALUE)
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(_roleActionsTab, javax.swing.GroupLayout.DEFAULT_SIZE, 359, Short.MAX_VALUE)
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

private void _adminSecurityRequestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__adminSecurityRequestActionPerformed
	new SecurityRequestForm( DbLayerInstance, this ).setVisible( true );
}//GEN-LAST:event__adminSecurityRequestActionPerformed

private void _adminTechsupportRequestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__adminTechsupportRequestActionPerformed
	new TechsupportRequestForm( DbLayerInstance, this ).setVisible( true );
}//GEN-LAST:event__adminTechsupportRequestActionPerformed

private void _scientistSecurityRequestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__scientistSecurityRequestActionPerformed
	new SecurityRequestForm( DbLayerInstance, this ).setVisible( true );
}//GEN-LAST:event__scientistSecurityRequestActionPerformed

private void _scientistTechsupportRequestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__scientistTechsupportRequestActionPerformed
	new TechsupportRequestForm( DbLayerInstance, this ).setVisible( true );
}//GEN-LAST:event__scientistTechsupportRequestActionPerformed

private void _testerSecurityRequestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__testerSecurityRequestActionPerformed
	new SecurityRequestForm( DbLayerInstance, this ).setVisible( true );
}//GEN-LAST:event__testerSecurityRequestActionPerformed

private void _testerTechsupportRequestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__testerTechsupportRequestActionPerformed
	new TechsupportRequestForm( DbLayerInstance, this ).setVisible( true );
}//GEN-LAST:event__testerTechsupportRequestActionPerformed

private void _techsupportSecurityRequestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__techsupportSecurityRequestActionPerformed
	new SecurityRequestForm( DbLayerInstance, this ).setVisible( true );
}//GEN-LAST:event__techsupportSecurityRequestActionPerformed

private void _securityTechsupportRequestActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__securityTechsupportRequestActionPerformed
	new TechsupportRequestForm( DbLayerInstance, this ).setVisible( true );
}//GEN-LAST:event__securityTechsupportRequestActionPerformed

private void _newEmployeeToolStripMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__newEmployeeToolStripMenuItemActionPerformed
	try {
		new EditEmployeeForm( DbLayerInstance, this, null ).setVisible( true );

		refreshEmploysPage();
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__newEmployeeToolStripMenuItemActionPerformed

private void _loginToolStripMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__loginToolStripMenuItemActionPerformed
	try {
		DbEmployee loginAs = ( DbEmployee ) ListView.getSelectedObjectTag( _employsList );
		DbLayerInstance.setLoggedInUserID( loginAs.ID );

		restrictTabs();
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__loginToolStripMenuItemActionPerformed

private void _fireEmployeeToolStripMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__fireEmployeeToolStripMenuItemActionPerformed
	try {
		if( JOptionPane.showConfirmDialog( this, "Вы действительно хотите уволить этого сотрудника?", "Удаление сотрудника", JOptionPane.YES_NO_OPTION ) == JOptionPane.YES_OPTION ) {
			DbLayerInstance.fireEmployee( ( ( DbEmployee ) ListView.getSelectedObjectTag( _employsList ) ).ID );
			refreshEmploysPage();
		}
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__fireEmployeeToolStripMenuItemActionPerformed

private void _createTaskToolStripMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__createTaskToolStripMenuItemActionPerformed
	try {
		new AddTaskForm( DbLayerInstance, this ).setVisible( true );

		refreshTasksPage();
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__createTaskToolStripMenuItemActionPerformed

private void _removeTaskToolStripMenuItemActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__removeTaskToolStripMenuItemActionPerformed
	try {
		DbTask currentTask = ( DbTask ) ListView.getSelectedObjectTag( _adminTasksView );

		DbLayerInstance.deleteTask( currentTask.ID );

		refreshTasksPage();
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__removeTaskToolStripMenuItemActionPerformed

private void _adminNewTaskActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__adminNewTaskActionPerformed
	_createTaskToolStripMenuItemActionPerformed( evt );
}//GEN-LAST:event__adminNewTaskActionPerformed

private void _scientistAddTaskHistoryActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__scientistAddTaskHistoryActionPerformed
	try {
		new AddTaskProgressForm( DbLayerInstance, this ).setVisible( true );
		updateScientistPage();
		refreshScientistPage();
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}

}//GEN-LAST:event__scientistAddTaskHistoryActionPerformed

private void _techsupportEndTaskActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__techsupportEndTaskActionPerformed
	try {
		new TechsupportFinishTaskForm( DbLayerInstance, this ).setVisible( true );
		updateTechsupportPage();
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__techsupportEndTaskActionPerformed

private void _securityManEndTaskActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__securityManEndTaskActionPerformed
	try {
		new SecurityFinishTaskForm( DbLayerInstance, this ).setVisible( true );
		updateSecurityPage();
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__securityManEndTaskActionPerformed

private void _adminShowFinishedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__adminShowFinishedActionPerformed
	try {
		refreshTasksPage();
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__adminShowFinishedActionPerformed

private void _adminShowDeletedActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__adminShowDeletedActionPerformed
	try {
		refreshTasksPage();
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__adminShowDeletedActionPerformed

private void _serviceLogActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__serviceLogActionPerformed
	try {
		switch( _serviceLog.getSelectedIndex() ) {
			case 0:
				_adminTaskTooltip.setText( "Название вируса:" );
				_adminShowDeleted.setVisible( true );
				_adminShowDeleted.setVisible( true );
				break;
			case 1:
			case 2:
				_adminTaskTooltip.setText( "Задача от:" );
				_adminShowDeleted.setVisible( false );
				_adminShowDeleted.setVisible( false );
				break;
		}
		refreshTasksPage();
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__serviceLogActionPerformed

private void _adminTasksViewValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event__adminTasksViewValueChanged
	try {
		refreshTaskHistory();
		_adminTaskReportViewer.setCurrentReport( DbLayerInstance, null );
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__adminTasksViewValueChanged

private void _adminTaskReportHistoryValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event__adminTaskReportHistoryValueChanged
	try {
		DbTaskProgress currentTask = null;

		if( _adminTaskReportHistory.getSelectedIndex() != -1 ) {
			currentTask = ( DbTaskProgress ) ListView.getSelectedObjectTag( _adminTaskReportHistory );
			_adminTaskReportViewer.setCurrentReport( DbLayerInstance, currentTask.Message );
		} else
			_adminTaskReportViewer.setCurrentReport( DbLayerInstance, null );
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__adminTaskReportHistoryValueChanged

private void _testerTaskHistoryValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event__testerTaskHistoryValueChanged
	try {
		DbTaskProgress currentTask = null;

		if( _testerTaskHistory.getSelectedIndex() != -1 ) {
			currentTask = ( DbTaskProgress ) ListView.getSelectedObjectTag( _testerTaskHistory );
			_testerReportViewer.setCurrentReport( DbLayerInstance, currentTask.Message );
		} else
			_testerReportViewer.setCurrentReport( DbLayerInstance, null );
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__testerTaskHistoryValueChanged

private void _testerRejectTaskActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__testerRejectTaskActionPerformed
	try {
		new TesterRejectsTaskForm( DbLayerInstance, this ).setVisible( true );
		updateTesterPage();
		refreshTesterPage();
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__testerRejectTaskActionPerformed

private void _testerAcceptTaskActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event__testerAcceptTaskActionPerformed
	try {
		new TesterAcceptsTaskForm( DbLayerInstance, this ).setVisible( true );
		updateTesterPage();
		refreshTesterPage();
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}

}//GEN-LAST:event__testerAcceptTaskActionPerformed

private void _employsListMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event__employsListMouseClicked
	try {
		if( SwingUtilities.isRightMouseButton( evt ) ) {
			DbEmployee current = null;

			if( _employsList.getSelectedIndex() != -1 )
				current = ( DbEmployee ) ListView.getSelectedObjectTag( _employsList );

			_newEmployeeToolStripMenuItem.setVisible( true );
			_fireEmployeeToolStripMenuItem.setVisible( current != null );
			_loginToolStripMenuItem.setVisible( current != null );

			_employsContextMenu.show( _employsList, evt.getX(), evt.getY() );
		}

		if( evt.getClickCount() == 2 && evt.getButton() == MouseEvent.BUTTON1 )
			if( _employsList.getSelectedIndex() != -1 && ( ( DbEmployee ) ListView.getSelectedObjectTag( _employsList ) ).ID != 1 ) {
				new EditEmployeeForm( DbLayerInstance, this, ( DbEmployee ) ListView.getSelectedObjectTag( _employsList ) ).setVisible( true );

				int selectedItem = _employsList.getSelectedIndex();
				refreshEmploysPage();

				_employsList.setSelectedIndex( selectedItem );
			}
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}

}//GEN-LAST:event__employsListMouseClicked

private void _scientistTaskHistoryValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event__scientistTaskHistoryValueChanged
	try {
		DbTaskProgress currentTask = null;

		if( _scientistTaskHistory.getSelectedIndex() != -1 ) {
			currentTask = ( DbTaskProgress ) ListView.getSelectedObjectTag( _scientistTaskHistory );
			_scientistReportViewer.setCurrentReport( DbLayerInstance, currentTask.Message );
		} else
			_scientistReportViewer.setCurrentReport( DbLayerInstance, null );
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( this, excpt.getMessage() );
	}
}//GEN-LAST:event__scientistTaskHistoryValueChanged

private void _adminTasksViewMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event__adminTasksViewMouseClicked
	try {
		// if right mouse button clicked (or me.isPopupTrigger())
		if( SwingUtilities.isRightMouseButton( evt ) && DbLayerInstance.getLoggedInEmployee().Role == EnterpriseRole.Chief && _serviceLog.getSelectedIndex() == 0 ) {
			DbTask current = null;

			if( _adminTasksView.getSelectedIndex() != -1 )
				current = ( DbTask ) ListView.getSelectedObjectTag( _adminTasksView );

			_createTaskToolStripMenuItem.setVisible( current == null );
			_removeTaskToolStripMenuItem.setVisible( current != null );

			_tasksContextMenu.show( _adminTasksView, evt.getX(), evt.getY() );
		}
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( null, excpt.getMessage() );
	}
}//GEN-LAST:event__adminTasksViewMouseClicked

private void _employsListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event__employsListValueChanged
	try {
		if( _employsList.getSelectedIndex() == -1 ) {
			_employsPhoto.setBackgroundImage( null );
			return;
		}

		DbEmployee current = ( DbEmployee ) ListView.getSelectedObjectTag( _employsList );

		_employsPhoto.setBackgroundImage( current.Photography );
	} catch( Throwable excpt ) {
		JOptionPane.showMessageDialog( null, excpt.getMessage() );
	}

}//GEN-LAST:event__employsListValueChanged
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton _adminNewTask;
    private javax.swing.JLabel _adminReportsTooltip;
    private javax.swing.JButton _adminSecurityRequest;
    private javax.swing.JCheckBox _adminShowDeleted;
    private javax.swing.JCheckBox _adminShowFinished;
    private javax.swing.JProgressBar _adminTaskProgress;
    private javax.swing.JList _adminTaskReportHistory;
    private javax.swing.JScrollPane _adminTaskReportHistoryScroll;
    private ReportControl _adminTaskReportViewer;
    private javax.swing.JLabel _adminTaskTooltip;
    private javax.swing.JList _adminTasksView;
    private javax.swing.JScrollPane _adminTasksViewScroll;
    private javax.swing.JButton _adminTechsupportRequest;
    private javax.swing.JMenuItem _createTaskToolStripMenuItem;
    private javax.swing.JLabel _employeesTotal;
    private javax.swing.JLabel _employeesTotalLabel;
    private javax.swing.JPopupMenu _employsContextMenu;
    private javax.swing.JList _employsList;
    private javax.swing.JScrollPane _employsListScroll;
    private javax.swing.JPanel _employsPage;
    private ImagePanel _employsPhoto;
    private javax.swing.JLabel _finishedTasksLabel;
    private javax.swing.JLabel _finishedTasksTotal;
    private javax.swing.JMenuItem _fireEmployeeToolStripMenuItem;
    private javax.swing.JMenuItem _loginToolStripMenuItem;
    private javax.swing.JMenuItem _newEmployeeToolStripMenuItem;
    private javax.swing.JMenuItem _removeTaskToolStripMenuItem;
    private javax.swing.JTabbedPane _roleActionsTab;
    private javax.swing.JButton _scientistAddTaskHistory;
    private javax.swing.JPanel _scientistPage;
    private ReportControl _scientistReportViewer;
    private javax.swing.JButton _scientistSecurityRequest;
    private javax.swing.JList _scientistTaskHistory;
    private javax.swing.JScrollPane _scientistTaskHistoryScroll;
    private javax.swing.JButton _scientistTechsupportRequest;
    private javax.swing.JLabel _scientistWorkProgressLabel;
    private javax.swing.JButton _securityManEndTask;
    private javax.swing.JPanel _securityManPage;
    private ReportControl _securityReportViewer;
    private javax.swing.JButton _securityTechsupportRequest;
    private javax.swing.JComboBox _serviceLog;
    private javax.swing.JPanel _statisticsPage;
    private javax.swing.JPopupMenu _tasksContextMenu;
    private javax.swing.JPanel _tasksPage;
    private javax.swing.JLabel _tasksTotal;
    private javax.swing.JLabel _tasksTotalLabel;
    private javax.swing.JButton _techsupportEndTask;
    private javax.swing.JPanel _techsupportPage;
    private ReportControl _techsupportReportViewer;
    private javax.swing.JButton _techsupportSecurityRequest;
    private javax.swing.JButton _testerAcceptTask;
    private javax.swing.JButton _testerRejectTask;
    private ReportControl _testerReportViewer;
    private javax.swing.JButton _testerSecurityRequest;
    private javax.swing.JList _testerTaskHistory;
    private javax.swing.JScrollPane _testerTaskHistoryScroll;
    private javax.swing.JButton _testerTechsupportRequest;
    private javax.swing.JPanel _testersPage;
    // End of variables declaration//GEN-END:variables
}
Соседние файлы в папке src