CVE-2013-10008 (Other, published 2023-01-06T22:15Z)
Description: value: A vulnerability was found in sheilazpy eShop. It has been classified as critical. Affected is an unknown function. The manipulation leads to sql injection. The name of the patch is e096c5849c4dc09e1074104531014a62a5413884. It is recommended to apply a patch to fix this issue. The identifier of this vulnerability is VDB-217572.
Severity: nan (CVSS v3 base score: 9.8)
Weakness: CWE-89 \u2014 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
The product constructs all or part of an SQL command using externally-influenced input from an upstream component, but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component. Without sufficient removal or quoting of SQL syntax in user-controllable inputs, the generated SQL query can cause those inputs to be interpreted as SQL instead of ordinary user data.
Repository: https://github.com/sheilazpy/eShop
Files changed:
eShop/.metadata/.log
eShop/.metadata/.mylyn/monitor-log.xml
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/0/00732ff1a25d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/12/f0aff560a45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/18/10bfa35fa55d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/1f/200b7592a45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/1f/70700e07a55d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/25/b05af020b65d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/2d/10122d7aa45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/32/1047046ea45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/33/b0a2eb76a45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/39/3051c538b75d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/3b/a0275544a35d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/3d/c05fc1fca35d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/3f/404dcf53b35d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/3f/a0c32771a35d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/41/d0500513b75d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/46/008349d2ab5d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/49/40fed919a55d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/4f/50d63551b65d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/54/50455296a45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/57/900cbfa3a55d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/6/f02d9590ac5d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/61/2068ed71a45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/63/f0911911ad5d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/69/20e7fe1cb45d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/6d/500d2f6eb45d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/6d/c08119b3a05d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/7a/d0479e0ea45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/7e/f03e2183a45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/82/50bb024db35d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/83/c097dbfea45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/8b/20041debb45d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/9a/f086c342aa5d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/9c/80cc88dcb65d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/9c/f096a4cba35d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/9f/808cfa98a55d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/a1/a03b43f5a45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/a8/40b444ccb35d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/b8/60ea091bb35d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/c2/9020359db35d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/c5/a02137b1aa5d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/c9/00c97468a45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/ca/50c4b340ab5d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/d/a085d459b55d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/d1/f0b87e7ea45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/d2/10685414a15d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/d5/d0782d99a45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/d9/c08d3857a45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/df/10d6230fa55d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/df/603e699bac5d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/df/704ad386a45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/e/b0eb4bb1b65d001211398853d386ea7d
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/e1/4031c38ea55d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/e8/20b5d438a45d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/f1/e00edf7aa25d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.history/f8/502d6e21a25d00121890bdcc27f78f62
eShop/.metadata/.plugins/org.eclipse.core.resources/.safetable/net.sourceforge.eclipseccase.16
eShop/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.mylyn.monitor.usage.prefs
eShop/.metadata/.plugins/org.eclipse.debug.ui/launchConfigurationHistory.xml
eShop/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
eShop/.metadata/.plugins/org.eclipse.jdt.ui/QualifiedTypeNameHistory.xml
eShop/.metadata/.plugins/org.eclipse.ui.workbench/workbench.xml
eShop/eShop/src/databaseConnectWindow.java
eShop/eShop/src/database_management/MySQLdbManager.java
eShop/eShop/src/mainWindow.java
eShop/eShop/src/md5_calculator/Md5hashcalc.java
eShop/eShop/src/operatorUserLoginWindow.java
eShop/eShop/src/operatorUserSettingsWindow.java
Commit message: some sql injection vulnerabilities fixes

+ some sql injection vulnerabilities fixes
+ new sql injection safe methods in mysql wrapper


Vulnerable code:
	private final JPanel panel = new JPanel();
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserSettings.setText("Âõîä");
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
		//databaseConnectWindow.main(null);
			databaseConnectWindow.dbPortal.finallize();
			this.mainWindowStatusPanelSetEnabled(false);			
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;


public class operatorUserLogin extends JFrame {

	private final JPanel groupLoginPanel = new JPanel();
	private final JPanel groupCreateNewUserPanel = new JPanel();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLogin frame = new operatorUserLogin();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLogin() {
		super();
		setBounds(100, 100, 518, 269);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Âõîä íà îïåðàòîð");
		setName("operatorLogin");
		setResizable(false);
		setAlwaysOnTop(true);
		
		getContentPane().add(groupLoginPanel);
		groupLoginPanel.setBorder(new TitledBorder(null, "", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupLoginPanel.setBounds(10, 10, 243, 213);
		
		getContentPane().add(groupCreateNewUserPanel);
		groupCreateNewUserPanel.setBorder(new TitledBorder(null, "", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupCreateNewUserPanel.setBounds(263, 10, 243, 213);
	}

}
import java.awt.EventQueue;
import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import database_management.MySQLdbManager;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 214);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 97, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(93, 140, 106, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
	}
	
	private void getCurrentUserData() {
		
		if (databaseConnectWindow.dbPortal == null) {
			return;
		}
		if (databaseConnectWindow.dbPortal.isConnected() == false) {
			return;
		}
	}

}
import javax.swing.JButton;

		EventQueue.invokeLater(new Runnable() {
		});
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				dbPortal.finallize();
					}					
					dbPortal.finallize();
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
			dbPortal.finallize();
		if (dbPortal.executeNonQuery("CREATE DATABASE " + mysqlDatabaseNameTextField.getText()) != 1) {
			dbPortal.disconnect();
			dbPortal.finallize();
		if (dbPortal.executeNonQuery("CREATE TABLE operators (operator_id int NOT NULL AUTO_INCREMENT primary key," + 
				"operator_username nvarchar(20) NOT NULL, operator_password nvarchar(20) NOT NULL," + 
				"operator_first_name nvarchar(20) NOT NULL, operator_last_name nvarchar(20) NOT NULL)") != 1) {
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.finallize();
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå ñúçäàäå òàáëèöà â áàçàòà äàííè!\nÏðîâåðåòå èìàòå ëè ïðàâà çà òîâà!",
					"Íå ìîæå äà ñå ñúçäàäå òàáëèöà!", JOptionPane.ERROR_MESSAGE);
		if (dbPortal.executeNonQuery("CREATE TABLE orders (order_id int NOT NULL AUTO_INCREMENT primary key," + 
				"CONSTRAINT FK_OPERATORS FOREIGN KEY (order_operator_id) REFERENCES operators(operator_id) ON DELETE CASCADE ON UPDATE CASCADE)") != 1) {
			
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.disconnect();
			dbPortal.finallize();
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå ñúçäàäå òàáëèöà â áàçàòà äàííè!\nÏðîâåðåòå èìàòå ëè ïðàâà çà òîâà!",
					"Íå ìîæå äà ñå ñúçäàäå òàáëèöà!", JOptionPane.ERROR_MESSAGE);
			return false;
		}
		if (dbPortal.executeNonQuery("CREATE TABLE products (product_id int NOT NULL AUTO_INCREMENT primary key," + 
				"product_name nvarchar(30) NOT NULL, product_quantity int NOT NULL,	product_price decimal(10,2) NOT NULL)") != 1) {
			
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.disconnect();
			dbPortal.finallize();
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå ñúçäàäå òàáëèöà â áàçàòà äàííè!\nÏðîâåðåòå èìàòå ëè ïðàâà çà òîâà!",
					"Íå ìîæå äà ñå ñúçäàäå òàáëèöà!", JOptionPane.ERROR_MESSAGE);
			return false;
		}
		if (dbPortal.executeNonQuery("CREATE TABLE order_details (order_detail_id int NOT NULL AUTO_INCREMENT primary key," + 
				"CONSTRAINT FK_PRODUCTS FOREIGN KEY (order_detail_product_id) REFERENCES products(product_id) ON DELETE CASCADE ON UPDATE CASCADE)") != 1) {
			
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.disconnect();
			dbPortal.finallize();
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå ñúçäàäå òàáëèöà â áàçàòà äàííè!\nÏðîâåðåòå èìàòå ëè ïðàâà çà òîâà!",
					"Íå ìîæå äà ñå ñúçäàäå òàáëèöà!", JOptionPane.ERROR_MESSAGE);
			return false;
	}

import java.awt.EventQueue;
import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import database_management.MySQLdbManager;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 214);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 97, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(93, 140, 106, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
	}
	
	private void getCurrentUserData() {
		
	}

}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JOptionPane;

import database_management.MySQLdbManager;

public class databaseConnectWindow extends JFrame {

	private final JLabel label = new JLabel();
	private final JLabel label_1 = new JLabel();
	private final JLabel label_2 = new JLabel();
	private final JLabel label_3 = new JLabel();
	private final JLabel label_4 = new JLabel();
	private final JButton connectToDatabaseButton = new JButton();
	private final JTextField mysqlServerAddressTextField = new JTextField();
	private final JTextField mysqlPortTextField = new JTextField();
	private final JTextField mysqlDatabaseNameTextField = new JTextField();
	private final JTextField mysqlUsernameTextField = new JTextField();
	private final JPasswordField mysqlPasswordPasswordField = new JPasswordField();
	public static MySQLdbManager dbPortal = null;
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					databaseConnectWindow frame = new databaseConnectWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public databaseConnectWindow() {
		super();
		setBounds(100, 100, 384, 203);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setAlwaysOnTop(true);
		setResizable(false);
		setTitle("Ñâúðçâàíå ñ áàçàòà äàííè");
		setName("databaseConnectWindowFrame");
		
		getContentPane().add(label);
		label.setText("Àäðåñ íà MySQL ñúðâúðà:");
		label.setBounds(10, 10, 165, 16);
		
		getContentPane().add(label_1);
		label_1.setText("Èìå íà áàçàòà äàííè:");
		label_1.setBounds(10, 54, 165, 16);
		
		getContentPane().add(label_2);
		label_2.setText("Ïîðò:");
		label_2.setBounds(10, 32, 156, 16);
		
		getContentPane().add(label_3);
		label_3.setText("Ïîòðåáèòåëñêî èìå:");
		label_3.setBounds(10, 76, 165, 16);
		
		getContentPane().add(label_4);
		label_4.setText("Ïàðîëà:");
		label_4.setBounds(10, 98, 156, 16);
		
		getContentPane().add(connectToDatabaseButton);
		connectToDatabaseButton.addActionListener(new ConnectToDatabaseButtonActionListener());
		connectToDatabaseButton.setText("Ñâúðæè ñå!");
		connectToDatabaseButton.setBounds(132, 135, 106, 26);
		
		getContentPane().add(mysqlServerAddressTextField);
		mysqlServerAddressTextField.setText("127.0.0.1");
		mysqlServerAddressTextField.setBounds(181, 8, 185, 20);
		
		getContentPane().add(mysqlPortTextField);
		mysqlPortTextField.setText("3306");
		mysqlPortTextField.setBounds(181, 30, 91, 20);
		
		getContentPane().add(mysqlDatabaseNameTextField);
		mysqlDatabaseNameTextField.setText("shop");
		mysqlDatabaseNameTextField.setBounds(181, 52, 181, 20);
		
		getContentPane().add(mysqlUsernameTextField);
		mysqlUsernameTextField.setText("root");
		mysqlUsernameTextField.setBounds(181, 76, 180, 18);
		
		getContentPane().add(mysqlPasswordPasswordField);
		mysqlPasswordPasswordField.setBounds(181, 96, 181, 20);
	}
	private class ConnectToDatabaseButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			connectToDatabaseButton_actionPerformed(e);
		}
	}
	protected void connectToDatabaseButton_actionPerformed(ActionEvent e) {
		
		String password = "";
		
		char [] pass = mysqlPasswordPasswordField.getPassword();
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		dbPortal = new MySQLdbManager(mysqlServerAddressTextField.getText(),
				mysqlDatabaseNameTextField.getText(), Integer.parseInt(mysqlPortTextField.getText()),
				mysqlUsernameTextField.getText(), password);		
		
		
		if (dbPortal.connect() == false) { //now check for database name that is not existing
			
			dbPortal.setMySqlActiveDatabase("");
			dbPortal.disconnect(); //just in case
			
			if (dbPortal.connect() == false) { //connection settings problem or not running MySQL server
				dbPortal.finallize();
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
						"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);
				
				return;
			}
			else { //will have to create new database
				
				if (JOptionPane.showConfirmDialog(this, "Ùå áúäå ñúçäàäåíà íîâà áàçà äàííè ñ èìå: " + mysqlDatabaseNameTextField.getText() +
						".\nÑèãóðíè ëè ñòå?", "Ñúçäàâàíå íà íîâà áàçà äàííè?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
					
					
				}
				else {
				
					dbPortal.disconnect();
					dbPortal.finallize();
					return;
				}
				
				this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
			}			
		}
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	private void createNewDatabaseAndTables() {
		
		
	}

}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JOptionPane;

import database_management.MySQLdbManager;

public class databaseConnectWindow extends JFrame {

	private final JLabel label = new JLabel();
	private final JLabel label_1 = new JLabel();
	private final JLabel label_2 = new JLabel();
	private final JLabel label_3 = new JLabel();
	private final JLabel label_4 = new JLabel();
	private final JButton connectToDatabaseButton = new JButton();
	private final JTextField mysqlServerAddressTextField = new JTextField();
	private final JTextField mysqlPortTextField = new JTextField();
	private final JTextField mysqlDatabaseNameTextField = new JTextField();
	private final JTextField mysqlUsernameTextField = new JTextField();
	private final JPasswordField mysqlPasswordPasswordField = new JPasswordField();
	public static MySQLdbManager dbPortal = null;
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					databaseConnectWindow frame = new databaseConnectWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public databaseConnectWindow() {
		super();
		setBounds(100, 100, 384, 203);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setAlwaysOnTop(true);
		setResizable(false);
		setTitle("Ñâúðçâàíå ñ áàçàòà äàííè");
		setName("databaseConnectWindowFrame");
		
		getContentPane().add(label);
		label.setText("Àäðåñ íà MySQL ñúðâúðà:");
		label.setBounds(10, 10, 165, 16);
		
		getContentPane().add(label_1);
		label_1.setText("Èìå íà áàçàòà äàííè:");
		label_1.setBounds(10, 54, 165, 16);
		
		getContentPane().add(label_2);
		label_2.setText("Ïîðò:");
		label_2.setBounds(10, 32, 156, 16);
		
		getContentPane().add(label_3);
		label_3.setText("Ïîòðåáèòåëñêî èìå:");
		label_3.setBounds(10, 76, 165, 16);
		
		getContentPane().add(label_4);
		label_4.setText("Ïàðîëà:");
		label_4.setBounds(10, 98, 156, 16);
		
		getContentPane().add(connectToDatabaseButton);
		connectToDatabaseButton.addActionListener(new ConnectToDatabaseButtonActionListener());
		connectToDatabaseButton.setText("Ñâúðæè ñå!");
		connectToDatabaseButton.setBounds(132, 135, 106, 26);
		
		getContentPane().add(mysqlServerAddressTextField);
		mysqlServerAddressTextField.setText("127.0.0.1");
		mysqlServerAddressTextField.setBounds(181, 8, 185, 20);
		
		getContentPane().add(mysqlPortTextField);
		mysqlPortTextField.setText("3306");
		mysqlPortTextField.setBounds(181, 30, 91, 20);
		
		getContentPane().add(mysqlDatabaseNameTextField);
		mysqlDatabaseNameTextField.setText("shop");
		mysqlDatabaseNameTextField.setBounds(181, 52, 181, 20);
		
		getContentPane().add(mysqlUsernameTextField);
		mysqlUsernameTextField.setText("root");
		mysqlUsernameTextField.setBounds(181, 76, 180, 18);
		
		getContentPane().add(mysqlPasswordPasswordField);
		mysqlPasswordPasswordField.setBounds(181, 96, 181, 20);
	}
	private class ConnectToDatabaseButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			connectToDatabaseButton_actionPerformed(e);
		}
	}
	protected void connectToDatabaseButton_actionPerformed(ActionEvent e) {
		
		String password = "";
		
		char [] pass = mysqlPasswordPasswordField.getPassword();
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		dbPortal = new MySQLdbManager(mysqlServerAddressTextField.getText(),
				mysqlDatabaseNameTextField.getText(), Integer.parseInt(mysqlPortTextField.getText()),
				mysqlUsernameTextField.getText(), password);		
		
		
		if (dbPortal.connect() == false) { //now check for database name that is not existing
			
			dbPortal.setMySqlActiveDatabase("");
			dbPortal.disconnect(); //just in case
			
			if (dbPortal.connect() == false) { //connection settings problem or not running MySQL server
				dbPortal.finallize();
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
						"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);
				
				return;
			}
			else { //will have to create new database
				
				if (JOptionPane.showConfirmDialog(this, "Ùå áúäå ñúçäàäåíà íîâà áàçà äàííè ñ èìå: " + mysqlDatabaseNameTextField.getText() +
						".\nÑèãóðíè ëè ñòå?", "Ñúçäàâàíå íà íîâà áàçà äàííè?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
					
					
				}
				else {
				
					dbPortal.disconnect();
					dbPortal.finallize();
					return;
				}
				
				this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
			}			
		}
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}

}
import java.awt.EventQueue;

import javax.swing.JFrame;


public class operatorUserLogin extends JFrame {

	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLogin frame = new operatorUserLogin();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLogin() {
		super();
		setBounds(100, 100, 500, 375);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		//
	}

}
import java.awt.FlowLayout;
import java.awt.GridLayout;
	private final JPanel panel = new JPanel();
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserSettings.setText("Âõîä");
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
		//databaseConnectWindow.main(null);
			databaseConnectWindow.dbPortal.finallize();
			this.mainWindowStatusPanelSetEnabled(false);			
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SpringLayout;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JPanel panel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserSettings.setText("Âõîä");
		mainWindowStatusPanel.setEnabled(false);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		//databaseConnectWindow.main(null);
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				//FIXME mainWindowPointer.Operations.setEnabled(true);
    				mainWindowPointer.mainWindowStatusPanel.setEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				//FIXME mainWindowPointer.Operations.setEnabled(false);
    				mainWindowPointer.mainWindowStatusPanel.setEnabled(false);
    			}
    		}            
        }
    };
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finallize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanel.setEnabled(false);			
		}
	}
	
}
import javax.swing.JButton;

		EventQueue.invokeLater(new Runnable() {
		});
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				dbPortal.finallize();
					
					dbPortal.finallize();
		dbPortal.setMySqlActiveDatabase("");
		
			dbPortal.finallize();
				"operator_username nvarchar(20) NOT NULL, operator_password nvarchar(20) NOT NULL," + 
	}

		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserSettings.setText("Âõîä");
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
		//databaseConnectWindow.main(null);
			databaseConnectWindow.dbPortal.finallize();
			this.mainWindowStatusPanelSetEnabled(false);			
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
import javax.swing.JButton;

		EventQueue.invokeLater(new Runnable() {
		});
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				dbPortal.finallize();
					}					
					dbPortal.finallize();
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
			dbPortal.finallize();
		if (dbPortal.executeNonQuery("CREATE DATABASE " + mysqlDatabaseNameTextField.getText()) != 1) {
					"Íå ìîæå äà ñå ñúçäàäå ÁÄ!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.disconnect();
			dbPortal.finallize();
		if (dbPortal.executeNonQuery("CREATE TABLE operators (operator_id int NOT NULL AUTO_INCREMENT primary key," + 
				"operator_username nvarchar(20) NOT NULL, operator_password nvarchar(20) NOT NULL," + 
				"operator_first_name nvarchar(20) NOT NULL, operator_last_name nvarchar(20) NOT NULL)") == 0) {
			dbPortal.finallize();
		if (dbPortal.executeNonQuery("CREATE TABLE orders (order_id int NOT NULL AUTO_INCREMENT primary key," + 
				"CONSTRAINT FK_OPERATORS FOREIGN KEY (order_operator_id) REFERENCES operators(operator_id) ON DELETE CASCADE ON UPDATE CASCADE)") == 0) {
			
			dbPortal.disconnect();
			dbPortal.finallize();
			return false;
		}
		if (dbPortal.executeNonQuery("CREATE TABLE products (product_id int NOT NULL AUTO_INCREMENT primary key," + 
				"product_name nvarchar(30) NOT NULL, product_quantity int NOT NULL,	product_price decimal(10,2) NOT NULL)") == 0) {
			
			dbPortal.disconnect();
			dbPortal.finallize();
			return false;
		}
		if (dbPortal.executeNonQuery("CREATE TABLE order_details (order_detail_id int NOT NULL AUTO_INCREMENT primary key," + 
				"CONSTRAINT FK_PRODUCTS FOREIGN KEY (order_detail_product_id) REFERENCES products(product_id) ON DELETE CASCADE ON UPDATE CASCADE)") == 0) {
			
			dbPortal.disconnect();
			dbPortal.finallize();
			return false;
	}

import java.awt.EventQueue;
import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import java.sql.ResultSet;
import database_management.MySQLdbManager;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 214);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 97, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(93, 140, 106, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
	}
	
	private void getCurrentUserData() {
		
		if (databaseConnectWindow.dbPortal == null) {
			return;
		}
		if (databaseConnectWindow.dbPortal.isConnected() == false) {
			return;
		}
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_username, operator_password, " + 
				"operator_first_name, operator_last_name FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId);
		
		if ((rs == null) || (databaseConnectWindow.dbPortal.getLastError() != null)) {
			return;
		}
		
		try {
			
			
		}
		catch (Exception ex) {			
		}		
	}

}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SpringLayout;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JPanel panel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setText("Âõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		//databaseConnectWindow.main(null);
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				//FIXME mainWindowPointer.Operations.setEnabled(true);
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				//FIXME mainWindowPointer.Operations.setEnabled(false);
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finallize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);			
		}
	}
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		operatorUserLogin oul = new operatorUserLogin();
		oul.setVisible(true);
//		oul.addWindowListener(l)
	}
	
}
import java.awt.EventQueue;
import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import java.sql.ResultSet;
import database_management.MySQLdbManager;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 214);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 97, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(93, 140, 106, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
	}
	
	private void getCurrentUserData() {
		
		if (databaseConnectWindow.dbPortal == null) {
			return;
		}
		if (databaseConnectWindow.dbPortal.isConnected() == false) {
			return;
		}
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_username, operator_password, " + 
				"operator_first_name, operator_last_name FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId);
		
		if ((rs == null) || (databaseConnectWindow.dbPortal.getLastError() != null)) {
			return;
		}
		
		try {
			
		}
		catch (Exception ex) {
			
		}		
	}

}
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.WindowConstants;
import javax.swing.border.EtchedBorder;
import javax.swing.border.TitledBorder;


public class operatorUserLogin extends JFrame {

	private final JPanel groupLoginPanel = new JPanel();
	private final JPanel groupCreateNewUserPanel = new JPanel();
	
	public static int loggedUserId = -1;
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLogin frame = new operatorUserLogin();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLogin() {
		super();
		setBounds(100, 100, 518, 269);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Âõîä íà îïåðàòîð");
		setName("operatorLogin");
		setResizable(false);
		setAlwaysOnTop(true);
		
		getContentPane().add(groupLoginPanel);
		groupLoginPanel.setBorder(new TitledBorder(null, "Âõîä:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupLoginPanel.setBounds(10, 10, 243, 213);
		
		getContentPane().add(groupCreateNewUserPanel);
		groupCreateNewUserPanel.setBorder(new TitledBorder(null, "Íîâ îïåðàòîð:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupCreateNewUserPanel.setBounds(263, 10, 243, 213);
	}

}
import java.awt.EventQueue;
import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;


public class operatorUserSettingsWindow extends JFrame {

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JTextField textField = new JTextField();
	private final JTextField textField_1 = new JTextField();
	private final JPasswordField passwordField = new JPasswordField();
	private final JPasswordField passwordField_1 = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 214);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 97, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(93, 140, 106, 26);
		
		getContentPane().add(textField);
		textField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(textField_1);
		textField_1.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordField);
		passwordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordField_1);
		passwordField_1.setBounds(113, 97, 175, 20);
	}

}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SpringLayout;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JPanel panel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setText("Âõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		//databaseConnectWindow.main(null);
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				//FIXME mainWindowPointer.Operations.setEnabled(true);
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				//FIXME mainWindowPointer.Operations.setEnabled(false);
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finallize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);			
		}
	}
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		operatorUserLoginWindow oul = new operatorUserLoginWindow();
		oul.setVisible(true);
//		oul.addWindowListener(l)
	}
	
}
import javax.swing.JButton;

		EventQueue.invokeLater(new Runnable() {
		});
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				dbPortal.finallize();
					}					
					dbPortal.finallize();
		dbPortal.setMySqlActiveDatabase("");
		
			dbPortal.finallize();
				"operator_username nvarchar(20) NOT NULL, operator_password nvarchar(20) NOT NULL," + 
	}

import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SpringLayout;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JPanel panel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserSettings.setText("Âõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		//databaseConnectWindow.main(null);
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				//FIXME mainWindowPointer.Operations.setEnabled(true);
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				//FIXME mainWindowPointer.Operations.setEnabled(false);
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finallize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);			
		}
	}
	
}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SpringLayout;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JPanel panel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setText("Âõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		//databaseConnectWindow.main(null);
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				//FIXME mainWindowPointer.Operations.setEnabled(true);
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				//FIXME mainWindowPointer.Operations.setEnabled(false);
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finallize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);			
		}
	}
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
	}
	
}
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SpringLayout;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JPanel panel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserSettings.setText("Âõîä");
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		//databaseConnectWindow.main(null);
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				mainWindowPointer.Operations.setEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				mainWindowPointer.Operations.setEnabled(false);
    			}
    		}            
        }
    };
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finallize();
			this.Operations.setEnabled(false);
			this.FileDisconnectFromDb.setEnabled(false);
			this.FileConnectToDb.setEnabled(true);
		}
	}
	
}
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BoxLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JPanel panel = new JPanel();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(0, 20));
		mainWindowStatusPanel.setBounds(0, 357, 666, 40);		
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		//databaseConnectWindow.main(null);
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				mainWindowPointer.Operations.setEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				mainWindowPointer.Operations.setEnabled(false);
    			}
    		}            
        }
    };
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finallize();
			this.Operations.setEnabled(false);
			this.FileDisconnectFromDb.setEnabled(false);
			this.FileConnectToDb.setEnabled(true);
		}
	}
	
}
import java.awt.EventQueue;
import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import java.sql.ResultSet;
import database_management.MySQLdbManager;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();
	
	private String currentOperatorPassword;
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 214);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 97, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(93, 140, 106, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
	}
	
	private void getCurrentUserData() {
		
		if (databaseConnectWindow.dbPortal == null) {
			return;
		}
		if (databaseConnectWindow.dbPortal.isConnected() == false) {
			return;
		}
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_username, operator_password, " + 
				"operator_first_name, operator_last_name FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId);
		
		if ((rs == null) || (databaseConnectWindow.dbPortal.getLastError() != null)) {
			return;
		}
		
		try {
			
			rs.getString(1);
			currentOperatorPassword = rs.getString(2);
			rs.getString(3);
			rs.getString(4);
		}
		catch (Exception ex) {			
		}		
	}

}
import java.awt.FlowLayout;
	private final JPanel panel = new JPanel();
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserSettings.setText("Âõîä");
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
		//databaseConnectWindow.main(null);
			databaseConnectWindow.dbPortal.finallize();
			this.mainWindowStatusPanelSetEnabled(false);			
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SpringLayout;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JPanel panel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setText("Âõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		//databaseConnectWindow.main(null);
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				//FIXME mainWindowPointer.Operations.setEnabled(true);
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				//FIXME mainWindowPointer.Operations.setEnabled(false);
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finallize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);			
		}
	}
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		operatorUserLoginWindow oul = new operatorUserLoginWindow();
		oul.setVisible(true);
		oul.addWindowListener(operatorUserLoginWindowClosing);
	}
	private static WindowListener operatorUserLoginWindowClosing = new WindowAdapter() {

		public void windowClosing(WindowEvent e) {
			
		}
	}
	
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JOptionPane;

import database_management.MySQLdbManager;

public class databaseConnectWindow extends JFrame {

	private final JLabel label = new JLabel();
	private final JLabel label_1 = new JLabel();
	private final JLabel label_2 = new JLabel();
	private final JLabel label_3 = new JLabel();
	private final JLabel label_4 = new JLabel();
	private final JButton connectToDatabaseButton = new JButton();
	private final JTextField mysqlServerAddressTextField = new JTextField();
	private final JTextField mysqlPortTextField = new JTextField();
	private final JTextField mysqlDatabaseNameTextField = new JTextField();
	private final JTextField mysqlUsernameTextField = new JTextField();
	private final JPasswordField mysqlPasswordPasswordField = new JPasswordField();
	public static MySQLdbManager dbPortal = null;
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					databaseConnectWindow frame = new databaseConnectWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public databaseConnectWindow() {
		super();
		setBounds(100, 100, 384, 203);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setAlwaysOnTop(true);
		setResizable(false);
		setTitle("Ñâúðçâàíå ñ áàçàòà äàííè");
		setName("databaseConnectWindowFrame");
		
		getContentPane().add(label);
		label.setText("Àäðåñ íà MySQL ñúðâúðà:");
		label.setBounds(10, 10, 165, 16);
		
		getContentPane().add(label_1);
		label_1.setText("Èìå íà áàçàòà äàííè:");
		label_1.setBounds(10, 54, 165, 16);
		
		getContentPane().add(label_2);
		label_2.setText("Ïîðò:");
		label_2.setBounds(10, 32, 156, 16);
		
		getContentPane().add(label_3);
		label_3.setText("Ïîòðåáèòåëñêî èìå:");
		label_3.setBounds(10, 76, 165, 16);
		
		getContentPane().add(label_4);
		label_4.setText("Ïàðîëà:");
		label_4.setBounds(10, 98, 156, 16);
		
		getContentPane().add(connectToDatabaseButton);
		connectToDatabaseButton.addActionListener(new ConnectToDatabaseButtonActionListener());
		connectToDatabaseButton.setText("Ñâúðæè ñå!");
		connectToDatabaseButton.setBounds(132, 135, 106, 26);
		
		getContentPane().add(mysqlServerAddressTextField);
		mysqlServerAddressTextField.setText("127.0.0.1");
		mysqlServerAddressTextField.setBounds(181, 8, 185, 20);
		
		getContentPane().add(mysqlPortTextField);
		mysqlPortTextField.setText("3306");
		mysqlPortTextField.setBounds(181, 30, 91, 20);
		
		getContentPane().add(mysqlDatabaseNameTextField);
		mysqlDatabaseNameTextField.setText("shop");
		mysqlDatabaseNameTextField.setBounds(181, 52, 181, 20);
		
		getContentPane().add(mysqlUsernameTextField);
		mysqlUsernameTextField.setText("root");
		mysqlUsernameTextField.setBounds(181, 76, 180, 18);
		
		getContentPane().add(mysqlPasswordPasswordField);
		mysqlPasswordPasswordField.setBounds(181, 96, 181, 20);
	}
	private class ConnectToDatabaseButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			connectToDatabaseButton_actionPerformed(e);
		}
	}
	protected void connectToDatabaseButton_actionPerformed(ActionEvent e) {
		
		String password = "";
		
		char [] pass = mysqlPasswordPasswordField.getPassword();
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		dbPortal = new MySQLdbManager(mysqlServerAddressTextField.getText(),
				mysqlDatabaseNameTextField.getText(), Integer.parseInt(mysqlPortTextField.getText()),
				mysqlUsernameTextField.getText(), password);		
		
		
		if (dbPortal.connect() == false) { //now check for database name that is not existing
			
			dbPortal.setMySqlActiveDatabase("");
			dbPortal.disconnect(); //just in case
			
			if (dbPortal.connect() == false) { //connection settings problem or not running MySQL server
				dbPortal.finallize();
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
						"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);
				
				return;
			}
			else { //will have to create new database
				
				dbPortal.disconnect();
				
				if (JOptionPane.showConfirmDialog(this, "Ùå áúäå ñúçäàäåíà íîâà áàçà äàííè ñ èìå: " + mysqlDatabaseNameTextField.getText() +
						".\nÑèãóðíè ëè ñòå?", "Ñúçäàâàíå íà íîâà áàçà äàííè?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
					
					createNewDatabaseAndTables();
				}
				else {
				
					dbPortal.finallize();
					return;
				}
				
				this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
			}			
		}
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	private void createNewDatabaseAndTables() {
		
		dbPortal.setMySqlActiveDatabase("");
		
		if (dbPortal.connect() == false) {
			
			dbPortal.finallize();
		}
		
	}

}
import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BoxLayout;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JPanel panel = new JPanel();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(0, 0));
		mainWindowStatusPanel.setBounds(0, 357, 666, 40);		
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.disconnect();
				databaseConnectWindow.dbPortal.finallize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		//databaseConnectWindow.main(null);
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				mainWindowPointer.Operations.setEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				mainWindowPointer.Operations.setEnabled(false);
    			}
    		}            
        }
    };
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finallize();
			this.Operations.setEnabled(false);
			this.FileDisconnectFromDb.setEnabled(false);
			this.FileConnectToDb.setEnabled(true);
		}
	}
	
}
import java.awt.EventQueue;
import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import database_management.MySQLdbManager;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JTextField textField = new JTextField();
	private final JTextField textField_1 = new JTextField();
	private final JPasswordField passwordField = new JPasswordField();
	private final JPasswordField passwordField_1 = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 214);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 97, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(93, 140, 106, 26);
		
		getContentPane().add(textField);
		textField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(textField_1);
		textField_1.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordField);
		passwordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordField_1);
		passwordField_1.setBounds(113, 97, 175, 20);
	}

}
import java.awt.EventQueue;
import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import database_management.MySQLdbManager;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 214);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 97, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(93, 140, 106, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
	}

}
#safe table
#Sun Jan 13 13:28:17 EET 2013
statecache=statecache14
#Sun Jan 13 13:28:20 EET 2013
org.eclipse.mylyn.monitor.ui.events.observed=5789
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;operatorUserSettingsWindow.launch&quot;/&gt;&#13;&#10;"/>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;operatorUserSettingsWindow.launch&quot;/&gt;&#13;&#10;"/>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;operatorUserSettingsWindow.launch&quot;/&gt;&#13;&#10;"/>
1164253737.index
2022660347.index
492272455.index
<workbench progressCount="45" version="2.0">
<coolItem id="org.eclipse.ui.edit.text.actionSet.presentation" itemType="typeToolBarContribution" x="84" y="22"/>
<coolItem id="org.eclipse.jdt.ui.CompilationUnitEditor" itemType="typeToolBarContribution" x="-1" y="-1"/>
<coolItem id="com.swtdesigner.editors.MultiPageEditor" itemType="typePlaceholder" x="61" y="22"/>
<editor activePart="true" focus="true" id="org.eclipse.jdt.ui.CompilationUnitEditor" name="MySQLdbManager.java" partName="MySQLdbManager.java" path="D:/Drugi/Docs/PU/3 kurs/2 trimestur/Kursov Proekt 2/eShop/eShop/src/database_management/MySQLdbManager.java" title="MySQLdbManager.java" tooltip="eShop/src/database_management/MySQLdbManager.java" workbook="DefaultEditorWorkbook">
<input factoryID="org.eclipse.ui.part.FileEditorInputFactory" path="/eShop/src/database_management/MySQLdbManager.java"/>
<editorState selectionLength="0" selectionOffset="11076"/>
<view id="org.eclipse.jdt.ui.JavadocView" partName="Javadoc"/>
<view id="org.eclipse.ui.views.TaskList" partName="Tasks"/>
<view id="org.eclipse.jdt.ui.SourceView" partName="Declaration"/>
<expanded>
<category IMemento.internal.id="Warnings"/>
<category IMemento.internal.id="Errors"/>
</expanded>
<columnWidths org.eclipse.ui.ide.locationField="64" org.eclipse.ui.ide.markerType="94" org.eclipse.ui.ide.pathField="124" org.eclipse.ui.ide.resourceField="94" org.eclipse.ui.ide.severityAndDescriptionField="447"/>
<perspectives activePart="org.eclipse.jdt.ui.CompilationUnitEditor" activePerspective="org.eclipse.jdt.ui.JavaPerspective">
<fastViewBar fastViewLocation="1024" id="bottom" orientation="256" selectedTabId="org.eclipse.ui.views.ProblemView" style="0">
<fastViews>
<view id="org.eclipse.ui.views.ProblemView" ratio="0.3"/>
<view id="org.eclipse.jdt.ui.JavadocView" ratio="0.3"/>
<view id="org.eclipse.jdt.ui.SourceView" ratio="0.3"/>
<view id="org.eclipse.ui.console.ConsoleView" ratio="0.2985782"/>
</fastViews>
</fastViewBar>
<info part="org.eclipse.ui.editorss" ratio="0.11299001" ratioLeft="147" ratioRight="1154" relationship="2" relative="left"/>
<folder appearance="2" expanded="0">
<page content="org.eclipse.ui.views.ProblemView" label="LabelNotFound"/>
<page content="org.eclipse.jdt.ui.JavadocView" label="LabelNotFound"/>
<page content="org.eclipse.jdt.ui.SourceView" label="LabelNotFound"/>
<page content="org.eclipse.ui.console.ConsoleView" label="LabelNotFound"/>
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory"/>
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.swtdesigner.editors.MultiPageEditor" path="/eShop/src/mainWindow.java"/>
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.jdt.ui.CompilationUnitEditor" path="/eShop/src/operatorUserLoginWindow.java"/>
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.swtdesigner.editors.MultiPageEditor" path="/eShop/src/operatorUserLoginWindow.java"/>
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.jdt.ui.CompilationUnitEditor" path="/eShop/src/database_management/MySQLdbManager.java"/>
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.jdt.ui.CompilationUnitEditor" path="/eShop/src/database_management/MySQLdbManager.java"/>
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.swtdesigner.editors.MultiPageEditor" path="/eShop/src/operatorUserLoginWindow.java"/>
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.swtdesigner.editors.MultiPageEditor" path="/eShop/src/databaseConnectWindow.java"/>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9165" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9361" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9291" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9165" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9345" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9414" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9391" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9488" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9431" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9685" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9808" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9913" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9685" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9913" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="9685" y="0"/>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="10236" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="10308" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="1">
<position info="not_deleted" x="10362" y="0"/>
</item>
<item historyLabel="mainWindow.java" index="0">
<position info="not_deleted" x="11511" y="0"/>
</item>
<item historyLabel="operatorUserLoginWindow.java" index="2">
<position info="not_deleted" x="7808" y="0"/>
<item historyLabel="mainWindow.java" index="0">
<position info="not_deleted" x="11511" y="0"/>
<item historyLabel="MySQLdbManager.java" index="3">
<position info="not_deleted" x="82" y="0"/>
<item historyLabel="mainWindow.java" index="0">
<position info="not_deleted" x="11511" y="0"/>
<item historyLabel="MySQLdbManager.java" index="4">
<position info="not_deleted" x="4" y="0"/>
<item historyLabel="mainWindow.java" index="0">
<item historyLabel="operatorUserLoginWindow.java" index="5">
<item historyLabel="mainWindow.java" index="0">
<item historyLabel="databaseConnectWindow.java" index="6">
<item historyLabel="mainWindow.java" index="0">
<position info="not_deleted" x="12368" y="7"/>
</item>
<item historyLabel="mainWindow.java" index="0">
<position info="not_deleted" x="3971" y="0"/>
<item historyLabel="MySQLdbManager.java" index="7">
<position info="not_deleted" x="38" y="0"/>
<item historyLabel="mainWindow.java" index="0">
<position info="not_deleted" x="13978" y="0"/>
<item historyLabel="MySQLdbManager.java" index="7">
<position info="not_deleted" x="680" y="0"/>
<item historyLabel="mainWindow.java" index="0">
<item historyLabel="MySQLdbManager.java" index="7">
<position info="not_deleted" x="11408" y="0"/>
<item historyLabel="mainWindow.java" index="0">
<position info="not_deleted" x="13824" y="0"/>
<item historyLabel="databaseConnectWindow.java" index="8">
<position info="not_deleted" x="4577" y="8"/>
<item historyLabel="databaseConnectWindow.java" index="8">
<position info="not_deleted" x="5302" y="8"/>
<item historyLabel="databaseConnectWindow.java" index="8">
<position info="not_deleted" x="4581" y="0"/>
<item historyLabel="databaseConnectWindow.java" index="8">
<position info="not_deleted" x="5881" y="0"/>
<item historyLabel="databaseConnectWindow.java" index="8">
<position info="not_deleted" x="6148" y="8"/>
<item historyLabel="databaseConnectWindow.java" index="8">
<position info="not_deleted" x="6986" y="0"/>
<item historyLabel="mainWindow.java" index="0">
<position info="not_deleted" x="9698" y="0"/>
<item historyLabel="mainWindow.java" index="0">
<position info="not_deleted" x="11493" y="0"/>
<item historyLabel="databaseConnectWindow.java" index="8">
<position info="not_deleted" x="4577" y="8"/>
<item historyLabel="MySQLdbManager.java" index="7">
<position info="not_deleted" x="11076" y="0"/>
<item historyLabel="databaseConnectWindow.java" index="8">
<position info="not_deleted" x="4081" y="0"/>
<item historyLabel="mainWindow.java" index="0">
<position info="not_deleted" x="11493" y="0"/>
<item historyLabel="databaseConnectWindow.java" index="8">
<position info="not_deleted" x="4081" y="0"/>
<item active="true" historyLabel="MySQLdbManager.java" index="7">
<position info="not_deleted" x="11076" y="0"/>
<trimItem IMemento.internal.id="left"/>
<trimItem IMemento.internal.id="org.eclipse.ui.editorss"/>
<trimItem IMemento.internal.id="bottom"/>
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.jdt.ui.CompilationUnitEditor" name="MySQLdbManager.java" tooltip="eShop/src/database_management/MySQLdbManager.java">
<persistable path="/eShop/src/database_management/MySQLdbManager.java"/>
</file>
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.swtdesigner.editors.MultiPageEditor" name="operatorUserSettingsWindow.java" tooltip="eShop/src/operatorUserSettingsWindow.java">
<persistable path="/eShop/src/operatorUserSettingsWindow.java"/>
</file>
<file factoryID="org.eclipse.jdt.ui.ClassFileEditorInputFactory" id="org.eclipse.jdt.ui.ClassFileEditor" name="StringBuilder.class" tooltip="java.lang.StringBuilder">
<persistable org.eclipse.jdt.ui.ClassFileIdentifier="=eShop/C:\/JBuilder2008R2\/jre\/jre\/lib\/rt.jar&lt;java.lang(StringBuilder.class"/>
</file>
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.swtdesigner.editors.MultiPageEditor" name="operatorUserLogin.java" tooltip="eShop/src/operatorUserLogin.java">
<persistable path="/eShop/src/operatorUserLogin.java"/>
import md5_calculator.Md5hashcalc;
	 * @param mySqlServerAddress String MySQL server IP address ot HOSTNAME
import java.awt.FlowLayout;
import java.awt.GridLayout;
import javax.swing.BoxLayout;
import javax.swing.JComponent;
import javax.swing.JSeparator;
import javax.swing.SpringLayout;
import javax.swing.border.BevelBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import database_management.MySQLdbManager;
	private final JPanel panel = new JPanel();
import javax.crypto.*;

import database_management.MySQLdbManager;
	public static String loggedUserNames = "";
	private final JLabel newPasswordAgainLabel = new JLabel();
	private final JPasswordField newPasswordPasswordAgainField = new JPasswordField();
				//FIXME prone to sql injection
				
					rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_id, operator_first_name, operator_last_name FROM operators WHERE" + 
						" operator_username='" + loginUsernameTextField.getText() + "' AND operator_password='" +
						Md5hashcalc.calculateMD5hash(password) + "'");
					//FIXME prone to sql injection
					ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT COUNT(*) FROM operators WHERE operator_username='" +
							newUsernameTextField.getText() + "'");
						//FIXME prone to sql injection
						if (databaseConnectWindow.dbPortal.executeNonQuery("INSERT INTO operators(operator_username, operator_password, " +
								"operator_first_name, operator_last_name) VALUES('" + newUsernameTextField.getText() + "', '" +
								encryptedPassword + "', '" + newFirstNameTextField.getText() + "', '" + newLastNameTextField.getText() + "')") != 1) {
import database_management.MySQLdbManager;
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();
	public static String operatorFirstNameLastNameCombination = "";
	private final JButton deleteOperator = new JButton();
		//FIXME prone to sql injection
		if (databaseConnectWindow.dbPortal.executeNonQuery("UPDATE operators SET operator_password='" + currentOperatorPassword +
				"', operator_first_name='" + firstNameTextField.getText() + "', operator_last_name='" + 
				lastNameTextField.getText() + "' WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {
		//if (databaseConnectWindow.dbPortal.getLastError() != null) {
			

Fixed code:
!SESSION 2013-01-13 17:51:13.371 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.5.0_12
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=bg_BG
Command-line arguments:  -os win32 -ws win32 -arch x86

!ENTRY org.eclipse.ui.workbench 2 0 2013-01-13 17:56:29.885
!MESSAGE A handler conflict occurred.  This may disable some commands.
!SUBENTRY 1 org.eclipse.ui.workbench 2 0 2013-01-13 17:56:29.885
!MESSAGE Conflict for 'AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action6':
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action6,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScriptForEmail),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@180e7a4),sourcePriority=16384)
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action6,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScriptForEmail),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@180e7a4),sourcePriority=16384)
!SUBENTRY 1 org.eclipse.ui.workbench 2 0 2013-01-13 17:56:29.885
!MESSAGE Conflict for 'AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action2':
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action2,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScriptForBlogger),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@180e7a4),sourcePriority=16384)
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action2,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScriptForBlogger),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@180e7a4),sourcePriority=16384)
!SUBENTRY 1 org.eclipse.ui.workbench 2 0 2013-01-13 17:56:29.885
!MESSAGE Conflict for 'AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action4':
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action4,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScriptForWiki),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@180e7a4),sourcePriority=16384)
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action4,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScriptForWiki),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@180e7a4),sourcePriority=16384)
!SUBENTRY 1 org.eclipse.ui.workbench 2 0 2013-01-13 17:56:29.885
!MESSAGE Conflict for 'AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action5':
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action5,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScript),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@180e7a4),sourcePriority=16384)
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action5,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScript),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@180e7a4),sourcePriority=16384)

!ENTRY org.eclipse.ui.workbench 4 0 2013-01-13 20:22:29.167
!MESSAGE Cannot set a null prefix table
!STACK 0
java.lang.NullPointerException: Cannot set a null prefix table
	at org.eclipse.jface.bindings.CachedBindingSet.setPrefixTable(CachedBindingSet.java:346)
	at org.eclipse.jface.bindings.BindingManager.recomputeBindings(BindingManager.java:1765)
	at org.eclipse.jface.bindings.BindingManager.contextManagerChanged(BindingManager.java:689)
	at org.eclipse.core.commands.contexts.ContextManager.fireContextManagerChanged(ContextManager.java:152)
	at org.eclipse.core.commands.contexts.ContextManager.removeActiveContext(ContextManager.java:232)
	at org.eclipse.ui.internal.contexts.ContextAuthority.updateContext(ContextAuthority.java:767)
	at org.eclipse.ui.internal.contexts.ContextAuthority.deactivateContext(ContextAuthority.java:362)
	at org.eclipse.ui.internal.contexts.ContextService.deactivateContext(ContextService.java:140)
	at org.eclipse.ui.internal.contexts.ContextService.deactivateContexts(ContextService.java:154)
	at org.eclipse.ui.internal.contexts.SlaveContextService.dispose(SlaveContextService.java:240)
	at org.eclipse.ui.internal.services.ServiceLocator.dispose(ServiceLocator.java:142)
	at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1627)
	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:722)
	at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:698)
	at org.eclipse.ui.internal.WorkbenchWindow$3.run(WorkbenchWindow.java:814)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:812)
	at org.eclipse.jface.window.WindowManager.close(WindowManager.java:109)
	at org.eclipse.ui.internal.Workbench$16.run(Workbench.java:912)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:909)
	at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:838)
	at org.eclipse.ui.internal.Workbench$23.run(Workbench.java:1082)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1080)
	at org.eclipse.ui.internal.Workbench.restart(Workbench.java:2054)
	at org.eclipse.ui.internal.ide.actions.OpenWorkspaceAction.restart(OpenWorkspaceAction.java:237)
	at org.eclipse.ui.internal.ide.actions.OpenWorkspaceAction.access$0(OpenWorkspaceAction.java:229)
	at org.eclipse.ui.internal.ide.actions.OpenWorkspaceAction$WorkspaceMRUAction.run(OpenWorkspaceAction.java:94)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:583)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:500)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3823)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3422)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
!SESSION 2013-01-13 20:54:10.803 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.5.0_12
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=bg_BG
Command-line arguments:  -os win32 -ws win32 -arch x86 -data D:\Drugi\Docs\PU\3 kurs\2 trimestur\Kursov Proekt 2\eShop\

!ENTRY org.eclipse.ui.workbench 2 0 2013-01-13 20:56:01.828
!MESSAGE A handler conflict occurred.  This may disable some commands.
!SUBENTRY 1 org.eclipse.ui.workbench 2 0 2013-01-13 20:56:01.828
!MESSAGE Conflict for 'AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action6':
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action6,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScriptForEmail),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@88a970),sourcePriority=16384)
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action6,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScriptForEmail),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@88a970),sourcePriority=16384)
!SUBENTRY 1 org.eclipse.ui.workbench 2 0 2013-01-13 20:56:01.828
!MESSAGE Conflict for 'AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action2':
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action2,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScriptForBlogger),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@88a970),sourcePriority=16384)
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action2,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScriptForBlogger),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@88a970),sourcePriority=16384)
!SUBENTRY 1 org.eclipse.ui.workbench 2 0 2013-01-13 20:56:01.828
!MESSAGE Conflict for 'AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action4':
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action4,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScriptForWiki),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@88a970),sourcePriority=16384)
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action4,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScriptForWiki),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@88a970),sourcePriority=16384)
!SUBENTRY 1 org.eclipse.ui.workbench 2 0 2013-01-13 20:56:01.828
!MESSAGE Conflict for 'AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action5':
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action5,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScript),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@88a970),sourcePriority=16384)
HandlerActivation(commandId=AUTOGEN:::org.eclipse.eclipsemonkey.emFileContextMenu/org.eclipse.eclipsemonkey.action5,
	handler=ActionDelegateHandlerProxy(null,org.eclipse.eclipsemonkey.actions.PublishScript),
	expression=WorkbenchWindowExpression(org.eclipse.ui.internal.WorkbenchWindow@88a970),sourcePriority=16384)

!ENTRY org.eclipse.ui.workbench 4 0 2013-01-13 21:27:29.686
!MESSAGE Cannot set a null prefix table
!STACK 0
java.lang.NullPointerException: Cannot set a null prefix table
	at org.eclipse.jface.bindings.CachedBindingSet.setPrefixTable(CachedBindingSet.java:346)
	at org.eclipse.jface.bindings.BindingManager.recomputeBindings(BindingManager.java:1765)
	at org.eclipse.jface.bindings.BindingManager.contextManagerChanged(BindingManager.java:689)
	at org.eclipse.core.commands.contexts.ContextManager.fireContextManagerChanged(ContextManager.java:152)
	at org.eclipse.core.commands.contexts.ContextManager.removeActiveContext(ContextManager.java:232)
	at org.eclipse.ui.internal.contexts.ContextAuthority.updateContext(ContextAuthority.java:767)
	at org.eclipse.ui.internal.contexts.ContextAuthority.deactivateContext(ContextAuthority.java:362)
	at org.eclipse.ui.internal.contexts.ContextService.deactivateContext(ContextService.java:140)
	at org.eclipse.ui.internal.contexts.ContextService.deactivateContexts(ContextService.java:154)
	at org.eclipse.ui.internal.contexts.SlaveContextService.dispose(SlaveContextService.java:240)
	at org.eclipse.ui.internal.services.ServiceLocator.dispose(ServiceLocator.java:142)
	at org.eclipse.ui.internal.WorkbenchWindow.hardClose(WorkbenchWindow.java:1627)
	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:722)
	at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:698)
	at org.eclipse.ui.internal.WorkbenchWindow$3.run(WorkbenchWindow.java:814)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:812)
	at org.eclipse.jface.window.WindowManager.close(WindowManager.java:109)
	at org.eclipse.ui.internal.Workbench$16.run(Workbench.java:912)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:909)
	at org.eclipse.ui.internal.Workbench.access$15(Workbench.java:838)
	at org.eclipse.ui.internal.Workbench$23.run(Workbench.java:1082)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1080)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1052)
	at org.eclipse.ui.internal.WorkbenchWindow.busyClose(WorkbenchWindow.java:719)
	at org.eclipse.ui.internal.WorkbenchWindow.access$0(WorkbenchWindow.java:698)
	at org.eclipse.ui.internal.WorkbenchWindow$3.run(WorkbenchWindow.java:814)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchWindow.close(WorkbenchWindow.java:812)
	at org.eclipse.jface.window.Window.handleShellCloseEvent(Window.java:741)
	at org.eclipse.jface.window.Window$3.shellClosed(Window.java:687)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:92)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1027)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1012)
	at org.eclipse.swt.widgets.Decorations.closeWidget(Decorations.java:307)
	at org.eclipse.swt.widgets.Decorations.WM_CLOSE(Decorations.java:1643)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3789)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1576)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1937)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2366)
	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:477)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3877)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1576)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1937)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528)
	at org.eclipse.swt.internal.win32.OS.DefWindowProcW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DefWindowProc(OS.java:2366)
	at org.eclipse.swt.widgets.Shell.callWindowProc(Shell.java:477)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3877)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:337)
	at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1576)
	at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:1937)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4528)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2371)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3420)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2382)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2346)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2198)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:493)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:488)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:386)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:07:47.229 EET</date>
	<endDate>2013-01-13 18:07:47.229 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:07:54.106 EET</date>
	<endDate>2013-01-13 18:07:54.106 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:10:47.290 EET</date>
	<endDate>2013-01-13 18:10:47.290 EET</endDate>
	<originId>org.eclipse.ui.edit.text.toggleOverwrite</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:10:49.270 EET</date>
	<endDate>2013-01-13 18:10:49.270 EET</endDate>
	<originId>org.eclipse.ui.edit.text.toggleOverwrite</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:10:49.961 EET</date>
	<endDate>2013-01-13 18:10:49.961 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:13:24.529 EET</date>
	<endDate>2013-01-13 18:13:24.529 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:15:14.497 EET</date>
	<endDate>2013-01-13 18:15:14.497 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:16:17.61 EET</date>
	<endDate>2013-01-13 18:16:17.61 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:18:14.652 EET</date>
	<endDate>2013-01-13 18:18:14.652 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:21:35.447 EET</date>
	<endDate>2013-01-13 18:21:35.447 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:21:50.122 EET</date>
	<endDate>2013-01-13 18:21:50.122 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:22:02.282 EET</date>
	<endDate>2013-01-13 18:22:02.282 EET</endDate>
	<originId>org.eclipse.ui.edit.copy</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:22:08.3 EET</date>
	<endDate>2013-01-13 18:22:08.3 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:22:22.742 EET</date>
	<endDate>2013-01-13 18:22:22.742 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:22:33.683 EET</date>
	<endDate>2013-01-13 18:22:33.683 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:22:35.651 EET</date>
	<endDate>2013-01-13 18:22:35.651 EET</endDate>
	<originId>org.eclipse.ui.edit.undo</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:22:51.795 EET</date>
	<endDate>2013-01-13 18:22:51.795 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:24:08.335 EET</date>
	<endDate>2013-01-13 18:24:08.335 EET</endDate>
	<originId>org.eclipse.ui.edit.copy</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:24:12.891 EET</date>
	<endDate>2013-01-13 18:24:12.891 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:25:45.645 EET</date>
	<endDate>2013-01-13 18:25:45.645 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:25:46.847 EET</date>
	<endDate>2013-01-13 18:25:46.847 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:26:14.282 EET</date>
	<endDate>2013-01-13 18:26:14.282 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:29:35.655 EET</date>
	<endDate>2013-01-13 18:29:35.655 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:32:48.401 EET</date>
	<endDate>2013-01-13 18:32:48.401 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:32:50.589 EET</date>
	<endDate>2013-01-13 18:32:50.589 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:32:50.834 EET</date>
	<endDate>2013-01-13 18:32:50.834 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:32:51.95 EET</date>
	<endDate>2013-01-13 18:32:51.95 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:32:51.404 EET</date>
	<endDate>2013-01-13 18:32:51.404 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:32:52.699 EET</date>
	<endDate>2013-01-13 18:32:52.699 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:33:36.910 EET</date>
	<endDate>2013-01-13 18:33:36.910 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:36:01.422 EET</date>
	<endDate>2013-01-13 18:36:01.422 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:36:07.575 EET</date>
	<endDate>2013-01-13 18:36:07.575 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:36:12.535 EET</date>
	<endDate>2013-01-13 18:36:12.535 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:36:18.977 EET</date>
	<endDate>2013-01-13 18:36:18.977 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:36:20.527 EET</date>
	<endDate>2013-01-13 18:36:20.527 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:37:19.824 EET</date>
	<endDate>2013-01-13 18:37:19.824 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:39:22.718 EET</date>
	<endDate>2013-01-13 18:39:22.718 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:39:41.818 EET</date>
	<endDate>2013-01-13 18:39:41.818 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:40:13.554 EET</date>
	<endDate>2013-01-13 18:40:13.554 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:43:30.252 EET</date>
	<endDate>2013-01-13 18:43:30.252 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:44:03.236 EET</date>
	<endDate>2013-01-13 18:44:03.236 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:45:15.743 EET</date>
	<endDate>2013-01-13 18:45:15.743 EET</endDate>
	<originId>org.eclipse.ui.edit.text.contentAssist.proposals</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:45:55.483 EET</date>
	<endDate>2013-01-13 18:45:55.483 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:47:02.698 EET</date>
	<endDate>2013-01-13 18:47:02.698 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:47:02.905 EET</date>
	<endDate>2013-01-13 18:47:02.905 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:47:03.137 EET</date>
	<endDate>2013-01-13 18:47:03.137 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:47:03.382 EET</date>
	<endDate>2013-01-13 18:47:03.382 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:47:03.583 EET</date>
	<endDate>2013-01-13 18:47:03.583 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:48:17.452 EET</date>
	<endDate>2013-01-13 18:48:17.452 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:48:17.733 EET</date>
	<endDate>2013-01-13 18:48:17.733 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:48:20.68 EET</date>
	<endDate>2013-01-13 18:48:20.68 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:48:29.198 EET</date>
	<endDate>2013-01-13 18:48:29.198 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:48:38.659 EET</date>
	<endDate>2013-01-13 18:48:38.659 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:48:40.987 EET</date>
	<endDate>2013-01-13 18:48:40.987 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:48:41.883 EET</date>
	<endDate>2013-01-13 18:48:41.883 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:48:41.954 EET</date>
	<endDate>2013-01-13 18:48:41.954 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:48:42.274 EET</date>
	<endDate>2013-01-13 18:48:42.274 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:48:42.527 EET</date>
	<endDate>2013-01-13 18:48:42.527 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:48:42.880 EET</date>
	<endDate>2013-01-13 18:48:42.880 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:48:50.86 EET</date>
	<endDate>2013-01-13 18:48:50.86 EET</endDate>
	<originId>org.eclipse.ui.edit.text.contentAssist.proposals</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:50:15.243 EET</date>
	<endDate>2013-01-13 18:50:15.243 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:50:38.86 EET</date>
	<endDate>2013-01-13 18:50:38.86 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:50:55.61 EET</date>
	<endDate>2013-01-13 18:50:55.61 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:50:57.268 EET</date>
	<endDate>2013-01-13 18:50:57.268 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:53:16.209 EET</date>
	<endDate>2013-01-13 18:53:16.209 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:53:17.803 EET</date>
	<endDate>2013-01-13 18:53:17.803 EET</endDate>
	<originId>org.eclipse.ui.edit.text.contentAssist.proposals</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:55:18.811 EET</date>
	<endDate>2013-01-13 18:55:18.811 EET</endDate>
	<originId>org.eclipse.ui.edit.text.toggleOverwrite</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:55:19.126 EET</date>
	<endDate>2013-01-13 18:55:19.126 EET</endDate>
	<originId>org.eclipse.ui.edit.text.toggleOverwrite</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:55:25.353 EET</date>
	<endDate>2013-01-13 18:55:25.353 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:56:07.727 EET</date>
	<endDate>2013-01-13 18:56:07.727 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:56:07.893 EET</date>
	<endDate>2013-01-13 18:56:07.893 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:56:08.67 EET</date>
	<endDate>2013-01-13 18:56:08.67 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:56:10.137 EET</date>
	<endDate>2013-01-13 18:56:10.137 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:57:13.630 EET</date>
	<endDate>2013-01-13 18:57:13.630 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:57:21.636 EET</date>
	<endDate>2013-01-13 18:57:21.636 EET</endDate>
	<originId>org.eclipse.datatools.sqltools.result.removeAllInstances</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:57:22.682 EET</date>
	<endDate>2013-01-13 18:57:22.682 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:57:23.398 EET</date>
	<endDate>2013-01-13 18:57:23.398 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:57:23.659 EET</date>
	<endDate>2013-01-13 18:57:23.659 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:57:23.898 EET</date>
	<endDate>2013-01-13 18:57:23.898 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:57:24.100 EET</date>
	<endDate>2013-01-13 18:57:24.100 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:57:24.276 EET</date>
	<endDate>2013-01-13 18:57:24.276 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:58:30.409 EET</date>
	<endDate>2013-01-13 18:58:30.409 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:58:40.190 EET</date>
	<endDate>2013-01-13 18:58:40.190 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 18:58:55.505 EET</date>
	<endDate>2013-01-13 18:58:55.505 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 18:59:27.179 EET</date>
	<endDate>2013-01-13 18:59:27.179 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 18:59:27.202 EET</date>
	<endDate>2013-01-13 18:59:27.202 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 18:59:27.268 EET</date>
	<endDate>2013-01-13 18:59:27.268 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 18:59:27.268 EET</date>
	<endDate>2013-01-13 18:59:27.268 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:59:27.646 EET</date>
	<endDate>2013-01-13 18:59:27.646 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 18:59:27.700 EET</date>
	<endDate>2013-01-13 18:59:27.700 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 18:59:49.955 EET</date>
	<endDate>2013-01-13 18:59:49.955 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 18:59:51.416 EET</date>
	<endDate>2013-01-13 18:59:51.416 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:01:28.121 EET</date>
	<endDate>2013-01-13 19:01:28.121 EET</endDate>
	<originId>org.eclipse.ui.edit.copy</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:01:30.229 EET</date>
	<endDate>2013-01-13 19:01:30.229 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:01:32.177 EET</date>
	<endDate>2013-01-13 19:01:32.177 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:01:46.912 EET</date>
	<endDate>2013-01-13 19:01:46.912 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:01:58.691 EET</date>
	<endDate>2013-01-13 19:01:58.691 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:02:00.497 EET</date>
	<endDate>2013-01-13 19:02:00.497 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:02:21.548 EET</date>
	<endDate>2013-01-13 19:02:21.548 EET</endDate>
	<originId>org.eclipse.ui.edit.cut</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:02:24.47 EET</date>
	<endDate>2013-01-13 19:02:24.47 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:02:24.253 EET</date>
	<endDate>2013-01-13 19:02:24.253 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:02:24.462 EET</date>
	<endDate>2013-01-13 19:02:24.462 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:02:24.771 EET</date>
	<endDate>2013-01-13 19:02:24.771 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:02:31.749 EET</date>
	<endDate>2013-01-13 19:02:31.749 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:04:15.734 EET</date>
	<endDate>2013-01-13 19:04:15.734 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:04:16.658 EET</date>
	<endDate>2013-01-13 19:04:16.658 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:04:18.189 EET</date>
	<endDate>2013-01-13 19:04:18.189 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:04:21.492 EET</date>
	<endDate>2013-01-13 19:04:21.492 EET</endDate>
	<originId>org.eclipse.ui.internal.ViewStackTrimToolBar$1</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:04:21.579 EET</date>
	<endDate>2013-01-13 19:04:21.579 EET</endDate>
	<originId>org.eclipse.ui.views.ProblemView</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: fastViewRemove</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:04:21.579 EET</date>
	<endDate>2013-01-13 19:04:21.579 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: fastViewRemove</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:04:21.607 EET</date>
	<endDate>2013-01-13 19:04:21.607 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavadocView</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: fastViewRemove</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:04:21.608 EET</date>
	<endDate>2013-01-13 19:04:21.608 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: fastViewRemove</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:04:21.615 EET</date>
	<endDate>2013-01-13 19:04:21.615 EET</endDate>
	<originId>org.eclipse.jdt.ui.SourceView</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: fastViewRemove</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:04:21.616 EET</date>
	<endDate>2013-01-13 19:04:21.616 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: fastViewRemove</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:04:21.623 EET</date>
	<endDate>2013-01-13 19:04:21.623 EET</endDate>
	<originId>org.eclipse.ui.console.ConsoleView</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: fastViewRemove</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:04:21.623 EET</date>
	<endDate>2013-01-13 19:04:21.623 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: fastViewRemove</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:04:51.297 EET</date>
	<endDate>2013-01-13 19:04:51.297 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:05:07.803 EET</date>
	<endDate>2013-01-13 19:05:07.803 EET</endDate>
	<originId>org.eclipse.ui.edit.cut</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:05:19.351 EET</date>
	<endDate>2013-01-13 19:05:19.351 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:05:21.944 EET</date>
	<endDate>2013-01-13 19:05:21.944 EET</endDate>
	<originId>org.eclipse.ui.edit.text.toggleOverwrite</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:05:25.845 EET</date>
	<endDate>2013-01-13 19:05:25.845 EET</endDate>
	<originId>org.eclipse.ui.edit.text.toggleOverwrite</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:05:26.263 EET</date>
	<endDate>2013-01-13 19:05:26.263 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:05:26.999 EET</date>
	<endDate>2013-01-13 19:05:26.999 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:05:33.390 EET</date>
	<endDate>2013-01-13 19:05:33.390 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:05:36.461 EET</date>
	<endDate>2013-01-13 19:05:36.461 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:06:31.237 EET</date>
	<endDate>2013-01-13 19:06:31.237 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:07:27.637 EET</date>
	<endDate>2013-01-13 19:07:27.637 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:07:33.147 EET</date>
	<endDate>2013-01-13 19:07:33.147 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:07:33.736 EET</date>
	<endDate>2013-01-13 19:07:33.736 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:07:34.588 EET</date>
	<endDate>2013-01-13 19:07:34.588 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:07:34.911 EET</date>
	<endDate>2013-01-13 19:07:34.911 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:07:35.223 EET</date>
	<endDate>2013-01-13 19:07:35.223 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:07:37.699 EET</date>
	<endDate>2013-01-13 19:07:37.699 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:07:37.855 EET</date>
	<endDate>2013-01-13 19:07:37.855 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:08:05.203 EET</date>
	<endDate>2013-01-13 19:08:05.203 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:08:19.498 EET</date>
	<endDate>2013-01-13 19:08:19.498 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:08:19.589 EET</date>
	<endDate>2013-01-13 19:08:19.589 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:08:20.659 EET</date>
	<endDate>2013-01-13 19:08:20.659 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:08:23.797 EET</date>
	<endDate>2013-01-13 19:08:23.797 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:08:25.448 EET</date>
	<endDate>2013-01-13 19:08:25.448 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:08:25.462 EET</date>
	<endDate>2013-01-13 19:08:25.462 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:08:25.493 EET</date>
	<endDate>2013-01-13 19:08:25.493 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:08:25.493 EET</date>
	<endDate>2013-01-13 19:08:25.493 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:08:48.481 EET</date>
	<endDate>2013-01-13 19:08:48.481 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:08:49.414 EET</date>
	<endDate>2013-01-13 19:08:49.414 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:09:17.492 EET</date>
	<endDate>2013-01-13 19:09:17.492 EET</endDate>
	<originId>org.eclipse.ui.edit.copy</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:09:24.288 EET</date>
	<endDate>2013-01-13 19:09:24.288 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:09:25.151 EET</date>
	<endDate>2013-01-13 19:09:25.151 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:09:25.483 EET</date>
	<endDate>2013-01-13 19:09:25.483 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:09:25.816 EET</date>
	<endDate>2013-01-13 19:09:25.816 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:09:27.600 EET</date>
	<endDate>2013-01-13 19:09:27.600 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:09:51.185 EET</date>
	<endDate>2013-01-13 19:09:51.185 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:09:51.635 EET</date>
	<endDate>2013-01-13 19:09:51.635 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:09:57.568 EET</date>
	<endDate>2013-01-13 19:09:57.568 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:04.728 EET</date>
	<endDate>2013-01-13 19:10:04.728 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:04.729 EET</date>
	<endDate>2013-01-13 19:10:04.729 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:08.215 EET</date>
	<endDate>2013-01-13 19:10:08.215 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:13.452 EET</date>
	<endDate>2013-01-13 19:10:13.452 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:15.434 EET</date>
	<endDate>2013-01-13 19:10:15.434 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:16.406 EET</date>
	<endDate>2013-01-13 19:10:16.406 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:26.326 EET</date>
	<endDate>2013-01-13 19:10:26.326 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:26.401 EET</date>
	<endDate>2013-01-13 19:10:26.401 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:27.400 EET</date>
	<endDate>2013-01-13 19:10:27.400 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:29.801 EET</date>
	<endDate>2013-01-13 19:10:29.801 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:30.804 EET</date>
	<endDate>2013-01-13 19:10:30.804 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:30.815 EET</date>
	<endDate>2013-01-13 19:10:30.815 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:30.846 EET</date>
	<endDate>2013-01-13 19:10:30.846 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:10:30.846 EET</date>
	<endDate>2013-01-13 19:10:30.846 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:10:58.853 EET</date>
	<endDate>2013-01-13 19:10:58.853 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:10:59.442 EET</date>
	<endDate>2013-01-13 19:10:59.442 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:10:59.753 EET</date>
	<endDate>2013-01-13 19:10:59.753 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:11:03.576 EET</date>
	<endDate>2013-01-13 19:11:03.576 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:11:08.389 EET</date>
	<endDate>2013-01-13 19:11:08.389 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:11:45.179 EET</date>
	<endDate>2013-01-13 19:11:45.179 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:11:46.256 EET</date>
	<endDate>2013-01-13 19:11:46.256 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:11:46.282 EET</date>
	<endDate>2013-01-13 19:11:46.282 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:11:46.283 EET</date>
	<endDate>2013-01-13 19:11:46.283 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:11:55.729 EET</date>
	<endDate>2013-01-13 19:11:55.729 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:11:56.383 EET</date>
	<endDate>2013-01-13 19:11:56.383 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:11:56.670 EET</date>
	<endDate>2013-01-13 19:11:56.670 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:11:59.375 EET</date>
	<endDate>2013-01-13 19:11:59.375 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:12:03.151 EET</date>
	<endDate>2013-01-13 19:12:03.151 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:12:03.151 EET</date>
	<endDate>2013-01-13 19:12:03.151 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:13.122 EET</date>
	<endDate>2013-01-13 19:12:13.122 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:13.360 EET</date>
	<endDate>2013-01-13 19:12:13.360 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:15.714 EET</date>
	<endDate>2013-01-13 19:12:15.714 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:25.205 EET</date>
	<endDate>2013-01-13 19:12:25.205 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:25.999 EET</date>
	<endDate>2013-01-13 19:12:25.999 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:26.881 EET</date>
	<endDate>2013-01-13 19:12:26.881 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:27.166 EET</date>
	<endDate>2013-01-13 19:12:27.166 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:28.290 EET</date>
	<endDate>2013-01-13 19:12:28.290 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:12:30.179 EET</date>
	<endDate>2013-01-13 19:12:30.179 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:34.97 EET</date>
	<endDate>2013-01-13 19:12:34.97 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:34.973 EET</date>
	<endDate>2013-01-13 19:12:34.973 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:35.606 EET</date>
	<endDate>2013-01-13 19:12:35.606 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:37.620 EET</date>
	<endDate>2013-01-13 19:12:37.620 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:12:39.682 EET</date>
	<endDate>2013-01-13 19:12:39.682 EET</endDate>
	<originId>org.eclipse.jdt.ui.CompilationUnitEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:12:39.682 EET</date>
	<endDate>2013-01-13 19:12:39.682 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:40.881 EET</date>
	<endDate>2013-01-13 19:12:40.881 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:41.530 EET</date>
	<endDate>2013-01-13 19:12:41.530 EET</endDate>
	<originId>org.eclipse.datatools.sqltools.result.removeAllInstances</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:42.248 EET</date>
	<endDate>2013-01-13 19:12:42.248 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:43.78 EET</date>
	<endDate>2013-01-13 19:12:43.78 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:43.447 EET</date>
	<endDate>2013-01-13 19:12:43.447 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:44.182 EET</date>
	<endDate>2013-01-13 19:12:44.182 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:12:46.275 EET</date>
	<endDate>2013-01-13 19:12:46.275 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:48.910 EET</date>
	<endDate>2013-01-13 19:12:48.910 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:49.751 EET</date>
	<endDate>2013-01-13 19:12:49.751 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:50.43 EET</date>
	<endDate>2013-01-13 19:12:50.43 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:52.557 EET</date>
	<endDate>2013-01-13 19:12:52.557 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:55.943 EET</date>
	<endDate>2013-01-13 19:12:55.943 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:56.374 EET</date>
	<endDate>2013-01-13 19:12:56.374 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:57.142 EET</date>
	<endDate>2013-01-13 19:12:57.142 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:57.366 EET</date>
	<endDate>2013-01-13 19:12:57.366 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:12:58.21 EET</date>
	<endDate>2013-01-13 19:12:58.21 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:01.187 EET</date>
	<endDate>2013-01-13 19:13:01.187 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:01.814 EET</date>
	<endDate>2013-01-13 19:13:01.814 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:04.341 EET</date>
	<endDate>2013-01-13 19:13:04.341 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:05.234 EET</date>
	<endDate>2013-01-13 19:13:05.234 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:07.697 EET</date>
	<endDate>2013-01-13 19:13:07.697 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:08.991 EET</date>
	<endDate>2013-01-13 19:13:08.991 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:11.617 EET</date>
	<endDate>2013-01-13 19:13:11.617 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:12.55 EET</date>
	<endDate>2013-01-13 19:13:12.55 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:13.42 EET</date>
	<endDate>2013-01-13 19:13:13.42 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:17.259 EET</date>
	<endDate>2013-01-13 19:13:17.259 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:17.827 EET</date>
	<endDate>2013-01-13 19:13:17.827 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:18.201 EET</date>
	<endDate>2013-01-13 19:13:18.201 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:19.241 EET</date>
	<endDate>2013-01-13 19:13:19.241 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:13:22.446 EET</date>
	<endDate>2013-01-13 19:13:22.446 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:13:22.446 EET</date>
	<endDate>2013-01-13 19:13:22.446 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:28.973 EET</date>
	<endDate>2013-01-13 19:13:28.973 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:29.548 EET</date>
	<endDate>2013-01-13 19:13:29.548 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:36.268 EET</date>
	<endDate>2013-01-13 19:13:36.268 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:36.869 EET</date>
	<endDate>2013-01-13 19:13:36.869 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:38.757 EET</date>
	<endDate>2013-01-13 19:13:38.757 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:43.76 EET</date>
	<endDate>2013-01-13 19:13:43.76 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:43.400 EET</date>
	<endDate>2013-01-13 19:13:43.400 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:44.26 EET</date>
	<endDate>2013-01-13 19:13:44.26 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:44.249 EET</date>
	<endDate>2013-01-13 19:13:44.249 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:45.238 EET</date>
	<endDate>2013-01-13 19:13:45.238 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:47.848 EET</date>
	<endDate>2013-01-13 19:13:47.848 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:48.208 EET</date>
	<endDate>2013-01-13 19:13:48.208 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:49.102 EET</date>
	<endDate>2013-01-13 19:13:49.102 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:49.346 EET</date>
	<endDate>2013-01-13 19:13:49.346 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:13:50.30 EET</date>
	<endDate>2013-01-13 19:13:50.30 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:14:14.140 EET</date>
	<endDate>2013-01-13 19:14:14.140 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:14:18.572 EET</date>
	<endDate>2013-01-13 19:14:18.572 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:14:19.899 EET</date>
	<endDate>2013-01-13 19:14:19.899 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:14:19.977 EET</date>
	<endDate>2013-01-13 19:14:19.977 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:14:21.196 EET</date>
	<endDate>2013-01-13 19:14:21.196 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:14:22.754 EET</date>
	<endDate>2013-01-13 19:14:22.754 EET</endDate>
	<originId>org.eclipse.jdt.ui.CompilationUnitEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:14:22.821 EET</date>
	<endDate>2013-01-13 19:14:22.821 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:14:24.199 EET</date>
	<endDate>2013-01-13 19:14:24.199 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:14:25.674 EET</date>
	<endDate>2013-01-13 19:14:25.674 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:14:26.669 EET</date>
	<endDate>2013-01-13 19:14:26.669 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:14:27.674 EET</date>
	<endDate>2013-01-13 19:14:27.674 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:14:28.654 EET</date>
	<endDate>2013-01-13 19:14:28.654 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:15:51.768 EET</date>
	<endDate>2013-01-13 19:15:51.768 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:15:54.43 EET</date>
	<endDate>2013-01-13 19:15:54.43 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:15:54.44 EET</date>
	<endDate>2013-01-13 19:15:54.44 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:16:06.927 EET</date>
	<endDate>2013-01-13 19:16:06.927 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:16:09.766 EET</date>
	<endDate>2013-01-13 19:16:09.766 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:16:10.154 EET</date>
	<endDate>2013-01-13 19:16:10.154 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:16:22.696 EET</date>
	<endDate>2013-01-13 19:16:22.696 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:16:23.547 EET</date>
	<endDate>2013-01-13 19:16:23.547 EET</endDate>
	<originId>org.eclipse.ui.edit.copy</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:16:24.525 EET</date>
	<endDate>2013-01-13 19:16:24.525 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:16:32.620 EET</date>
	<endDate>2013-01-13 19:16:32.620 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:16:40.624 EET</date>
	<endDate>2013-01-13 19:16:40.624 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:16:43.808 EET</date>
	<endDate>2013-01-13 19:16:43.808 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:16:43.808 EET</date>
	<endDate>2013-01-13 19:16:43.808 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:16:48.143 EET</date>
	<endDate>2013-01-13 19:16:48.143 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:16:54.379 EET</date>
	<endDate>2013-01-13 19:16:54.379 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:16:58.3 EET</date>
	<endDate>2013-01-13 19:16:58.3 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:16:58.4 EET</date>
	<endDate>2013-01-13 19:16:58.4 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:17:03.838 EET</date>
	<endDate>2013-01-13 19:17:03.838 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:17:04.812 EET</date>
	<endDate>2013-01-13 19:17:04.812 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:17:07.941 EET</date>
	<endDate>2013-01-13 19:17:07.941 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:17:25.909 EET</date>
	<endDate>2013-01-13 19:17:25.909 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:17:29.977 EET</date>
	<endDate>2013-01-13 19:17:29.977 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:18:03.263 EET</date>
	<endDate>2013-01-13 19:18:03.263 EET</endDate>
	<originId>org.eclipse.ui.edit.copy</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:18:06.232 EET</date>
	<endDate>2013-01-13 19:18:06.232 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:18:45.708 EET</date>
	<endDate>2013-01-13 19:18:45.708 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:18:57.102 EET</date>
	<endDate>2013-01-13 19:18:57.102 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:18:57.946 EET</date>
	<endDate>2013-01-13 19:18:57.946 EET</endDate>
	<originId>org.eclipse.ui.edit.copy</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:19:12.295 EET</date>
	<endDate>2013-01-13 19:19:12.295 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:19:22.996 EET</date>
	<endDate>2013-01-13 19:19:22.996 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:19:33.427 EET</date>
	<endDate>2013-01-13 19:19:33.427 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:19:44.665 EET</date>
	<endDate>2013-01-13 19:19:44.665 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:19:46.731 EET</date>
	<endDate>2013-01-13 19:19:46.731 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:20:19.300 EET</date>
	<endDate>2013-01-13 19:20:19.300 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:20:25.415 EET</date>
	<endDate>2013-01-13 19:20:25.415 EET</endDate>
	<originId>org.eclipse.ui.edit.text.contentAssist.proposals</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:20:38.111 EET</date>
	<endDate>2013-01-13 19:20:38.111 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:20:40.443 EET</date>
	<endDate>2013-01-13 19:20:40.443 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:20:42.55 EET</date>
	<endDate>2013-01-13 19:20:42.55 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:20:57.454 EET</date>
	<endDate>2013-01-13 19:20:57.454 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:20:57.621 EET</date>
	<endDate>2013-01-13 19:20:57.621 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:20:58.13 EET</date>
	<endDate>2013-01-13 19:20:58.13 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:20:58.351 EET</date>
	<endDate>2013-01-13 19:20:58.351 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:20:59.195 EET</date>
	<endDate>2013-01-13 19:20:59.195 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:21:17.260 EET</date>
	<endDate>2013-01-13 19:21:17.260 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:21:28.937 EET</date>
	<endDate>2013-01-13 19:21:28.937 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:21:30.516 EET</date>
	<endDate>2013-01-13 19:21:30.516 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:21:30.595 EET</date>
	<endDate>2013-01-13 19:21:30.595 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:21:31.640 EET</date>
	<endDate>2013-01-13 19:21:31.640 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:21:33.63 EET</date>
	<endDate>2013-01-13 19:21:33.63 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:21:38.94 EET</date>
	<endDate>2013-01-13 19:21:38.94 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:21:38.174 EET</date>
	<endDate>2013-01-13 19:21:38.174 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:21:39.183 EET</date>
	<endDate>2013-01-13 19:21:39.183 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:21:41.797 EET</date>
	<endDate>2013-01-13 19:21:41.797 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:22:15.40 EET</date>
	<endDate>2013-01-13 19:22:15.40 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:50:46.775 EET</date>
	<endDate>2013-01-13 19:50:46.775 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:14.950 EET</date>
	<endDate>2013-01-13 19:51:14.950 EET</endDate>
	<originId>org.eclipse.ui.edit.copy</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:16.662 EET</date>
	<endDate>2013-01-13 19:51:16.662 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:17.840 EET</date>
	<endDate>2013-01-13 19:51:17.840 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:32.2 EET</date>
	<endDate>2013-01-13 19:51:32.2 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.118 EET</date>
	<endDate>2013-01-13 19:51:45.118 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.615 EET</date>
	<endDate>2013-01-13 19:51:45.615 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.647 EET</date>
	<endDate>2013-01-13 19:51:45.647 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.678 EET</date>
	<endDate>2013-01-13 19:51:45.678 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.710 EET</date>
	<endDate>2013-01-13 19:51:45.710 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.742 EET</date>
	<endDate>2013-01-13 19:51:45.742 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.774 EET</date>
	<endDate>2013-01-13 19:51:45.774 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.806 EET</date>
	<endDate>2013-01-13 19:51:45.806 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.841 EET</date>
	<endDate>2013-01-13 19:51:45.841 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.870 EET</date>
	<endDate>2013-01-13 19:51:45.870 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.902 EET</date>
	<endDate>2013-01-13 19:51:45.902 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.934 EET</date>
	<endDate>2013-01-13 19:51:45.934 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.966 EET</date>
	<endDate>2013-01-13 19:51:45.966 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:45.998 EET</date>
	<endDate>2013-01-13 19:51:45.998 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.30 EET</date>
	<endDate>2013-01-13 19:51:46.30 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.62 EET</date>
	<endDate>2013-01-13 19:51:46.62 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.94 EET</date>
	<endDate>2013-01-13 19:51:46.94 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.125 EET</date>
	<endDate>2013-01-13 19:51:46.125 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.158 EET</date>
	<endDate>2013-01-13 19:51:46.158 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.190 EET</date>
	<endDate>2013-01-13 19:51:46.190 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.222 EET</date>
	<endDate>2013-01-13 19:51:46.222 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.254 EET</date>
	<endDate>2013-01-13 19:51:46.254 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.285 EET</date>
	<endDate>2013-01-13 19:51:46.285 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.317 EET</date>
	<endDate>2013-01-13 19:51:46.317 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.350 EET</date>
	<endDate>2013-01-13 19:51:46.350 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.382 EET</date>
	<endDate>2013-01-13 19:51:46.382 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.413 EET</date>
	<endDate>2013-01-13 19:51:46.413 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.446 EET</date>
	<endDate>2013-01-13 19:51:46.446 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.477 EET</date>
	<endDate>2013-01-13 19:51:46.477 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.509 EET</date>
	<endDate>2013-01-13 19:51:46.509 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.541 EET</date>
	<endDate>2013-01-13 19:51:46.541 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.573 EET</date>
	<endDate>2013-01-13 19:51:46.573 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.605 EET</date>
	<endDate>2013-01-13 19:51:46.605 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.784 EET</date>
	<endDate>2013-01-13 19:51:46.784 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:46.966 EET</date>
	<endDate>2013-01-13 19:51:46.966 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:47.139 EET</date>
	<endDate>2013-01-13 19:51:47.139 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:47.285 EET</date>
	<endDate>2013-01-13 19:51:47.285 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:47.523 EET</date>
	<endDate>2013-01-13 19:51:47.523 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:47.829 EET</date>
	<endDate>2013-01-13 19:51:47.829 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:48.484 EET</date>
	<endDate>2013-01-13 19:51:48.484 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:51:53.859 EET</date>
	<endDate>2013-01-13 19:51:53.859 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:52:00.891 EET</date>
	<endDate>2013-01-13 19:52:00.891 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:52:01.752 EET</date>
	<endDate>2013-01-13 19:52:01.752 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:52:32.849 EET</date>
	<endDate>2013-01-13 19:52:32.849 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:52:38.529 EET</date>
	<endDate>2013-01-13 19:52:38.529 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:52:54.709 EET</date>
	<endDate>2013-01-13 19:52:54.709 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:53:05.630 EET</date>
	<endDate>2013-01-13 19:53:05.630 EET</endDate>
	<originId>org.eclipse.ui.edit.copy</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:53:07.31 EET</date>
	<endDate>2013-01-13 19:53:07.31 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:53:12.671 EET</date>
	<endDate>2013-01-13 19:53:12.671 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:53:20.749 EET</date>
	<endDate>2013-01-13 19:53:20.749 EET</endDate>
	<originId>org.eclipse.ui.edit.copy</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:53:23.754 EET</date>
	<endDate>2013-01-13 19:53:23.754 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:05.854 EET</date>
	<endDate>2013-01-13 19:54:05.854 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:08.769 EET</date>
	<endDate>2013-01-13 19:54:08.769 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:09.856 EET</date>
	<endDate>2013-01-13 19:54:09.856 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:10.287 EET</date>
	<endDate>2013-01-13 19:54:10.287 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:10.488 EET</date>
	<endDate>2013-01-13 19:54:10.488 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:10.680 EET</date>
	<endDate>2013-01-13 19:54:10.680 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:10.878 EET</date>
	<endDate>2013-01-13 19:54:10.878 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:11.324 EET</date>
	<endDate>2013-01-13 19:54:11.324 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:11.672 EET</date>
	<endDate>2013-01-13 19:54:11.672 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:12.62 EET</date>
	<endDate>2013-01-13 19:54:12.62 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:13.542 EET</date>
	<endDate>2013-01-13 19:54:13.542 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:22.35 EET</date>
	<endDate>2013-01-13 19:54:22.35 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:41.90 EET</date>
	<endDate>2013-01-13 19:54:41.90 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:44.580 EET</date>
	<endDate>2013-01-13 19:54:44.580 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:54:45.631 EET</date>
	<endDate>2013-01-13 19:54:45.631 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:54:48.445 EET</date>
	<endDate>2013-01-13 19:54:48.445 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:54:49.913 EET</date>
	<endDate>2013-01-13 19:54:49.913 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:54:50.925 EET</date>
	<endDate>2013-01-13 19:54:50.925 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:54:50.951 EET</date>
	<endDate>2013-01-13 19:54:50.951 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:54:50.952 EET</date>
	<endDate>2013-01-13 19:54:50.952 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:54:53.486 EET</date>
	<endDate>2013-01-13 19:54:53.486 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:56:45.271 EET</date>
	<endDate>2013-01-13 19:56:45.271 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:56:45.304 EET</date>
	<endDate>2013-01-13 19:56:45.304 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:56:52.289 EET</date>
	<endDate>2013-01-13 19:56:52.289 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:56:59.540 EET</date>
	<endDate>2013-01-13 19:56:59.540 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:56:59.798 EET</date>
	<endDate>2013-01-13 19:56:59.798 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:56:59.817 EET</date>
	<endDate>2013-01-13 19:56:59.817 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:57:08.256 EET</date>
	<endDate>2013-01-13 19:57:08.256 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:57:27.342 EET</date>
	<endDate>2013-01-13 19:57:27.342 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:57:33.381 EET</date>
	<endDate>2013-01-13 19:57:33.381 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:57:50.985 EET</date>
	<endDate>2013-01-13 19:57:50.985 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:57:54.65 EET</date>
	<endDate>2013-01-13 19:57:54.65 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:58:03.532 EET</date>
	<endDate>2013-01-13 19:58:03.532 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:58:08.734 EET</date>
	<endDate>2013-01-13 19:58:08.734 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.ToggleBreakpoint</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:58:13.419 EET</date>
	<endDate>2013-01-13 19:58:13.419 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.DebugLast</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:58:15.271 EET</date>
	<endDate>2013-01-13 19:58:15.271 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:58:30.417 EET</date>
	<endDate>2013-01-13 19:58:30.417 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:58:32.463 EET</date>
	<endDate>2013-01-13 19:58:32.463 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:58:33.725 EET</date>
	<endDate>2013-01-13 19:58:33.725 EET</endDate>
	<originId>org.eclipse.debug.ui.DebugPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:58:33.771 EET</date>
	<endDate>2013-01-13 19:58:33.771 EET</endDate>
	<originId>org.eclipse.debug.ui.DebugPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:58:35.743 EET</date>
	<endDate>2013-01-13 19:58:35.743 EET</endDate>
	<originId>org.eclipse.debug.ui.DebugPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:58:35.862 EET</date>
	<endDate>2013-01-13 19:58:35.862 EET</endDate>
	<originId>org.eclipse.jdt.ui.CompilationUnitEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 19:58:35.863 EET</date>
	<endDate>2013-01-13 19:58:35.863 EET</endDate>
	<originId>org.eclipse.debug.ui.DebugPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:58:36.649 EET</date>
	<endDate>2013-01-13 19:58:36.649 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:58:39.777 EET</date>
	<endDate>2013-01-13 19:58:39.777 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:58:48.898 EET</date>
	<endDate>2013-01-13 19:58:48.898 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:58:51.309 EET</date>
	<endDate>2013-01-13 19:58:51.309 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:59:03.979 EET</date>
	<endDate>2013-01-13 19:59:03.979 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.ToggleBreakpoint</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:59:06.640 EET</date>
	<endDate>2013-01-13 19:59:06.640 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.Resume</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:59:11.667 EET</date>
	<endDate>2013-01-13 19:59:11.667 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:59:15.149 EET</date>
	<endDate>2013-01-13 19:59:15.149 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:59:24.692 EET</date>
	<endDate>2013-01-13 19:59:24.692 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 19:59:36.526 EET</date>
	<endDate>2013-01-13 19:59:36.526 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:00:09.857 EET</date>
	<endDate>2013-01-13 20:00:09.857 EET</endDate>
	<originId>org.eclipse.ui.edit.text.showInformation</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:00:59.430 EET</date>
	<endDate>2013-01-13 20:00:59.430 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:01:05.447 EET</date>
	<endDate>2013-01-13 20:01:05.447 EET</endDate>
	<originId>org.eclipse.debug.ui.debugview.toolbar.terminate</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:01:05.449 EET</date>
	<endDate>2013-01-13 20:01:05.449 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.Terminate</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:01:08.371 EET</date>
	<endDate>2013-01-13 20:01:08.371 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:01:08.521 EET</date>
	<endDate>2013-01-13 20:01:08.521 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:01:28.72 EET</date>
	<endDate>2013-01-13 20:01:28.72 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:01:31.563 EET</date>
	<endDate>2013-01-13 20:01:31.563 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:01:39.911 EET</date>
	<endDate>2013-01-13 20:01:39.911 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:01:42.791 EET</date>
	<endDate>2013-01-13 20:01:42.791 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:01:44.632 EET</date>
	<endDate>2013-01-13 20:01:44.632 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:01:49.657 EET</date>
	<endDate>2013-01-13 20:01:49.657 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:01:55.366 EET</date>
	<endDate>2013-01-13 20:01:55.366 EET</endDate>
	<originId>org.eclipse.jdt.ui.CompilationUnitEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:01:55.406 EET</date>
	<endDate>2013-01-13 20:01:55.406 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:02:00.339 EET</date>
	<endDate>2013-01-13 20:02:00.339 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:02:18.151 EET</date>
	<endDate>2013-01-13 20:02:18.151 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:02:23.725 EET</date>
	<endDate>2013-01-13 20:02:23.725 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.DebugLast</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:02:36.291 EET</date>
	<endDate>2013-01-13 20:02:36.291 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:02:38.369 EET</date>
	<endDate>2013-01-13 20:02:38.369 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:02:38.370 EET</date>
	<endDate>2013-01-13 20:02:38.370 EET</endDate>
	<originId>org.eclipse.jdt.ui.CompilationUnitEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:02:38.370 EET</date>
	<endDate>2013-01-13 20:02:38.370 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:02:38.370 EET</date>
	<endDate>2013-01-13 20:02:38.370 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:02:38.536 EET</date>
	<endDate>2013-01-13 20:02:38.536 EET</endDate>
	<originId>org.eclipse.debug.ui.DebugPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:02:38.571 EET</date>
	<endDate>2013-01-13 20:02:38.571 EET</endDate>
	<originId>org.eclipse.debug.ui.DebugPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:02:42.270 EET</date>
	<endDate>2013-01-13 20:02:42.270 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:02:53.67 EET</date>
	<endDate>2013-01-13 20:02:53.67 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:02:53.472 EET</date>
	<endDate>2013-01-13 20:02:53.472 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:02:54.393 EET</date>
	<endDate>2013-01-13 20:02:54.393 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:02:57.644 EET</date>
	<endDate>2013-01-13 20:02:57.644 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.Resume</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:02:59.653 EET</date>
	<endDate>2013-01-13 20:02:59.653 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:03:00.436 EET</date>
	<endDate>2013-01-13 20:03:00.436 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:03:02.650 EET</date>
	<endDate>2013-01-13 20:03:02.650 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:03:27.901 EET</date>
	<endDate>2013-01-13 20:03:27.901 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:03:46.763 EET</date>
	<endDate>2013-01-13 20:03:46.763 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:03:47.531 EET</date>
	<endDate>2013-01-13 20:03:47.531 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:03:50.251 EET</date>
	<endDate>2013-01-13 20:03:50.251 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:03:51.107 EET</date>
	<endDate>2013-01-13 20:03:51.107 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:04:00.534 EET</date>
	<endDate>2013-01-13 20:04:00.534 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:04:05.294 EET</date>
	<endDate>2013-01-13 20:04:05.294 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:05:05.274 EET</date>
	<endDate>2013-01-13 20:05:05.274 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:05:07.293 EET</date>
	<endDate>2013-01-13 20:05:07.293 EET</endDate>
	<originId>org.eclipse.debug.ui.debugview.toolbar.terminate</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:05:07.294 EET</date>
	<endDate>2013-01-13 20:05:07.294 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.Terminate</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:05:17.597 EET</date>
	<endDate>2013-01-13 20:05:17.597 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:05:17.755 EET</date>
	<endDate>2013-01-13 20:05:17.755 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:05:19.719 EET</date>
	<endDate>2013-01-13 20:05:19.719 EET</endDate>
	<originId>org.eclipse.jdt.ui.CompilationUnitEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:05:19.771 EET</date>
	<endDate>2013-01-13 20:05:19.771 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:05:21.696 EET</date>
	<endDate>2013-01-13 20:05:21.696 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:05:32.324 EET</date>
	<endDate>2013-01-13 20:05:32.324 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:05:40.976 EET</date>
	<endDate>2013-01-13 20:05:40.976 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.DebugLast</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:05:56.838 EET</date>
	<endDate>2013-01-13 20:05:56.838 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:05:58.918 EET</date>
	<endDate>2013-01-13 20:05:58.918 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:05:58.918 EET</date>
	<endDate>2013-01-13 20:05:58.918 EET</endDate>
	<originId>org.eclipse.jdt.ui.CompilationUnitEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:05:58.919 EET</date>
	<endDate>2013-01-13 20:05:58.919 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:05:58.919 EET</date>
	<endDate>2013-01-13 20:05:58.919 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:05:59.76 EET</date>
	<endDate>2013-01-13 20:05:59.76 EET</endDate>
	<originId>org.eclipse.debug.ui.DebugPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:05:59.106 EET</date>
	<endDate>2013-01-13 20:05:59.106 EET</endDate>
	<originId>org.eclipse.debug.ui.DebugPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:00.767 EET</date>
	<endDate>2013-01-13 20:06:00.767 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:04.369 EET</date>
	<endDate>2013-01-13 20:06:04.369 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:07.495 EET</date>
	<endDate>2013-01-13 20:06:07.495 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:11.824 EET</date>
	<endDate>2013-01-13 20:06:11.824 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:29.595 EET</date>
	<endDate>2013-01-13 20:06:29.595 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:32.404 EET</date>
	<endDate>2013-01-13 20:06:32.404 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.Resume</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:34.14 EET</date>
	<endDate>2013-01-13 20:06:34.14 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:34.528 EET</date>
	<endDate>2013-01-13 20:06:34.528 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:38.5 EET</date>
	<endDate>2013-01-13 20:06:38.5 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:38.745 EET</date>
	<endDate>2013-01-13 20:06:38.745 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:51.880 EET</date>
	<endDate>2013-01-13 20:06:51.880 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:52.481 EET</date>
	<endDate>2013-01-13 20:06:52.481 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:53.620 EET</date>
	<endDate>2013-01-13 20:06:53.620 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:06:54.319 EET</date>
	<endDate>2013-01-13 20:06:54.319 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:07:15.194 EET</date>
	<endDate>2013-01-13 20:07:15.194 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:07:17.485 EET</date>
	<endDate>2013-01-13 20:07:17.485 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:07:19.719 EET</date>
	<endDate>2013-01-13 20:07:19.719 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.StepOver</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:10:29.944 EET</date>
	<endDate>2013-01-13 20:10:29.944 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:10:31.769 EET</date>
	<endDate>2013-01-13 20:10:31.769 EET</endDate>
	<originId>org.eclipse.debug.ui.debugview.toolbar.terminate</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:10:31.770 EET</date>
	<endDate>2013-01-13 20:10:31.770 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.Terminate</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:10:39.822 EET</date>
	<endDate>2013-01-13 20:10:39.822 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:10:40.73 EET</date>
	<endDate>2013-01-13 20:10:40.73 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:10:49.227 EET</date>
	<endDate>2013-01-13 20:10:49.227 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:10:49.402 EET</date>
	<endDate>2013-01-13 20:10:49.402 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:10:51.587 EET</date>
	<endDate>2013-01-13 20:10:51.587 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:11:05.684 EET</date>
	<endDate>2013-01-13 20:11:05.684 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:11:05.861 EET</date>
	<endDate>2013-01-13 20:11:05.861 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:11:09.741 EET</date>
	<endDate>2013-01-13 20:11:09.741 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:31.159 EET</date>
	<endDate>2013-01-13 20:13:31.159 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:13:52.193 EET</date>
	<endDate>2013-01-13 20:13:52.193 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:57.91 EET</date>
	<endDate>2013-01-13 20:13:57.91 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:57.312 EET</date>
	<endDate>2013-01-13 20:13:57.312 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:57.604 EET</date>
	<endDate>2013-01-13 20:13:57.604 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:57.788 EET</date>
	<endDate>2013-01-13 20:13:57.788 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:57.952 EET</date>
	<endDate>2013-01-13 20:13:57.952 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:58.451 EET</date>
	<endDate>2013-01-13 20:13:58.451 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:58.483 EET</date>
	<endDate>2013-01-13 20:13:58.483 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:58.514 EET</date>
	<endDate>2013-01-13 20:13:58.514 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:58.546 EET</date>
	<endDate>2013-01-13 20:13:58.546 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:58.578 EET</date>
	<endDate>2013-01-13 20:13:58.578 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:58.610 EET</date>
	<endDate>2013-01-13 20:13:58.610 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:58.642 EET</date>
	<endDate>2013-01-13 20:13:58.642 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:58.674 EET</date>
	<endDate>2013-01-13 20:13:58.674 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:58.901 EET</date>
	<endDate>2013-01-13 20:13:58.901 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:59.61 EET</date>
	<endDate>2013-01-13 20:13:59.61 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:59.205 EET</date>
	<endDate>2013-01-13 20:13:59.205 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:59.357 EET</date>
	<endDate>2013-01-13 20:13:59.357 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:59.597 EET</date>
	<endDate>2013-01-13 20:13:59.597 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:13:59.818 EET</date>
	<endDate>2013-01-13 20:13:59.818 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:00.334 EET</date>
	<endDate>2013-01-13 20:14:00.334 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:02.707 EET</date>
	<endDate>2013-01-13 20:14:02.707 EET</endDate>
	<originId>org.eclipse.ui.edit.cut</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:03.422 EET</date>
	<endDate>2013-01-13 20:14:03.422 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:03.644 EET</date>
	<endDate>2013-01-13 20:14:03.644 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:03.884 EET</date>
	<endDate>2013-01-13 20:14:03.884 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:04.56 EET</date>
	<endDate>2013-01-13 20:14:04.56 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:04.200 EET</date>
	<endDate>2013-01-13 20:14:04.200 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:04.324 EET</date>
	<endDate>2013-01-13 20:14:04.324 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:04.493 EET</date>
	<endDate>2013-01-13 20:14:04.493 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:09.377 EET</date>
	<endDate>2013-01-13 20:14:09.377 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:15.564 EET</date>
	<endDate>2013-01-13 20:14:15.564 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:17.957 EET</date>
	<endDate>2013-01-13 20:14:17.957 EET</endDate>
	<originId>org.eclipse.ui.edit.cut</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:18.446 EET</date>
	<endDate>2013-01-13 20:14:18.446 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:23.273 EET</date>
	<endDate>2013-01-13 20:14:23.273 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:25.589 EET</date>
	<endDate>2013-01-13 20:14:25.589 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:25.779 EET</date>
	<endDate>2013-01-13 20:14:25.779 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:25.944 EET</date>
	<endDate>2013-01-13 20:14:25.944 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:26.79 EET</date>
	<endDate>2013-01-13 20:14:26.79 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:26.222 EET</date>
	<endDate>2013-01-13 20:14:26.222 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:26.375 EET</date>
	<endDate>2013-01-13 20:14:26.375 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:27.203 EET</date>
	<endDate>2013-01-13 20:14:27.203 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:14:31.960 EET</date>
	<endDate>2013-01-13 20:14:31.960 EET</endDate>
	<originId>org.eclipse.jdt.ui.CompilationUnitEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:14:31.988 EET</date>
	<endDate>2013-01-13 20:14:31.988 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:34.706 EET</date>
	<endDate>2013-01-13 20:14:34.706 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:14:52.115 EET</date>
	<endDate>2013-01-13 20:14:52.115 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:22:02.932 EET</date>
	<endDate>2013-01-13 20:22:02.932 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:22:10.172 EET</date>
	<endDate>2013-01-13 20:22:10.172 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:22:19.142 EET</date>
	<endDate>2013-01-13 20:22:19.142 EET</endDate>
	<originId>closeAll</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>menu</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:22:19.143 EET</date>
	<endDate>2013-01-13 20:22:19.143 EET</endDate>
	<originId>org.eclipse.ui.file.closeAll</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:22:19.172 EET</date>
	<endDate>2013-01-13 20:22:19.172 EET</endDate>
	<originId>org.eclipse.jdt.ui.CompilationUnitEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:22:19.173 EET</date>
	<endDate>2013-01-13 20:22:19.173 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:22:19.173 EET</date>
	<endDate>2013-01-13 20:22:19.173 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:22:19.174 EET</date>
	<endDate>2013-01-13 20:22:19.174 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:22:19.258 EET</date>
	<endDate>2013-01-13 20:22:19.258 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:22:19.268 EET</date>
	<endDate>2013-01-13 20:22:19.268 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:22:22.276 EET</date>
	<endDate>2013-01-13 20:22:22.276 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:22:28.710 EET</date>
	<endDate>2013-01-13 20:22:28.710 EET</endDate>
	<originId>org.eclipse.ui.internal.ide.actions.OpenWorkspaceAction$WorkspaceMRUAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>menu</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:22:28.909 EET</date>
	<endDate>2013-01-13 20:22:28.909 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:22:29.9 EET</date>
	<endDate>2013-01-13 20:22:29.9 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective closed</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:22:29.36 EET</date>
	<endDate>2013-01-13 20:22:29.36 EET</endDate>
	<originId>org.eclipse.debug.ui.DebugPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective closed</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:22:29.66 EET</date>
	<endDate>2013-01-13 20:22:29.66 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaBrowsingPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective closed</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:22:29.72 EET</date>
	<endDate>2013-01-13 20:22:29.72 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>closed</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:56:39.545 EET</date>
	<endDate>2013-01-13 20:56:39.545 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:56:39.582 EET</date>
	<endDate>2013-01-13 20:56:39.582 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:56:39.640 EET</date>
	<endDate>2013-01-13 20:56:39.640 EET</endDate>
	<originId>org.eclipse.jdt.ui.CompilationUnitEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:56:39.641 EET</date>
	<endDate>2013-01-13 20:56:39.641 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:57:17.296 EET</date>
	<endDate>2013-01-13 20:57:17.296 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:57:36.5 EET</date>
	<endDate>2013-01-13 20:57:36.5 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:57:40.794 EET</date>
	<endDate>2013-01-13 20:57:40.794 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:57:48.924 EET</date>
	<endDate>2013-01-13 20:57:48.924 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:57:59.332 EET</date>
	<endDate>2013-01-13 20:57:59.332 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:57:59.378 EET</date>
	<endDate>2013-01-13 20:57:59.378 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:57:59.443 EET</date>
	<endDate>2013-01-13 20:57:59.443 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:57:59.444 EET</date>
	<endDate>2013-01-13 20:57:59.444 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:58:02.596 EET</date>
	<endDate>2013-01-13 20:58:02.596 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:58:02.597 EET</date>
	<endDate>2013-01-13 20:58:02.597 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:05.832 EET</date>
	<endDate>2013-01-13 20:58:05.832 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:24.247 EET</date>
	<endDate>2013-01-13 20:58:24.247 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:58:24.455 EET</date>
	<endDate>2013-01-13 20:58:24.455 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:58:31.509 EET</date>
	<endDate>2013-01-13 20:58:31.509 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:58:34.822 EET</date>
	<endDate>2013-01-13 20:58:34.822 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:47.190 EET</date>
	<endDate>2013-01-13 20:58:47.190 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:47.581 EET</date>
	<endDate>2013-01-13 20:58:47.581 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:47.989 EET</date>
	<endDate>2013-01-13 20:58:47.989 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:48.758 EET</date>
	<endDate>2013-01-13 20:58:48.758 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:49.142 EET</date>
	<endDate>2013-01-13 20:58:49.142 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:58.115 EET</date>
	<endDate>2013-01-13 20:58:58.115 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:58.462 EET</date>
	<endDate>2013-01-13 20:58:58.462 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:58.704 EET</date>
	<endDate>2013-01-13 20:58:58.704 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:58.941 EET</date>
	<endDate>2013-01-13 20:58:58.941 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:59.203 EET</date>
	<endDate>2013-01-13 20:58:59.203 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:59.520 EET</date>
	<endDate>2013-01-13 20:58:59.520 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:58:59.809 EET</date>
	<endDate>2013-01-13 20:58:59.809 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:59:04.694 EET</date>
	<endDate>2013-01-13 20:59:04.694 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:59:14.263 EET</date>
	<endDate>2013-01-13 20:59:14.263 EET</endDate>
	<originId>org.eclipse.ui.edit.undo</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 20:59:16.103 EET</date>
	<endDate>2013-01-13 20:59:16.103 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:59:26.336 EET</date>
	<endDate>2013-01-13 20:59:26.336 EET</endDate>
	<originId>org.eclipse.jdt.ui.CompilationUnitEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:59:26.441 EET</date>
	<endDate>2013-01-13 20:59:26.441 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 20:59:26.508 EET</date>
	<endDate>2013-01-13 20:59:26.508 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:00:26.204 EET</date>
	<endDate>2013-01-13 21:00:26.204 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:00:27.366 EET</date>
	<endDate>2013-01-13 21:00:27.366 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:00:28.949 EET</date>
	<endDate>2013-01-13 21:00:28.949 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:00:29.976 EET</date>
	<endDate>2013-01-13 21:00:29.976 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:00:30.7 EET</date>
	<endDate>2013-01-13 21:00:30.7 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:00:30.8 EET</date>
	<endDate>2013-01-13 21:00:30.8 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:49.134 EET</date>
	<endDate>2013-01-13 21:00:49.134 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:49.509 EET</date>
	<endDate>2013-01-13 21:00:49.509 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:49.777 EET</date>
	<endDate>2013-01-13 21:00:49.777 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:50.40 EET</date>
	<endDate>2013-01-13 21:00:50.40 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:50.330 EET</date>
	<endDate>2013-01-13 21:00:50.330 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:50.595 EET</date>
	<endDate>2013-01-13 21:00:50.595 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:50.833 EET</date>
	<endDate>2013-01-13 21:00:50.833 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:51.123 EET</date>
	<endDate>2013-01-13 21:00:51.123 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:51.481 EET</date>
	<endDate>2013-01-13 21:00:51.481 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:51.671 EET</date>
	<endDate>2013-01-13 21:00:51.671 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:51.847 EET</date>
	<endDate>2013-01-13 21:00:51.847 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:52.56 EET</date>
	<endDate>2013-01-13 21:00:52.56 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:52.374 EET</date>
	<endDate>2013-01-13 21:00:52.374 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:56.290 EET</date>
	<endDate>2013-01-13 21:00:56.290 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:00:59.683 EET</date>
	<endDate>2013-01-13 21:00:59.683 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:02.58 EET</date>
	<endDate>2013-01-13 21:01:02.58 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:02.423 EET</date>
	<endDate>2013-01-13 21:01:02.423 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:02.640 EET</date>
	<endDate>2013-01-13 21:01:02.640 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:02.848 EET</date>
	<endDate>2013-01-13 21:01:02.848 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:03.70 EET</date>
	<endDate>2013-01-13 21:01:03.70 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:03.630 EET</date>
	<endDate>2013-01-13 21:01:03.630 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:03.905 EET</date>
	<endDate>2013-01-13 21:01:03.905 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:04.84 EET</date>
	<endDate>2013-01-13 21:01:04.84 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:04.247 EET</date>
	<endDate>2013-01-13 21:01:04.247 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:04.533 EET</date>
	<endDate>2013-01-13 21:01:04.533 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:07.915 EET</date>
	<endDate>2013-01-13 21:01:07.915 EET</endDate>
	<originId>AUTOGEN:::org.eclipse.ui.texteditor.ruler.actions/org.eclipse.jdt.internal.ui.javaeditor.JavaSelectRulerAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:08.696 EET</date>
	<endDate>2013-01-13 21:01:08.696 EET</endDate>
	<originId>AUTOGEN:::org.eclipse.jdt.debug.CompilationUnitEditor.BreakpointRulerActions/org.eclipse.jdt.debug.ui.actions.ManageBreakpointRulerAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:10.853 EET</date>
	<endDate>2013-01-13 21:01:10.853 EET</endDate>
	<originId>org.eclipse.jdt.debug.ui.actions.BreakpointRulerActionDelegate</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>menu</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:14.934 EET</date>
	<endDate>2013-01-13 21:01:14.934 EET</endDate>
	<originId>org.eclipse.jdt.debug.ui.actions.EnableDisableBreakpointRulerActionDelegate</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>menu</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:19.245 EET</date>
	<endDate>2013-01-13 21:01:19.245 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:23.266 EET</date>
	<endDate>2013-01-13 21:01:23.266 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.ToggleBreakpoint</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:24.527 EET</date>
	<endDate>2013-01-13 21:01:24.527 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:01:34.984 EET</date>
	<endDate>2013-01-13 21:01:34.984 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.ToggleBreakpoint</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:07.538 EET</date>
	<endDate>2013-01-13 21:02:07.538 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:12.501 EET</date>
	<endDate>2013-01-13 21:02:12.501 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:14.695 EET</date>
	<endDate>2013-01-13 21:02:14.695 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:15.87 EET</date>
	<endDate>2013-01-13 21:02:15.87 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:17.330 EET</date>
	<endDate>2013-01-13 21:02:17.330 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:17.561 EET</date>
	<endDate>2013-01-13 21:02:17.561 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:17.769 EET</date>
	<endDate>2013-01-13 21:02:17.769 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:18.7 EET</date>
	<endDate>2013-01-13 21:02:18.7 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:18.441 EET</date>
	<endDate>2013-01-13 21:02:18.441 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:19.702 EET</date>
	<endDate>2013-01-13 21:02:19.702 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:27.740 EET</date>
	<endDate>2013-01-13 21:02:27.740 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:29.998 EET</date>
	<endDate>2013-01-13 21:02:29.998 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:30.197 EET</date>
	<endDate>2013-01-13 21:02:30.197 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:30.373 EET</date>
	<endDate>2013-01-13 21:02:30.373 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:30.523 EET</date>
	<endDate>2013-01-13 21:02:30.523 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:30.682 EET</date>
	<endDate>2013-01-13 21:02:30.682 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:30.893 EET</date>
	<endDate>2013-01-13 21:02:30.893 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:02:38.200 EET</date>
	<endDate>2013-01-13 21:02:38.200 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:05.512 EET</date>
	<endDate>2013-01-13 21:03:05.512 EET</endDate>
	<originId>org.eclipse.ui.edit.text.toggleOverwrite</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:06.126 EET</date>
	<endDate>2013-01-13 21:03:06.126 EET</endDate>
	<originId>org.eclipse.ui.edit.text.toggleOverwrite</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:06.451 EET</date>
	<endDate>2013-01-13 21:03:06.451 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:06.758 EET</date>
	<endDate>2013-01-13 21:03:06.758 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:06.919 EET</date>
	<endDate>2013-01-13 21:03:06.919 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:07.47 EET</date>
	<endDate>2013-01-13 21:03:07.47 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:07.159 EET</date>
	<endDate>2013-01-13 21:03:07.159 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:07.261 EET</date>
	<endDate>2013-01-13 21:03:07.261 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:07.393 EET</date>
	<endDate>2013-01-13 21:03:07.393 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:07.555 EET</date>
	<endDate>2013-01-13 21:03:07.555 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:07.774 EET</date>
	<endDate>2013-01-13 21:03:07.774 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:08.687 EET</date>
	<endDate>2013-01-13 21:03:08.687 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:29.214 EET</date>
	<endDate>2013-01-13 21:03:29.214 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:54.440 EET</date>
	<endDate>2013-01-13 21:03:54.440 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:03:55.959 EET</date>
	<endDate>2013-01-13 21:03:55.959 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:02.562 EET</date>
	<endDate>2013-01-13 21:04:02.562 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:03.526 EET</date>
	<endDate>2013-01-13 21:04:03.526 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:03.704 EET</date>
	<endDate>2013-01-13 21:04:03.704 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:03.928 EET</date>
	<endDate>2013-01-13 21:04:03.928 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:04.74 EET</date>
	<endDate>2013-01-13 21:04:04.74 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:04.238 EET</date>
	<endDate>2013-01-13 21:04:04.238 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:04.492 EET</date>
	<endDate>2013-01-13 21:04:04.492 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:04.682 EET</date>
	<endDate>2013-01-13 21:04:04.682 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:05.56 EET</date>
	<endDate>2013-01-13 21:04:05.56 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:09.894 EET</date>
	<endDate>2013-01-13 21:04:09.894 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:10.393 EET</date>
	<endDate>2013-01-13 21:04:10.393 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:10.424 EET</date>
	<endDate>2013-01-13 21:04:10.424 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:10.858 EET</date>
	<endDate>2013-01-13 21:04:10.858 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:11.47 EET</date>
	<endDate>2013-01-13 21:04:11.47 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:11.211 EET</date>
	<endDate>2013-01-13 21:04:11.211 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:11.361 EET</date>
	<endDate>2013-01-13 21:04:11.361 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:11.509 EET</date>
	<endDate>2013-01-13 21:04:11.509 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:11.671 EET</date>
	<endDate>2013-01-13 21:04:11.671 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:11.860 EET</date>
	<endDate>2013-01-13 21:04:11.860 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:12.254 EET</date>
	<endDate>2013-01-13 21:04:12.254 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:16.66 EET</date>
	<endDate>2013-01-13 21:04:16.66 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:16.566 EET</date>
	<endDate>2013-01-13 21:04:16.566 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:17.64 EET</date>
	<endDate>2013-01-13 21:04:17.64 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:17.96 EET</date>
	<endDate>2013-01-13 21:04:17.96 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:17.128 EET</date>
	<endDate>2013-01-13 21:04:17.128 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:17.160 EET</date>
	<endDate>2013-01-13 21:04:17.160 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:17.192 EET</date>
	<endDate>2013-01-13 21:04:17.192 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:17.224 EET</date>
	<endDate>2013-01-13 21:04:17.224 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:17.507 EET</date>
	<endDate>2013-01-13 21:04:17.507 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:17.696 EET</date>
	<endDate>2013-01-13 21:04:17.696 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:17.887 EET</date>
	<endDate>2013-01-13 21:04:17.887 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:18.235 EET</date>
	<endDate>2013-01-13 21:04:18.235 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:22.12 EET</date>
	<endDate>2013-01-13 21:04:22.12 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:22.183 EET</date>
	<endDate>2013-01-13 21:04:22.183 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:22.378 EET</date>
	<endDate>2013-01-13 21:04:22.378 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:22.563 EET</date>
	<endDate>2013-01-13 21:04:22.563 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:22.709 EET</date>
	<endDate>2013-01-13 21:04:22.709 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:22.969 EET</date>
	<endDate>2013-01-13 21:04:22.969 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:23.437 EET</date>
	<endDate>2013-01-13 21:04:23.437 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:29.44 EET</date>
	<endDate>2013-01-13 21:04:29.44 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:31.929 EET</date>
	<endDate>2013-01-13 21:04:31.929 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:32.188 EET</date>
	<endDate>2013-01-13 21:04:32.188 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:32.361 EET</date>
	<endDate>2013-01-13 21:04:32.361 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:32.516 EET</date>
	<endDate>2013-01-13 21:04:32.516 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:32.661 EET</date>
	<endDate>2013-01-13 21:04:32.661 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:32.958 EET</date>
	<endDate>2013-01-13 21:04:32.958 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:33.284 EET</date>
	<endDate>2013-01-13 21:04:33.284 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:04:53.637 EET</date>
	<endDate>2013-01-13 21:04:53.637 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:05:04.655 EET</date>
	<endDate>2013-01-13 21:05:04.655 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:05:53.427 EET</date>
	<endDate>2013-01-13 21:05:53.427 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:06:21.326 EET</date>
	<endDate>2013-01-13 21:06:21.326 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:06:22.271 EET</date>
	<endDate>2013-01-13 21:06:22.271 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:06:24.483 EET</date>
	<endDate>2013-01-13 21:06:24.483 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:06:25.471 EET</date>
	<endDate>2013-01-13 21:06:25.471 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:06:25.494 EET</date>
	<endDate>2013-01-13 21:06:25.494 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:06:25.495 EET</date>
	<endDate>2013-01-13 21:06:25.495 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:06:38.490 EET</date>
	<endDate>2013-01-13 21:06:38.490 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:06:39.273 EET</date>
	<endDate>2013-01-13 21:06:39.273 EET</endDate>
	<originId>org.eclipse.ui.edit.cut</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:06:41.187 EET</date>
	<endDate>2013-01-13 21:06:41.187 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:06:47.125 EET</date>
	<endDate>2013-01-13 21:06:47.125 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:06:47.752 EET</date>
	<endDate>2013-01-13 21:06:47.752 EET</endDate>
	<originId>org.eclipse.ui.edit.cut</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:06:49.444 EET</date>
	<endDate>2013-01-13 21:06:49.444 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:06:51.252 EET</date>
	<endDate>2013-01-13 21:06:51.252 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:06:51.765 EET</date>
	<endDate>2013-01-13 21:06:51.765 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:06:54.750 EET</date>
	<endDate>2013-01-13 21:06:54.750 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:06:55.697 EET</date>
	<endDate>2013-01-13 21:06:55.697 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:06:56.168 EET</date>
	<endDate>2013-01-13 21:06:56.168 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:06:56.643 EET</date>
	<endDate>2013-01-13 21:06:56.643 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:07:09.849 EET</date>
	<endDate>2013-01-13 21:07:09.849 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:07:39.18 EET</date>
	<endDate>2013-01-13 21:07:39.18 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:07:41.524 EET</date>
	<endDate>2013-01-13 21:07:41.524 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:07:42.136 EET</date>
	<endDate>2013-01-13 21:07:42.136 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:07:42.442 EET</date>
	<endDate>2013-01-13 21:07:42.442 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:07:42.725 EET</date>
	<endDate>2013-01-13 21:07:42.725 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:08:33.297 EET</date>
	<endDate>2013-01-13 21:08:33.297 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:08:37.761 EET</date>
	<endDate>2013-01-13 21:08:37.761 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:15.344 EET</date>
	<endDate>2013-01-13 21:09:15.344 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:24.644 EET</date>
	<endDate>2013-01-13 21:09:24.644 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:24.977 EET</date>
	<endDate>2013-01-13 21:09:24.977 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:25.252 EET</date>
	<endDate>2013-01-13 21:09:25.252 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:25.489 EET</date>
	<endDate>2013-01-13 21:09:25.489 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:25.669 EET</date>
	<endDate>2013-01-13 21:09:25.669 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:26.292 EET</date>
	<endDate>2013-01-13 21:09:26.292 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:26.888 EET</date>
	<endDate>2013-01-13 21:09:26.888 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:27.219 EET</date>
	<endDate>2013-01-13 21:09:27.219 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:27.384 EET</date>
	<endDate>2013-01-13 21:09:27.384 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:27.528 EET</date>
	<endDate>2013-01-13 21:09:27.528 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:27.684 EET</date>
	<endDate>2013-01-13 21:09:27.684 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:27.906 EET</date>
	<endDate>2013-01-13 21:09:27.906 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:28.925 EET</date>
	<endDate>2013-01-13 21:09:28.925 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:30.247 EET</date>
	<endDate>2013-01-13 21:09:30.247 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:41.551 EET</date>
	<endDate>2013-01-13 21:09:41.551 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:42.700 EET</date>
	<endDate>2013-01-13 21:09:42.700 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:51.517 EET</date>
	<endDate>2013-01-13 21:09:51.517 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:52.254 EET</date>
	<endDate>2013-01-13 21:09:52.254 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:53.130 EET</date>
	<endDate>2013-01-13 21:09:53.130 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:53.424 EET</date>
	<endDate>2013-01-13 21:09:53.424 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:53.762 EET</date>
	<endDate>2013-01-13 21:09:53.762 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:53.946 EET</date>
	<endDate>2013-01-13 21:09:53.946 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:54.123 EET</date>
	<endDate>2013-01-13 21:09:54.123 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:09:54.425 EET</date>
	<endDate>2013-01-13 21:09:54.425 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:01.329 EET</date>
	<endDate>2013-01-13 21:10:01.329 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:11.585 EET</date>
	<endDate>2013-01-13 21:10:11.585 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:27.604 EET</date>
	<endDate>2013-01-13 21:10:27.604 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:27.902 EET</date>
	<endDate>2013-01-13 21:10:27.902 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:28.170 EET</date>
	<endDate>2013-01-13 21:10:28.170 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:28.422 EET</date>
	<endDate>2013-01-13 21:10:28.422 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:31.102 EET</date>
	<endDate>2013-01-13 21:10:31.102 EET</endDate>
	<originId>org.eclipse.ui.edit.text.select.lineEnd</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:32.57 EET</date>
	<endDate>2013-01-13 21:10:32.57 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:32.542 EET</date>
	<endDate>2013-01-13 21:10:32.542 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:33.66 EET</date>
	<endDate>2013-01-13 21:10:33.66 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:33.344 EET</date>
	<endDate>2013-01-13 21:10:33.344 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:33.621 EET</date>
	<endDate>2013-01-13 21:10:33.621 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:33.869 EET</date>
	<endDate>2013-01-13 21:10:33.869 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:34.175 EET</date>
	<endDate>2013-01-13 21:10:34.175 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:34.504 EET</date>
	<endDate>2013-01-13 21:10:34.504 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:38.508 EET</date>
	<endDate>2013-01-13 21:10:38.508 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:10:39.445 EET</date>
	<endDate>2013-01-13 21:10:39.445 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:11:12.994 EET</date>
	<endDate>2013-01-13 21:11:12.994 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:11:16.188 EET</date>
	<endDate>2013-01-13 21:11:16.188 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:11:17.85 EET</date>
	<endDate>2013-01-13 21:11:17.85 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:11:17.113 EET</date>
	<endDate>2013-01-13 21:11:17.113 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:11:17.115 EET</date>
	<endDate>2013-01-13 21:11:17.115 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:11:40.317 EET</date>
	<endDate>2013-01-13 21:11:40.317 EET</endDate>
	<originId>org.eclipse.debug.ui.commands.ToggleBreakpoint</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:11:57.353 EET</date>
	<endDate>2013-01-13 21:11:57.353 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:12:02.454 EET</date>
	<endDate>2013-01-13 21:12:02.454 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:12:03.438 EET</date>
	<endDate>2013-01-13 21:12:03.438 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:13:13.907 EET</date>
	<endDate>2013-01-13 21:13:13.907 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:13:14.46 EET</date>
	<endDate>2013-01-13 21:13:14.46 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:13:17.567 EET</date>
	<endDate>2013-01-13 21:13:17.567 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:13:17.674 EET</date>
	<endDate>2013-01-13 21:13:17.674 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:13:19.999 EET</date>
	<endDate>2013-01-13 21:13:19.999 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:13:21.90 EET</date>
	<endDate>2013-01-13 21:13:21.90 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:13:21.412 EET</date>
	<endDate>2013-01-13 21:13:21.412 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:13:22.401 EET</date>
	<endDate>2013-01-13 21:13:22.401 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:13:22.435 EET</date>
	<endDate>2013-01-13 21:13:22.435 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:13:22.435 EET</date>
	<endDate>2013-01-13 21:13:22.435 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:13:37.577 EET</date>
	<endDate>2013-01-13 21:13:37.577 EET</endDate>
	<originId>org.eclipse.ui.edit.cut</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:13:40.753 EET</date>
	<endDate>2013-01-13 21:13:40.753 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:13:43.339 EET</date>
	<endDate>2013-01-13 21:13:43.339 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:13:43.764 EET</date>
	<endDate>2013-01-13 21:13:43.764 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:13:44.160 EET</date>
	<endDate>2013-01-13 21:13:44.160 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:13:45.198 EET</date>
	<endDate>2013-01-13 21:13:45.198 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:14:11.926 EET</date>
	<endDate>2013-01-13 21:14:11.926 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:14:13.91 EET</date>
	<endDate>2013-01-13 21:14:13.91 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:14:13.750 EET</date>
	<endDate>2013-01-13 21:14:13.750 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:14:13.895 EET</date>
	<endDate>2013-01-13 21:14:13.895 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:14:52.672 EET</date>
	<endDate>2013-01-13 21:14:52.672 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:14:53.691 EET</date>
	<endDate>2013-01-13 21:14:53.691 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:14:53.718 EET</date>
	<endDate>2013-01-13 21:14:53.718 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:14:53.719 EET</date>
	<endDate>2013-01-13 21:14:53.719 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:16:40.479 EET</date>
	<endDate>2013-01-13 21:16:40.479 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:16:47.106 EET</date>
	<endDate>2013-01-13 21:16:47.106 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:17:55.573 EET</date>
	<endDate>2013-01-13 21:17:55.573 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:17:57.839 EET</date>
	<endDate>2013-01-13 21:17:57.839 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:17:58.838 EET</date>
	<endDate>2013-01-13 21:17:58.838 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:17:58.868 EET</date>
	<endDate>2013-01-13 21:17:58.868 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:17:58.868 EET</date>
	<endDate>2013-01-13 21:17:58.868 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorOpen</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:19:02.750 EET</date>
	<endDate>2013-01-13 21:19:02.750 EET</endDate>
	<originId>org.eclipse.ui.edit.copy</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:19:05.664 EET</date>
	<endDate>2013-01-13 21:19:05.664 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:19:06.337 EET</date>
	<endDate>2013-01-13 21:19:06.337 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:19:08.979 EET</date>
	<endDate>2013-01-13 21:19:08.979 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:19:19.247 EET</date>
	<endDate>2013-01-13 21:19:19.247 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:19:25.293 EET</date>
	<endDate>2013-01-13 21:19:25.293 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:19:26.146 EET</date>
	<endDate>2013-01-13 21:19:26.146 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:20:00.195 EET</date>
	<endDate>2013-01-13 21:20:00.195 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:20:40.233 EET</date>
	<endDate>2013-01-13 21:20:40.233 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:20:49.278 EET</date>
	<endDate>2013-01-13 21:20:49.278 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:21:40.706 EET</date>
	<endDate>2013-01-13 21:21:40.706 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:23:09.488 EET</date>
	<endDate>2013-01-13 21:23:09.488 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:23:21.439 EET</date>
	<endDate>2013-01-13 21:23:21.439 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:23:26.58 EET</date>
	<endDate>2013-01-13 21:23:26.58 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:23:29.421 EET</date>
	<endDate>2013-01-13 21:23:29.421 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:23:32.352 EET</date>
	<endDate>2013-01-13 21:23:32.352 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:18.995 EET</date>
	<endDate>2013-01-13 21:24:18.995 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.20 EET</date>
	<endDate>2013-01-13 21:24:30.20 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.515 EET</date>
	<endDate>2013-01-13 21:24:30.515 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.547 EET</date>
	<endDate>2013-01-13 21:24:30.547 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.579 EET</date>
	<endDate>2013-01-13 21:24:30.579 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.612 EET</date>
	<endDate>2013-01-13 21:24:30.612 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.643 EET</date>
	<endDate>2013-01-13 21:24:30.643 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.674 EET</date>
	<endDate>2013-01-13 21:24:30.674 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.707 EET</date>
	<endDate>2013-01-13 21:24:30.707 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.739 EET</date>
	<endDate>2013-01-13 21:24:30.739 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.771 EET</date>
	<endDate>2013-01-13 21:24:30.771 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.802 EET</date>
	<endDate>2013-01-13 21:24:30.802 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.835 EET</date>
	<endDate>2013-01-13 21:24:30.835 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.867 EET</date>
	<endDate>2013-01-13 21:24:30.867 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.898 EET</date>
	<endDate>2013-01-13 21:24:30.898 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.931 EET</date>
	<endDate>2013-01-13 21:24:30.931 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.962 EET</date>
	<endDate>2013-01-13 21:24:30.962 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:30.994 EET</date>
	<endDate>2013-01-13 21:24:30.994 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:31.27 EET</date>
	<endDate>2013-01-13 21:24:31.27 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:31.58 EET</date>
	<endDate>2013-01-13 21:24:31.58 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:31.90 EET</date>
	<endDate>2013-01-13 21:24:31.90 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:31.122 EET</date>
	<endDate>2013-01-13 21:24:31.122 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:31.250 EET</date>
	<endDate>2013-01-13 21:24:31.250 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:31.447 EET</date>
	<endDate>2013-01-13 21:24:31.447 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:31.591 EET</date>
	<endDate>2013-01-13 21:24:31.591 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:32.4 EET</date>
	<endDate>2013-01-13 21:24:32.4 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:33.980 EET</date>
	<endDate>2013-01-13 21:24:33.980 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:35.292 EET</date>
	<endDate>2013-01-13 21:24:35.292 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:35.976 EET</date>
	<endDate>2013-01-13 21:24:35.976 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:24:37.414 EET</date>
	<endDate>2013-01-13 21:24:37.414 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:24:57.969 EET</date>
	<endDate>2013-01-13 21:24:57.969 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:24:58.977 EET</date>
	<endDate>2013-01-13 21:24:58.977 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:25:22.501 EET</date>
	<endDate>2013-01-13 21:25:22.501 EET</endDate>
	<originId>org.eclipse.ui.edit.copy</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:25:24.29 EET</date>
	<endDate>2013-01-13 21:25:24.29 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:25:35.657 EET</date>
	<endDate>2013-01-13 21:25:35.657 EET</endDate>
	<originId>org.eclipse.ui.edit.cut</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:25:53.720 EET</date>
	<endDate>2013-01-13 21:25:53.720 EET</endDate>
	<originId>org.eclipse.ui.edit.paste</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:01.529 EET</date>
	<endDate>2013-01-13 21:26:01.529 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:02.975 EET</date>
	<endDate>2013-01-13 21:26:02.975 EET</endDate>
	<originId>org.eclipse.ui.edit.text.goto.lineStart</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:05.392 EET</date>
	<endDate>2013-01-13 21:26:05.392 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:08.380 EET</date>
	<endDate>2013-01-13 21:26:08.380 EET</endDate>
	<originId>org.eclipse.debug.internal.ui.actions.RunDropDownAction</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>toolbar</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:41.129 EET</date>
	<endDate>2013-01-13 21:26:41.129 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:48.803 EET</date>
	<endDate>2013-01-13 21:26:48.803 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:56.142 EET</date>
	<endDate>2013-01-13 21:26:56.142 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:56.788 EET</date>
	<endDate>2013-01-13 21:26:56.788 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:57.102 EET</date>
	<endDate>2013-01-13 21:26:57.102 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:57.442 EET</date>
	<endDate>2013-01-13 21:26:57.442 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:57.663 EET</date>
	<endDate>2013-01-13 21:26:57.663 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:57.951 EET</date>
	<endDate>2013-01-13 21:26:57.951 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:26:58.359 EET</date>
	<endDate>2013-01-13 21:26:58.359 EET</endDate>
	<originId>org.eclipse.ui.edit.delete</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:27:08.726 EET</date>
	<endDate>2013-01-13 21:27:08.726 EET</endDate>
	<originId>org.eclipse.ui.file.save</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>keybinding</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:27:16.271 EET</date>
	<endDate>2013-01-13 21:27:16.271 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:27:17.228 EET</date>
	<endDate>2013-01-13 21:27:17.228 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:27:19.183 EET</date>
	<endDate>2013-01-13 21:27:19.183 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:27:20.49 EET</date>
	<endDate>2013-01-13 21:27:20.49 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:27:28.448 EET</date>
	<endDate>2013-01-13 21:27:28.448 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>LTrAZqc28aWWajKqfyrRXemCx40=</structureHandle>
	<navigation>null</navigation>
	<delta>activated</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:27:28.574 EET</date>
	<endDate>2013-01-13 21:27:28.574 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: actionSetShow</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:27:28.680 EET</date>
	<endDate>2013-01-13 21:27:28.680 EET</endDate>
	<originId>com.swtdesigner.editors.MultiPageEditor</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:27:29.611 EET</date>
	<endDate>2013-01-13 21:27:29.611 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective changed: editorClose</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:27:29.612 EET</date>
	<endDate>2013-01-13 21:27:29.612 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective closed</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:27:29.639 EET</date>
	<endDate>2013-01-13 21:27:29.639 EET</endDate>
	<originId>org.eclipse.debug.ui.DebugPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective closed</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>preference</kind>
	<date>2013-01-13 21:27:29.642 EET</date>
	<endDate>2013-01-13 21:27:29.642 EET</endDate>
	<originId>org.eclipse.jdt.ui.JavaBrowsingPerspective</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>perspective closed</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
<interactionEvent>
	<kind>command</kind>
	<date>2013-01-13 21:27:29.648 EET</date>
	<endDate>2013-01-13 21:27:29.648 EET</endDate>
	<originId>org.eclipse.ui.internal.WorkbenchWindow</originId>
	<structureKind>null</structureKind>
	<structureHandle>gZmLkbazE00TxC8oVszpqUbRzow=/K+iMpCQsduglOsYkdIUQZQMtaDM=</structureHandle>
	<navigation>null</navigation>
	<delta>closed</delta>
	<interestContribution>1.0</interestContribution>
</interactionEvent>
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;
import java.lang.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedQuery(String query, Object[] parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean - ok
		// String  - ok
		// char    - 
		// byte    -
		// short   -
		// int     -
		// long    -
		// double  -
		// float   -
		// Date    -
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i, parameters[i]);
				
				/*if (parameters[i] instanceof Boolean) {
					
					sqlStatement.setBoolean(i, ((Boolean)parameters[i]).booleanValue());
					continue;
				}
				if (parameters[i] instanceof String) {
					
					sqlStatement.setString(i, ((String)parameters[i].toString()));
					continue;
				}
				if (parameters[i] instanceof Character) {
					
					sqlStatement.set
				}*/
			}
			
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
import java.awt.Insets;

	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		HelpAbout.addActionListener(new HelpAboutActionListener());
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}
				databaseConnectWindow.dbPortal.finalize();
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
			databaseConnectWindow.dbPortal.finalize();
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	}
	
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	}
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
	
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedNonQuery(String query, Object[] parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean - ok
		// String  - ok
		// char    - 
		// byte    -
		// short   -
		// int     -
		// long    -
		// double  -
		// float   -
		// Date    -
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i, parameters[i]);
				
				/*if (parameters[i] instanceof Boolean) {
					
					sqlStatement.setBoolean(i, ((Boolean)parameters[i]).booleanValue());
					continue;
				}
				if (parameters[i] instanceof String) {
					
					sqlStatement.setString(i, ((String)parameters[i].toString()));
					continue;
				}
				if (parameters[i] instanceof Character) {
					
					sqlStatement.set
				}*/
			}
			
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
import javax.swing.WindowConstants;
import javax.swing.JButton;
import md5_calculator.Md5hashcalc;
		EventQueue.invokeLater(new Runnable() { 
		});		
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

				dbPortal.finalize();
					}
					dbPortal.finalize();
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (1)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
			dbPortal.finalize();
		//FIXME prone??? to sql injection maybe??
		
		if (dbPortal.executeNonQuery("CREATE DATABASE " + mysqlDatabaseNameTextField.getText() + " COLLATE utf8_general_ci") != 1) {
			dbPortal.finalize();
		dbPortal.setMySqlActiveDatabase(mysqlDatabaseNameTextField.getText());
		dbPortal.disconnect();
		
		if (dbPortal.connect() == false) { //false positive for database creation
			dbPortal.setMySqlActiveDatabase("");
			
			if (dbPortal.connect()) {
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
			}			
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (2)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
					"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.finalize();
		dbPortal.executeNonQuery("CREATE TABLE operators (operator_id int NOT NULL AUTO_INCREMENT primary key," + 
				"operator_username nvarchar(20) NOT NULL, operator_password nvarchar(64) NOT NULL," + 
				"operator_first_name nvarchar(20) NOT NULL, operator_last_name nvarchar(20) NOT NULL)");
		
		dbPortal.executeNonQuery("CREATE TABLE orders (order_id int NOT NULL AUTO_INCREMENT primary key," + 
				"CONSTRAINT FK_OPERATORS FOREIGN KEY (order_operator_id) REFERENCES operators(operator_id) ON DELETE CASCADE ON UPDATE CASCADE)");
		dbPortal.executeNonQuery("CREATE TABLE products (product_id int NOT NULL AUTO_INCREMENT primary key," + 
				"product_name nvarchar(30) NOT NULL, product_quantity int NOT NULL,	product_price decimal(10,2) NOT NULL)");
		dbPortal.executeNonQuery("CREATE TABLE order_details (order_detail_id int NOT NULL AUTO_INCREMENT primary key," + 
				"CONSTRAINT FK_PRODUCTS FOREIGN KEY (order_detail_product_id) REFERENCES products(product_id) ON DELETE CASCADE ON UPDATE CASCADE)");
		
		/* for testing only; not needed any more
		try {
			if (dbPortal.executeNonQuery("INSERT INTO operators (operator_username, operator_password, operator_first_name, operator_last_name)" + 
					" VALUES ('operator1', '" + Md5hashcalc.calculateMD5hash("operator1")  + "', 'Îïåðàòîð1', 'ñëóæåáåí àêàóíò')") != 1) {
				
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
				dbPortal.finallize();
				
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè äîáàâÿíå íà çàïèñ â áàçàòà äàííè!\nÏðîâåðåòå ïðàâàòà íà ïîòðåáèòåëÿ è âðúçêàòà.", "Ãðåøêà ïðè äîáàâÿíå íà äàííè â ÁÄ", JOptionPane.ERROR_MESSAGE);
				
				return false;
			}
		catch (Exception ex) {
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå çàðåäè êðèïòèðàù àëãîðèòúì MD5!", "Ôàòàëíà Ãðåøêà", 
					JOptionPane.ERROR_MESSAGE);
			System.exit(-1);
		}*/
	}	
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserLoginWindow extends JFrame {

	private final JPanel groupLoginPanel = new JPanel();
	private final JPanel groupCreateNewUserPanel = new JPanel();
	private final JLabel loginUsernameLabel = new JLabel();
	private final JLabel loginPasswordLabel = new JLabel();
	private final JButton loginButton = new JButton();
	private final JTextField loginUsernameTextField = new JTextField();
	private final JPasswordField loginPasswordPasswordField = new JPasswordField();
	private final JLabel newUsernameLabel = new JLabel();
	private final JLabel newPasswordLabel = new JLabel();
	private final JLabel newUserFirstNameLabel = new JLabel();
	private final JLabel newUserLastNameLabel = new JLabel();
	private final JButton createNewOperatorButton = new JButton();
	private final JTextField newUsernameTextField = new JTextField();
	private final JTextField newFirstNameTextField = new JTextField();
	private final JPasswordField newPasswordPasswordField = new JPasswordField();
	private final JTextField newLastNameTextField = new JTextField();
	
	public static int loggedUserId = -1;
	public static String loggedUserNames = "";
	
	private final JLabel newPasswordAgainLabel = new JLabel();
	private final JPasswordField newPasswordPasswordAgainField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLoginWindow frame = new operatorUserLoginWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLoginWindow() {
		super();
		setBounds(100, 100, 518, 242);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Âõîä íà îïåðàòîð");
		setName("operatorLoginWindow");
		setResizable(false);
		setAlwaysOnTop(true);
		
		getContentPane().add(groupLoginPanel);
		groupLoginPanel.setLayout(null);
		groupLoginPanel.setBorder(new TitledBorder(null, "Âõîä:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupLoginPanel.setBounds(10, 10, 243, 133);
		
		groupLoginPanel.add(loginUsernameLabel);
		loginUsernameLabel.setText("Ïîòðåáèòåë:");
		loginUsernameLabel.setBounds(10, 31, 80, 16);
		
		groupLoginPanel.add(loginPasswordLabel);
		loginPasswordLabel.setText("Ïàðîëà:");
		loginPasswordLabel.setBounds(10, 53, 80, 16);
		
		groupLoginPanel.add(loginButton);
		loginButton.addActionListener(new LoginButtonActionListener());
		loginButton.setText("Âõîä");
		loginButton.setBounds(127, 93, 106, 26);
		
		groupLoginPanel.add(loginUsernameTextField);
		loginUsernameTextField.setBounds(96, 29, 137, 20);
		
		groupLoginPanel.add(loginPasswordPasswordField);
		loginPasswordPasswordField.setBounds(96, 51, 137, 20);
		
		getContentPane().add(groupCreateNewUserPanel);
		groupCreateNewUserPanel.setLayout(null);
		groupCreateNewUserPanel.setBorder(new TitledBorder(null, "Íîâ îïåðàòîð:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupCreateNewUserPanel.setBounds(259, 10, 243, 194);
		
		groupCreateNewUserPanel.add(newUsernameLabel);
		newUsernameLabel.setText("Íîâ ïîòðåáèòåë:");
		newUsernameLabel.setBounds(10, 32, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordLabel);
		newPasswordLabel.setText("Ïàðîëà:");
		newPasswordLabel.setBounds(10, 54, 95, 16);
		
		groupCreateNewUserPanel.add(newUserFirstNameLabel);
		newUserFirstNameLabel.setText("Èìå:");
		newUserFirstNameLabel.setBounds(10, 98, 95, 16);
		
		groupCreateNewUserPanel.add(newUserLastNameLabel);
		newUserLastNameLabel.setText("Ôàìèëèÿ:");
		newUserLastNameLabel.setBounds(10, 120, 95, 16);
		
		groupCreateNewUserPanel.add(createNewOperatorButton);
		createNewOperatorButton.addActionListener(new CreateNewOperatorButtonActionListener());
		createNewOperatorButton.setText("Ñúçäàé");
		createNewOperatorButton.setBounds(127, 158, 106, 26);
		
		groupCreateNewUserPanel.add(newUsernameTextField);
		newUsernameTextField.setBounds(111, 30, 122, 20);
		
		groupCreateNewUserPanel.add(newFirstNameTextField);
		newFirstNameTextField.setBounds(111, 96, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordPasswordField);
		newPasswordPasswordField.setBounds(111, 52, 122, 20);
		
		groupCreateNewUserPanel.add(newLastNameTextField);
		newLastNameTextField.setBounds(111, 118, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordAgainLabel);
		newPasswordAgainLabel.setText("Ïàðîëà îòíîâî:");
		newPasswordAgainLabel.setBounds(10, 76, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordPasswordAgainField);
		newPasswordPasswordAgainField.setBounds(111, 75, 122, 20);
	}
	private class LoginButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			loginButton_actionPerformed(e);
		}
	}
	private class CreateNewOperatorButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			createNewOperatorButton_actionPerformed(e);
		}
	}
	
	protected void loginButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				String password = "";
				
				char[] pass = loginPasswordPasswordField.getPassword();
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				//FIXME prone to sql injection
				
				ResultSet rs = null;
				
				try {				
					
					rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_id, operator_first_name, operator_last_name FROM operators WHERE" + 
						" operator_username='" + loginUsernameTextField.getText() + "' AND operator_password='" +
						Md5hashcalc.calculateMD5hash(password) + "'");
				}
				catch (Exception ex) {
					System.exit(-1);
				}
				
				if (rs != null) {
					
					try {
						
						loggedUserId = rs.getInt(1);
						loggedUserNames = rs.getString(2) + " " + rs.getString(3);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
								JOptionPane.ERROR_MESSAGE);
						return;
					}
					
					this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
				}
				else {
					JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
							JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			return;
		}		
	}
	
	protected void createNewOperatorButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				char[] pass = newPasswordPasswordField.getPassword();
				String password = "";
				String encryptedPassword = "";
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				char[] pass2 = newPasswordPasswordAgainField.getPassword();
				
				if (pass.length == pass2.length) {
				
						for (int i = 0; i < pass.length; i++) {
							
							if (pass[i] != pass2[i]) {
								
								JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
								return;
							}
						}
				}
				else {
				
					JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
					return;
				}
								
				if ((newUsernameTextField.getText().length() > 3) && (password.length() > 3) && 
						(newFirstNameTextField.getText().length() > 3) && (newLastNameTextField.getText().length() > 3)) {
					
					try {
						
						encryptedPassword = Md5hashcalc.calculateMD5hash(password);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ôàòàëíà ãðåøêà ïðè êðèïòèðàíåòî!", "Ôàòàëíà ãðåøêà", JOptionPane.ERROR_MESSAGE);
						System.exit(-1);
					}
					
					//FIXME prone to sql injection
					ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT COUNT(*) FROM operators WHERE operator_username='" +
							newUsernameTextField.getText() + "'");
					
					int usersCount = 0;
					try {
						
						usersCount = rs.getInt(1);
					}
					catch (Exception ex) {						
					}					
					
					if ((databaseConnectWindow.dbPortal.getLastError() == null) && (usersCount == 0)) {						
						
						//no such existing username so now we create it
						//FIXME prone to sql injection
						if (databaseConnectWindow.dbPortal.executeNonQuery("INSERT INTO operators(operator_username, operator_password, " +
								"operator_first_name, operator_last_name) VALUES('" + newUsernameTextField.getText() + "', '" +
								encryptedPassword + "', '" + newFirstNameTextField.getText() + "', '" + newLastNameTextField.getText() + "')") != 1) {
							
							JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñúçäàâàíå íà íîâ ïîòðåáèòåë!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
						}
						else { //everything ok so login now
							
							loginUsernameTextField.setText(newUsernameTextField.getText());
							loginPasswordPasswordField.setText(password);
							loginButton_actionPerformed(null);
						}						
					}
					else {
						
						if (databaseConnectWindow.dbPortal.getLastError() != null) {
							
							JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);							
						}
						else {
							
							JOptionPane.showMessageDialog(this, "Èçáðàíîòî îò Âàñ ïîòðåáèòåëñêî èìå âå÷å ñúùåñòâóâà.", "Äóáëèðàùî ñå ïîòðåáèòåëñêî èìå", JOptionPane.ERROR_MESSAGE);							
						}
					}					
				}
				else {
					
					JOptionPane.showMessageDialog(this, "Íåîáõîäèìî å äà âúâåäåòå ïî-ïîäðîáíè äàííè!", "Íåïîäðîáíè äàííè", JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
		}		
	}

}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {
	private static final long serialVersionUID = 3004L;

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JButton deleteOperator = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();	
	
	private String currentOperatorPassword = "";
	public static String operatorFirstNameLastNameCombination = "";	
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 255);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setResizable(false);
		setAlwaysOnTop(true);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 278, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.addActionListener(new UpdateButtonActionListener());
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(90, 130, 137, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
		
		getContentPane().add(deleteOperator);
		deleteOperator.addActionListener(new DeleteOperatorActionListener());
		deleteOperator.setText("Èçòðèé îïåðàòîð");
		deleteOperator.setBounds(90, 189, 137, 26);
	}
	
	private void getCurrentUserData() {
		
		if (databaseConnectWindow.dbPortal == null) {
			return;
		}
		if (databaseConnectWindow.dbPortal.isConnected() == false) {
			return;
		}
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_username, operator_password, " + 
				"operator_first_name, operator_last_name FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId);
		
		if ((rs == null) || (databaseConnectWindow.dbPortal.getLastError() != null)) {
			return;
		}
		
		try {
			
			usernameLabel.setText("Ïîòðåáèòåë: " + rs.getString(1));
			currentOperatorPassword = rs.getString(2);
			firstNameTextField.setText(rs.getString(3));
			lastNameTextField.setText(rs.getString(4));
		}
		catch (Exception ex) {			
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
	}
	
	private class UpdateButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			updateButton_actionPerformed(e);
		}
	}
	private class DeleteOperatorActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			deleteOperator_actionPerformed(e);
		}
	}
	protected void updateButton_actionPerformed(ActionEvent e) {
		
		char[] pass = passwordPasswordField.getPassword();
		String password = "";
		
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		char[] pass2 = passwordAgainPasswordField.getPassword();
		String password2 = "";
		
		for (int j = 0; j < pass2.length; j++) {
			
			password2 += pass2[j];
		}
		
		if (password.compareTo(password2) != 0) {
			
			JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if (password.length() > 3) { //password update will be performed too
			
			try {
				
				password = Md5hashcalc.calculateMD5hash(password);
				currentOperatorPassword = password;
			}
			catch (Exception ex) {
				
				JOptionPane.showMessageDialog(this, "Äàííèòå ñ èçêëþ÷åíèå íà òåçè çà ïàðîëàòà ñàìî\nùå áúäàò îáíîâåíè ïîðàäè ïðîáëåìè ñ êðèïòèðàíåòî!", "Ïðîáëåì ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			}			
		}
		else {
			if (password.length() > 0) {
				
				JOptionPane.showMessageDialog(this, "Ïàðîëàòà òðÿáâà äà å ïîíå 4 ñèìâîëà!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		
		if ((firstNameTextField.getText().length() <= 3) || (lastNameTextField.getText().length() <= 3)) {
			
			JOptionPane.showMessageDialog(this, "Ïðåêàëåíî êðàòêè èìå èëè ôàìèëèÿ!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if (databaseConnectWindow.dbPortal.executeParameterizedNonQuery("UPDATE operators SET operator_password=? " +
				"operator_first_name=? operator_last_name=? WHERE operator_id=?", currentOperatorPassword, 
				firstNameTextField.getText(), lastNameTextField.getText(), operatorUserLoginWindow.loggedUserId) != 1) {
		
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè îáíîâÿâàíå íà äàííèòå!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
		operatorUserLoginWindow.loggedUserNames = operatorFirstNameLastNameCombination; //in case
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	protected void deleteOperator_actionPerformed(ActionEvent e) {
		
		//we can not delete not existing operator
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		if (JOptionPane.showConfirmDialog(this, "Èçòðèâàíåòî íà îïåðàòîðà ùå ïðåìàõíå îò áàçàòà äàííè\n" + 
				"è âñè÷êè äåéíîñòè, êîèòî òîé å èçâúðøèë.\n\n\tÈçòðèâàíå?", "Ïîòâúðäåòå èçòðèâàíå íà îïåðàòîð", 
				JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
			
			if (databaseConnectWindow.dbPortal.executeNonQuery("DELETE FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {

				JOptionPane.showMessageDialog(this, "Èçòðèâàíåòî å íåóñïåøíî!", "Íåóñïåøíî èçòðèâàíå íà îïåðàòîð", JOptionPane.ERROR_MESSAGE);
				return;
			}
			
			operatorUserLoginWindow.loggedUserId = -1;
			this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
		}
		
		return;
	}

}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SpringLayout;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;


public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.addActionListener(new HelpAboutActionListener());
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.finalize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finalize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
		}
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
		
		operatorUserLoginWindow oul = new operatorUserLoginWindow();
		oul.setVisible(true);
		oul.addWindowListener(operatorUserLoginWindowClosing);
	}
	private static WindowListener operatorUserLoginWindowClosing = new WindowAdapter() {

		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.Operations.setEnabled(true);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserLoginWindow.loggedUserNames);
			}
			else {
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	}
	
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	}
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
	
}
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;
import java.lang.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedNonQuery(String query, Object[] parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean - ok
		// String  - ok
		// char    - 
		// byte    -
		// short   -
		// int     -
		// long    -
		// double  -
		// float   -
		// Date    -
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i, parameters[i]);
				
				/*if (parameters[i] instanceof Boolean) {
					
					sqlStatement.setBoolean(i, ((Boolean)parameters[i]).booleanValue());
					continue;
				}
				if (parameters[i] instanceof String) {
					
					sqlStatement.setString(i, ((String)parameters[i].toString()));
					continue;
				}
				if (parameters[i] instanceof Character) {
					
					sqlStatement.set
				}*/
			}
			
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
import java.awt.Insets;

	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		HelpAbout.addActionListener(new HelpAboutActionListener());
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}
				databaseConnectWindow.dbPortal.finalize();
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
			databaseConnectWindow.dbPortal.finalize();
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserLoginWindow.loggedUserNames);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
	};
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	}
	
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.JButton;
import javax.swing.JOptionPane;

import database_management.MySQLdbManager;

public class databaseConnectWindow extends JFrame {
	private static final long serialVersionUID = 3002L;

	private final JLabel label = new JLabel();
	private final JLabel label_1 = new JLabel();
	private final JLabel label_2 = new JLabel();
	private final JLabel label_3 = new JLabel();
	private final JLabel label_4 = new JLabel();
	private final JButton connectToDatabaseButton = new JButton();
	private final JTextField mysqlServerAddressTextField = new JTextField();
	private final JTextField mysqlPortTextField = new JTextField();
	private final JTextField mysqlDatabaseNameTextField = new JTextField();
	private final JTextField mysqlUsernameTextField = new JTextField();
	private final JPasswordField mysqlPasswordPasswordField = new JPasswordField();
	public static MySQLdbManager dbPortal = null;
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() { 
			public void run() {
				try {
					databaseConnectWindow frame = new databaseConnectWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});		
	}

	/**
	 * Create the frame
	 */
	public databaseConnectWindow() {
		super();
		setBounds(100, 100, 384, 203);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setAlwaysOnTop(true);
		setResizable(false);
		setTitle("Ñâúðçâàíå ñ áàçàòà äàííè");
		setName("databaseConnectWindowFrame");
		
		getContentPane().add(label);
		label.setText("Àäðåñ íà MySQL ñúðâúðà:");
		label.setBounds(10, 10, 165, 16);
		
		getContentPane().add(label_1);
		label_1.setText("Èìå íà áàçàòà äàííè:");
		label_1.setBounds(10, 54, 165, 16);
		
		getContentPane().add(label_2);
		label_2.setText("Ïîðò:");
		label_2.setBounds(10, 32, 156, 16);
		
		getContentPane().add(label_3);
		label_3.setText("Ïîòðåáèòåëñêî èìå:");
		label_3.setBounds(10, 76, 165, 16);
		
		getContentPane().add(label_4);
		label_4.setText("Ïàðîëà:");
		label_4.setBounds(10, 98, 156, 16);
		
		getContentPane().add(connectToDatabaseButton);
		connectToDatabaseButton.addActionListener(new ConnectToDatabaseButtonActionListener());
		connectToDatabaseButton.setText("Ñâúðæè ñå!");
		connectToDatabaseButton.setBounds(132, 135, 106, 26);
		
		getContentPane().add(mysqlServerAddressTextField);
		mysqlServerAddressTextField.setText("127.0.0.1");
		mysqlServerAddressTextField.setBounds(181, 8, 185, 20);
		
		getContentPane().add(mysqlPortTextField);
		mysqlPortTextField.setText("3306");
		mysqlPortTextField.setBounds(181, 30, 91, 20);
		
		getContentPane().add(mysqlDatabaseNameTextField);
		mysqlDatabaseNameTextField.setText("shop");
		mysqlDatabaseNameTextField.setBounds(181, 52, 181, 20);
		
		getContentPane().add(mysqlUsernameTextField);
		mysqlUsernameTextField.setText("root");
		mysqlUsernameTextField.setBounds(181, 76, 180, 18);
		
		getContentPane().add(mysqlPasswordPasswordField);
		mysqlPasswordPasswordField.setBounds(181, 96, 181, 20);
	}
	private class ConnectToDatabaseButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			connectToDatabaseButton_actionPerformed(e);
		}
	}

	protected void connectToDatabaseButton_actionPerformed(ActionEvent e) {
		
		String password = "";
		
		char [] pass = mysqlPasswordPasswordField.getPassword();
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		dbPortal = new MySQLdbManager(mysqlServerAddressTextField.getText(),
				mysqlDatabaseNameTextField.getText(), Integer.parseInt(mysqlPortTextField.getText()),
				mysqlUsernameTextField.getText(), password);		
		
		
		if (dbPortal.connect() == false) { //now check for database name that is not existing
			
			dbPortal.setMySqlActiveDatabase("");
			dbPortal.disconnect(); //just in case
			
			if (dbPortal.connect() == false) { //connection settings problem or not running MySQL server
				dbPortal.finalize();
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
						"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);
				
				return;
			}
			else { //will have to create new database
				
				dbPortal.disconnect();
				
				if (JOptionPane.showConfirmDialog(this, "Ùå áúäå ñúçäàäåíà íîâà áàçà äàííè ñ èìå: " + mysqlDatabaseNameTextField.getText() +
						".\nÑèãóðíè ëè ñòå?", "Ñúçäàâàíå íà íîâà áàçà äàííè?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
					
					if (createNewDatabaseAndTables() == false) { //in case of fail do not close this window
						
						return;
					}
				}
				else {
				
					dbPortal.finalize();
					return;
				}
				
				this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
			}			
		}
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	private boolean createNewDatabaseAndTables() {
		
		if (dbPortal.connect() == false) {
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (1)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
					"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.finalize();
			return false;
		}
		
		//FIXME prone??? to sql injection maybe??
		
		if (dbPortal.executeParameterizedNonQuery("CREATE DATABASE ? COLLATE utf8_general_ci", mysqlDatabaseNameTextField.getText()) != 1) {
			
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.finalize();
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå ñúçäàäå áàçà äàííè!\nÏðîâåðåòå èìàòå ëè ïðàâà çà òîâà!", 
					"Íå ìîæå äà ñå ñúçäàäå ÁÄ!", JOptionPane.ERROR_MESSAGE);
			return false;
		}

		/*if (dbPortal.executeNonQuery("CREATE DATABASE " + mysqlDatabaseNameTextField.getText() + " COLLATE utf8_general_ci") != 1) {
			
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.finalize();
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå ñúçäàäå áàçà äàííè!\nÏðîâåðåòå èìàòå ëè ïðàâà çà òîâà!", 
					"Íå ìîæå äà ñå ñúçäàäå ÁÄ!", JOptionPane.ERROR_MESSAGE);
			return false;
		}/*
		
		dbPortal.setMySqlActiveDatabase(mysqlDatabaseNameTextField.getText());
		dbPortal.disconnect();
		
		if (dbPortal.connect() == false) { //false positive for database creation
			
			dbPortal.setMySqlActiveDatabase("");
			dbPortal.disconnect();
			
			if (dbPortal.connect()) {
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
			}			
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (2)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
					"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.finalize();
			return false;
		}
		
		dbPortal.executeNonQuery("CREATE TABLE operators (operator_id int NOT NULL AUTO_INCREMENT primary key," + 
				"operator_username nvarchar(20) NOT NULL, operator_password nvarchar(64) NOT NULL," + 
				"operator_first_name nvarchar(20) NOT NULL, operator_last_name nvarchar(20) NOT NULL)");
		
		dbPortal.executeNonQuery("CREATE TABLE orders (order_id int NOT NULL AUTO_INCREMENT primary key," + 
				"order_time datetime NOT NULL, order_operator_id int NOT NULL," +
				"CONSTRAINT FK_OPERATORS FOREIGN KEY (order_operator_id) REFERENCES operators(operator_id) ON DELETE CASCADE ON UPDATE CASCADE)");

		dbPortal.executeNonQuery("CREATE TABLE products (product_id int NOT NULL AUTO_INCREMENT primary key," + 
				"product_name nvarchar(30) NOT NULL, product_quantity int NOT NULL,	product_price decimal(10,2) NOT NULL)");

		dbPortal.executeNonQuery("CREATE TABLE order_details (order_detail_id int NOT NULL AUTO_INCREMENT primary key," + 
				"order_detail_order_id int NOT NULL, order_detail_product_id int NOT NULL, " +
				"order_detail_product_quantity int NOT NULL," +
				"CONSTRAINT FK_ORDERS FOREIGN KEY (order_detail_order_id) REFERENCES orders(order_id) ON DELETE CASCADE ON UPDATE CASCADE," +
				"CONSTRAINT FK_PRODUCTS FOREIGN KEY (order_detail_product_id) REFERENCES products(product_id) ON DELETE CASCADE ON UPDATE CASCADE)");
		
		/* for testing only; not needed any more
		try {
			if (dbPortal.executeNonQuery("INSERT INTO operators (operator_username, operator_password, operator_first_name, operator_last_name)" + 
					" VALUES ('operator1', '" + Md5hashcalc.calculateMD5hash("operator1")  + "', 'Îïåðàòîð1', 'ñëóæåáåí àêàóíò')") != 1) {
				
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
				dbPortal.finallize();
				
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè äîáàâÿíå íà çàïèñ â áàçàòà äàííè!\nÏðîâåðåòå ïðàâàòà íà ïîòðåáèòåëÿ è âðúçêàòà.", "Ãðåøêà ïðè äîáàâÿíå íà äàííè â ÁÄ", JOptionPane.ERROR_MESSAGE);
				
				return false;
			}
		}
		catch (Exception ex) {
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå çàðåäè êðèïòèðàù àëãîðèòúì MD5!", "Ôàòàëíà Ãðåøêà", 
					JOptionPane.ERROR_MESSAGE);
			System.exit(-1);
		}*/
		
		return true;
	}	
}
import javax.swing.WindowConstants;
import javax.swing.JButton;
import md5_calculator.Md5hashcalc;
		EventQueue.invokeLater(new Runnable() { 
		});		
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

				dbPortal.finalize();
					dbPortal.finalize();
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (1)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
					"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.finalize();
			return false;
		}
		
		if (dbPortal.executeNonQuery("CREATE DATABASE " + mysqlDatabaseNameTextField.getText() + " COLLATE utf8_general_ci") != 1) {
			
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.finalize();
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå ñúçäàäå áàçà äàííè!\nÏðîâåðåòå èìàòå ëè ïðàâà çà òîâà!", 
					"Íå ìîæå äà ñå ñúçäàäå ÁÄ!", JOptionPane.ERROR_MESSAGE);
			return false;
		}
		
		dbPortal.setMySqlActiveDatabase(mysqlDatabaseNameTextField.getText());
		dbPortal.disconnect();
		
		if (dbPortal.connect() == false) { //false positive for database creation
			
			dbPortal.setMySqlActiveDatabase("");
			dbPortal.disconnect();
			
			if (dbPortal.connect()) {
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
			}			
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (2)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
					"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.finalize();
				"operator_username nvarchar(20) NOT NULL, operator_password nvarchar(64) NOT NULL," + 
		/* for testing only; not needed any more
		try {
			if (dbPortal.executeNonQuery("INSERT INTO operators (operator_username, operator_password, operator_first_name, operator_last_name)" + 
					" VALUES ('operator1', '" + Md5hashcalc.calculateMD5hash("operator1")  + "', 'Îïåðàòîð1', 'ñëóæåáåí àêàóíò')") != 1) {
				
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
				dbPortal.finallize();
				
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè äîáàâÿíå íà çàïèñ â áàçàòà äàííè!\nÏðîâåðåòå ïðàâàòà íà ïîòðåáèòåëÿ è âðúçêàòà.", "Ãðåøêà ïðè äîáàâÿíå íà äàííè â ÁÄ", JOptionPane.ERROR_MESSAGE);
				
				return false;
			}
		}
		catch (Exception ex) {
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå çàðåäè êðèïòèðàù àëãîðèòúì MD5!", "Ôàòàëíà Ãðåøêà", 
					JOptionPane.ERROR_MESSAGE);
			System.exit(-1);
		}*/
		
	}	
import java.awt.Insets;
import database_management.MySQLdbManager;

	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		HelpAbout.addActionListener(new HelpAboutActionListener());
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}
				databaseConnectWindow.dbPortal.finalize();
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
			databaseConnectWindow.dbPortal.finalize();
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserLoginWindow.loggedUserNames);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	}
	
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	}
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
	
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedNonQuery(String query, Object... parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i + 1, parameters[i]);
			}
			
			sqlStatement.execute();
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Executes parameterized query and returns ResultSet with data. For SELECT...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return ResultSet
	 */
	
	public ResultSet executeParameterizedQuery(String query, Object... parameters) { //executes query and returns ResultSet 
		
		PreparedStatement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i + 1, parameters[i]);
			}
			
			result = sqlStatement.executeQuery();
			
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.JButton;
import javax.swing.JOptionPane;

import database_management.MySQLdbManager;
import md5_calculator.Md5hashcalc;

public class databaseConnectWindow extends JFrame {

	private final JLabel label = new JLabel();
	private final JLabel label_1 = new JLabel();
	private final JLabel label_2 = new JLabel();
	private final JLabel label_3 = new JLabel();
	private final JLabel label_4 = new JLabel();
	private final JButton connectToDatabaseButton = new JButton();
	private final JTextField mysqlServerAddressTextField = new JTextField();
	private final JTextField mysqlPortTextField = new JTextField();
	private final JTextField mysqlDatabaseNameTextField = new JTextField();
	private final JTextField mysqlUsernameTextField = new JTextField();
	private final JPasswordField mysqlPasswordPasswordField = new JPasswordField();
	public static MySQLdbManager dbPortal = null;
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() { 
			public void run() {
				try {
					databaseConnectWindow frame = new databaseConnectWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});		
	}

	/**
	 * Create the frame
	 */
	public databaseConnectWindow() {
		super();
		setBounds(100, 100, 384, 203);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setAlwaysOnTop(true);
		setResizable(false);
		setTitle("Ñâúðçâàíå ñ áàçàòà äàííè");
		setName("databaseConnectWindowFrame");
		
		getContentPane().add(label);
		label.setText("Àäðåñ íà MySQL ñúðâúðà:");
		label.setBounds(10, 10, 165, 16);
		
		getContentPane().add(label_1);
		label_1.setText("Èìå íà áàçàòà äàííè:");
		label_1.setBounds(10, 54, 165, 16);
		
		getContentPane().add(label_2);
		label_2.setText("Ïîðò:");
		label_2.setBounds(10, 32, 156, 16);
		
		getContentPane().add(label_3);
		label_3.setText("Ïîòðåáèòåëñêî èìå:");
		label_3.setBounds(10, 76, 165, 16);
		
		getContentPane().add(label_4);
		label_4.setText("Ïàðîëà:");
		label_4.setBounds(10, 98, 156, 16);
		
		getContentPane().add(connectToDatabaseButton);
		connectToDatabaseButton.addActionListener(new ConnectToDatabaseButtonActionListener());
		connectToDatabaseButton.setText("Ñâúðæè ñå!");
		connectToDatabaseButton.setBounds(132, 135, 106, 26);
		
		getContentPane().add(mysqlServerAddressTextField);
		mysqlServerAddressTextField.setText("127.0.0.1");
		mysqlServerAddressTextField.setBounds(181, 8, 185, 20);
		
		getContentPane().add(mysqlPortTextField);
		mysqlPortTextField.setText("3306");
		mysqlPortTextField.setBounds(181, 30, 91, 20);
		
		getContentPane().add(mysqlDatabaseNameTextField);
		mysqlDatabaseNameTextField.setText("shop");
		mysqlDatabaseNameTextField.setBounds(181, 52, 181, 20);
		
		getContentPane().add(mysqlUsernameTextField);
		mysqlUsernameTextField.setText("root");
		mysqlUsernameTextField.setBounds(181, 76, 180, 18);
		
		getContentPane().add(mysqlPasswordPasswordField);
		mysqlPasswordPasswordField.setBounds(181, 96, 181, 20);
	}
	private class ConnectToDatabaseButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			connectToDatabaseButton_actionPerformed(e);
		}
	}

	protected void connectToDatabaseButton_actionPerformed(ActionEvent e) {
		
		String password = "";
		
		char [] pass = mysqlPasswordPasswordField.getPassword();
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		dbPortal = new MySQLdbManager(mysqlServerAddressTextField.getText(),
				mysqlDatabaseNameTextField.getText(), Integer.parseInt(mysqlPortTextField.getText()),
				mysqlUsernameTextField.getText(), password);		
		
		
		if (dbPortal.connect() == false) { //now check for database name that is not existing
			
			dbPortal.setMySqlActiveDatabase("");
			dbPortal.disconnect(); //just in case
			
			if (dbPortal.connect() == false) { //connection settings problem or not running MySQL server
				dbPortal.finalize();
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
						"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);
				
				return;
			}
			else { //will have to create new database
				
				dbPortal.disconnect();
				
				if (JOptionPane.showConfirmDialog(this, "Ùå áúäå ñúçäàäåíà íîâà áàçà äàííè ñ èìå: " + mysqlDatabaseNameTextField.getText() +
						".\nÑèãóðíè ëè ñòå?", "Ñúçäàâàíå íà íîâà áàçà äàííè?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
					
					if (createNewDatabaseAndTables() == false) { //in case of fail do not close this window
						
						return;
					}
				}
				else {
				
					dbPortal.finalize();
					return;
				}
				
				this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
			}			
		}
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	private boolean createNewDatabaseAndTables() {
		
		if (dbPortal.connect() == false) {
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (1)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
					"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.finalize();
			return false;
		}
		
		//FIXME prone to sql injection
		
		if (dbPortal.executeParameterizedNonQuery("CREATE DATABASE ? COLLATE utf8_general_ci", mysqlDatabaseNameTextField.getText()) != 1) {
			
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.finalize();
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå ñúçäàäå áàçà äàííè!\nÏðîâåðåòå èìàòå ëè ïðàâà çà òîâà!", 
					"Íå ìîæå äà ñå ñúçäàäå ÁÄ!", JOptionPane.ERROR_MESSAGE);
			return false;
		}
		
		/*if (dbPortal.executeNonQuery("CREATE DATABASE " + mysqlDatabaseNameTextField.getText() + " COLLATE utf8_general_ci") != 1) {
			
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.finalize();
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå ñúçäàäå áàçà äàííè!\nÏðîâåðåòå èìàòå ëè ïðàâà çà òîâà!", 
					"Íå ìîæå äà ñå ñúçäàäå ÁÄ!", JOptionPane.ERROR_MESSAGE);
			return false;
		}*/
		
		dbPortal.setMySqlActiveDatabase(mysqlDatabaseNameTextField.getText());
		dbPortal.disconnect();
		
		if (dbPortal.connect() == false) { //false positive for database creation
			
			dbPortal.setMySqlActiveDatabase("");
			dbPortal.disconnect();
			
			if (dbPortal.connect()) {
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
			}			
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (2)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
					"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.finalize();
			return false;
		}
		
		dbPortal.executeNonQuery("CREATE TABLE operators (operator_id int NOT NULL AUTO_INCREMENT primary key," + 
				"operator_username nvarchar(20) NOT NULL, operator_password nvarchar(64) NOT NULL," + 
				"operator_first_name nvarchar(20) NOT NULL, operator_last_name nvarchar(20) NOT NULL)");
		
		dbPortal.executeNonQuery("CREATE TABLE orders (order_id int NOT NULL AUTO_INCREMENT primary key," + 
				"order_time datetime NOT NULL, order_operator_id int NOT NULL," +
				"CONSTRAINT FK_OPERATORS FOREIGN KEY (order_operator_id) REFERENCES operators(operator_id) ON DELETE CASCADE ON UPDATE CASCADE)");

		dbPortal.executeNonQuery("CREATE TABLE products (product_id int NOT NULL AUTO_INCREMENT primary key," + 
				"product_name nvarchar(30) NOT NULL, product_quantity int NOT NULL,	product_price decimal(10,2) NOT NULL)");

		dbPortal.executeNonQuery("CREATE TABLE order_details (order_detail_id int NOT NULL AUTO_INCREMENT primary key," + 
				"order_detail_order_id int NOT NULL, order_detail_product_id int NOT NULL, " +
				"order_detail_product_quantity int NOT NULL," +
				"CONSTRAINT FK_ORDERS FOREIGN KEY (order_detail_order_id) REFERENCES orders(order_id) ON DELETE CASCADE ON UPDATE CASCADE," +
				"CONSTRAINT FK_PRODUCTS FOREIGN KEY (order_detail_product_id) REFERENCES products(product_id) ON DELETE CASCADE ON UPDATE CASCADE)");
		
		/* for testing only; not needed any more
		try {
			if (dbPortal.executeNonQuery("INSERT INTO operators (operator_username, operator_password, operator_first_name, operator_last_name)" + 
					" VALUES ('operator1', '" + Md5hashcalc.calculateMD5hash("operator1")  + "', 'Îïåðàòîð1', 'ñëóæåáåí àêàóíò')") != 1) {
				
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
				dbPortal.finallize();
				
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè äîáàâÿíå íà çàïèñ â áàçàòà äàííè!\nÏðîâåðåòå ïðàâàòà íà ïîòðåáèòåëÿ è âðúçêàòà.", "Ãðåøêà ïðè äîáàâÿíå íà äàííè â ÁÄ", JOptionPane.ERROR_MESSAGE);
				
				return false;
			}
		}
		catch (Exception ex) {
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå çàðåäè êðèïòèðàù àëãîðèòúì MD5!", "Ôàòàëíà Ãðåøêà", 
					JOptionPane.ERROR_MESSAGE);
			System.exit(-1);
		}*/
		
		return true;
	}	
}
import javax.swing.WindowConstants;
import javax.swing.JButton;
	private static final long serialVersionUID = 3002L;
		EventQueue.invokeLater(new Runnable() { 
		});		
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

				dbPortal.finalize();
					}
					dbPortal.finalize();
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (1)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
			dbPortal.finalize();
		//FIXME prone??? to sql injection maybe??
		
		if (dbPortal.executeNonQuery("CREATE DATABASE " + mysqlDatabaseNameTextField.getText() + " COLLATE utf8_general_ci") != 1) {
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.finalize();
					"Íå ìîæå äà ñå ñúçäàäå ÁÄ!", JOptionPane.ERROR_MESSAGE);
		dbPortal.setMySqlActiveDatabase(mysqlDatabaseNameTextField.getText());
		dbPortal.disconnect();
		
		if (dbPortal.connect() == false) { //false positive for database creation
			dbPortal.setMySqlActiveDatabase("");
			
			if (dbPortal.connect()) {
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
			}			
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (2)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
					"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.finalize();
		dbPortal.executeNonQuery("CREATE TABLE operators (operator_id int NOT NULL AUTO_INCREMENT primary key," + 
				"operator_username nvarchar(20) NOT NULL, operator_password nvarchar(64) NOT NULL," + 
				"operator_first_name nvarchar(20) NOT NULL, operator_last_name nvarchar(20) NOT NULL)");
		
		dbPortal.executeNonQuery("CREATE TABLE orders (order_id int NOT NULL AUTO_INCREMENT primary key," + 
				"CONSTRAINT FK_OPERATORS FOREIGN KEY (order_operator_id) REFERENCES operators(operator_id) ON DELETE CASCADE ON UPDATE CASCADE)");
		dbPortal.executeNonQuery("CREATE TABLE products (product_id int NOT NULL AUTO_INCREMENT primary key," + 
				"product_name nvarchar(30) NOT NULL, product_quantity int NOT NULL,	product_price decimal(10,2) NOT NULL)");
		dbPortal.executeNonQuery("CREATE TABLE order_details (order_detail_id int NOT NULL AUTO_INCREMENT primary key," + 
				"CONSTRAINT FK_PRODUCTS FOREIGN KEY (order_detail_product_id) REFERENCES products(product_id) ON DELETE CASCADE ON UPDATE CASCADE)");
		
		/* for testing only; not needed any more
		try {
			if (dbPortal.executeNonQuery("INSERT INTO operators (operator_username, operator_password, operator_first_name, operator_last_name)" + 
					" VALUES ('operator1', '" + Md5hashcalc.calculateMD5hash("operator1")  + "', 'Îïåðàòîð1', 'ñëóæåáåí àêàóíò')") != 1) {
				
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
				dbPortal.finallize();
				
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè äîáàâÿíå íà çàïèñ â áàçàòà äàííè!\nÏðîâåðåòå ïðàâàòà íà ïîòðåáèòåëÿ è âðúçêàòà.", "Ãðåøêà ïðè äîáàâÿíå íà äàííè â ÁÄ", JOptionPane.ERROR_MESSAGE);
				
				return false;
			}
		catch (Exception ex) {
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå çàðåäè êðèïòèðàù àëãîðèòúì MD5!", "Ôàòàëíà Ãðåøêà", 
					JOptionPane.ERROR_MESSAGE);
			System.exit(-1);
		}*/
	}	
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserLoginWindow extends JFrame {
	private static final long serialVersionUID = 3003L;

	private final JPanel groupLoginPanel = new JPanel();
	private final JPanel groupCreateNewUserPanel = new JPanel();
	private final JLabel loginUsernameLabel = new JLabel();
	private final JLabel loginPasswordLabel = new JLabel();
	private final JButton loginButton = new JButton();
	private final JTextField loginUsernameTextField = new JTextField();
	private final JPasswordField loginPasswordPasswordField = new JPasswordField();
	private final JLabel newUsernameLabel = new JLabel();
	private final JLabel newPasswordLabel = new JLabel();
	private final JLabel newUserFirstNameLabel = new JLabel();
	private final JLabel newUserLastNameLabel = new JLabel();
	private final JButton createNewOperatorButton = new JButton();
	private final JTextField newUsernameTextField = new JTextField();
	private final JTextField newFirstNameTextField = new JTextField();
	private final JPasswordField newPasswordPasswordField = new JPasswordField();
	private final JTextField newLastNameTextField = new JTextField();
	
	public static int loggedUserId = -1;
	public static String loggedUserNames = "";
	
	private final JLabel newPasswordAgainLabel = new JLabel();
	private final JPasswordField newPasswordPasswordAgainField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLoginWindow frame = new operatorUserLoginWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLoginWindow() {
		super();
		setBounds(100, 100, 518, 242);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Âõîä íà îïåðàòîð");
		setName("operatorLoginWindow");
		setResizable(false);
		setAlwaysOnTop(true);
		
		getContentPane().add(groupLoginPanel);
		groupLoginPanel.setLayout(null);
		groupLoginPanel.setBorder(new TitledBorder(null, "Âõîä:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupLoginPanel.setBounds(10, 10, 243, 133);
		
		groupLoginPanel.add(loginUsernameLabel);
		loginUsernameLabel.setText("Ïîòðåáèòåë:");
		loginUsernameLabel.setBounds(10, 31, 80, 16);
		
		groupLoginPanel.add(loginPasswordLabel);
		loginPasswordLabel.setText("Ïàðîëà:");
		loginPasswordLabel.setBounds(10, 53, 80, 16);
		
		groupLoginPanel.add(loginButton);
		loginButton.addActionListener(new LoginButtonActionListener());
		loginButton.setText("Âõîä");
		loginButton.setBounds(127, 93, 106, 26);
		
		groupLoginPanel.add(loginUsernameTextField);
		loginUsernameTextField.setBounds(96, 29, 137, 20);
		
		groupLoginPanel.add(loginPasswordPasswordField);
		loginPasswordPasswordField.setBounds(96, 51, 137, 20);
		
		getContentPane().add(groupCreateNewUserPanel);
		groupCreateNewUserPanel.setLayout(null);
		groupCreateNewUserPanel.setBorder(new TitledBorder(null, "Íîâ îïåðàòîð:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupCreateNewUserPanel.setBounds(259, 10, 243, 194);
		
		groupCreateNewUserPanel.add(newUsernameLabel);
		newUsernameLabel.setText("Íîâ ïîòðåáèòåë:");
		newUsernameLabel.setBounds(10, 32, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordLabel);
		newPasswordLabel.setText("Ïàðîëà:");
		newPasswordLabel.setBounds(10, 54, 95, 16);
		
		groupCreateNewUserPanel.add(newUserFirstNameLabel);
		newUserFirstNameLabel.setText("Èìå:");
		newUserFirstNameLabel.setBounds(10, 98, 95, 16);
		
		groupCreateNewUserPanel.add(newUserLastNameLabel);
		newUserLastNameLabel.setText("Ôàìèëèÿ:");
		newUserLastNameLabel.setBounds(10, 120, 95, 16);
		
		groupCreateNewUserPanel.add(createNewOperatorButton);
		createNewOperatorButton.addActionListener(new CreateNewOperatorButtonActionListener());
		createNewOperatorButton.setText("Ñúçäàé");
		createNewOperatorButton.setBounds(127, 158, 106, 26);
		
		groupCreateNewUserPanel.add(newUsernameTextField);
		newUsernameTextField.setBounds(111, 30, 122, 20);
		
		groupCreateNewUserPanel.add(newFirstNameTextField);
		newFirstNameTextField.setBounds(111, 96, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordPasswordField);
		newPasswordPasswordField.setBounds(111, 52, 122, 20);
		
		groupCreateNewUserPanel.add(newLastNameTextField);
		newLastNameTextField.setBounds(111, 118, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordAgainLabel);
		newPasswordAgainLabel.setText("Ïàðîëà îòíîâî:");
		newPasswordAgainLabel.setBounds(10, 76, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordPasswordAgainField);
		newPasswordPasswordAgainField.setBounds(111, 75, 122, 20);
	}
	private class LoginButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			loginButton_actionPerformed(e);
		}
	}
	private class CreateNewOperatorButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			createNewOperatorButton_actionPerformed(e);
		}
	}
	
	protected void loginButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				String password = "";
				
				char[] pass = loginPasswordPasswordField.getPassword();
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				//FIXME prone to sql injection
				
				ResultSet rs = null;
				
				try {				
					
					/*rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_id, operator_first_name, operator_last_name FROM operators WHERE" + 
						" operator_username='" + loginUsernameTextField.getText() + "' AND operator_password='" +
						Md5hashcalc.calculateMD5hash(password) + "'");*/
					Object[] params = new Object[2];
					params[0] = loginUsernameTextField.getText();
					params[1] = Md5hashcalc.calculateMD5hash(password);
					
					rs = databaseConnectWindow.dbPortal.executeParameterizedQuery("SELECT operator_id, operator_first_name, " + "" +
							"operator_last_name FROM operators WHERE operator_username=? AND operator_password=?", params);
							
				}
				catch (Exception ex) {
					System.exit(-1);
				}
				
				if (rs != null) {
					
					try {
						
						loggedUserId = rs.getInt(1);
						loggedUserNames = rs.getString(2) + " " + rs.getString(3);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
								JOptionPane.ERROR_MESSAGE);
						return;
					}
					
					this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
				}
				else {
					JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
							JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			return;
		}		
	}
	
	protected void createNewOperatorButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				char[] pass = newPasswordPasswordField.getPassword();
				String password = "";
				String encryptedPassword = "";
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				char[] pass2 = newPasswordPasswordAgainField.getPassword();
				
				if (pass.length == pass2.length) {
				
						for (int i = 0; i < pass.length; i++) {
							
							if (pass[i] != pass2[i]) {
								
								JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
								return;
							}
						}
				}
				else {
				
					JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
					return;
				}
								
				if ((newUsernameTextField.getText().length() > 3) && (password.length() > 3) && 
						(newFirstNameTextField.getText().length() > 3) && (newLastNameTextField.getText().length() > 3)) {
					
					try {
						
						encryptedPassword = Md5hashcalc.calculateMD5hash(password);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ôàòàëíà ãðåøêà ïðè êðèïòèðàíåòî!", "Ôàòàëíà ãðåøêà", JOptionPane.ERROR_MESSAGE);
						System.exit(-1);
					}
					
					//FIXME prone to sql injection
					ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT COUNT(*) FROM operators WHERE operator_username='" +
							newUsernameTextField.getText() + "'");
					
					int usersCount = 0;
					try {
						
						usersCount = rs.getInt(1);
					}
					catch (Exception ex) {						
					}					
					
					if ((databaseConnectWindow.dbPortal.getLastError() == null) && (usersCount == 0)) {						
						
						//no such existing username so now we create it
						//FIXME prone to sql injection
						if (databaseConnectWindow.dbPortal.executeNonQuery("INSERT INTO operators(operator_username, operator_password, " +
								"operator_first_name, operator_last_name) VALUES('" + newUsernameTextField.getText() + "', '" +
								encryptedPassword + "', '" + newFirstNameTextField.getText() + "', '" + newLastNameTextField.getText() + "')") != 1) {
							
							JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñúçäàâàíå íà íîâ ïîòðåáèòåë!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
						}
						else { //everything ok so login now
							
							loginUsernameTextField.setText(newUsernameTextField.getText());
							loginPasswordPasswordField.setText(password);
							loginButton_actionPerformed(null);
						}						
					}
					else {
						
						if (databaseConnectWindow.dbPortal.getLastError() != null) {
							
							JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);							
						}
						else {
							
							JOptionPane.showMessageDialog(this, "Èçáðàíîòî îò Âàñ ïîòðåáèòåëñêî èìå âå÷å ñúùåñòâóâà.", "Äóáëèðàùî ñå ïîòðåáèòåëñêî èìå", JOptionPane.ERROR_MESSAGE);							
						}
					}					
				}
				else {
					
					JOptionPane.showMessageDialog(this, "Íåîáõîäèìî å äà âúâåäåòå ïî-ïîäðîáíè äàííè!", "Íåïîäðîáíè äàííè", JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
		}		
	}

}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;


public class mainWindow extends JFrame {
	private static final long serialVersionUID = 3001L;

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.addActionListener(new HelpAboutActionListener());
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.finalize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finalize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
		}
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
		
		operatorUserLoginWindow oul = new operatorUserLoginWindow();
		oul.setVisible(true);
		oul.addWindowListener(operatorUserLoginWindowClosing);
	}
	private static WindowListener operatorUserLoginWindowClosing = new WindowAdapter() {

		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.Operations.setEnabled(true);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserLoginWindow.loggedUserNames);
			}
			else {
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	}
	
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	}
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
	
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {
	private static final long serialVersionUID = 3004L;

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JButton deleteOperator = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();	
	
	private String currentOperatorPassword = "";
	public static String operatorFirstNameLastNameCombination = "";	
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 255);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setResizable(false);
		setAlwaysOnTop(true);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 278, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.addActionListener(new UpdateButtonActionListener());
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(90, 130, 137, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
		
		getContentPane().add(deleteOperator);
		deleteOperator.addActionListener(new DeleteOperatorActionListener());
		deleteOperator.setText("Èçòðèé îïåðàòîð");
		deleteOperator.setBounds(90, 189, 137, 26);
	}
	
	private void getCurrentUserData() {
		
		if (databaseConnectWindow.dbPortal == null) {
			return;
		}
		if (databaseConnectWindow.dbPortal.isConnected() == false) {
			return;
		}
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_username, operator_password, " + 
				"operator_first_name, operator_last_name FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId);
		
		if ((rs == null) || (databaseConnectWindow.dbPortal.getLastError() != null)) {
			return;
		}
		
		try {
			
			usernameLabel.setText("Ïîòðåáèòåë: " + rs.getString(1));
			currentOperatorPassword = rs.getString(2);
			firstNameTextField.setText(rs.getString(3));
			lastNameTextField.setText(rs.getString(4));
		}
		catch (Exception ex) {			
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
	}
	
	private class UpdateButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			updateButton_actionPerformed(e);
		}
	}
	private class DeleteOperatorActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			deleteOperator_actionPerformed(e);
		}
	}
	protected void updateButton_actionPerformed(ActionEvent e) {
		
		char[] pass = passwordPasswordField.getPassword();
		String password = "";
		
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		char[] pass2 = passwordAgainPasswordField.getPassword();
		String password2 = "";
		
		for (int j = 0; j < pass2.length; j++) {
			
			password2 += pass2[j];
		}
		
		if (password.compareTo(password2) != 0) {
			
			JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if (password.length() > 3) { //password update will be performed too
			
			try {
				
				password = Md5hashcalc.calculateMD5hash(password);
				currentOperatorPassword = password;
			}
			catch (Exception ex) {
				
				JOptionPane.showMessageDialog(this, "Äàííèòå ñ èçêëþ÷åíèå íà òåçè çà ïàðîëàòà ñàìî\nùå áúäàò îáíîâåíè ïîðàäè ïðîáëåìè ñ êðèïòèðàíåòî!", "Ïðîáëåì ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			}			
		}
		else {
			if (password.length() > 0) {
				
				JOptionPane.showMessageDialog(this, "Ïàðîëàòà òðÿáâà äà å ïîíå 4 ñèìâîëà!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		
		if ((firstNameTextField.getText().length() <= 3) || (lastNameTextField.getText().length() <= 3)) {
			
			JOptionPane.showMessageDialog(this, "Ïðåêàëåíî êðàòêè èìå èëè ôàìèëèÿ!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if (databaseConnectWindow.dbPortal.executeParameterizedNonQuery("UPDATE operators SET operator_password=? " +
				"operator_first_name=? operator_last_name=? WHERE operator_id=?", currentOperatorPassword, 
				firstNameTextField.getText(), lastNameTextField.getText(), operatorUserLoginWindow.loggedUserId) != 1) {
		
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè îáíîâÿâàíå íà äàííèòå!" + databaseConnectWindow.dbPortal.getLastError(), "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
		operatorUserLoginWindow.loggedUserNames = operatorFirstNameLastNameCombination; //in case
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	protected void deleteOperator_actionPerformed(ActionEvent e) {
		
		//we can not delete not existing operator
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		if (JOptionPane.showConfirmDialog(this, "Èçòðèâàíåòî íà îïåðàòîðà ùå ïðåìàõíå îò áàçàòà äàííè\n" + 
				"è âñè÷êè äåéíîñòè, êîèòî òîé å èçâúðøèë.\n\n\tÈçòðèâàíå?", "Ïîòâúðäåòå èçòðèâàíå íà îïåðàòîð", 
				JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
			
			if (databaseConnectWindow.dbPortal.executeNonQuery("DELETE FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {

				JOptionPane.showMessageDialog(this, "Èçòðèâàíåòî å íåóñïåøíî!", "Íåóñïåøíî èçòðèâàíå íà îïåðàòîð", JOptionPane.ERROR_MESSAGE);
				return;
			}
			
			operatorUserLoginWindow.loggedUserId = -1;
			this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
		}
		
		return;
	}

}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;


public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.addActionListener(new HelpAboutActionListener());
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.finalize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finalize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
		}
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
		
		operatorUserLoginWindow oul = new operatorUserLoginWindow();
		oul.setVisible(true);
		oul.addWindowListener(operatorUserLoginWindowClosing);
	}
	private static WindowListener operatorUserLoginWindowClosing = new WindowAdapter() {

		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.Operations.setEnabled(true);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserLoginWindow.loggedUserNames);
			}
			else {
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	}
	
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	}
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
	
}
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedNonQuery(String query, Object[] parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean - ok
		// String  - ok
		// char    - 
		// byte    -
		// short   -
		// int     -
		// long    -
		// double  -
		// float   -
		// Date    -
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i, parameters[i]);
				
				/*if (parameters[i] instanceof Boolean) {
					
					sqlStatement.setBoolean(i, ((Boolean)parameters[i]).booleanValue());
					continue;
				}
				if (parameters[i] instanceof String) {
					
					sqlStatement.setString(i, ((String)parameters[i].toString()));
					continue;
				}
				if (parameters[i] instanceof Character) {
					
					sqlStatement.set
				}*/
			}
			
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Executes parameterized query and returns ResultSet with data. For SELECT...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return ResultSet
	 */
	
	public ResultSet executeParameterizedQuery(String query, Object[] parameters) { //executes query and returns ResultSet 
		
		PreparedStatement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i, parameters[i]);
			}
			
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedNonQuery(String query, Object[] parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean - ok
		// String  - ok
		// char    - 
		// byte    -
		// short   -
		// int     -
		// long    -
		// double  -
		// float   -
		// Date    -
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i + 1, parameters[i]);
				
				/*if (parameters[i] instanceof Boolean) {
					
					sqlStatement.setBoolean(i, ((Boolean)parameters[i]).booleanValue());
					continue;
				}
				if (parameters[i] instanceof String) {
					
					sqlStatement.setString(i, ((String)parameters[i].toString()));
					continue;
				}
				if (parameters[i] instanceof Character) {
					
					sqlStatement.set
				}*/
			}
			
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Executes parameterized query and returns ResultSet with data. For SELECT...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return ResultSet
	 */
	
	public ResultSet executeParameterizedQuery(String query, Object[] parameters) { //executes query and returns ResultSet 
		
		PreparedStatement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i + 1, parameters[i]);
			}
			
			result = sqlStatement.executeQuery(query);
			
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
/*
 * MD5 hash calculator wrapper
 * ver.-1.00
 * (C) 12.01.2013 zhgzhg
 */

package md5_calculator;

import java.security.MessageDigest;
import javax.crypto.*;

public class Md5hashcalc {
	
	public static String calculateMD5hash(String word) throws Exception {
		
		MessageDigest md5;
		String result = "D41D8CD98F00B204E9800998ECF8427E"; //empty string
		
		md5 = MessageDigest.getInstance("MD5");
		md5.update(word.getBytes(), 0, word.getBytes().length);
		
		byte [] wordBytesHash = new byte[16];
		wordBytesHash = md5.digest();
		
		if (wordBytesHash.length != 0) {
			result = "";
		
			for (int i = 0; i < 16; i++) {
				
				result += Integer.toString((wordBytesHash[i] & 0xff) + 0x100, 16).substring(1);
			}
		}
		
		return result;
	}
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserLoginWindow extends JFrame {
	private static final long serialVersionUID = 3003L;

	private final JPanel groupLoginPanel = new JPanel();
	private final JPanel groupCreateNewUserPanel = new JPanel();
	private final JLabel loginUsernameLabel = new JLabel();
	private final JLabel loginPasswordLabel = new JLabel();
	private final JButton loginButton = new JButton();
	private final JTextField loginUsernameTextField = new JTextField();
	private final JPasswordField loginPasswordPasswordField = new JPasswordField();
	private final JLabel newUsernameLabel = new JLabel();
	private final JLabel newPasswordLabel = new JLabel();
	private final JLabel newUserFirstNameLabel = new JLabel();
	private final JLabel newUserLastNameLabel = new JLabel();
	private final JButton createNewOperatorButton = new JButton();
	private final JTextField newUsernameTextField = new JTextField();
	private final JTextField newFirstNameTextField = new JTextField();
	private final JPasswordField newPasswordPasswordField = new JPasswordField();
	private final JTextField newLastNameTextField = new JTextField();
	
	public static int loggedUserId = -1;
	public static String loggedUserNames = "";
	
	private final JLabel newPasswordAgainLabel = new JLabel();
	private final JPasswordField newPasswordPasswordAgainField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLoginWindow frame = new operatorUserLoginWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLoginWindow() {
		super();
		setBounds(100, 100, 518, 242);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Âõîä íà îïåðàòîð");
		setName("operatorLoginWindow");
		setResizable(false);
		setAlwaysOnTop(true);
		
		getContentPane().add(groupLoginPanel);
		groupLoginPanel.setLayout(null);
		groupLoginPanel.setBorder(new TitledBorder(null, "Âõîä:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupLoginPanel.setBounds(10, 10, 243, 133);
		
		groupLoginPanel.add(loginUsernameLabel);
		loginUsernameLabel.setText("Ïîòðåáèòåë:");
		loginUsernameLabel.setBounds(10, 31, 80, 16);
		
		groupLoginPanel.add(loginPasswordLabel);
		loginPasswordLabel.setText("Ïàðîëà:");
		loginPasswordLabel.setBounds(10, 53, 80, 16);
		
		groupLoginPanel.add(loginButton);
		loginButton.addActionListener(new LoginButtonActionListener());
		loginButton.setText("Âõîä");
		loginButton.setBounds(127, 93, 106, 26);
		
		groupLoginPanel.add(loginUsernameTextField);
		loginUsernameTextField.setBounds(96, 29, 137, 20);
		
		groupLoginPanel.add(loginPasswordPasswordField);
		loginPasswordPasswordField.setBounds(96, 51, 137, 20);
		
		getContentPane().add(groupCreateNewUserPanel);
		groupCreateNewUserPanel.setLayout(null);
		groupCreateNewUserPanel.setBorder(new TitledBorder(null, "Íîâ îïåðàòîð:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupCreateNewUserPanel.setBounds(259, 10, 243, 194);
		
		groupCreateNewUserPanel.add(newUsernameLabel);
		newUsernameLabel.setText("Íîâ ïîòðåáèòåë:");
		newUsernameLabel.setBounds(10, 32, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordLabel);
		newPasswordLabel.setText("Ïàðîëà:");
		newPasswordLabel.setBounds(10, 54, 95, 16);
		
		groupCreateNewUserPanel.add(newUserFirstNameLabel);
		newUserFirstNameLabel.setText("Èìå:");
		newUserFirstNameLabel.setBounds(10, 98, 95, 16);
		
		groupCreateNewUserPanel.add(newUserLastNameLabel);
		newUserLastNameLabel.setText("Ôàìèëèÿ:");
		newUserLastNameLabel.setBounds(10, 120, 95, 16);
		
		groupCreateNewUserPanel.add(createNewOperatorButton);
		createNewOperatorButton.addActionListener(new CreateNewOperatorButtonActionListener());
		createNewOperatorButton.setText("Ñúçäàé");
		createNewOperatorButton.setBounds(127, 158, 106, 26);
		
		groupCreateNewUserPanel.add(newUsernameTextField);
		newUsernameTextField.setBounds(111, 30, 122, 20);
		
		groupCreateNewUserPanel.add(newFirstNameTextField);
		newFirstNameTextField.setBounds(111, 96, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordPasswordField);
		newPasswordPasswordField.setBounds(111, 52, 122, 20);
		
		groupCreateNewUserPanel.add(newLastNameTextField);
		newLastNameTextField.setBounds(111, 118, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordAgainLabel);
		newPasswordAgainLabel.setText("Ïàðîëà îòíîâî:");
		newPasswordAgainLabel.setBounds(10, 76, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordPasswordAgainField);
		newPasswordPasswordAgainField.setBounds(111, 75, 122, 20);
	}
	private class LoginButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			loginButton_actionPerformed(e);
		}
	}
	private class CreateNewOperatorButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			createNewOperatorButton_actionPerformed(e);
		}
	}
	
	protected void loginButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				String password = "";
				
				char[] pass = loginPasswordPasswordField.getPassword();
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				//FIXME prone to sql injection
				
				ResultSet rs = null;
				
				try {				
					
					/*rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_id, operator_first_name, operator_last_name FROM operators WHERE" + 
						" operator_username='" + loginUsernameTextField.getText() + "' AND operator_password='" +
						Md5hashcalc.calculateMD5hash(password) + "'");*/
					Object[] params = new Object[2];
					params[0] = loginUsernameTextField.getText();
					params[1] = Md5hashcalc.calculateMD5hash(password);
					
					rs = databaseConnectWindow.dbPortal.executeParameterizedQuery("SELECT operator_id, operator_first_name, " + "" +
							"operator_last_name FROM operators WHERE operator_username = ? AND operator_password = ?", params);
							
				}
				catch (Exception ex) {
					System.exit(-1);
				}
				
				if (rs != null) {
					
					try {
						
						loggedUserId = rs.getInt(1);
						loggedUserNames = rs.getString(2) + " " + rs.getString(3);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
								JOptionPane.ERROR_MESSAGE);
						return;
					}
					
					this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
				}
				else {
					JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
							JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			return;
		}		
	}
	
	protected void createNewOperatorButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				char[] pass = newPasswordPasswordField.getPassword();
				String password = "";
				String encryptedPassword = "";
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				char[] pass2 = newPasswordPasswordAgainField.getPassword();
				
				if (pass.length == pass2.length) {
				
						for (int i = 0; i < pass.length; i++) {
							
							if (pass[i] != pass2[i]) {
								
								JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
								return;
							}
						}
				}
				else {
				
					JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
					return;
				}
								
				if ((newUsernameTextField.getText().length() > 3) && (password.length() > 3) && 
						(newFirstNameTextField.getText().length() > 3) && (newLastNameTextField.getText().length() > 3)) {
					
					try {
						
						encryptedPassword = Md5hashcalc.calculateMD5hash(password);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ôàòàëíà ãðåøêà ïðè êðèïòèðàíåòî!", "Ôàòàëíà ãðåøêà", JOptionPane.ERROR_MESSAGE);
						System.exit(-1);
					}
					
					//FIXME prone to sql injection
					ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT COUNT(*) FROM operators WHERE operator_username='" +
							newUsernameTextField.getText() + "'");
					
					int usersCount = 0;
					try {
						
						usersCount = rs.getInt(1);
					}
					catch (Exception ex) {						
					}					
					
					if ((databaseConnectWindow.dbPortal.getLastError() == null) && (usersCount == 0)) {						
						
						//no such existing username so now we create it
						//FIXME prone to sql injection
						if (databaseConnectWindow.dbPortal.executeNonQuery("INSERT INTO operators(operator_username, operator_password, " +
								"operator_first_name, operator_last_name) VALUES('" + newUsernameTextField.getText() + "', '" +
								encryptedPassword + "', '" + newFirstNameTextField.getText() + "', '" + newLastNameTextField.getText() + "')") != 1) {
							
							JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñúçäàâàíå íà íîâ ïîòðåáèòåë!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
						}
						else { //everything ok so login now
							
							loginUsernameTextField.setText(newUsernameTextField.getText());
							loginPasswordPasswordField.setText(password);
							loginButton_actionPerformed(null);
						}						
					}
					else {
						
						if (databaseConnectWindow.dbPortal.getLastError() != null) {
							
							JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);							
						}
						else {
							
							JOptionPane.showMessageDialog(this, "Èçáðàíîòî îò Âàñ ïîòðåáèòåëñêî èìå âå÷å ñúùåñòâóâà.", "Äóáëèðàùî ñå ïîòðåáèòåëñêî èìå", JOptionPane.ERROR_MESSAGE);							
						}
					}					
				}
				else {
					
					JOptionPane.showMessageDialog(this, "Íåîáõîäèìî å äà âúâåäåòå ïî-ïîäðîáíè äàííè!", "Íåïîäðîáíè äàííè", JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
		}		
	}

}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserLoginWindow extends JFrame {
	private static final long serialVersionUID = 3003L;

	private final JPanel groupLoginPanel = new JPanel();
	private final JPanel groupCreateNewUserPanel = new JPanel();
	private final JLabel loginUsernameLabel = new JLabel();
	private final JLabel loginPasswordLabel = new JLabel();
	private final JButton loginButton = new JButton();
	private final JTextField loginUsernameTextField = new JTextField();
	private final JPasswordField loginPasswordPasswordField = new JPasswordField();
	private final JLabel newUsernameLabel = new JLabel();
	private final JLabel newPasswordLabel = new JLabel();
	private final JLabel newUserFirstNameLabel = new JLabel();
	private final JLabel newUserLastNameLabel = new JLabel();
	private final JButton createNewOperatorButton = new JButton();
	private final JTextField newUsernameTextField = new JTextField();
	private final JTextField newFirstNameTextField = new JTextField();
	private final JPasswordField newPasswordPasswordField = new JPasswordField();
	private final JTextField newLastNameTextField = new JTextField();
	
	public static int loggedUserId = -1;
	public static String loggedUserNames = "";
	
	private final JLabel newPasswordAgainLabel = new JLabel();
	private final JPasswordField newPasswordPasswordAgainField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLoginWindow frame = new operatorUserLoginWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLoginWindow() {
		super();
		setBounds(100, 100, 518, 242);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Âõîä íà îïåðàòîð");
		setName("operatorLoginWindow");
		setResizable(false);
		setAlwaysOnTop(true);
		
		getContentPane().add(groupLoginPanel);
		groupLoginPanel.setLayout(null);
		groupLoginPanel.setBorder(new TitledBorder(null, "Âõîä:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupLoginPanel.setBounds(10, 10, 243, 133);
		
		groupLoginPanel.add(loginUsernameLabel);
		loginUsernameLabel.setText("Ïîòðåáèòåë:");
		loginUsernameLabel.setBounds(10, 31, 80, 16);
		
		groupLoginPanel.add(loginPasswordLabel);
		loginPasswordLabel.setText("Ïàðîëà:");
		loginPasswordLabel.setBounds(10, 53, 80, 16);
		
		groupLoginPanel.add(loginButton);
		loginButton.addActionListener(new LoginButtonActionListener());
		loginButton.setText("Âõîä");
		loginButton.setBounds(127, 93, 106, 26);
		
		groupLoginPanel.add(loginUsernameTextField);
		loginUsernameTextField.setBounds(96, 29, 137, 20);
		
		groupLoginPanel.add(loginPasswordPasswordField);
		loginPasswordPasswordField.setBounds(96, 51, 137, 20);
		
		getContentPane().add(groupCreateNewUserPanel);
		groupCreateNewUserPanel.setLayout(null);
		groupCreateNewUserPanel.setBorder(new TitledBorder(null, "Íîâ îïåðàòîð:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupCreateNewUserPanel.setBounds(259, 10, 243, 194);
		
		groupCreateNewUserPanel.add(newUsernameLabel);
		newUsernameLabel.setText("Íîâ ïîòðåáèòåë:");
		newUsernameLabel.setBounds(10, 32, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordLabel);
		newPasswordLabel.setText("Ïàðîëà:");
		newPasswordLabel.setBounds(10, 54, 95, 16);
		
		groupCreateNewUserPanel.add(newUserFirstNameLabel);
		newUserFirstNameLabel.setText("Èìå:");
		newUserFirstNameLabel.setBounds(10, 98, 95, 16);
		
		groupCreateNewUserPanel.add(newUserLastNameLabel);
		newUserLastNameLabel.setText("Ôàìèëèÿ:");
		newUserLastNameLabel.setBounds(10, 120, 95, 16);
		
		groupCreateNewUserPanel.add(createNewOperatorButton);
		createNewOperatorButton.addActionListener(new CreateNewOperatorButtonActionListener());
		createNewOperatorButton.setText("Ñúçäàé");
		createNewOperatorButton.setBounds(127, 158, 106, 26);
		
		groupCreateNewUserPanel.add(newUsernameTextField);
		newUsernameTextField.setBounds(111, 30, 122, 20);
		
		groupCreateNewUserPanel.add(newFirstNameTextField);
		newFirstNameTextField.setBounds(111, 96, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordPasswordField);
		newPasswordPasswordField.setBounds(111, 52, 122, 20);
		
		groupCreateNewUserPanel.add(newLastNameTextField);
		newLastNameTextField.setBounds(111, 118, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordAgainLabel);
		newPasswordAgainLabel.setText("Ïàðîëà îòíîâî:");
		newPasswordAgainLabel.setBounds(10, 76, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordPasswordAgainField);
		newPasswordPasswordAgainField.setBounds(111, 75, 122, 20);
	}
	private class LoginButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			loginButton_actionPerformed(e);
		}
	}
	private class CreateNewOperatorButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			createNewOperatorButton_actionPerformed(e);
		}
	}
	
	protected void loginButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				String password = "";
				
				char[] pass = loginPasswordPasswordField.getPassword();
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				ResultSet rs = null;
				
				try {				
					
					rs = databaseConnectWindow.dbPortal.executeParameterizedQuery("SELECT operator_id, operator_first_name, " + "" +
							"operator_last_name FROM operators WHERE operator_username = ? AND operator_password = ?", 
							loginUsernameTextField.getText(), Md5hashcalc.calculateMD5hash(password));							
				}
				catch (Exception ex) {
					System.exit(-1);
				}
				
				if (rs != null) {
					
					try {
						
						loggedUserId = rs.getInt(1);
						loggedUserNames = rs.getString(2) + " " + rs.getString(3);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
								JOptionPane.ERROR_MESSAGE);
						return;
					}
					
					this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
				}
				else {
					JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
							JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			return;
		}		
	}
	
	protected void createNewOperatorButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				char[] pass = newPasswordPasswordField.getPassword();
				String password = "";
				String encryptedPassword = "";
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				char[] pass2 = newPasswordPasswordAgainField.getPassword();
				
				if (pass.length == pass2.length) {
				
						for (int i = 0; i < pass.length; i++) {
							
							if (pass[i] != pass2[i]) {
								
								JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
								return;
							}
						}
				}
				else {
				
					JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
					return;
				}
								
				if ((newUsernameTextField.getText().length() > 3) && (password.length() > 3) && 
						(newFirstNameTextField.getText().length() > 3) && (newLastNameTextField.getText().length() > 3)) {
					
					try {
						
						encryptedPassword = Md5hashcalc.calculateMD5hash(password);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ôàòàëíà ãðåøêà ïðè êðèïòèðàíåòî!", "Ôàòàëíà ãðåøêà", JOptionPane.ERROR_MESSAGE);
						System.exit(-1);
					}
					
					ResultSet rs = databaseConnectWindow.dbPortal.executeParameterizedQuery(
							"SELECT COUNT(*) FROM operators WHERE operator_username=?",	newUsernameTextField.getText());
					
					int usersCount = 0;
					try {
						
						usersCount = rs.getInt(1);
					}
					catch (Exception ex) {						
					}					
					
					if ((databaseConnectWindow.dbPortal.getLastError() == null) && (usersCount == 0)) {						
						
						//no such existing username so now we create it
						//FIXME prone to sql injection
						if (databaseConnectWindow.dbPortal.executeNonQuery("INSERT INTO operators(operator_username, operator_password, " +
								"operator_first_name, operator_last_name) VALUES('" + newUsernameTextField.getText() + "', '" +
								encryptedPassword + "', '" + newFirstNameTextField.getText() + "', '" + newLastNameTextField.getText() + "')") != 1) {
							
							JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñúçäàâàíå íà íîâ ïîòðåáèòåë!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
						}
						else { //everything ok so login now
							
							loginUsernameTextField.setText(newUsernameTextField.getText());
							loginPasswordPasswordField.setText(password);
							loginButton_actionPerformed(null);
						}						
					}
					else {
						
						if (databaseConnectWindow.dbPortal.getLastError() != null) {
							
							JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);							
						}
						else {
							
							JOptionPane.showMessageDialog(this, "Èçáðàíîòî îò Âàñ ïîòðåáèòåëñêî èìå âå÷å ñúùåñòâóâà.", "Äóáëèðàùî ñå ïîòðåáèòåëñêî èìå", JOptionPane.ERROR_MESSAGE);							
						}
					}					
				}
				else {
					
					JOptionPane.showMessageDialog(this, "Íåîáõîäèìî å äà âúâåäåòå ïî-ïîäðîáíè äàííè!", "Íåïîäðîáíè äàííè", JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
		}		
	}

}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {
	private static final long serialVersionUID = 3004L;

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();
	
	private String currentOperatorPassword = "";
	public static String operatorFirstNameLastNameCombination = "";
	
	private final JButton deleteOperator = new JButton();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 255);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setResizable(false);
		setAlwaysOnTop(true);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 278, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.addActionListener(new UpdateButtonActionListener());
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(90, 130, 137, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
		
		getContentPane().add(deleteOperator);
		deleteOperator.addActionListener(new DeleteOperatorActionListener());
		deleteOperator.setText("Èçòðèé îïåðàòîð");
		deleteOperator.setBounds(90, 189, 137, 26);
	}
	
	private void getCurrentUserData() {
		
		if (databaseConnectWindow.dbPortal == null) {
			return;
		}
		if (databaseConnectWindow.dbPortal.isConnected() == false) {
			return;
		}
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_username, operator_password, " + 
				"operator_first_name, operator_last_name FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId);
		
		if ((rs == null) || (databaseConnectWindow.dbPortal.getLastError() != null)) {
			return;
		}
		
		try {
			
			usernameLabel.setText("Ïîòðåáèòåë: " + rs.getString(1));
			currentOperatorPassword = rs.getString(2);
			firstNameTextField.setText(rs.getString(3));
			lastNameTextField.setText(rs.getString(4));
		}
		catch (Exception ex) {			
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
	}
	
	private class UpdateButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			updateButton_actionPerformed(e);
		}
	}
	private class DeleteOperatorActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			deleteOperator_actionPerformed(e);
		}
	}
	protected void updateButton_actionPerformed(ActionEvent e) {
		
		char[] pass = passwordPasswordField.getPassword();
		String password = "";
		
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		char[] pass2 = passwordAgainPasswordField.getPassword();
		String password2 = "";
		
		for (int j = 0; j < pass2.length; j++) {
			
			password2 += pass2[j];
		}
		
		if (password.compareTo(password2) != 0) {
			
			JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if (password.length() > 3) { //password update will be performed too
			
			try {
				
				password = Md5hashcalc.calculateMD5hash(password);
				currentOperatorPassword = password;
			}
			catch (Exception ex) {
				
				JOptionPane.showMessageDialog(this, "Äàííèòå ñ èçêëþ÷åíèå íà òåçè çà ïàðîëàòà ñàìî\nùå áúäàò îáíîâåíè ïîðàäè ïðîáëåìè ñ êðèïòèðàíåòî!", "Ïðîáëåì ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			}			
		}
		else {
			if (password.length() > 0) {
				
				JOptionPane.showMessageDialog(this, "Ïàðîëàòà òðÿáâà äà å ïîíå 4 ñèìâîëà!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		
		if ((firstNameTextField.getText().length() <= 3) || (lastNameTextField.getText().length() <= 3)) {
			
			JOptionPane.showMessageDialog(this, "Ïðåêàëåíî êðàòêè èìå èëè ôàìèëèÿ!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		//FIXME prone to sql injection
		if (databaseConnectWindow.dbPortal.executeNonQuery("UPDATE operators SET operator_password='" + currentOperatorPassword +
				"', operator_first_name='" + firstNameTextField.getText() + "', operator_last_name='" + 
				lastNameTextField.getText() + "' WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {
		
		//if (databaseConnectWindow.dbPortal.getLastError() != null) {
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè îáíîâÿâàíå íà äàííèòå!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
		operatorUserLoginWindow.loggedUserNames = operatorFirstNameLastNameCombination; //in case
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	protected void deleteOperator_actionPerformed(ActionEvent e) {
		
		//we can not delete not existing operator
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		if (JOptionPane.showConfirmDialog(this, "Èçòðèâàíåòî íà îïåðàòîðà ùå ïðåìàõíå îò áàçàòà äàííè\n" + 
				"è âñè÷êè äåéíîñòè, êîèòî òîé å èçâúðøèë.\n\n\tÈçòðèâàíå?", "Ïîòâúðäåòå èçòðèâàíå íà îïåðàòîð", 
				JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
			
			if (databaseConnectWindow.dbPortal.executeNonQuery("DELETE FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {

				JOptionPane.showMessageDialog(this, "Èçòðèâàíåòî å íåóñïåøíî!", "Íåóñïåøíî èçòðèâàíå íà îïåðàòîð", JOptionPane.ERROR_MESSAGE);
				return;
			}
			
			operatorUserLoginWindow.loggedUserId = -1;
			this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
		}
		
		return;
	}

}
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address ot HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SpringLayout;
import javax.swing.border.BevelBorder;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;

import database_management.MySQLdbManager;

public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.addActionListener(new HelpAboutActionListener());
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.finalize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finalize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
		}
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
		
		operatorUserLoginWindow oul = new operatorUserLoginWindow();
		oul.setVisible(true);
		oul.addWindowListener(operatorUserLoginWindowClosing);
	}
	private static WindowListener operatorUserLoginWindowClosing = new WindowAdapter() {

		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.Operations.setEnabled(true);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserLoginWindow.loggedUserNames);
			}
			else {
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	}
	
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	}
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
	
}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SpringLayout;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;


public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.addActionListener(new HelpAboutActionListener());
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.finalize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finalize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
		}
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
		
		operatorUserLoginWindow oul = new operatorUserLoginWindow();
		oul.setVisible(true);
		oul.addWindowListener(operatorUserLoginWindowClosing);
	}
	private static WindowListener operatorUserLoginWindowClosing = new WindowAdapter() {

		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.Operations.setEnabled(true);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserLoginWindow.loggedUserNames);
			}
			else {
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	}
	
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	}
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
	
}
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedNonQuery(String query, Object... parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean - ok
		// String  - ok
		// char    - 
		// byte    -
		// short   -
		// int     -
		// long    -
		// double  -
		// float   -
		// Date    -
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i + 1, parameters[i]);
				
				/*if (parameters[i] instanceof Boolean) {
					
					sqlStatement.setBoolean(i, ((Boolean)parameters[i]).booleanValue());
					continue;
				}
				if (parameters[i] instanceof String) {
					
					sqlStatement.setString(i, ((String)parameters[i].toString()));
					continue;
				}
				if (parameters[i] instanceof Character) {
					
					sqlStatement.set
				}*/
			}
			
			sqlStatement.execute();
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Executes parameterized query and returns ResultSet with data. For SELECT...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return ResultSet
	 */
	
	public ResultSet executeParameterizedQuery(String query, Object... parameters) { //executes query and returns ResultSet 
		
		PreparedStatement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i + 1, parameters[i]);
			}
			
			result = sqlStatement.executeQuery();
			
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
import javax.swing.WindowConstants;
import javax.swing.JButton;
		EventQueue.invokeLater(new Runnable() { 
		});		
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);

				dbPortal.finalize();
					}
					dbPortal.finalize();
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (1)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
					"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.finalize();
		//FIXME prone??? to sql injection maybe??
		if (dbPortal.executeNonQuery("CREATE DATABASE " + mysqlDatabaseNameTextField.getText() + " COLLATE utf8_general_ci") != 1) {
			
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.finalize();
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå ñúçäàäå áàçà äàííè!\nÏðîâåðåòå èìàòå ëè ïðàâà çà òîâà!", 
					"Íå ìîæå äà ñå ñúçäàäå ÁÄ!", JOptionPane.ERROR_MESSAGE);
			return false;
		}
		
		dbPortal.setMySqlActiveDatabase(mysqlDatabaseNameTextField.getText());
		dbPortal.disconnect();
		
		if (dbPortal.connect() == false) { //false positive for database creation
			
			dbPortal.setMySqlActiveDatabase("");
			dbPortal.disconnect();
			
			if (dbPortal.connect()) {
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
			}			
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (2)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
					"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.finalize();
			return false;
		}
				"operator_username nvarchar(20) NOT NULL, operator_password nvarchar(64) NOT NULL," + 
		/* for testing only; not needed any more
		try {
			if (dbPortal.executeNonQuery("INSERT INTO operators (operator_username, operator_password, operator_first_name, operator_last_name)" + 
					" VALUES ('operator1', '" + Md5hashcalc.calculateMD5hash("operator1")  + "', 'Îïåðàòîð1', 'ñëóæåáåí àêàóíò')") != 1) {
				
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
				dbPortal.finallize();
				
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè äîáàâÿíå íà çàïèñ â áàçàòà äàííè!\nÏðîâåðåòå ïðàâàòà íà ïîòðåáèòåëÿ è âðúçêàòà.", "Ãðåøêà ïðè äîáàâÿíå íà äàííè â ÁÄ", JOptionPane.ERROR_MESSAGE);
				
				return false;
			}
		}
		catch (Exception ex) {
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå çàðåäè êðèïòèðàù àëãîðèòúì MD5!", "Ôàòàëíà Ãðåøêà", 
					JOptionPane.ERROR_MESSAGE);
			System.exit(-1);
		}*/
		
	}	
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {
	private static final long serialVersionUID = 3004L;

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JButton deleteOperator = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();	
	
	private String currentOperatorPassword = "";
	public static String operatorFirstNameLastNameCombination = "";	
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 255);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setResizable(false);
		setAlwaysOnTop(true);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 278, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.addActionListener(new UpdateButtonActionListener());
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(90, 130, 137, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
		
		getContentPane().add(deleteOperator);
		deleteOperator.addActionListener(new DeleteOperatorActionListener());
		deleteOperator.setText("Èçòðèé îïåðàòîð");
		deleteOperator.setBounds(90, 189, 137, 26);
	}
	
	private void getCurrentUserData() {
		
		if (databaseConnectWindow.dbPortal == null) {
			return;
		}
		if (databaseConnectWindow.dbPortal.isConnected() == false) {
			return;
		}
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_username, operator_password, " + 
				"operator_first_name, operator_last_name FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId);
		
		if ((rs == null) || (databaseConnectWindow.dbPortal.getLastError() != null)) {
			return;
		}
		
		try {
			
			usernameLabel.setText("Ïîòðåáèòåë: " + rs.getString(1));
			currentOperatorPassword = rs.getString(2);
			firstNameTextField.setText(rs.getString(3));
			lastNameTextField.setText(rs.getString(4));
		}
		catch (Exception ex) {			
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
	}
	
	private class UpdateButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			updateButton_actionPerformed(e);
		}
	}
	private class DeleteOperatorActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			deleteOperator_actionPerformed(e);
		}
	}
	protected void updateButton_actionPerformed(ActionEvent e) {
		
		char[] pass = passwordPasswordField.getPassword();
		String password = "";
		
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		char[] pass2 = passwordAgainPasswordField.getPassword();
		String password2 = "";
		
		for (int j = 0; j < pass2.length; j++) {
			
			password2 += pass2[j];
		}
		
		if (password.compareTo(password2) != 0) {
			
			JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if (password.length() > 3) { //password update will be performed too
			
			try {
				
				password = Md5hashcalc.calculateMD5hash(password);
				currentOperatorPassword = password;
			}
			catch (Exception ex) {
				
				JOptionPane.showMessageDialog(this, "Äàííèòå ñ èçêëþ÷åíèå íà òåçè çà ïàðîëàòà ñàìî\nùå áúäàò îáíîâåíè ïîðàäè ïðîáëåìè ñ êðèïòèðàíåòî!", "Ïðîáëåì ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			}			
		}
		else {
			if (password.length() > 0) {
				
				JOptionPane.showMessageDialog(this, "Ïàðîëàòà òðÿáâà äà å ïîíå 4 ñèìâîëà!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		
		if ((firstNameTextField.getText().length() <= 3) || (lastNameTextField.getText().length() <= 3)) {
			
			JOptionPane.showMessageDialog(this, "Ïðåêàëåíî êðàòêè èìå èëè ôàìèëèÿ!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		//FIXME prone to sql injection
		if (databaseConnectWindow.dbPortal.executeNonQuery("UPDATE operators SET operator_password='" + currentOperatorPassword +
				"', operator_first_name='" + firstNameTextField.getText() + "', operator_last_name='" + 
				lastNameTextField.getText() + "' WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {
		
		//if (databaseConnectWindow.dbPortal.getLastError() != null) {
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè îáíîâÿâàíå íà äàííèòå!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
		operatorUserLoginWindow.loggedUserNames = operatorFirstNameLastNameCombination; //in case
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	protected void deleteOperator_actionPerformed(ActionEvent e) {
		
		//we can not delete not existing operator
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		if (JOptionPane.showConfirmDialog(this, "Èçòðèâàíåòî íà îïåðàòîðà ùå ïðåìàõíå îò áàçàòà äàííè\n" + 
				"è âñè÷êè äåéíîñòè, êîèòî òîé å èçâúðøèë.\n\n\tÈçòðèâàíå?", "Ïîòâúðäåòå èçòðèâàíå íà îïåðàòîð", 
				JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
			
			if (databaseConnectWindow.dbPortal.executeNonQuery("DELETE FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {

				JOptionPane.showMessageDialog(this, "Èçòðèâàíåòî å íåóñïåøíî!", "Íåóñïåøíî èçòðèâàíå íà îïåðàòîð", JOptionPane.ERROR_MESSAGE);
				return;
			}
			
			operatorUserLoginWindow.loggedUserId = -1;
			this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
		}
		
		return;
	}

}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserLoginWindow extends JFrame {
	private static final long serialVersionUID = 3003L;

	private final JPanel groupLoginPanel = new JPanel();
	private final JPanel groupCreateNewUserPanel = new JPanel();
	private final JLabel loginUsernameLabel = new JLabel();
	private final JLabel loginPasswordLabel = new JLabel();
	private final JButton loginButton = new JButton();
	private final JTextField loginUsernameTextField = new JTextField();
	private final JPasswordField loginPasswordPasswordField = new JPasswordField();
	private final JLabel newUsernameLabel = new JLabel();
	private final JLabel newPasswordLabel = new JLabel();
	private final JLabel newUserFirstNameLabel = new JLabel();
	private final JLabel newUserLastNameLabel = new JLabel();
	private final JButton createNewOperatorButton = new JButton();
	private final JTextField newUsernameTextField = new JTextField();
	private final JTextField newFirstNameTextField = new JTextField();
	private final JPasswordField newPasswordPasswordField = new JPasswordField();
	private final JTextField newLastNameTextField = new JTextField();
	
	public static int loggedUserId = -1;
	public static String loggedUserNames = "";
	
	private final JLabel newPasswordAgainLabel = new JLabel();
	private final JPasswordField newPasswordPasswordAgainField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLoginWindow frame = new operatorUserLoginWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLoginWindow() {
		super();
		setBounds(100, 100, 518, 242);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Âõîä íà îïåðàòîð");
		setName("operatorLoginWindow");
		setResizable(false);
		setAlwaysOnTop(true);
		
		getContentPane().add(groupLoginPanel);
		groupLoginPanel.setLayout(null);
		groupLoginPanel.setBorder(new TitledBorder(null, "Âõîä:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupLoginPanel.setBounds(10, 10, 243, 133);
		
		groupLoginPanel.add(loginUsernameLabel);
		loginUsernameLabel.setText("Ïîòðåáèòåë:");
		loginUsernameLabel.setBounds(10, 31, 80, 16);
		
		groupLoginPanel.add(loginPasswordLabel);
		loginPasswordLabel.setText("Ïàðîëà:");
		loginPasswordLabel.setBounds(10, 53, 80, 16);
		
		groupLoginPanel.add(loginButton);
		loginButton.addActionListener(new LoginButtonActionListener());
		loginButton.setText("Âõîä");
		loginButton.setBounds(127, 93, 106, 26);
		
		groupLoginPanel.add(loginUsernameTextField);
		loginUsernameTextField.setBounds(96, 29, 137, 20);
		
		groupLoginPanel.add(loginPasswordPasswordField);
		loginPasswordPasswordField.setBounds(96, 51, 137, 20);
		
		getContentPane().add(groupCreateNewUserPanel);
		groupCreateNewUserPanel.setLayout(null);
		groupCreateNewUserPanel.setBorder(new TitledBorder(null, "Íîâ îïåðàòîð:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupCreateNewUserPanel.setBounds(259, 10, 243, 194);
		
		groupCreateNewUserPanel.add(newUsernameLabel);
		newUsernameLabel.setText("Íîâ ïîòðåáèòåë:");
		newUsernameLabel.setBounds(10, 32, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordLabel);
		newPasswordLabel.setText("Ïàðîëà:");
		newPasswordLabel.setBounds(10, 54, 95, 16);
		
		groupCreateNewUserPanel.add(newUserFirstNameLabel);
		newUserFirstNameLabel.setText("Èìå:");
		newUserFirstNameLabel.setBounds(10, 98, 95, 16);
		
		groupCreateNewUserPanel.add(newUserLastNameLabel);
		newUserLastNameLabel.setText("Ôàìèëèÿ:");
		newUserLastNameLabel.setBounds(10, 120, 95, 16);
		
		groupCreateNewUserPanel.add(createNewOperatorButton);
		createNewOperatorButton.addActionListener(new CreateNewOperatorButtonActionListener());
		createNewOperatorButton.setText("Ñúçäàé");
		createNewOperatorButton.setBounds(127, 158, 106, 26);
		
		groupCreateNewUserPanel.add(newUsernameTextField);
		newUsernameTextField.setBounds(111, 30, 122, 20);
		
		groupCreateNewUserPanel.add(newFirstNameTextField);
		newFirstNameTextField.setBounds(111, 96, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordPasswordField);
		newPasswordPasswordField.setBounds(111, 52, 122, 20);
		
		groupCreateNewUserPanel.add(newLastNameTextField);
		newLastNameTextField.setBounds(111, 118, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordAgainLabel);
		newPasswordAgainLabel.setText("Ïàðîëà îòíîâî:");
		newPasswordAgainLabel.setBounds(10, 76, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordPasswordAgainField);
		newPasswordPasswordAgainField.setBounds(111, 75, 122, 20);
	}
	private class LoginButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			loginButton_actionPerformed(e);
		}
	}
	private class CreateNewOperatorButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			createNewOperatorButton_actionPerformed(e);
		}
	}
	
	protected void loginButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				String password = "";
				
				char[] pass = loginPasswordPasswordField.getPassword();
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				//FIXME prone to sql injection
				
				ResultSet rs = null;
				
				try {				
					
					rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_id, operator_first_name, operator_last_name FROM operators WHERE" + 
						" operator_username='" + loginUsernameTextField.getText() + "' AND operator_password='" +
						Md5hashcalc.calculateMD5hash(password) + "'");
				}
				catch (Exception ex) {
					System.exit(-1);
				}
				
				if (rs != null) {
					
					try {
						
						loggedUserId = rs.getInt(1);
						loggedUserNames = rs.getString(2) + " " + rs.getString(3);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
								JOptionPane.ERROR_MESSAGE);
						return;
					}
					
					this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
				}
				else {
					JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
							JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			return;
		}		
	}
	
	protected void createNewOperatorButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				char[] pass = newPasswordPasswordField.getPassword();
				String password = "";
				String encryptedPassword = "";
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				char[] pass2 = newPasswordPasswordAgainField.getPassword();
				
				if (pass.length == pass2.length) {
				
						for (int i = 0; i < pass.length; i++) {
							
							if (pass[i] != pass2[i]) {
								
								JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
								return;
							}
						}
				}
				else {
				
					JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
					return;
				}
								
				if ((newUsernameTextField.getText().length() > 3) && (password.length() > 3) && 
						(newFirstNameTextField.getText().length() > 3) && (newLastNameTextField.getText().length() > 3)) {
					
					try {
						
						encryptedPassword = Md5hashcalc.calculateMD5hash(password);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ôàòàëíà ãðåøêà ïðè êðèïòèðàíåòî!", "Ôàòàëíà ãðåøêà", JOptionPane.ERROR_MESSAGE);
						System.exit(-1);
					}
					
					//FIXME prone to sql injection
					ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT COUNT(*) FROM operators WHERE operator_username='" +
							newUsernameTextField.getText() + "'");
					
					int usersCount = 0;
					try {
						
						usersCount = rs.getInt(1);
					}
					catch (Exception ex) {						
					}					
					
					if ((databaseConnectWindow.dbPortal.getLastError() == null) && (usersCount == 0)) {						
						
						//no such existing username so now we create it
						//FIXME prone to sql injection
						if (databaseConnectWindow.dbPortal.executeNonQuery("INSERT INTO operators(operator_username, operator_password, " +
								"operator_first_name, operator_last_name) VALUES('" + newUsernameTextField.getText() + "', '" +
								encryptedPassword + "', '" + newFirstNameTextField.getText() + "', '" + newLastNameTextField.getText() + "')") != 1) {
							
							JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñúçäàâàíå íà íîâ ïîòðåáèòåë!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
						}
						else { //everything ok so login now
							
							loginUsernameTextField.setText(newUsernameTextField.getText());
							loginPasswordPasswordField.setText(password);
							loginButton_actionPerformed(null);
						}						
					}
					else {
						
						if (databaseConnectWindow.dbPortal.getLastError() != null) {
							
							JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);							
						}
						else {
							
							JOptionPane.showMessageDialog(this, "Èçáðàíîòî îò Âàñ ïîòðåáèòåëñêî èìå âå÷å ñúùåñòâóâà.", "Äóáëèðàùî ñå ïîòðåáèòåëñêî èìå", JOptionPane.ERROR_MESSAGE);							
						}
					}					
				}
				else {
					
					JOptionPane.showMessageDialog(this, "Íåîáõîäèìî å äà âúâåäåòå ïî-ïîäðîáíè äàííè!", "Íåïîäðîáíè äàííè", JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
		}		
	}

}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {
	private static final long serialVersionUID = 3004L;

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JButton deleteOperator = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();	
	
	private String currentOperatorPassword = "";
	public static String operatorFirstNameLastNameCombination = "";	
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 255);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setResizable(false);
		setAlwaysOnTop(true);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 278, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.addActionListener(new UpdateButtonActionListener());
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(90, 130, 137, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
		
		getContentPane().add(deleteOperator);
		deleteOperator.addActionListener(new DeleteOperatorActionListener());
		deleteOperator.setText("Èçòðèé îïåðàòîð");
		deleteOperator.setBounds(90, 189, 137, 26);
	}
	
	private void getCurrentUserData() {
		
		if (databaseConnectWindow.dbPortal == null) {
			return;
		}
		if (databaseConnectWindow.dbPortal.isConnected() == false) {
			return;
		}
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_username, operator_password, " + 
				"operator_first_name, operator_last_name FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId);
		
		if ((rs == null) || (databaseConnectWindow.dbPortal.getLastError() != null)) {
			return;
		}
		
		try {
			
			usernameLabel.setText("Ïîòðåáèòåë: " + rs.getString(1));
			currentOperatorPassword = rs.getString(2);
			firstNameTextField.setText(rs.getString(3));
			lastNameTextField.setText(rs.getString(4));
		}
		catch (Exception ex) {			
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
	}
	
	private class UpdateButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			updateButton_actionPerformed(e);
		}
	}
	private class DeleteOperatorActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			deleteOperator_actionPerformed(e);
		}
	}
	protected void updateButton_actionPerformed(ActionEvent e) {
		
		char[] pass = passwordPasswordField.getPassword();
		String password = "";
		
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		char[] pass2 = passwordAgainPasswordField.getPassword();
		String password2 = "";
		
		for (int j = 0; j < pass2.length; j++) {
			
			password2 += pass2[j];
		}
		
		if (password.compareTo(password2) != 0) {
			
			JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if (password.length() > 3) { //password update will be performed too
			
			try {
				
				password = Md5hashcalc.calculateMD5hash(password);
				currentOperatorPassword = password;
			}
			catch (Exception ex) {
				
				JOptionPane.showMessageDialog(this, "Äàííèòå ñ èçêëþ÷åíèå íà òåçè çà ïàðîëàòà ñàìî\nùå áúäàò îáíîâåíè ïîðàäè ïðîáëåìè ñ êðèïòèðàíåòî!", "Ïðîáëåì ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			}			
		}
		else {
			if (password.length() > 0) {
				
				JOptionPane.showMessageDialog(this, "Ïàðîëàòà òðÿáâà äà å ïîíå 4 ñèìâîëà!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		
		if ((firstNameTextField.getText().length() <= 3) || (lastNameTextField.getText().length() <= 3)) {
			
			JOptionPane.showMessageDialog(this, "Ïðåêàëåíî êðàòêè èìå èëè ôàìèëèÿ!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if (databaseConnectWindow.dbPortal.executeParameterizedNonQuery("UPDATE operators SET operator_password=?, " +
				"operator_first_name=?, operator_last_name=? WHERE operator_id=?", currentOperatorPassword, 
				firstNameTextField.getText(), lastNameTextField.getText(), new Integer(operatorUserLoginWindow.loggedUserId)) != 1) {
		
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè îáíîâÿâàíå íà äàííèòå!" + databaseConnectWindow.dbPortal.getLastError(), "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
		operatorUserLoginWindow.loggedUserNames = operatorFirstNameLastNameCombination; //in case
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	protected void deleteOperator_actionPerformed(ActionEvent e) {
		
		//we can not delete not existing operator
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		if (JOptionPane.showConfirmDialog(this, "Èçòðèâàíåòî íà îïåðàòîðà ùå ïðåìàõíå îò áàçàòà äàííè\n" + 
				"è âñè÷êè äåéíîñòè, êîèòî òîé å èçâúðøèë.\n\n\tÈçòðèâàíå?", "Ïîòâúðäåòå èçòðèâàíå íà îïåðàòîð", 
				JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
			
			if (databaseConnectWindow.dbPortal.executeNonQuery("DELETE FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {

				JOptionPane.showMessageDialog(this, "Èçòðèâàíåòî å íåóñïåøíî!", "Íåóñïåøíî èçòðèâàíå íà îïåðàòîð", JOptionPane.ERROR_MESSAGE);
				return;
			}
			
			operatorUserLoginWindow.loggedUserId = -1;
			this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
		}
		
		return;
	}

}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
import javax.swing.JButton;
import javax.swing.JOptionPane;

import database_management.MySQLdbManager;
import md5_calculator.Md5hashcalc;

public class databaseConnectWindow extends JFrame {

	private final JLabel label = new JLabel();
	private final JLabel label_1 = new JLabel();
	private final JLabel label_2 = new JLabel();
	private final JLabel label_3 = new JLabel();
	private final JLabel label_4 = new JLabel();
	private final JButton connectToDatabaseButton = new JButton();
	private final JTextField mysqlServerAddressTextField = new JTextField();
	private final JTextField mysqlPortTextField = new JTextField();
	private final JTextField mysqlDatabaseNameTextField = new JTextField();
	private final JTextField mysqlUsernameTextField = new JTextField();
	private final JPasswordField mysqlPasswordPasswordField = new JPasswordField();
	public static MySQLdbManager dbPortal = null;
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() { 
			public void run() {
				try {
					databaseConnectWindow frame = new databaseConnectWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});		
	}

	/**
	 * Create the frame
	 */
	public databaseConnectWindow() {
		super();
		setBounds(100, 100, 384, 203);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setAlwaysOnTop(true);
		setResizable(false);
		setTitle("Ñâúðçâàíå ñ áàçàòà äàííè");
		setName("databaseConnectWindowFrame");
		
		getContentPane().add(label);
		label.setText("Àäðåñ íà MySQL ñúðâúðà:");
		label.setBounds(10, 10, 165, 16);
		
		getContentPane().add(label_1);
		label_1.setText("Èìå íà áàçàòà äàííè:");
		label_1.setBounds(10, 54, 165, 16);
		
		getContentPane().add(label_2);
		label_2.setText("Ïîðò:");
		label_2.setBounds(10, 32, 156, 16);
		
		getContentPane().add(label_3);
		label_3.setText("Ïîòðåáèòåëñêî èìå:");
		label_3.setBounds(10, 76, 165, 16);
		
		getContentPane().add(label_4);
		label_4.setText("Ïàðîëà:");
		label_4.setBounds(10, 98, 156, 16);
		
		getContentPane().add(connectToDatabaseButton);
		connectToDatabaseButton.addActionListener(new ConnectToDatabaseButtonActionListener());
		connectToDatabaseButton.setText("Ñâúðæè ñå!");
		connectToDatabaseButton.setBounds(132, 135, 106, 26);
		
		getContentPane().add(mysqlServerAddressTextField);
		mysqlServerAddressTextField.setText("127.0.0.1");
		mysqlServerAddressTextField.setBounds(181, 8, 185, 20);
		
		getContentPane().add(mysqlPortTextField);
		mysqlPortTextField.setText("3306");
		mysqlPortTextField.setBounds(181, 30, 91, 20);
		
		getContentPane().add(mysqlDatabaseNameTextField);
		mysqlDatabaseNameTextField.setText("shop");
		mysqlDatabaseNameTextField.setBounds(181, 52, 181, 20);
		
		getContentPane().add(mysqlUsernameTextField);
		mysqlUsernameTextField.setText("root");
		mysqlUsernameTextField.setBounds(181, 76, 180, 18);
		
		getContentPane().add(mysqlPasswordPasswordField);
		mysqlPasswordPasswordField.setBounds(181, 96, 181, 20);
	}
	private class ConnectToDatabaseButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			connectToDatabaseButton_actionPerformed(e);
		}
	}

	protected void connectToDatabaseButton_actionPerformed(ActionEvent e) {
		
		String password = "";
		
		char [] pass = mysqlPasswordPasswordField.getPassword();
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		dbPortal = new MySQLdbManager(mysqlServerAddressTextField.getText(),
				mysqlDatabaseNameTextField.getText(), Integer.parseInt(mysqlPortTextField.getText()),
				mysqlUsernameTextField.getText(), password);		
		
		
		if (dbPortal.connect() == false) { //now check for database name that is not existing
			
			dbPortal.setMySqlActiveDatabase("");
			dbPortal.disconnect(); //just in case
			
			if (dbPortal.connect() == false) { //connection settings problem or not running MySQL server
				dbPortal.finalize();
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
						"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);
				
				return;
			}
			else { //will have to create new database
				
				dbPortal.disconnect();
				
				if (JOptionPane.showConfirmDialog(this, "Ùå áúäå ñúçäàäåíà íîâà áàçà äàííè ñ èìå: " + mysqlDatabaseNameTextField.getText() +
						".\nÑèãóðíè ëè ñòå?", "Ñúçäàâàíå íà íîâà áàçà äàííè?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
					
					if (createNewDatabaseAndTables() == false) { //in case of fail do not close this window
						
						return;
					}
				}
				else {
				
					dbPortal.finalize();
					return;
				}
				
				this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
			}			
		}
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	private boolean createNewDatabaseAndTables() {
		
		if (dbPortal.connect() == false) {
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (1)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
					"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.finalize();
			return false;
		}
		
		//FIXME prone to sql injection
		
		Object[] dbName = new String[1];
		dbName[0] = mysqlDatabaseNameTextField.getText(); 
		
		if (dbPortal.executeParameterizedNonQuery("CREATE DATABASE ? COLLATE utf8_general_ci", dbName) != 1) {
			
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.finalize();
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå ñúçäàäå áàçà äàííè!\nÏðîâåðåòå èìàòå ëè ïðàâà çà òîâà!", 
					"Íå ìîæå äà ñå ñúçäàäå ÁÄ!", JOptionPane.ERROR_MESSAGE);
			return false;
		}
		
		/*if (dbPortal.executeNonQuery("CREATE DATABASE " + mysqlDatabaseNameTextField.getText() + " COLLATE utf8_general_ci") != 1) {
			
			dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
			dbPortal.finalize();
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå ñúçäàäå áàçà äàííè!\nÏðîâåðåòå èìàòå ëè ïðàâà çà òîâà!", 
					"Íå ìîæå äà ñå ñúçäàäå ÁÄ!", JOptionPane.ERROR_MESSAGE);
			return false;
		}*/
		
		dbPortal.setMySqlActiveDatabase(mysqlDatabaseNameTextField.getText());
		dbPortal.disconnect();
		
		if (dbPortal.connect() == false) { //false positive for database creation
			
			dbPortal.setMySqlActiveDatabase("");
			dbPortal.disconnect();
			
			if (dbPortal.connect()) {
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
			}			
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñâúðçâàíåòî (2)! Ïðîâåðåòå íàñòðîéêèòå è äàëè MySQL ñúðâúò å ñòàðòèðàí!", 
					"Ïðîáëåì ñ âðúçêàòà!", JOptionPane.ERROR_MESSAGE);			
			dbPortal.finalize();
			return false;
		}
		
		dbPortal.executeNonQuery("CREATE TABLE operators (operator_id int NOT NULL AUTO_INCREMENT primary key," + 
				"operator_username nvarchar(20) NOT NULL, operator_password nvarchar(64) NOT NULL," + 
				"operator_first_name nvarchar(20) NOT NULL, operator_last_name nvarchar(20) NOT NULL)");
		
		dbPortal.executeNonQuery("CREATE TABLE orders (order_id int NOT NULL AUTO_INCREMENT primary key," + 
				"order_time datetime NOT NULL, order_operator_id int NOT NULL," +
				"CONSTRAINT FK_OPERATORS FOREIGN KEY (order_operator_id) REFERENCES operators(operator_id) ON DELETE CASCADE ON UPDATE CASCADE)");

		dbPortal.executeNonQuery("CREATE TABLE products (product_id int NOT NULL AUTO_INCREMENT primary key," + 
				"product_name nvarchar(30) NOT NULL, product_quantity int NOT NULL,	product_price decimal(10,2) NOT NULL)");

		dbPortal.executeNonQuery("CREATE TABLE order_details (order_detail_id int NOT NULL AUTO_INCREMENT primary key," + 
				"order_detail_order_id int NOT NULL, order_detail_product_id int NOT NULL, " +
				"order_detail_product_quantity int NOT NULL," +
				"CONSTRAINT FK_ORDERS FOREIGN KEY (order_detail_order_id) REFERENCES orders(order_id) ON DELETE CASCADE ON UPDATE CASCADE," +
				"CONSTRAINT FK_PRODUCTS FOREIGN KEY (order_detail_product_id) REFERENCES products(product_id) ON DELETE CASCADE ON UPDATE CASCADE)");
		
		/* for testing only; not needed any more
		try {
			if (dbPortal.executeNonQuery("INSERT INTO operators (operator_username, operator_password, operator_first_name, operator_last_name)" + 
					" VALUES ('operator1', '" + Md5hashcalc.calculateMD5hash("operator1")  + "', 'Îïåðàòîð1', 'ñëóæåáåí àêàóíò')") != 1) {
				
				dbPortal.executeNonQuery("DROP DATABASE " + mysqlDatabaseNameTextField.getText());
				dbPortal.disconnect();
				dbPortal.finallize();
				
				JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè äîáàâÿíå íà çàïèñ â áàçàòà äàííè!\nÏðîâåðåòå ïðàâàòà íà ïîòðåáèòåëÿ è âðúçêàòà.", "Ãðåøêà ïðè äîáàâÿíå íà äàííè â ÁÄ", JOptionPane.ERROR_MESSAGE);
				
				return false;
			}
		}
		catch (Exception ex) {
			JOptionPane.showMessageDialog(this, "Íå ìîæå äà ñå çàðåäè êðèïòèðàù àëãîðèòúì MD5!", "Ôàòàëíà Ãðåøêà", 
					JOptionPane.ERROR_MESSAGE);
			System.exit(-1);
		}*/
		
		return true;
	}	
}
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedNonQuery(String query, Object[] parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean - ok
		// String  - ok
		// char    - 
		// byte    -
		// short   -
		// int     -
		// long    -
		// double  -
		// float   -
		// Date    -
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i, parameters[i]);
				
				/*if (parameters[i] instanceof Boolean) {
					
					sqlStatement.setBoolean(i, ((Boolean)parameters[i]).booleanValue());
					continue;
				}
				if (parameters[i] instanceof String) {
					
					sqlStatement.setString(i, ((String)parameters[i].toString()));
					continue;
				}
				if (parameters[i] instanceof Character) {
					
					sqlStatement.set
				}*/
			}
			
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Executes parameterized query and returns ResultSet with data. For SELECT...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return ResultSet
	 */
	
	public ResultSet executeParameterizedQuery(String query, Object[] parameters) { //executes query and returns ResultSet 
		
		PreparedStatement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i, parameters[i]);
			}
			
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;


public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.addActionListener(new HelpAboutActionListener());
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.finalize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finalize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
		}
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
		
		operatorUserLoginWindow oul = new operatorUserLoginWindow();
		oul.setVisible(true);
		oul.addWindowListener(operatorUserLoginWindowClosing);
	}
	private static WindowListener operatorUserLoginWindowClosing = new WindowAdapter() {

		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.Operations.setEnabled(true);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserLoginWindow.loggedUserNames);
			}
			else {
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	}
	
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	}
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
	
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserLoginWindow extends JFrame {
	private static final long serialVersionUID = 3003L;

	private final JPanel groupLoginPanel = new JPanel();
	private final JPanel groupCreateNewUserPanel = new JPanel();
	private final JLabel loginUsernameLabel = new JLabel();
	private final JLabel loginPasswordLabel = new JLabel();
	private final JButton loginButton = new JButton();
	private final JTextField loginUsernameTextField = new JTextField();
	private final JPasswordField loginPasswordPasswordField = new JPasswordField();
	private final JLabel newUsernameLabel = new JLabel();
	private final JLabel newPasswordLabel = new JLabel();
	private final JLabel newUserFirstNameLabel = new JLabel();
	private final JLabel newUserLastNameLabel = new JLabel();
	private final JButton createNewOperatorButton = new JButton();
	private final JTextField newUsernameTextField = new JTextField();
	private final JTextField newFirstNameTextField = new JTextField();
	private final JPasswordField newPasswordPasswordField = new JPasswordField();
	private final JTextField newLastNameTextField = new JTextField();
	
	public static int loggedUserId = -1;
	public static String loggedUserNames = "";
	
	private final JLabel newPasswordAgainLabel = new JLabel();
	private final JPasswordField newPasswordPasswordAgainField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLoginWindow frame = new operatorUserLoginWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLoginWindow() {
		super();
		setBounds(100, 100, 518, 242);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Âõîä íà îïåðàòîð");
		setName("operatorLoginWindow");
		setResizable(false);
		setAlwaysOnTop(true);
		
		getContentPane().add(groupLoginPanel);
		groupLoginPanel.setLayout(null);
		groupLoginPanel.setBorder(new TitledBorder(null, "Âõîä:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupLoginPanel.setBounds(10, 10, 243, 133);
		
		groupLoginPanel.add(loginUsernameLabel);
		loginUsernameLabel.setText("Ïîòðåáèòåë:");
		loginUsernameLabel.setBounds(10, 31, 80, 16);
		
		groupLoginPanel.add(loginPasswordLabel);
		loginPasswordLabel.setText("Ïàðîëà:");
		loginPasswordLabel.setBounds(10, 53, 80, 16);
		
		groupLoginPanel.add(loginButton);
		loginButton.addActionListener(new LoginButtonActionListener());
		loginButton.setText("Âõîä");
		loginButton.setBounds(127, 93, 106, 26);
		
		groupLoginPanel.add(loginUsernameTextField);
		loginUsernameTextField.setBounds(96, 29, 137, 20);
		
		groupLoginPanel.add(loginPasswordPasswordField);
		loginPasswordPasswordField.setBounds(96, 51, 137, 20);
		
		getContentPane().add(groupCreateNewUserPanel);
		groupCreateNewUserPanel.setLayout(null);
		groupCreateNewUserPanel.setBorder(new TitledBorder(null, "Íîâ îïåðàòîð:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupCreateNewUserPanel.setBounds(259, 10, 243, 194);
		
		groupCreateNewUserPanel.add(newUsernameLabel);
		newUsernameLabel.setText("Íîâ ïîòðåáèòåë:");
		newUsernameLabel.setBounds(10, 32, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordLabel);
		newPasswordLabel.setText("Ïàðîëà:");
		newPasswordLabel.setBounds(10, 54, 95, 16);
		
		groupCreateNewUserPanel.add(newUserFirstNameLabel);
		newUserFirstNameLabel.setText("Èìå:");
		newUserFirstNameLabel.setBounds(10, 98, 95, 16);
		
		groupCreateNewUserPanel.add(newUserLastNameLabel);
		newUserLastNameLabel.setText("Ôàìèëèÿ:");
		newUserLastNameLabel.setBounds(10, 120, 95, 16);
		
		groupCreateNewUserPanel.add(createNewOperatorButton);
		createNewOperatorButton.addActionListener(new CreateNewOperatorButtonActionListener());
		createNewOperatorButton.setText("Ñúçäàé");
		createNewOperatorButton.setBounds(127, 158, 106, 26);
		
		groupCreateNewUserPanel.add(newUsernameTextField);
		newUsernameTextField.setBounds(111, 30, 122, 20);
		
		groupCreateNewUserPanel.add(newFirstNameTextField);
		newFirstNameTextField.setBounds(111, 96, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordPasswordField);
		newPasswordPasswordField.setBounds(111, 52, 122, 20);
		
		groupCreateNewUserPanel.add(newLastNameTextField);
		newLastNameTextField.setBounds(111, 118, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordAgainLabel);
		newPasswordAgainLabel.setText("Ïàðîëà îòíîâî:");
		newPasswordAgainLabel.setBounds(10, 76, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordPasswordAgainField);
		newPasswordPasswordAgainField.setBounds(111, 75, 122, 20);
	}
	private class LoginButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			loginButton_actionPerformed(e);
		}
	}
	private class CreateNewOperatorButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			createNewOperatorButton_actionPerformed(e);
		}
	}
	
	protected void loginButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				String password = "";
				
				char[] pass = loginPasswordPasswordField.getPassword();
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				ResultSet rs = null;
				
				try {				
					
					rs = databaseConnectWindow.dbPortal.executeParameterizedQuery("SELECT operator_id, operator_first_name, " + "" +
							"operator_last_name FROM operators WHERE operator_username = ? AND operator_password = ?", 
							loginUsernameTextField.getText(), Md5hashcalc.calculateMD5hash(password));							
				}
				catch (Exception ex) {
					System.exit(-1);
				}
				
				if (rs != null) {
					
					try {
						
						loggedUserId = rs.getInt(1);
						loggedUserNames = rs.getString(2) + " " + rs.getString(3);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
								JOptionPane.ERROR_MESSAGE);
						return;
					}
					
					this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
				}
				else {
					JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
							JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			return;
		}		
	}
	
	protected void createNewOperatorButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				char[] pass = newPasswordPasswordField.getPassword();
				String password = "";
				String encryptedPassword = "";
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				char[] pass2 = newPasswordPasswordAgainField.getPassword();
				
				if (pass.length == pass2.length) {
				
						for (int i = 0; i < pass.length; i++) {
							
							if (pass[i] != pass2[i]) {
								
								JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
								return;
							}
						}
				}
				else {
				
					JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
					return;
				}
								
				if ((newUsernameTextField.getText().length() > 3) && (password.length() > 3) && 
						(newFirstNameTextField.getText().length() > 3) && (newLastNameTextField.getText().length() > 3)) {
					
					try {
						
						encryptedPassword = Md5hashcalc.calculateMD5hash(password);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ôàòàëíà ãðåøêà ïðè êðèïòèðàíåòî!", "Ôàòàëíà ãðåøêà", JOptionPane.ERROR_MESSAGE);
						System.exit(-1);
					}
					
					//FIXME prone to sql injection
					ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT COUNT(*) FROM operators WHERE operator_username='" +
							newUsernameTextField.getText() + "'");
					
					int usersCount = 0;
					try {
						
						usersCount = rs.getInt(1);
					}
					catch (Exception ex) {						
					}					
					
					if ((databaseConnectWindow.dbPortal.getLastError() == null) && (usersCount == 0)) {						
						
						//no such existing username so now we create it
						//FIXME prone to sql injection
						if (databaseConnectWindow.dbPortal.executeNonQuery("INSERT INTO operators(operator_username, operator_password, " +
								"operator_first_name, operator_last_name) VALUES('" + newUsernameTextField.getText() + "', '" +
								encryptedPassword + "', '" + newFirstNameTextField.getText() + "', '" + newLastNameTextField.getText() + "')") != 1) {
							
							JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñúçäàâàíå íà íîâ ïîòðåáèòåë!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
						}
						else { //everything ok so login now
							
							loginUsernameTextField.setText(newUsernameTextField.getText());
							loginPasswordPasswordField.setText(password);
							loginButton_actionPerformed(null);
						}						
					}
					else {
						
						if (databaseConnectWindow.dbPortal.getLastError() != null) {
							
							JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);							
						}
						else {
							
							JOptionPane.showMessageDialog(this, "Èçáðàíîòî îò Âàñ ïîòðåáèòåëñêî èìå âå÷å ñúùåñòâóâà.", "Äóáëèðàùî ñå ïîòðåáèòåëñêî èìå", JOptionPane.ERROR_MESSAGE);							
						}
					}					
				}
				else {
					
					JOptionPane.showMessageDialog(this, "Íåîáõîäèìî å äà âúâåäåòå ïî-ïîäðîáíè äàííè!", "Íåïîäðîáíè äàííè", JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
		}		
	}

}
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedNonQuery(String query, Object... parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean - ok
		// String  - ok
		// char    - 
		// byte    -
		// short   -
		// int     -
		// long    -
		// double  -
		// float   -
		// Date    -
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i + 1, parameters[i]);
				
				/*if (parameters[i] instanceof Boolean) {
					
					sqlStatement.setBoolean(i, ((Boolean)parameters[i]).booleanValue());
					continue;
				}
				if (parameters[i] instanceof String) {
					
					sqlStatement.setString(i, ((String)parameters[i].toString()));
					continue;
				}
				if (parameters[i] instanceof Character) {
					
					sqlStatement.set
				}*/
			}
			
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Executes parameterized query and returns ResultSet with data. For SELECT...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return ResultSet
	 */
	
	public ResultSet executeParameterizedQuery(String query, Object... parameters) { //executes query and returns ResultSet 
		
		PreparedStatement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i + 1, parameters[i]);
			}
			
			result = sqlStatement.executeQuery(query);
			
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserLoginWindow extends JFrame {
	private static final long serialVersionUID = 3003L;

	private final JPanel groupLoginPanel = new JPanel();
	private final JPanel groupCreateNewUserPanel = new JPanel();
	private final JLabel loginUsernameLabel = new JLabel();
	private final JLabel loginPasswordLabel = new JLabel();
	private final JButton loginButton = new JButton();
	private final JTextField loginUsernameTextField = new JTextField();
	private final JPasswordField loginPasswordPasswordField = new JPasswordField();
	private final JLabel newUsernameLabel = new JLabel();
	private final JLabel newPasswordLabel = new JLabel();
	private final JLabel newUserFirstNameLabel = new JLabel();
	private final JLabel newUserLastNameLabel = new JLabel();
	private final JButton createNewOperatorButton = new JButton();
	private final JTextField newUsernameTextField = new JTextField();
	private final JTextField newFirstNameTextField = new JTextField();
	private final JPasswordField newPasswordPasswordField = new JPasswordField();
	private final JTextField newLastNameTextField = new JTextField();
	
	public static int loggedUserId = -1;
	public static String loggedUserNames = "";
	
	private final JLabel newPasswordAgainLabel = new JLabel();
	private final JPasswordField newPasswordPasswordAgainField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLoginWindow frame = new operatorUserLoginWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLoginWindow() {
		super();
		setBounds(100, 100, 518, 242);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Âõîä íà îïåðàòîð");
		setName("operatorLoginWindow");
		setResizable(false);
		setAlwaysOnTop(true);
		
		getContentPane().add(groupLoginPanel);
		groupLoginPanel.setLayout(null);
		groupLoginPanel.setBorder(new TitledBorder(null, "Âõîä:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupLoginPanel.setBounds(10, 10, 243, 133);
		
		groupLoginPanel.add(loginUsernameLabel);
		loginUsernameLabel.setText("Ïîòðåáèòåë:");
		loginUsernameLabel.setBounds(10, 31, 80, 16);
		
		groupLoginPanel.add(loginPasswordLabel);
		loginPasswordLabel.setText("Ïàðîëà:");
		loginPasswordLabel.setBounds(10, 53, 80, 16);
		
		groupLoginPanel.add(loginButton);
		loginButton.addActionListener(new LoginButtonActionListener());
		loginButton.setText("Âõîä");
		loginButton.setBounds(127, 93, 106, 26);
		
		groupLoginPanel.add(loginUsernameTextField);
		loginUsernameTextField.setBounds(96, 29, 137, 20);
		
		groupLoginPanel.add(loginPasswordPasswordField);
		loginPasswordPasswordField.setBounds(96, 51, 137, 20);
		
		getContentPane().add(groupCreateNewUserPanel);
		groupCreateNewUserPanel.setLayout(null);
		groupCreateNewUserPanel.setBorder(new TitledBorder(null, "Íîâ îïåðàòîð:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupCreateNewUserPanel.setBounds(259, 10, 243, 194);
		
		groupCreateNewUserPanel.add(newUsernameLabel);
		newUsernameLabel.setText("Íîâ ïîòðåáèòåë:");
		newUsernameLabel.setBounds(10, 32, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordLabel);
		newPasswordLabel.setText("Ïàðîëà:");
		newPasswordLabel.setBounds(10, 54, 95, 16);
		
		groupCreateNewUserPanel.add(newUserFirstNameLabel);
		newUserFirstNameLabel.setText("Èìå:");
		newUserFirstNameLabel.setBounds(10, 98, 95, 16);
		
		groupCreateNewUserPanel.add(newUserLastNameLabel);
		newUserLastNameLabel.setText("Ôàìèëèÿ:");
		newUserLastNameLabel.setBounds(10, 120, 95, 16);
		
		groupCreateNewUserPanel.add(createNewOperatorButton);
		createNewOperatorButton.addActionListener(new CreateNewOperatorButtonActionListener());
		createNewOperatorButton.setText("Ñúçäàé");
		createNewOperatorButton.setBounds(127, 158, 106, 26);
		
		groupCreateNewUserPanel.add(newUsernameTextField);
		newUsernameTextField.setBounds(111, 30, 122, 20);
		
		groupCreateNewUserPanel.add(newFirstNameTextField);
		newFirstNameTextField.setBounds(111, 96, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordPasswordField);
		newPasswordPasswordField.setBounds(111, 52, 122, 20);
		
		groupCreateNewUserPanel.add(newLastNameTextField);
		newLastNameTextField.setBounds(111, 118, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordAgainLabel);
		newPasswordAgainLabel.setText("Ïàðîëà îòíîâî:");
		newPasswordAgainLabel.setBounds(10, 76, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordPasswordAgainField);
		newPasswordPasswordAgainField.setBounds(111, 75, 122, 20);
	}
	private class LoginButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			loginButton_actionPerformed(e);
		}
	}
	private class CreateNewOperatorButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			createNewOperatorButton_actionPerformed(e);
		}
	}
	
	protected void loginButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				String password = "";
				
				char[] pass = loginPasswordPasswordField.getPassword();
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				//FIXME prone to sql injection
				
				ResultSet rs = null;
				
				try {				
					
					/*rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_id, operator_first_name, operator_last_name FROM operators WHERE" + 
						" operator_username='" + loginUsernameTextField.getText() + "' AND operator_password='" +
						Md5hashcalc.calculateMD5hash(password) + "'");*/
					
					rs = databaseConnectWindow.dbPortal.executeParameterizedQuery("SELECT operator_id, operator_first_name, " + "" +
							"operator_last_name FROM operators WHERE operator_username = ? AND operator_password = ?", 
							loginUsernameTextField.getText(), Md5hashcalc.calculateMD5hash(password));
							
				}
				catch (Exception ex) {
					System.exit(-1);
				}
				
				if (rs != null) {
					
					try {
						
						loggedUserId = rs.getInt(1);
						loggedUserNames = rs.getString(2) + " " + rs.getString(3);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
								JOptionPane.ERROR_MESSAGE);
						return;
					}
					
					this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
				}
				else {
					JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
							JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			return;
		}		
	}
	
	protected void createNewOperatorButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				char[] pass = newPasswordPasswordField.getPassword();
				String password = "";
				String encryptedPassword = "";
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				char[] pass2 = newPasswordPasswordAgainField.getPassword();
				
				if (pass.length == pass2.length) {
				
						for (int i = 0; i < pass.length; i++) {
							
							if (pass[i] != pass2[i]) {
								
								JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
								return;
							}
						}
				}
				else {
				
					JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
					return;
				}
								
				if ((newUsernameTextField.getText().length() > 3) && (password.length() > 3) && 
						(newFirstNameTextField.getText().length() > 3) && (newLastNameTextField.getText().length() > 3)) {
					
					try {
						
						encryptedPassword = Md5hashcalc.calculateMD5hash(password);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ôàòàëíà ãðåøêà ïðè êðèïòèðàíåòî!", "Ôàòàëíà ãðåøêà", JOptionPane.ERROR_MESSAGE);
						System.exit(-1);
					}
					
					//FIXME prone to sql injection
					ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT COUNT(*) FROM operators WHERE operator_username='" +
							newUsernameTextField.getText() + "'");
					
					int usersCount = 0;
					try {
						
						usersCount = rs.getInt(1);
					}
					catch (Exception ex) {						
					}					
					
					if ((databaseConnectWindow.dbPortal.getLastError() == null) && (usersCount == 0)) {						
						
						//no such existing username so now we create it
						//FIXME prone to sql injection
						if (databaseConnectWindow.dbPortal.executeNonQuery("INSERT INTO operators(operator_username, operator_password, " +
								"operator_first_name, operator_last_name) VALUES('" + newUsernameTextField.getText() + "', '" +
								encryptedPassword + "', '" + newFirstNameTextField.getText() + "', '" + newLastNameTextField.getText() + "')") != 1) {
							
							JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñúçäàâàíå íà íîâ ïîòðåáèòåë!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
						}
						else { //everything ok so login now
							
							loginUsernameTextField.setText(newUsernameTextField.getText());
							loginPasswordPasswordField.setText(password);
							loginButton_actionPerformed(null);
						}						
					}
					else {
						
						if (databaseConnectWindow.dbPortal.getLastError() != null) {
							
							JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);							
						}
						else {
							
							JOptionPane.showMessageDialog(this, "Èçáðàíîòî îò Âàñ ïîòðåáèòåëñêî èìå âå÷å ñúùåñòâóâà.", "Äóáëèðàùî ñå ïîòðåáèòåëñêî èìå", JOptionPane.ERROR_MESSAGE);							
						}
					}					
				}
				else {
					
					JOptionPane.showMessageDialog(this, "Íåîáõîäèìî å äà âúâåäåòå ïî-ïîäðîáíè äàííè!", "Íåïîäðîáíè äàííè", JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
		}		
	}

}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserLoginWindow extends JFrame {
	private static final long serialVersionUID = 3003L;

	private final JPanel groupLoginPanel = new JPanel();
	private final JPanel groupCreateNewUserPanel = new JPanel();
	private final JLabel loginUsernameLabel = new JLabel();
	private final JLabel loginPasswordLabel = new JLabel();
	private final JButton loginButton = new JButton();
	private final JTextField loginUsernameTextField = new JTextField();
	private final JPasswordField loginPasswordPasswordField = new JPasswordField();
	private final JLabel newUsernameLabel = new JLabel();
	private final JLabel newPasswordLabel = new JLabel();
	private final JLabel newUserFirstNameLabel = new JLabel();
	private final JLabel newUserLastNameLabel = new JLabel();
	private final JButton createNewOperatorButton = new JButton();
	private final JTextField newUsernameTextField = new JTextField();
	private final JTextField newFirstNameTextField = new JTextField();
	private final JPasswordField newPasswordPasswordField = new JPasswordField();
	private final JTextField newLastNameTextField = new JTextField();
	
	public static int loggedUserId = -1;
	public static String loggedUserNames = "";
	
	private final JLabel newPasswordAgainLabel = new JLabel();
	private final JPasswordField newPasswordPasswordAgainField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLoginWindow frame = new operatorUserLoginWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLoginWindow() {
		super();
		setBounds(100, 100, 518, 242);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Âõîä íà îïåðàòîð");
		setName("operatorLoginWindow");
		setResizable(false);
		setAlwaysOnTop(true);
		
		getContentPane().add(groupLoginPanel);
		groupLoginPanel.setLayout(null);
		groupLoginPanel.setBorder(new TitledBorder(null, "Âõîä:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupLoginPanel.setBounds(10, 10, 243, 133);
		
		groupLoginPanel.add(loginUsernameLabel);
		loginUsernameLabel.setText("Ïîòðåáèòåë:");
		loginUsernameLabel.setBounds(10, 31, 80, 16);
		
		groupLoginPanel.add(loginPasswordLabel);
		loginPasswordLabel.setText("Ïàðîëà:");
		loginPasswordLabel.setBounds(10, 53, 80, 16);
		
		groupLoginPanel.add(loginButton);
		loginButton.addActionListener(new LoginButtonActionListener());
		loginButton.setText("Âõîä");
		loginButton.setBounds(127, 93, 106, 26);
		
		groupLoginPanel.add(loginUsernameTextField);
		loginUsernameTextField.setBounds(96, 29, 137, 20);
		
		groupLoginPanel.add(loginPasswordPasswordField);
		loginPasswordPasswordField.setBounds(96, 51, 137, 20);
		
		getContentPane().add(groupCreateNewUserPanel);
		groupCreateNewUserPanel.setLayout(null);
		groupCreateNewUserPanel.setBorder(new TitledBorder(null, "Íîâ îïåðàòîð:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupCreateNewUserPanel.setBounds(259, 10, 243, 194);
		
		groupCreateNewUserPanel.add(newUsernameLabel);
		newUsernameLabel.setText("Íîâ ïîòðåáèòåë:");
		newUsernameLabel.setBounds(10, 32, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordLabel);
		newPasswordLabel.setText("Ïàðîëà:");
		newPasswordLabel.setBounds(10, 54, 95, 16);
		
		groupCreateNewUserPanel.add(newUserFirstNameLabel);
		newUserFirstNameLabel.setText("Èìå:");
		newUserFirstNameLabel.setBounds(10, 98, 95, 16);
		
		groupCreateNewUserPanel.add(newUserLastNameLabel);
		newUserLastNameLabel.setText("Ôàìèëèÿ:");
		newUserLastNameLabel.setBounds(10, 120, 95, 16);
		
		groupCreateNewUserPanel.add(createNewOperatorButton);
		createNewOperatorButton.addActionListener(new CreateNewOperatorButtonActionListener());
		createNewOperatorButton.setText("Ñúçäàé");
		createNewOperatorButton.setBounds(127, 158, 106, 26);
		
		groupCreateNewUserPanel.add(newUsernameTextField);
		newUsernameTextField.setBounds(111, 30, 122, 20);
		
		groupCreateNewUserPanel.add(newFirstNameTextField);
		newFirstNameTextField.setBounds(111, 96, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordPasswordField);
		newPasswordPasswordField.setBounds(111, 52, 122, 20);
		
		groupCreateNewUserPanel.add(newLastNameTextField);
		newLastNameTextField.setBounds(111, 118, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordAgainLabel);
		newPasswordAgainLabel.setText("Ïàðîëà îòíîâî:");
		newPasswordAgainLabel.setBounds(10, 76, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordPasswordAgainField);
		newPasswordPasswordAgainField.setBounds(111, 75, 122, 20);
	}
	private class LoginButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			loginButton_actionPerformed(e);
		}
	}
	private class CreateNewOperatorButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			createNewOperatorButton_actionPerformed(e);
		}
	}
	
	protected void loginButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				String password = "";
				
				char[] pass = loginPasswordPasswordField.getPassword();
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				//FIXME prone to sql injection
				
				ResultSet rs = null;
				
				try {				
					
					/*rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_id, operator_first_name, operator_last_name FROM operators WHERE" + 
						" operator_username='" + loginUsernameTextField.getText() + "' AND operator_password='" +
						Md5hashcalc.calculateMD5hash(password) + "'");*/
					Object[] params = new String[2];
					params[0] = loginUsernameTextField.getText();
					params[1] = Md5hashcalc.calculateMD5hash(password);
					
					rs = databaseConnectWindow.dbPortal.executeParameterizedQuery("SELECT operator_id, operator_first_name, " + "" +
							"operator_last_name FROM operators WHERE operator_username=? AND operator_password=?", params);
							
				}
				catch (Exception ex) {
					System.exit(-1);
				}
				
				if (rs != null) {
					
					try {
						
						loggedUserId = rs.getInt(1);
						loggedUserNames = rs.getString(2) + " " + rs.getString(3);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
								JOptionPane.ERROR_MESSAGE);
						return;
					}
					
					this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
				}
				else {
					JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
							JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			return;
		}		
	}
	
	protected void createNewOperatorButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				char[] pass = newPasswordPasswordField.getPassword();
				String password = "";
				String encryptedPassword = "";
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				char[] pass2 = newPasswordPasswordAgainField.getPassword();
				
				if (pass.length == pass2.length) {
				
						for (int i = 0; i < pass.length; i++) {
							
							if (pass[i] != pass2[i]) {
								
								JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
								return;
							}
						}
				}
				else {
				
					JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
					return;
				}
								
				if ((newUsernameTextField.getText().length() > 3) && (password.length() > 3) && 
						(newFirstNameTextField.getText().length() > 3) && (newLastNameTextField.getText().length() > 3)) {
					
					try {
						
						encryptedPassword = Md5hashcalc.calculateMD5hash(password);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ôàòàëíà ãðåøêà ïðè êðèïòèðàíåòî!", "Ôàòàëíà ãðåøêà", JOptionPane.ERROR_MESSAGE);
						System.exit(-1);
					}
					
					//FIXME prone to sql injection
					ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT COUNT(*) FROM operators WHERE operator_username='" +
							newUsernameTextField.getText() + "'");
					
					int usersCount = 0;
					try {
						
						usersCount = rs.getInt(1);
					}
					catch (Exception ex) {						
					}					
					
					if ((databaseConnectWindow.dbPortal.getLastError() == null) && (usersCount == 0)) {						
						
						//no such existing username so now we create it
						//FIXME prone to sql injection
						if (databaseConnectWindow.dbPortal.executeNonQuery("INSERT INTO operators(operator_username, operator_password, " +
								"operator_first_name, operator_last_name) VALUES('" + newUsernameTextField.getText() + "', '" +
								encryptedPassword + "', '" + newFirstNameTextField.getText() + "', '" + newLastNameTextField.getText() + "')") != 1) {
							
							JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñúçäàâàíå íà íîâ ïîòðåáèòåë!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
						}
						else { //everything ok so login now
							
							loginUsernameTextField.setText(newUsernameTextField.getText());
							loginPasswordPasswordField.setText(password);
							loginButton_actionPerformed(null);
						}						
					}
					else {
						
						if (databaseConnectWindow.dbPortal.getLastError() != null) {
							
							JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);							
						}
						else {
							
							JOptionPane.showMessageDialog(this, "Èçáðàíîòî îò Âàñ ïîòðåáèòåëñêî èìå âå÷å ñúùåñòâóâà.", "Äóáëèðàùî ñå ïîòðåáèòåëñêî èìå", JOptionPane.ERROR_MESSAGE);							
						}
					}					
				}
				else {
					
					JOptionPane.showMessageDialog(this, "Íåîáõîäèìî å äà âúâåäåòå ïî-ïîäðîáíè äàííè!", "Íåïîäðîáíè äàííè", JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
		}		
	}

}
import java.awt.Insets;

	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		HelpAbout.addActionListener(new HelpAboutActionListener());
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}
				databaseConnectWindow.dbPortal.finalize();
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
			databaseConnectWindow.dbPortal.finalize();
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserLoginWindow.loggedUserNames);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
	};
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
	
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	}
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
	
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedNonQuery(String query, Object[] parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean - ok
		// String  - ok
		// char    - 
		// byte    -
		// short   -
		// int     -
		// long    -
		// double  -
		// float   -
		// Date    -
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i, parameters[i]);
				
				/*if (parameters[i] instanceof Boolean) {
					
					sqlStatement.setBoolean(i, ((Boolean)parameters[i]).booleanValue());
					continue;
				}
				if (parameters[i] instanceof String) {
					
					sqlStatement.setString(i, ((String)parameters[i].toString()));
					continue;
				}
				if (parameters[i] instanceof Character) {
					
					sqlStatement.set
				}*/
			}
			
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Executes parameterized query and returns ResultSet with data. For SELECT...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return ResultSet
	 */
	
	public ResultSet executeParameterizedQuery(String query, Object[] parameters) { //executes query and returns ResultSet 
		
		PreparedStatement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i, parameters[i]);
			}
			
			result = sqlStatement.executeQuery(query);
			
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserLoginWindow extends JFrame {
	private static final long serialVersionUID = 3003L;

	private final JPanel groupLoginPanel = new JPanel();
	private final JPanel groupCreateNewUserPanel = new JPanel();
	private final JLabel loginUsernameLabel = new JLabel();
	private final JLabel loginPasswordLabel = new JLabel();
	private final JButton loginButton = new JButton();
	private final JTextField loginUsernameTextField = new JTextField();
	private final JPasswordField loginPasswordPasswordField = new JPasswordField();
	private final JLabel newUsernameLabel = new JLabel();
	private final JLabel newPasswordLabel = new JLabel();
	private final JLabel newUserFirstNameLabel = new JLabel();
	private final JLabel newUserLastNameLabel = new JLabel();
	private final JButton createNewOperatorButton = new JButton();
	private final JTextField newUsernameTextField = new JTextField();
	private final JTextField newFirstNameTextField = new JTextField();
	private final JPasswordField newPasswordPasswordField = new JPasswordField();
	private final JTextField newLastNameTextField = new JTextField();
	
	public static int loggedUserId = -1;
	public static String loggedUserNames = "";
	
	private final JLabel newPasswordAgainLabel = new JLabel();
	private final JPasswordField newPasswordPasswordAgainField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLoginWindow frame = new operatorUserLoginWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLoginWindow() {
		super();
		setBounds(100, 100, 518, 242);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Âõîä íà îïåðàòîð");
		setName("operatorLoginWindow");
		setResizable(false);
		setAlwaysOnTop(true);
		
		getContentPane().add(groupLoginPanel);
		groupLoginPanel.setLayout(null);
		groupLoginPanel.setBorder(new TitledBorder(null, "Âõîä:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupLoginPanel.setBounds(10, 10, 243, 133);
		
		groupLoginPanel.add(loginUsernameLabel);
		loginUsernameLabel.setText("Ïîòðåáèòåë:");
		loginUsernameLabel.setBounds(10, 31, 80, 16);
		
		groupLoginPanel.add(loginPasswordLabel);
		loginPasswordLabel.setText("Ïàðîëà:");
		loginPasswordLabel.setBounds(10, 53, 80, 16);
		
		groupLoginPanel.add(loginButton);
		loginButton.addActionListener(new LoginButtonActionListener());
		loginButton.setText("Âõîä");
		loginButton.setBounds(127, 93, 106, 26);
		
		groupLoginPanel.add(loginUsernameTextField);
		loginUsernameTextField.setBounds(96, 29, 137, 20);
		
		groupLoginPanel.add(loginPasswordPasswordField);
		loginPasswordPasswordField.setBounds(96, 51, 137, 20);
		
		getContentPane().add(groupCreateNewUserPanel);
		groupCreateNewUserPanel.setLayout(null);
		groupCreateNewUserPanel.setBorder(new TitledBorder(null, "Íîâ îïåðàòîð:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupCreateNewUserPanel.setBounds(259, 10, 243, 194);
		
		groupCreateNewUserPanel.add(newUsernameLabel);
		newUsernameLabel.setText("Íîâ ïîòðåáèòåë:");
		newUsernameLabel.setBounds(10, 32, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordLabel);
		newPasswordLabel.setText("Ïàðîëà:");
		newPasswordLabel.setBounds(10, 54, 95, 16);
		
		groupCreateNewUserPanel.add(newUserFirstNameLabel);
		newUserFirstNameLabel.setText("Èìå:");
		newUserFirstNameLabel.setBounds(10, 98, 95, 16);
		
		groupCreateNewUserPanel.add(newUserLastNameLabel);
		newUserLastNameLabel.setText("Ôàìèëèÿ:");
		newUserLastNameLabel.setBounds(10, 120, 95, 16);
		
		groupCreateNewUserPanel.add(createNewOperatorButton);
		createNewOperatorButton.addActionListener(new CreateNewOperatorButtonActionListener());
		createNewOperatorButton.setText("Ñúçäàé");
		createNewOperatorButton.setBounds(127, 158, 106, 26);
		
		groupCreateNewUserPanel.add(newUsernameTextField);
		newUsernameTextField.setBounds(111, 30, 122, 20);
		
		groupCreateNewUserPanel.add(newFirstNameTextField);
		newFirstNameTextField.setBounds(111, 96, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordPasswordField);
		newPasswordPasswordField.setBounds(111, 52, 122, 20);
		
		groupCreateNewUserPanel.add(newLastNameTextField);
		newLastNameTextField.setBounds(111, 118, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordAgainLabel);
		newPasswordAgainLabel.setText("Ïàðîëà îòíîâî:");
		newPasswordAgainLabel.setBounds(10, 76, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordPasswordAgainField);
		newPasswordPasswordAgainField.setBounds(111, 75, 122, 20);
	}
	private class LoginButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			loginButton_actionPerformed(e);
		}
	}
	private class CreateNewOperatorButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			createNewOperatorButton_actionPerformed(e);
		}
	}
	
	protected void loginButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				String password = "";
				
				char[] pass = loginPasswordPasswordField.getPassword();
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				ResultSet rs = null;
				
				try {				
					
					rs = databaseConnectWindow.dbPortal.executeParameterizedQuery("SELECT operator_id, operator_first_name, " + "" +
							"operator_last_name FROM operators WHERE operator_username = ? AND operator_password = ?", 
							loginUsernameTextField.getText(), Md5hashcalc.calculateMD5hash(password));							
				}
				catch (Exception ex) {
					System.exit(-1);
				}
				
				if (rs != null) {
					
					try {
						
						loggedUserId = rs.getInt(1);
						loggedUserNames = rs.getString(2) + " " + rs.getString(3);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
								JOptionPane.ERROR_MESSAGE);
						return;
					}
					
					this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
				}
				else {
					JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
							JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			return;
		}		
	}
	
	protected void createNewOperatorButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				char[] pass = newPasswordPasswordField.getPassword();
				String password = "";
				String encryptedPassword = "";
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				char[] pass2 = newPasswordPasswordAgainField.getPassword();
				
				if (pass.length == pass2.length) {
				
						for (int i = 0; i < pass.length; i++) {
							
							if (pass[i] != pass2[i]) {
								
								JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
								return;
							}
						}
				}
				else {
				
					JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
					return;
				}
								
				if ((newUsernameTextField.getText().length() > 3) && (password.length() > 3) && 
						(newFirstNameTextField.getText().length() > 3) && (newLastNameTextField.getText().length() > 3)) {
					
					try {
						
						encryptedPassword = Md5hashcalc.calculateMD5hash(password);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ôàòàëíà ãðåøêà ïðè êðèïòèðàíåòî!", "Ôàòàëíà ãðåøêà", JOptionPane.ERROR_MESSAGE);
						System.exit(-1);
					}
					
					ResultSet rs = databaseConnectWindow.dbPortal.executeParameterizedQuery(
							"SELECT COUNT(*) FROM operators WHERE operator_username=?",	newUsernameTextField.getText());
					
					int usersCount = 0;
					try {
						
						usersCount = rs.getInt(1);
					}
					catch (Exception ex) {						
					}					
					
					if ((databaseConnectWindow.dbPortal.getLastError() == null) && (usersCount == 0)) {						
						
						//no such existing username so now we create it
						if (databaseConnectWindow.dbPortal.executeParameterizedNonQuery(
								"INSERT INTO operators(operator_username, operator_password, operator_first_name, " + 
								"operator_last_name) VALUES(?, ?, ?, ?)", newUsernameTextField.getText(), encryptedPassword,
								newFirstNameTextField.getText(), newLastNameTextField.getText()) != 1) {
							
							JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñúçäàâàíå íà íîâ ïîòðåáèòåë!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
						}
						else { //everything ok so login now
							
							loginUsernameTextField.setText(newUsernameTextField.getText());
							loginPasswordPasswordField.setText(password);
							loginButton_actionPerformed(null);
						}						
					}
					else {
						
						if (databaseConnectWindow.dbPortal.getLastError() != null) {
							
							JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);							
						}
						else {
							
							JOptionPane.showMessageDialog(this, "Èçáðàíîòî îò Âàñ ïîòðåáèòåëñêî èìå âå÷å ñúùåñòâóâà.", "Äóáëèðàùî ñå ïîòðåáèòåëñêî èìå", JOptionPane.ERROR_MESSAGE);							
						}
					}					
				}
				else {
					
					JOptionPane.showMessageDialog(this, "Íåîáõîäèìî å äà âúâåäåòå ïî-ïîäðîáíè äàííè!", "Íåïîäðîáíè äàííè", JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
		}		
	}

}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import javax.swing.JComponent;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JSeparator;
import javax.swing.SpringLayout;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;


public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.addActionListener(new HelpAboutActionListener());
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.finalize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finalize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
		}
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
		
		operatorUserLoginWindow oul = new operatorUserLoginWindow();
		oul.setVisible(true);
		oul.addWindowListener(operatorUserLoginWindowClosing);
	}
	private static WindowListener operatorUserLoginWindowClosing = new WindowAdapter() {

		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.Operations.setEnabled(true);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserLoginWindow.loggedUserNames);
			}
			else {
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	}
	
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	}
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
	
}
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for variables like String, int, double ...)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedQuery(String query, Object[] parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean
		// String
		// char[]
		// byte
		// short
		// int
		// long
		// double
		// float
		// Date
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				if (parameters[i] instanceof String) {
					sqlStatement.set
				}
			}
			
			sqlStatement.
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;


public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.addActionListener(new HelpAboutActionListener());
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.finalize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finalize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
		}
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
		
		operatorUserLoginWindow oul = new operatorUserLoginWindow();
		oul.setVisible(true);
		oul.addWindowListener(operatorUserLoginWindowClosing);
	}
	private static WindowListener operatorUserLoginWindowClosing = new WindowAdapter() {

		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.Operations.setEnabled(true);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserLoginWindow.loggedUserNames);
			}
			else {
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	}
	
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	}
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
	
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import java.sql.ResultSet;
import database_management.MySQLdbManager;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();
	
	private String currentOperatorPassword = "";
	public static String operatorFirstNameLastNameCombination = "";
	
	private final JButton deleteOperator = new JButton();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 255);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setResizable(false);
		setAlwaysOnTop(true);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 278, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.addActionListener(new UpdateButtonActionListener());
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(90, 130, 137, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
		
		getContentPane().add(deleteOperator);
		deleteOperator.addActionListener(new DeleteOperatorActionListener());
		deleteOperator.setText("Èçòðèé îïåðàòîð");
		deleteOperator.setBounds(90, 189, 137, 26);
	}
	
	private void getCurrentUserData() {
		
		if (databaseConnectWindow.dbPortal == null) {
			return;
		}
		if (databaseConnectWindow.dbPortal.isConnected() == false) {
			return;
		}
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_username, operator_password, " + 
				"operator_first_name, operator_last_name FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId);
		
		if ((rs == null) || (databaseConnectWindow.dbPortal.getLastError() != null)) {
			return;
		}
		
		try {
			
			usernameLabel.setText("Ïîòðåáèòåë: " + rs.getString(1));
			currentOperatorPassword = rs.getString(2);
			firstNameTextField.setText(rs.getString(3));
			lastNameTextField.setText(rs.getString(4));
		}
		catch (Exception ex) {			
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
	}
	
	private class UpdateButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			updateButton_actionPerformed(e);
		}
	}
	private class DeleteOperatorActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			deleteOperator_actionPerformed(e);
		}
	}
	protected void updateButton_actionPerformed(ActionEvent e) {
		
		char[] pass = passwordPasswordField.getPassword();
		String password = "";
		
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		char[] pass2 = passwordAgainPasswordField.getPassword();
		String password2 = "";
		
		for (int j = 0; j < pass2.length; j++) {
			
			password2 += pass2[j];
		}
		
		if (password.compareTo(password2) != 0) {
			
			JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if (password.length() > 3) { //password update will be performed too
			
			try {
				
				password = Md5hashcalc.calculateMD5hash(password);
				currentOperatorPassword = password;
			}
			catch (Exception ex) {
				
				JOptionPane.showMessageDialog(this, "Äàííèòå ñ èçêëþ÷åíèå íà òåçè çà ïàðîëàòà ñàìî\nùå áúäàò îáíîâåíè ïîðàäè ïðîáëåìè ñ êðèïòèðàíåòî!", "Ïðîáëåì ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			}			
		}
		else {
			if (password.length() > 0) {
				
				JOptionPane.showMessageDialog(this, "Ïàðîëàòà òðÿáâà äà å ïîíå 4 ñèìâîëà!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		
		if ((firstNameTextField.getText().length() <= 3) || (lastNameTextField.getText().length() <= 3)) {
			
			JOptionPane.showMessageDialog(this, "Ïðåêàëåíî êðàòêè èìå èëè ôàìèëèÿ!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		//FIXME prone to sql injection
		if (databaseConnectWindow.dbPortal.executeNonQuery("UPDATE operators SET operator_password='" + currentOperatorPassword +
				"', operator_first_name='" + firstNameTextField.getText() + "', operator_last_name='" + 
				lastNameTextField.getText() + "' WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {
		
		//if (databaseConnectWindow.dbPortal.getLastError() != null) {
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè îáíîâÿâàíå íà äàííèòå!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
		operatorUserLoginWindow.loggedUserNames = operatorFirstNameLastNameCombination; //in case
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	protected void deleteOperator_actionPerformed(ActionEvent e) {
		
		//we can not delete not existing operator
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		if (JOptionPane.showConfirmDialog(this, "Èçòðèâàíåòî íà îïåðàòîðà ùå ïðåìàõíå îò áàçàòà äàííè\n" + 
				"è âñè÷êè äåéíîñòè, êîèòî òîé å èçâúðøèë.\n\n\tÈçòðèâàíå?", "Ïîòâúðäåòå èçòðèâàíå íà îïåðàòîð", 
				JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
			
			if (databaseConnectWindow.dbPortal.executeNonQuery("DELETE FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {

				JOptionPane.showMessageDialog(this, "Èçòðèâàíåòî å íåóñïåøíî!", "Íåóñïåøíî èçòðèâàíå íà îïåðàòîð", JOptionPane.ERROR_MESSAGE);
				return;
			}
			
			operatorUserLoginWindow.loggedUserId = -1;
			this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
		}
		
		return;
	}

}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();
	
	private String currentOperatorPassword = "";
	public static String operatorFirstNameLastNameCombination = "";
	
	private final JButton deleteOperator = new JButton();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 255);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setResizable(false);
		setAlwaysOnTop(true);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 278, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.addActionListener(new UpdateButtonActionListener());
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(90, 130, 137, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
		
		getContentPane().add(deleteOperator);
		deleteOperator.addActionListener(new DeleteOperatorActionListener());
		deleteOperator.setText("Èçòðèé îïåðàòîð");
		deleteOperator.setBounds(90, 189, 137, 26);
	}
	
	private void getCurrentUserData() {
		
		if (databaseConnectWindow.dbPortal == null) {
			return;
		}
		if (databaseConnectWindow.dbPortal.isConnected() == false) {
			return;
		}
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_username, operator_password, " + 
				"operator_first_name, operator_last_name FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId);
		
		if ((rs == null) || (databaseConnectWindow.dbPortal.getLastError() != null)) {
			return;
		}
		
		try {
			
			usernameLabel.setText("Ïîòðåáèòåë: " + rs.getString(1));
			currentOperatorPassword = rs.getString(2);
			firstNameTextField.setText(rs.getString(3));
			lastNameTextField.setText(rs.getString(4));
		}
		catch (Exception ex) {			
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
	}
	
	private class UpdateButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			updateButton_actionPerformed(e);
		}
	}
	private class DeleteOperatorActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			deleteOperator_actionPerformed(e);
		}
	}
	protected void updateButton_actionPerformed(ActionEvent e) {
		
		char[] pass = passwordPasswordField.getPassword();
		String password = "";
		
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		char[] pass2 = passwordAgainPasswordField.getPassword();
		String password2 = "";
		
		for (int j = 0; j < pass2.length; j++) {
			
			password2 += pass2[j];
		}
		
		if (password.compareTo(password2) != 0) {
			
			JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if (password.length() > 3) { //password update will be performed too
			
			try {
				
				password = Md5hashcalc.calculateMD5hash(password);
				currentOperatorPassword = password;
			}
			catch (Exception ex) {
				
				JOptionPane.showMessageDialog(this, "Äàííèòå ñ èçêëþ÷åíèå íà òåçè çà ïàðîëàòà ñàìî\nùå áúäàò îáíîâåíè ïîðàäè ïðîáëåìè ñ êðèïòèðàíåòî!", "Ïðîáëåì ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			}			
		}
		else {
			if (password.length() > 0) {
				
				JOptionPane.showMessageDialog(this, "Ïàðîëàòà òðÿáâà äà å ïîíå 4 ñèìâîëà!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		
		if ((firstNameTextField.getText().length() <= 3) || (lastNameTextField.getText().length() <= 3)) {
			
			JOptionPane.showMessageDialog(this, "Ïðåêàëåíî êðàòêè èìå èëè ôàìèëèÿ!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		//FIXME prone to sql injection
		if (databaseConnectWindow.dbPortal.executeNonQuery("UPDATE operators SET operator_password='" + currentOperatorPassword +
				"', operator_first_name='" + firstNameTextField.getText() + "', operator_last_name='" + 
				lastNameTextField.getText() + "' WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {
		
		//if (databaseConnectWindow.dbPortal.getLastError() != null) {
			
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè îáíîâÿâàíå íà äàííèòå!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
		operatorUserLoginWindow.loggedUserNames = operatorFirstNameLastNameCombination; //in case
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	protected void deleteOperator_actionPerformed(ActionEvent e) {
		
		//we can not delete not existing operator
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		if (JOptionPane.showConfirmDialog(this, "Èçòðèâàíåòî íà îïåðàòîðà ùå ïðåìàõíå îò áàçàòà äàííè\n" + 
				"è âñè÷êè äåéíîñòè, êîèòî òîé å èçâúðøèë.\n\n\tÈçòðèâàíå?", "Ïîòâúðäåòå èçòðèâàíå íà îïåðàòîð", 
				JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
			
			if (databaseConnectWindow.dbPortal.executeNonQuery("DELETE FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {

				JOptionPane.showMessageDialog(this, "Èçòðèâàíåòî å íåóñïåøíî!", "Íåóñïåøíî èçòðèâàíå íà îïåðàòîð", JOptionPane.ERROR_MESSAGE);
				return;
			}
			
			operatorUserLoginWindow.loggedUserId = -1;
			this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
		}
		
		return;
	}

}
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedNonQuery(String query, Object[] parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean - ok
		// String  - ok
		// char    - 
		// byte    -
		// short   -
		// int     -
		// long    -
		// double  -
		// float   -
		// Date    -
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i + 1, parameters[i]);
				
				/*if (parameters[i] instanceof Boolean) {
					
					sqlStatement.setBoolean(i, ((Boolean)parameters[i]).booleanValue());
					continue;
				}
				if (parameters[i] instanceof String) {
					
					sqlStatement.setString(i, ((String)parameters[i].toString()));
					continue;
				}
				if (parameters[i] instanceof Character) {
					
					sqlStatement.set
				}*/
			}
			
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Executes parameterized query and returns ResultSet with data. For SELECT...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return ResultSet
	 */
	
	public ResultSet executeParameterizedQuery(String query, Object... parameters) { //executes query and returns ResultSet 
		
		PreparedStatement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i + 1, parameters[i]);
			}
			
			result = sqlStatement.executeQuery(query);
			
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SpringLayout;
import javax.swing.border.EtchedBorder;
import org.jdesktop.layout.GroupLayout;
import org.jdesktop.layout.LayoutStyle;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.RowSpec;


public class mainWindow extends JFrame {

	private final JMenuBar mainWindowMenu = new JMenuBar();
	private final JMenu File = new JMenu();
	private final JMenuItem FileConnectToDb = new JMenuItem();
	private final JMenu Operations = new JMenu();
	private final JMenu Help = new JMenu();
	private final JMenuItem HelpAbout = new JMenuItem();
	private final JMenuItem FileExit = new JMenuItem();
	private static mainWindow mainWindowPointer;
	
	private final JMenuItem FileDisconnectFromDb = new JMenuItem();
	private final JPanel mainWindowStatusPanel = new JPanel();
	private final JLabel mainWindowStatusPanelLoggedUserLabel = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogin = new JButton();
	private final JButton mainWindowStatusPanelLoggedUserSettings = new JButton();

	private final JLabel mainWindowStatusPanelSeparatorLabel = new JLabel();
	private final JLabel mainWindowStatusPanelSeparatorLabel2 = new JLabel();
	private final JButton mainWindowStatusPanelLoggedUserLogout = new JButton();
	
	private final JMenuItem operationsProductsManagement = new JMenuItem();
	private final JMenuItem operationsOrdersManagement = new JMenuItem();
	private final JMenuItem operationsNewOrder = new JMenuItem();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					mainWindow frame = new mainWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public mainWindow() {
		super();
		setBounds(100, 100, 682, 438);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		mainWindowPointer = this;
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//		
	}
	private void jbInit() throws Exception {
		addWindowListener(new ThisWindowListener());
		getContentPane().setLayout(new BorderLayout());
		setTitle("eShop 1.00 (C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ");
		setName("mainWindow");
		
		setJMenuBar(mainWindowMenu);
		
		mainWindowMenu.add(File);
		File.setText("Ôàéë");
		
		File.add(FileConnectToDb);
		FileConnectToDb.addActionListener(new FileConnectToDbActionListener());
		FileConnectToDb.setText("Ñâúðæè ñå ñ ÁÄ");
		
		File.add(FileDisconnectFromDb);
		FileDisconnectFromDb.addActionListener(new FileDisconnectFromDbActionListener());
		FileDisconnectFromDb.setText("Çàòâîðè âðúçêàòà ñ ÁÄ");
		FileDisconnectFromDb.setEnabled(false);

		File.addSeparator();
		
		File.add(FileExit);
		FileExit.addActionListener(new FileExitActionListener());
		FileExit.setText("Èçõîä");
		
		mainWindowMenu.add(Operations);
		Operations.setText("Îïåðàöèè");
		Operations.setEnabled(false);
		
		Operations.add(operationsNewOrder);
		operationsNewOrder.addActionListener(new OperationsNewOrderActionListener());
		operationsNewOrder.setText("Íîâà ïîðú÷êà");

		Operations.addSeparator();
		
		Operations.add(operationsProductsManagement);
		operationsProductsManagement.addActionListener(new OperationsProductsManagementActionListener());
		operationsProductsManagement.setText("Óïðàâëåíèå íà ïðîäóêòè");
		
		Operations.add(operationsOrdersManagement);
		operationsOrdersManagement.addActionListener(new OperationsOrdersManagementActionListener());
		operationsOrdersManagement.setText("Óïðàâëåíèå íà ïîðú÷êè");
		
		mainWindowMenu.add(Help);
		Help.setText("Ïîìîù");
		
		Help.add(HelpAbout);
		HelpAbout.addActionListener(new HelpAboutActionListener());
		HelpAbout.setText("Îòíîñíî");
		
		getContentPane().add(mainWindowStatusPanel, BorderLayout.SOUTH);
		mainWindowStatusPanel.setLayout(new FormLayout(
			new ColumnSpec[] {
				ColumnSpec.decode("149dlu"),
				ColumnSpec.decode("72px"),
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC,
				FormFactory.DEFAULT_COLSPEC},
			new RowSpec[] {
				FormFactory.RELATED_GAP_ROWSPEC,
				RowSpec.decode("16px")}));
		mainWindowStatusPanel.setSize(666, 25);
		mainWindowStatusPanel.setBorder(new EtchedBorder(EtchedBorder.LOWERED));
		mainWindowStatusPanel.setMinimumSize(new Dimension(666, 20));
		
		mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë:");
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLabel, new CellConstraints("1, 1, 1, 2, fill, fill"));
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogin, new CellConstraints(2, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogin.addActionListener(new MainWindowStatusPanelLoggedUserLoginActionListener());
		mainWindowStatusPanelLoggedUserLogin.setText("Âõîä");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserSettings, new CellConstraints(4, 1, 1, 2, CellConstraints.CENTER, CellConstraints.DEFAULT));
		mainWindowStatusPanelLoggedUserSettings.addActionListener(new MainWindowStatusPanelLoggedUserSettingsActionListener());
		mainWindowStatusPanelLoggedUserSettings.setMargin(new Insets(2, 14, 2, 14));
		mainWindowStatusPanelLoggedUserSettings.setText("Íàñòðîéêè");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel, new CellConstraints(3, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelSeparatorLabel2, new CellConstraints(5, 1, 1, 2));
		mainWindowStatusPanelSeparatorLabel2.setText("   ");
		
		mainWindowStatusPanel.add(mainWindowStatusPanelLoggedUserLogout, new CellConstraints(6, 1, 1, 2));
		mainWindowStatusPanelLoggedUserLogout.addActionListener(new MainWindowStatusPanelLoggedUserLogoutActionListener());
		mainWindowStatusPanelLoggedUserLogout.setText("Èçõîä");
		mainWindowStatusPanelSetEnabled(false);
	}
	
	protected void mainWindowStatusPanelSetEnabled(boolean enable) {
		
		Component[] comps = mainWindowStatusPanel.getComponents();
		
		for (int i = 0; i < comps.length; i++) {
		
			comps[i].setEnabled(enable);	
		}
		
		mainWindowStatusPanel.setEnabled(enable);
	}
	
	private class ThisWindowListener extends WindowAdapter {
		public void windowClosing(WindowEvent e) {
			this_windowClosing(e);
		}
	}
	private class FileExitActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileExit_actionPerformed(e);
		}
	}
	private class FileConnectToDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileConnectToDb_actionPerformed(e);
		}
	}
	private class FileDisconnectFromDbActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			fileDisconnectFromDb_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLoginActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogin_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserSettingsActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserSettings_actionPerformed(e);
		}
	}
	private class MainWindowStatusPanelLoggedUserLogoutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			mainWindowStatusPanelLoggedUserLogout_actionPerformed(e);
		}
	}
	private class HelpAboutActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			helpAbout_actionPerformed(e);
		}
	}
	private class OperationsProductsManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsProductsManagement_actionPerformed(e);
		}
	}
	private class OperationsNewOrderActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsNewOrder_actionPerformed(e);
		}
	}
	private class OperationsOrdersManagementActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			operationsOrdersManagement_actionPerformed(e);
		}
	}

	protected void this_windowClosing(WindowEvent e) {
		
		//JOptionPane.showMessageDialog(null, "aa", "aa", JOptionPane.INFORMATION_MESSAGE);
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				databaseConnectWindow.dbPortal.finalize();
			}
		}
		this.dispose();
		//System.exit(0);
	}
	
	protected void fileExit_actionPerformed(ActionEvent e) {

		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void fileConnectToDb_actionPerformed(ActionEvent e) {
		
		databaseConnectWindow dcw = new databaseConnectWindow();
		dcw.setVisible(true);
		dcw.addWindowListener(databaseConnectWindowClosing);
	}
	private static WindowListener databaseConnectWindowClosing = new WindowAdapter() {
		
        public void windowClosing(WindowEvent e) {
            
        	e.getWindow().dispose(); 
        	
        	if (databaseConnectWindow.dbPortal != null) {
    			
    			if (databaseConnectWindow.dbPortal.isConnected()) {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(true);
    				mainWindowPointer.FileConnectToDb.setEnabled(false);
    				mainWindowPointer.FileDisconnectFromDb.setEnabled(true);
    			}
    			else {
    				
    				mainWindowPointer.mainWindowStatusPanelSetEnabled(false);
    			}
    		}            
        }
    };
    
    ////////////////////////////////////////////////////////////////////////
    
	protected void fileDisconnectFromDb_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			databaseConnectWindow.dbPortal.finalize();
			
			this.FileConnectToDb.setEnabled(true);
			this.FileDisconnectFromDb.setEnabled(false);			
			this.Operations.setEnabled(false);
			this.mainWindowStatusPanelSetEnabled(false);	
			this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			operatorUserLoginWindow.loggedUserId = -1;
		}
	}
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogin_actionPerformed(ActionEvent e) {
		
		operatorUserLoginWindow oul = new operatorUserLoginWindow();
		oul.setVisible(true);
		oul.addWindowListener(operatorUserLoginWindowClosing);
	}
	private static WindowListener operatorUserLoginWindowClosing = new WindowAdapter() {

		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.Operations.setEnabled(true);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserLoginWindow.loggedUserNames);
			}
			else {
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
		
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserSettings_actionPerformed(ActionEvent e) {
		
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		operatorUserSettingsWindow ousw = new operatorUserSettingsWindow();
		ousw.setVisible(true);
		ousw.addWindowListener(operatorUserSettingsWindowClosing);
	}
	
	private static WindowListener operatorUserSettingsWindowClosing = new WindowAdapter() {
		
		public void windowClosing(WindowEvent e) {
			if (operatorUserLoginWindow.loggedUserId != -1) {
				
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: " + operatorUserSettingsWindow.operatorFirstNameLastNameCombination);
			}
			else { //if operator was deleted
				
				mainWindowPointer.Operations.setEnabled(false);
				mainWindowPointer.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
			}
		}
	};
	
	////////////////////////////////////////////////////////////////////////
	
	protected void mainWindowStatusPanelLoggedUserLogout_actionPerformed(ActionEvent e) {
		
		this.Operations.setEnabled(false);
		this.mainWindowStatusPanelLoggedUserLabel.setText("Ïîòðåáèòåë: ");
		operatorUserLoginWindow.loggedUserId = -1;
	}
	
	protected void helpAbout_actionPerformed(ActionEvent e) {
		
		JOptionPane.showMessageDialog(this, "eShop ver.-1.00\n(C) 2013 Æåëÿí Ãóãëåâ & Ïëàìåí Ãåí÷åâ", "Îòíîñíî", JOptionPane.INFORMATION_MESSAGE);
	}
	
	protected void operationsProductsManagement_actionPerformed(ActionEvent e) {
		//TODO...		
	}
	protected void operationsNewOrder_actionPerformed(ActionEvent e) {
		//TODO...
	}
	protected void operationsOrdersManagement_actionPerformed(ActionEvent e) {
		//TODO...
	}
	
	
	
	
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JButton;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import java.sql.ResultSet;
import md5_calculator.Md5hashcalc;

public class operatorUserSettingsWindow extends JFrame {
	private static final long serialVersionUID = 3004L;

	private final JLabel usernameLabel = new JLabel();
	private final JLabel passwordLabel = new JLabel();
	private final JLabel passwordAgainLabel = new JLabel();
	private final JLabel nameLabel = new JLabel();
	private final JLabel lastNameLabel = new JLabel();
	private final JButton updateButton = new JButton();
	private final JButton deleteOperator = new JButton();
	private final JTextField firstNameTextField = new JTextField();
	private final JTextField lastNameTextField = new JTextField();
	private final JPasswordField passwordPasswordField = new JPasswordField();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();	
	
	private String currentOperatorPassword = "";
	public static String operatorFirstNameLastNameCombination = "";	
	
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserSettingsWindow frame = new operatorUserSettingsWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserSettingsWindow() {
		super();
		setBounds(100, 100, 314, 255);
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setResizable(false);
		setAlwaysOnTop(true);
		setTitle("Íàñòðîéêè íà ïîòðåáèòåë");
		setName("operatorUserSettings");
		
		getContentPane().add(usernameLabel);
		usernameLabel.setText("Ïîòðåáèòåë:");
		usernameLabel.setBounds(10, 0, 278, 16);
		
		getContentPane().add(passwordLabel);
		passwordLabel.setText("Ïàðîëà:");
		passwordLabel.setBounds(10, 76, 97, 16);
		
		getContentPane().add(passwordAgainLabel);
		passwordAgainLabel.setText("Ïàðîëà îòíîâî:");
		passwordAgainLabel.setBounds(10, 95, 97, 16);
		
		getContentPane().add(nameLabel);
		nameLabel.setText("Èìå:");
		nameLabel.setBounds(10, 32, 97, 16);
		
		getContentPane().add(lastNameLabel);
		lastNameLabel.setText("Ôàìèëèÿ:");
		lastNameLabel.setBounds(10, 54, 97, 16);
		
		getContentPane().add(updateButton);
		updateButton.addActionListener(new UpdateButtonActionListener());
		updateButton.setText("Îáíîâè");
		updateButton.setBounds(90, 130, 137, 26);
		
		getContentPane().add(firstNameTextField);
		firstNameTextField.setBounds(113, 30, 175, 20);
		
		getContentPane().add(lastNameTextField);
		lastNameTextField.setBounds(113, 52, 175, 20);
		
		getContentPane().add(passwordPasswordField);
		passwordPasswordField.setBounds(113, 74, 175, 20);
		
		getContentPane().add(passwordAgainPasswordField);
		passwordAgainPasswordField.setBounds(113, 97, 175, 20);
		
		getCurrentUserData();
		
		getContentPane().add(deleteOperator);
		deleteOperator.addActionListener(new DeleteOperatorActionListener());
		deleteOperator.setText("Èçòðèé îïåðàòîð");
		deleteOperator.setBounds(90, 189, 137, 26);
	}
	
	private void getCurrentUserData() {
		
		if (databaseConnectWindow.dbPortal == null) {
			return;
		}
		if (databaseConnectWindow.dbPortal.isConnected() == false) {
			return;
		}
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_username, operator_password, " + 
				"operator_first_name, operator_last_name FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId);
		
		if ((rs == null) || (databaseConnectWindow.dbPortal.getLastError() != null)) {
			return;
		}
		
		try {
			
			usernameLabel.setText("Ïîòðåáèòåë: " + rs.getString(1));
			currentOperatorPassword = rs.getString(2);
			firstNameTextField.setText(rs.getString(3));
			lastNameTextField.setText(rs.getString(4));
		}
		catch (Exception ex) {			
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
	}
	
	private class UpdateButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			updateButton_actionPerformed(e);
		}
	}
	private class DeleteOperatorActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			deleteOperator_actionPerformed(e);
		}
	}
	protected void updateButton_actionPerformed(ActionEvent e) {
		
		char[] pass = passwordPasswordField.getPassword();
		String password = "";
		
		for (int i = 0; i < pass.length; i++) {
			
			password += pass[i];
		}
		
		char[] pass2 = passwordAgainPasswordField.getPassword();
		String password2 = "";
		
		for (int j = 0; j < pass2.length; j++) {
			
			password2 += pass2[j];
		}
		
		if (password.compareTo(password2) != 0) {
			
			JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if (password.length() > 3) { //password update will be performed too
			
			try {
				
				password = Md5hashcalc.calculateMD5hash(password);
				currentOperatorPassword = password;
			}
			catch (Exception ex) {
				
				JOptionPane.showMessageDialog(this, "Äàííèòå ñ èçêëþ÷åíèå íà òåçè çà ïàðîëàòà ñàìî\nùå áúäàò îáíîâåíè ïîðàäè ïðîáëåìè ñ êðèïòèðàíåòî!", "Ïðîáëåì ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
			}			
		}
		else {
			if (password.length() > 0) {
				
				JOptionPane.showMessageDialog(this, "Ïàðîëàòà òðÿáâà äà å ïîíå 4 ñèìâîëà!", "Ãðåøêà ïðè ïðîìÿíà íà ïàðîëà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		
		if ((firstNameTextField.getText().length() <= 3) || (lastNameTextField.getText().length() <= 3)) {
			
			JOptionPane.showMessageDialog(this, "Ïðåêàëåíî êðàòêè èìå èëè ôàìèëèÿ!", "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		if (databaseConnectWindow.dbPortal.executeParameterizedNonQuery("UPDATE operators SET operator_password=? " +
				"operator_first_name=? operator_last_name=? WHERE operator_id=?", currentOperatorPassword, 
				firstNameTextField.getText(), lastNameTextField.getText(), new Integer(operatorUserLoginWindow.loggedUserId)) != 1) {
		
			JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè îáíîâÿâàíå íà äàííèòå!" + databaseConnectWindow.dbPortal.getLastError(), "Ãðåøêà ïðè îáíîâÿâàíåòî", JOptionPane.ERROR_MESSAGE);
			return;
		}
		
		operatorFirstNameLastNameCombination = firstNameTextField.getText() + " " + lastNameTextField.getText();
		operatorUserLoginWindow.loggedUserNames = operatorFirstNameLastNameCombination; //in case
		
		this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));		
	}
	
	protected void deleteOperator_actionPerformed(ActionEvent e) {
		
		//we can not delete not existing operator
		if (operatorUserLoginWindow.loggedUserId == -1) {
			return;
		}
		
		if (JOptionPane.showConfirmDialog(this, "Èçòðèâàíåòî íà îïåðàòîðà ùå ïðåìàõíå îò áàçàòà äàííè\n" + 
				"è âñè÷êè äåéíîñòè, êîèòî òîé å èçâúðøèë.\n\n\tÈçòðèâàíå?", "Ïîòâúðäåòå èçòðèâàíå íà îïåðàòîð", 
				JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
			
			if (databaseConnectWindow.dbPortal.executeNonQuery("DELETE FROM operators WHERE operator_id=" + operatorUserLoginWindow.loggedUserId) != 1) {

				JOptionPane.showMessageDialog(this, "Èçòðèâàíåòî å íåóñïåøíî!", "Íåóñïåøíî èçòðèâàíå íà îïåðàòîð", JOptionPane.ERROR_MESSAGE);
				return;
			}
			
			operatorUserLoginWindow.loggedUserId = -1;
			this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
		}
		
		return;
	}

}
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedNonQuery(String query, Object[] parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean - ok
		// String  - ok
		// char    - 
		// byte    -
		// short   -
		// int     -
		// long    -
		// double  -
		// float   -
		// Date    -
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i, parameters[i]);
				
				/*if (parameters[i] instanceof Boolean) {
					
					sqlStatement.setBoolean(i, ((Boolean)parameters[i]).booleanValue());
					continue;
				}
				if (parameters[i] instanceof String) {
					
					sqlStatement.setString(i, ((String)parameters[i].toString()));
					continue;
				}
				if (parameters[i] instanceof Character) {
					
					sqlStatement.set
				}*/
			}
			
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Executes parameterized query and returns ResultSet with data. For SELECT...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return ResultSet
	 */
	
	public ResultSet executeParameterizedQuery(String query, Object[] parameters) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.JButton;
import javax.swing.WindowConstants;
import javax.swing.border.TitledBorder;

import java.sql.ResultSet;

import database_management.MySQLdbManager;
import md5_calculator.Md5hashcalc;

public class operatorUserLoginWindow extends JFrame {

	private final JPanel groupLoginPanel = new JPanel();
	private final JPanel groupCreateNewUserPanel = new JPanel();
	private final JLabel loginUsernameLabel = new JLabel();
	private final JLabel loginPasswordLabel = new JLabel();
	private final JButton loginButton = new JButton();
	private final JTextField loginUsernameTextField = new JTextField();
	private final JPasswordField loginPasswordPasswordField = new JPasswordField();
	private final JLabel newUsernameLabel = new JLabel();
	private final JLabel newPasswordLabel = new JLabel();
	private final JLabel newUserFirstNameLabel = new JLabel();
	private final JLabel newUserLastNameLabel = new JLabel();
	private final JButton createNewOperatorButton = new JButton();
	private final JTextField newUsernameTextField = new JTextField();
	private final JTextField newFirstNameTextField = new JTextField();
	private final JPasswordField newPasswordPasswordField = new JPasswordField();
	private final JTextField newLastNameTextField = new JTextField();
	
	public static int loggedUserId = -1;
	public static String loggedUserNames = "";
	
	private final JLabel newPasswordAgainLabel = new JLabel();
	private final JPasswordField newPasswordPasswordAgainField = new JPasswordField();
	/**
	 * Launch the application
	 * @param args
	 */
	public static void main(String args[]) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					operatorUserLoginWindow frame = new operatorUserLoginWindow();
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**
	 * Create the frame
	 */
	public operatorUserLoginWindow() {
		super();
		setBounds(100, 100, 518, 242);
		setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
		try {
			jbInit();
		} catch (Throwable e) {
			e.printStackTrace();
		}
		//
	}
	private void jbInit() throws Exception {
		getContentPane().setLayout(null);
		setTitle("Âõîä íà îïåðàòîð");
		setName("operatorLoginWindow");
		setResizable(false);
		setAlwaysOnTop(true);
		
		getContentPane().add(groupLoginPanel);
		groupLoginPanel.setLayout(null);
		groupLoginPanel.setBorder(new TitledBorder(null, "Âõîä:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupLoginPanel.setBounds(10, 10, 243, 133);
		
		groupLoginPanel.add(loginUsernameLabel);
		loginUsernameLabel.setText("Ïîòðåáèòåë:");
		loginUsernameLabel.setBounds(10, 31, 80, 16);
		
		groupLoginPanel.add(loginPasswordLabel);
		loginPasswordLabel.setText("Ïàðîëà:");
		loginPasswordLabel.setBounds(10, 53, 80, 16);
		
		groupLoginPanel.add(loginButton);
		loginButton.addActionListener(new LoginButtonActionListener());
		loginButton.setText("Âõîä");
		loginButton.setBounds(127, 93, 106, 26);
		
		groupLoginPanel.add(loginUsernameTextField);
		loginUsernameTextField.setBounds(96, 29, 137, 20);
		
		groupLoginPanel.add(loginPasswordPasswordField);
		loginPasswordPasswordField.setBounds(96, 51, 137, 20);
		
		getContentPane().add(groupCreateNewUserPanel);
		groupCreateNewUserPanel.setLayout(null);
		groupCreateNewUserPanel.setBorder(new TitledBorder(null, "Íîâ îïåðàòîð:", TitledBorder.DEFAULT_JUSTIFICATION, TitledBorder.DEFAULT_POSITION, null, null));
		groupCreateNewUserPanel.setBounds(259, 10, 243, 194);
		
		groupCreateNewUserPanel.add(newUsernameLabel);
		newUsernameLabel.setText("Íîâ ïîòðåáèòåë:");
		newUsernameLabel.setBounds(10, 32, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordLabel);
		newPasswordLabel.setText("Ïàðîëà:");
		newPasswordLabel.setBounds(10, 54, 95, 16);
		
		groupCreateNewUserPanel.add(newUserFirstNameLabel);
		newUserFirstNameLabel.setText("Èìå:");
		newUserFirstNameLabel.setBounds(10, 98, 95, 16);
		
		groupCreateNewUserPanel.add(newUserLastNameLabel);
		newUserLastNameLabel.setText("Ôàìèëèÿ:");
		newUserLastNameLabel.setBounds(10, 120, 95, 16);
		
		groupCreateNewUserPanel.add(createNewOperatorButton);
		createNewOperatorButton.addActionListener(new CreateNewOperatorButtonActionListener());
		createNewOperatorButton.setText("Ñúçäàé");
		createNewOperatorButton.setBounds(127, 158, 106, 26);
		
		groupCreateNewUserPanel.add(newUsernameTextField);
		newUsernameTextField.setBounds(111, 30, 122, 20);
		
		groupCreateNewUserPanel.add(newFirstNameTextField);
		newFirstNameTextField.setBounds(111, 96, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordPasswordField);
		newPasswordPasswordField.setBounds(111, 52, 122, 20);
		
		groupCreateNewUserPanel.add(newLastNameTextField);
		newLastNameTextField.setBounds(111, 118, 122, 20);
		
		groupCreateNewUserPanel.add(newPasswordAgainLabel);
		newPasswordAgainLabel.setText("Ïàðîëà îòíîâî:");
		newPasswordAgainLabel.setBounds(10, 76, 95, 16);
		
		groupCreateNewUserPanel.add(newPasswordPasswordAgainField);
		newPasswordPasswordAgainField.setBounds(111, 75, 122, 20);
	}
	private class LoginButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			loginButton_actionPerformed(e);
		}
	}
	private class CreateNewOperatorButtonActionListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			createNewOperatorButton_actionPerformed(e);
		}
	}
	
	protected void loginButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				String password = "";
				
				char[] pass = loginPasswordPasswordField.getPassword();
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				//FIXME prone to sql injection
				
				ResultSet rs = null;
				
				try {				
					
					rs = databaseConnectWindow.dbPortal.executeQuery("SELECT operator_id, operator_first_name, operator_last_name FROM operators WHERE" + 
						" operator_username='" + loginUsernameTextField.getText() + "' AND operator_password='" +
						Md5hashcalc.calculateMD5hash(password) + "'");
				}
				catch (Exception ex) {
					System.exit(-1);
				}
				
				if (rs != null) {
					
					try {
						
						loggedUserId = rs.getInt(1);
						loggedUserNames = rs.getString(2) + " " + rs.getString(3);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
								JOptionPane.ERROR_MESSAGE);
						return;
					}
					
					this.getToolkit().getSystemEventQueue().postEvent(new WindowEvent(this, WindowEvent.WINDOW_CLOSING));
				}
				else {
					JOptionPane.showMessageDialog(this, "Ãðåøåí ïîòðåáèòåë èëè ïàðîëà!", "Ïðîâàë ïðè âõîä", 
							JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
				return;
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			return;
		}		
	}
	
	protected void createNewOperatorButton_actionPerformed(ActionEvent e) {
		
		if (databaseConnectWindow.dbPortal != null) {
			
			if (databaseConnectWindow.dbPortal.isConnected()) {
				
				char[] pass = newPasswordPasswordField.getPassword();
				String password = "";
				String encryptedPassword = "";
				for (int i = 0; i < pass.length; i++) {
					
					password += pass[i];
				}
				
				char[] pass2 = newPasswordPasswordAgainField.getPassword();
				
				if (pass.length == pass2.length) {
				
						for (int i = 0; i < pass.length; i++) {
							
							if (pass[i] != pass2[i]) {
								
								JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
								return;
							}
						}
				}
				else {
				
					JOptionPane.showMessageDialog(this, "Ïàðîëèòå íå ñúâïàäàò!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
					return;
				}
								
				if ((newUsernameTextField.getText().length() > 3) && (password.length() > 3) && 
						(newFirstNameTextField.getText().length() > 3) && (newLastNameTextField.getText().length() > 3)) {
					
					try {
						
						encryptedPassword = Md5hashcalc.calculateMD5hash(password);
					}
					catch (Exception ex) {
						
						JOptionPane.showMessageDialog(this, "Ôàòàëíà ãðåøêà ïðè êðèïòèðàíåòî!", "Ôàòàëíà ãðåøêà", JOptionPane.ERROR_MESSAGE);
						System.exit(-1);
					}
					
					//FIXME prone to sql injection
					ResultSet rs = databaseConnectWindow.dbPortal.executeQuery("SELECT COUNT(*) FROM operators WHERE operator_username='" +
							newUsernameTextField.getText() + "'");
					
					int usersCount = 0;
					try {
						
						usersCount = rs.getInt(1);
					}
					catch (Exception ex) {						
					}					
					
					if ((databaseConnectWindow.dbPortal.getLastError() == null) && (usersCount == 0)) {						
						
						//no such existing username so now we create it
						//FIXME prone to sql injection
						if (databaseConnectWindow.dbPortal.executeNonQuery("INSERT INTO operators(operator_username, operator_password, " +
								"operator_first_name, operator_last_name) VALUES('" + newUsernameTextField.getText() + "', '" +
								encryptedPassword + "', '" + newFirstNameTextField.getText() + "', '" + newLastNameTextField.getText() + "')") != 1) {
							
							JOptionPane.showMessageDialog(this, "Ãðåøêà ïðè ñúçäàâàíå íà íîâ ïîòðåáèòåë!", "Ãðåøêà", JOptionPane.ERROR_MESSAGE);
						}
						else { //everything ok so login now
							
							loginUsernameTextField.setText(newUsernameTextField.getText());
							loginPasswordPasswordField.setText(password);
							loginButton_actionPerformed(null);
						}						
					}
					else {
						
						if (databaseConnectWindow.dbPortal.getLastError() != null) {
							
							JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);							
						}
						else {
							
							JOptionPane.showMessageDialog(this, "Èçáðàíîòî îò Âàñ ïîòðåáèòåëñêî èìå âå÷å ñúùåñòâóâà.", "Äóáëèðàùî ñå ïîòðåáèòåëñêî èìå", JOptionPane.ERROR_MESSAGE);							
						}
					}					
				}
				else {
					
					JOptionPane.showMessageDialog(this, "Íåîáõîäèìî å äà âúâåäåòå ïî-ïîäðîáíè äàííè!", "Íåïîäðîáíè äàííè", JOptionPane.ERROR_MESSAGE);
				}
			}
			else {
				
				JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
			}
		}
		else {
			
			JOptionPane.showMessageDialog(this, "Íÿìà âðúçêà ñ MySQL ñúðâúðà!", "Ïðîáëåì ñ âðúçêàòà", JOptionPane.ERROR_MESSAGE);
		}		
	}

}
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;
import java.lang.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedQuery(String query, Object[] parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean - ok
		// String  - ok
		// char    - 
		// byte    -
		// short   -
		// int     -
		// long    -
		// double  -
		// float   -
		// Date    -
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i, parameters[i]);
				
				/*if (parameters[i] instanceof Boolean) {
					
					sqlStatement.setBoolean(i, ((Boolean)parameters[i]).booleanValue());
					continue;
				}
				if (parameters[i] instanceof String) {
					
					sqlStatement.setString(i, ((String)parameters[i].toString()));
					continue;
				}
				if (parameters[i] instanceof Character) {
					
					sqlStatement.set
				}*/
			}
			
			sqlStatement.
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
/**
 * <p> Title: MySQLdbManager </p>
 * <p> Description: MySQL java database manager wrapper </p>
 * @version 1.00
 * @author (C) 09.01.2013 - 13.01.2013 zhgzhg
 */

package database_management;

import java.sql.*;
import java.lang.*;

public class MySQLdbManager {
	
	private final String JDBCDRIVER = "com.mysql.jdbc.Driver";
	private int mySqlServerPort = 3306;
	private String mySqlServerAddress = null;	
	private String mySqlDatabaseName = null;
	private String mySqlUsername = null;
	private String mySqlPassword = null;
	private boolean useUTF8Encoding = true;
	private Connection dbConnection = null;
		
	private String lastError = null;
	
	/**
	 * Empty Constructor 
	 */
	
	public MySQLdbManager() {
		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server ip address or hostname
	 */
	
	public MySQLdbManager(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlServerPort int MySQL server running port between 1 and 65535. The default one is 3306.
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName, int mySqlServerPort, String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.setMySqlServerPort(mySqlServerPort);
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;		
	}
	
	/**
	 * Constructor
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 * @param mySqlDatabaseName String MySQL database name (leave empty "" if you want to assign with no one)
	 * @param mySqlUsername String MySQL database username
	 * @param mySqlPassword String MySQL database username password. The default one is empty string.
	 */
	
	public MySQLdbManager(String mySqlServerAddress, String mySqlDatabaseName,  String mySqlUsername, String mySqlPassword) {
		this.mySqlServerAddress = mySqlServerAddress;
		this.mySqlDatabaseName = mySqlDatabaseName;
		this.mySqlUsername = mySqlUsername;
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Sets MySQL server address. After done you need to call disconnect() and connect() again.
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	 */
	
	public void setMySqlServerAddress(String mySqlServerAddress) {
		this.mySqlServerAddress = mySqlServerAddress;
	}
	
	/**
	 * Returns MySQL server address.
	 * @return String
	 */
	
	public String getMySqlServerAddress() {
		return mySqlServerAddress;
	}
	
	/**
	 * Sets MySQL database [name] to use. Leave empty "" if you want to assign with no one.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlDatabaseName String
	 */
	
	public void setMySqlActiveDatabase(String mySqlDatabaseName) {
		this.mySqlDatabaseName = mySqlDatabaseName;
	}
	
	/**
	 * Returns current active MySQL database name.
	 * @return String
	 */
	
	public String getMySqlActiveDatabase() {
		return mySqlDatabaseName;
	}
	
	/**
	 * Sets MySQL server port. Must be between [1 and 65535].
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlServerPort int
	 */
	
	public void setMySqlServerPort(int mySqlServerPort) {
		
		if (mySqlServerPort <= 0 || mySqlServerPort > 65535)
		{ lastError = "Invalid mysql server port range! Must be between [1 and 65535]."; return; }
		
		this.mySqlServerPort = mySqlServerPort;
	}
	
	/**
	 * Returns MySQL server port.
	 * @return int ([between 1 and 65535])
	 */
	
	public int getMySqlServerPort() {
		
		return this.mySqlServerPort;
	}
	
	/**
	 * Sets MySQL database username.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlUsername String
	 */
	
	public void setMySqlUsername(String mySqlUsername) {
		
		this.mySqlUsername = mySqlUsername;
	}
	
	/**
	 * Returns MySQL database username.
	 * @return String
	 */
	
	public String getMySqlUsername() {
		
		return mySqlUsername;
	}
	
	/**
	 * Sets MySQL database username password.
	 * You need to call disconnect() and connect() after that.
	 * @param mySqlPassword String
	 */
	
	public void setMySqlPassword(String mySqlPassword) {
		
		this.mySqlPassword = mySqlPassword;
	}
	
	/**
	 * Returns current MySQL database username password.
	 * @return String
	 */
	
	public String getMySqlPassword() {
		
		return this.mySqlPassword;
	}
	
	/**
	 * Sets database input/output UTF8 data encoding on or off.
	 * You need to call disconnect() and connect() after that.
	 * @param on boolean
	 */
	
	public void setUtf8EncodingOn(boolean on) {
		
		this.useUTF8Encoding = on;
	}
	
	/**
	 * Returns database input/output UTF8 is on or off.
	 * @return boolean
	 */
	
	public boolean isUtf8EncodingUsed() {
		
		return this.useUTF8Encoding;
	}
	
	/**
	 * Checks for active database connection and returns true if it is presented.
	 * @return boolean
	 */
	
	public boolean isConnected() {
		
		boolean result = true;
		
		lastError = null;
		
		if (dbConnection != null) {
			
			try {
				
				result = (!dbConnection.isClosed());
			}			
			catch (SQLException ex) {
				
				lastError = ex.getMessage(); 
				result = false;
			}
		}
		else {			
			lastError = "Uninitialized database connection!";
			result = false;
		}
		
		return result;
	}
	
	/**
	 * Tries to connect to MySQL database and returns true in case of success.
	 * @return boolean
	 */
	
	public boolean connect() {
		
		boolean result = true;
		
		if (mySqlServerAddress == null || mySqlDatabaseName == null || mySqlUsername == null) { 
			lastError = "Uninitialized server address, database name or database username!"; return false; }
		else {
			lastError = null; //new connect always clears the last error
		}			
		
		if (dbConnection != null) {
			
			try {
				
				if (!dbConnection.isClosed()) {
					dbConnection.close();
				}
			}
			catch (SQLException ex) {
				lastError = ex.getMessage();
			}
		}	
		
		try {
			
			Class.forName(JDBCDRIVER).newInstance();
			dbConnection = DriverManager.getConnection("jdbc:mysql://" + mySqlServerAddress + ":" + mySqlServerPort + "/" + mySqlDatabaseName + 
					"?user=" + mySqlUsername + (mySqlPassword != null ? "&password=" + mySqlPassword : "") + 
					(useUTF8Encoding == true ? "&useUnicode=TRUE&characterEncoding=UTF-8" : ""));
		}
		catch (Exception ex) {
			
			if (lastError == null) { 
				lastError = ex.getMessage(); 
			}
			else { 
				lastError += ex.getMessage(); 
			}
			
		    result = false;
		}
		
		return result;
	}
	
	/**
	 * Close the active database connection if presented.
	 */
	
	public void disconnect() {
		
			if (dbConnection != null) {
			
				try {
					
					if (!dbConnection.isClosed()) {
						
						dbConnection.close();
					}
				}
				catch (SQLException ex) {
					
					lastError = ex.getMessage();
				}
				
				dbConnection = null;
		}		
	}
	
	/**
	 * Executes query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return int the number of affected things
	 */
	
	public int executeNonQuery(String query) {
		
		Statement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer !!!! ...)
	 * @return int the number of affected things
	 */
	
	Integer a
	
	public int executeParameterizedQuery(String query, Object[] parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		//TODO...
		// boolean
		// String
		// char[]
		// byte
		// short
		// int
		// long
		// double
		// float
		// Date
		// null ???
		
		try {
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				if (parameters[i] instanceof boolean) {
					sqlStatement.set
				}
			}
			
			sqlStatement.
			sqlStatement.execute(query);
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes query and returns ResultSet with data. For SELECT...
	 * Warning! Prone to SQL injection!!!
	 * @param query String
	 * @return ResultSet
	 */
	
	public ResultSet executeQuery(String query) { //executes query and returns ResultSet 
		
		Statement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.createStatement();
			result = sqlStatement.executeQuery(query);
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	/**
	 * Returns the text message exception error of the last called method. Returns null if no error.
	 * @return String
	 */
	
	public String getLastError() {
		
		return lastError;
	}
	
	/**
	 * Finalization method if you don't want to use specific MySQLdbManager instance object anymore.
	 */
	
	public void finalize() {
		
		disconnect();
		mySqlServerAddress = null;	
		mySqlDatabaseName = null;
		mySqlUsername = null;
		mySqlPassword = null;
		lastError = null;
	}
}
#safe table
#Sun Jan 13 21:27:29 EET 2013
statecache=statecache16
#Sun Jan 13 21:27:31 EET 2013
org.eclipse.mylyn.monitor.ui.events.observed=6747
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;operatorUserSettingsWindow.launch&quot;/&gt;&#13;&#10;"/>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;operatorUserSettingsWindow.launch&quot;/&gt;&#13;&#10;"/>
<launch memento="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#13;&#10;&lt;launchConfiguration local=&quot;true&quot; path=&quot;operatorUserSettingsWindow.launch&quot;/&gt;&#13;&#10;"/>
2022660347.index
1164253737.index
492272455.index
<fullyQualifiedTypeName name="java.lang.Boolean"/>
<workbench progressCount="22" version="2.0">
<coolItem id="org.eclipse.ui.edit.text.actionSet.presentation" itemType="typeToolBarContribution" x="107" y="22"/>
<coolItem id="org.eclipse.jdt.ui.CompilationUnitEditor" itemType="typePlaceholder" x="-1" y="-1"/>
<coolItem id="com.swtdesigner.editors.MultiPageEditor" itemType="typeToolBarContribution" x="61" y="22"/>
<editor activePart="true" focus="true" id="com.swtdesigner.editors.MultiPageEditor" name="mainWindow.java" partName="mainWindow.java" path="D:/Drugi/Docs/PU/3 kurs/2 trimestur/Kursov Proekt 2/eShop/eShop/src/mainWindow.java" title="mainWindow.java" tooltip="eShop/src/mainWindow.java" workbook="DefaultEditorWorkbook">
<input factoryID="org.eclipse.ui.part.FileEditorInputFactory" path="/eShop/src/mainWindow.java"/>
<editorState selectionLength="0" selectionOffset="13570"/>
<view id="org.eclipse.jdt.ui.JavadocView" partName="Javadoc"/>
<view id="org.eclipse.ui.views.TaskList" partName="Tasks"/>
<view id="org.eclipse.jdt.ui.SourceView" partName="Declaration"/>
<columnWidths org.eclipse.ui.ide.locationField="64" org.eclipse.ui.ide.markerType="94" org.eclipse.ui.ide.pathField="124" org.eclipse.ui.ide.resourceField="94" org.eclipse.ui.ide.severityAndDescriptionField="644"/>
<perspectives activePart="com.swtdesigner.editors.MultiPageEditor" activePerspective="org.eclipse.jdt.ui.JavaPerspective">
<view id="org.eclipse.ui.views.ProblemView"/>
<view id="org.eclipse.jdt.ui.JavadocView"/>
<view id="org.eclipse.jdt.ui.SourceView"/>
<view id="org.eclipse.ui.console.ConsoleView"/>
<info part="org.eclipse.ui.editorss" ratio="0.21521907" ratioLeft="280" ratioRight="1021" relationship="2" relative="left"/>
<folder activePageID="org.eclipse.ui.views.ProblemView" appearance="2" expanded="2">
<page content="org.eclipse.ui.views.ProblemView" label="Problems"/>
<page content="org.eclipse.jdt.ui.JavadocView" label="Javadoc"/>
<page content="org.eclipse.jdt.ui.SourceView" label="Declaration"/>
<page content="org.eclipse.ui.console.ConsoleView" label="Console"/>
<presentation id="org.eclipse.ui.presentations.WorkbenchPresentationFactory">
<part id="0"/>
<part id="1"/>
<part id="2"/>
<part id="3"/>
</presentation>
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.swtdesigner.editors.MultiPageEditor" path="/eShop/src/mainWindow.java"/>
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.swtdesigner.editors.MultiPageEditor" path="/eShop/src/operatorUserLoginWindow.java"/>
<editor factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.swtdesigner.editors.MultiPageEditor" path="/eShop/src/operatorUserSettingsWindow.java"/>
<item historyLabel="MySQLdbManager.java" index="0">
<position info="not_deleted" x="12869" y="0"/>
<item historyLabel="mainWindow.java" index="1">
<position/>
<item historyLabel="databaseConnectWindow.java" index="2">
<position/>
<item historyLabel="mainWindow.java" index="1">
<position/>
<item historyLabel="databaseConnectWindow.java" index="2">
<position/>
<item historyLabel="MySQLdbManager.java" index="0">
<position info="not_deleted" x="12869" y="0"/>
<item historyLabel="databaseConnectWindow.java" index="2">
<item historyLabel="mainWindow.java" index="1">
<item historyLabel="operatorUserLoginWindow.java" index="3">
<item historyLabel="operatorUserLoginWindow.java" index="3">
<item historyLabel="mainWindow.java" index="1">
<position/>
<item historyLabel="operatorUserLoginWindow.java" index="3">
<position/>
<item historyLabel="mainWindow.java" index="1">
<position/>
<item historyLabel="operatorUserSettingsWindow.java" index="4">
<position/>
<item historyLabel="operatorUserLoginWindow.java" index="3">
<item historyLabel="operatorUserSettingsWindow.java" index="4">
<position/>
<item historyLabel="mainWindow.java" index="1">
<position/>
<item historyLabel="databaseConnectWindow.java" index="2">
<position/>
<item historyLabel="mainWindow.java" index="1">
<position info="not_deleted" x="13540" y="0"/>
<item historyLabel="operatorUserSettingsWindow.java" index="4">
<position/>
<item historyLabel="mainWindow.java" index="1">
<position info="not_deleted" x="13540" y="0"/>
<item historyLabel="operatorUserSettingsWindow.java" index="4">
<position info="not_deleted" x="6750" y="0"/>
<item historyLabel="mainWindow.java" index="1">
<position info="not_deleted" x="13797" y="0"/>
<item historyLabel="operatorUserSettingsWindow.java" index="4">
<position info="not_deleted" x="6633" y="0"/>
<item historyLabel="mainWindow.java" index="1">
<position info="not_deleted" x="13797" y="0"/>
<item historyLabel="operatorUserSettingsWindow.java" index="4">
<position info="not_deleted" x="6633" y="0"/>
<item historyLabel="mainWindow.java" index="1">
<position info="not_deleted" x="13797" y="0"/>
<item historyLabel="databaseConnectWindow.java" index="2">
<position info="not_deleted" x="5983" y="0"/>
<item historyLabel="mainWindow.java" index="1">
<position info="not_deleted" x="13797" y="0"/>
<item historyLabel="databaseConnectWindow.java" index="2">
<position info="not_deleted" x="5983" y="0"/>
<item active="true" historyLabel="mainWindow.java" index="1">
<position info="not_deleted" x="13797" y="0"/>
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.swtdesigner.editors.MultiPageEditor" name="operatorUserSettingsWindow.java" tooltip="eShop/src/operatorUserSettingsWindow.java">
<persistable path="/eShop/src/operatorUserSettingsWindow.java"/>
</file>
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="org.eclipse.jdt.ui.CompilationUnitEditor" name="MySQLdbManager.java" tooltip="eShop/src/database_management/MySQLdbManager.java">
<persistable path="/eShop/src/database_management/MySQLdbManager.java"/>
<file factoryID="org.eclipse.jdt.ui.ClassFileEditorInputFactory" id="org.eclipse.jdt.ui.ClassFileEditor" name="StringBuilder.class" tooltip="java.lang.StringBuilder">
<persistable org.eclipse.jdt.ui.ClassFileIdentifier="=eShop/C:\/JBuilder2008R2\/jre\/jre\/lib\/rt.jar&lt;java.lang(StringBuilder.class"/>
</file>
<file factoryID="org.eclipse.ui.part.FileEditorInputFactory" id="com.swtdesigner.editors.MultiPageEditor" name="operatorUserLogin.java" tooltip="eShop/src/operatorUserLogin.java">
<persistable path="/eShop/src/operatorUserLogin.java"/>
</file>
	private static final long serialVersionUID = 3002L;
		//FIXME prone??? to sql injection maybe??
		
	 * @param mySqlServerAddress String MySQL server IP address or HOSTNAME
	/**
	 * Executes parameterized query and returns the number of affected things. For INSERT, UPDATE, DELETE ...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return int the number of affected things
	 */
	
	public int executeParameterizedNonQuery(String query, Object... parameters) {
		
		PreparedStatement sqlStatement;
		int affectedCount = 0;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return affectedCount;			
		}
		else {			
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i + 1, parameters[i]);
			}
			
			sqlStatement.execute();
			affectedCount = sqlStatement.getUpdateCount();
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();			
		}
		
		return affectedCount;
	}
	
	/**
	 * Executes parameterized query and returns ResultSet with data. For SELECT...
	 * @param query String
	 * @param parameters Object (for class variable wrappers like String, Integer, etc. only from java.lang !!!!)
	 * @return ResultSet
	 */
	
	public ResultSet executeParameterizedQuery(String query, Object... parameters) { //executes query and returns ResultSet 
		
		PreparedStatement sqlStatement;
		ResultSet result;
		
		if (!isConnected()) {
			
			lastError = "No connection!";
			return null;
		}
		else {
			lastError = null;
		}
		
		try {
			
			sqlStatement = dbConnection.prepareStatement(query);
			
			for (int i = 0; i < parameters.length; i++) {
				
				sqlStatement.setObject(i + 1, parameters[i]);
			}
			
			result = sqlStatement.executeQuery();
			
			try {
				
				result.first();
			}
			catch (Exception ex) {
				
			}
		}
		catch (SQLException ex) {
			
			lastError = ex.getMessage();
			return null;
		}
		
		return result;		
	}
	
	private static final long serialVersionUID = 3001L;
	
	private static final long serialVersionUID = 3003L;
	private final JLabel newPasswordAgainLabel = new JLabel();
	private final JPasswordField newPasswordPasswordAgainField = new JPasswordField();
	public static String loggedUserNames = "";	
					rs = databaseConnectWindow.dbPortal.executeParameterizedQuery("SELECT operator_id, operator_first_name, " + "" +
							"operator_last_name FROM operators WHERE operator_username = ? AND operator_password = ?", 
							loginUsernameTextField.getText(), Md5hashcalc.calculateMD5hash(password));							
					ResultSet rs = databaseConnectWindow.dbPortal.executeParameterizedQuery(
							"SELECT COUNT(*) FROM operators WHERE operator_username=?",	newUsernameTextField.getText());
						if (databaseConnectWindow.dbPortal.executeParameterizedNonQuery(
								"INSERT INTO operators(operator_username, operator_password, operator_first_name, " + 
								"operator_last_name) VALUES(?, ?, ?, ?)", newUsernameTextField.getText(), encryptedPassword,
								newFirstNameTextField.getText(), newLastNameTextField.getText()) != 1) {
	private static final long serialVersionUID = 3004L;
	private final JButton deleteOperator = new JButton();
	private final JPasswordField passwordAgainPasswordField = new JPasswordField();	
	public static String operatorFirstNameLastNameCombination = "";	
		if (databaseConnectWindow.dbPortal.executeParameterizedNonQuery("UPDATE operators SET operator_password=?, " +
				"operator_first_name=?, operator_last_name=? WHERE operator_id=?", currentOperatorPassword, 
				firstNameTextField.getText(), lastNameTextField.getText(), new Integer(operatorUserLoginWindow.loggedUserId)) != 1) {