summaryrefslogblamecommitdiffstats
path: root/dozentenmodul/src/main/java/gui/lecture/PermissionCreateLecture_GUI.java
blob: 761dd406f0e5e20e6d9d77abbc31e9249e46f294 (plain) (tree)
1
2
3
4
5
                    
 


                               













                                     

                                   
                                


                           



                                        







                             
                               
                          

                                
                              

                              
                             
                                       



                                                   

                                               

                                           


                                           




                                        
 
                               
                                    
 


                                      
                      

                           
                                                         
 
                                

                                                                      
 
                                                         
                                                            
                        
                                


                                                                  

                                                                                    
                           





                                                                                                                                          
















                                                                                            

















                                                                            

          

                                             
 
                                                                 






                                                                     
 






                                                                                               
                                                              

                                          
                                                 








                                                              
                                                                
                                                                                  



                                                                                       
 


                                                                           

                                                                                                                                      







                                                                      
 









                                                                         



                                                                

                   

                                                                        

                                                                           


                                                                                 








                                                                                                               

                          





























                                                                                                          
                          


















                                                                                                                     



                                                                                  


                                                                                         


                                                                                                               





                                                                        
                                                                              

                                                
                                                        


                                                                                           


                                                                               


                                                                                           


                                                                               


                                                                                           









                                                                               
                                                              


                                                                   
 
                                                                                   
                                                                          





                                                      
 


                                                  
 
                                                                
                                                     
                                                     
                                             
 
                                                 
                                                   
                                          
 

                                                                    
                                                
 
                                            
                                                  

                                        

                                                                                     
                                                      
 


                                                  
 


                                                     
 


                                                     


                                                                                                            

                                                    


                                                                                                                                                                                  

                                                                  


                                                                                                                                               

                                                               
 


                                                       
 


                                                                  
 

                                              

                                                                                     


                                                        
 

                                                                  
                                                                                                              









                                                                       
 
                                                            

                                                  
 



                                                           
 
                                              
                                        

                                                                                     
                                                        

                                                      
 
                                                             

                                                                                                              

                                                         
                                          
 




                                                                                  
 



                                                                             
 



                                                              
 



                                                           






                                                                               
                                                                              

                                                                                     


                                                                                                               





                                                                    
                                                                                




                                                                                       

                                                                                                        

                                                                    
 






                                                                               
 


                                                        
 


                                                          
 

                                                  
 

                                                       
 



                                                                   
 
                                                                 
 


                                                                          
 
                                                                  
 






                                                                          






                                                                   
 


                                                                           
 
                                                                  
 



                                                                          
 


                                          
 







                                                                    
 



                                                                    


                                                                                 


                                            
 
                         







                                              
                                                                           






                                                         



                                                                                   



                                                                                 



                                                                               










                                                                                   

                                                                                            










                                                                                   

                                                                                            










                                                                                   

                                                                                            










                                                                                   

                                                                                            

















                                                                                   
                                                                             




                                                                                       
                                                                                                          
                                                                                                                                                                 
                                                                                              
                                                                                    
                                                                                                    
                                                                                  
                                                                                              
                                                                                   
                                                                                                              
                                                                 
                                                                                                   
                                                      
                                                                                               
                                                                       
                                                                                                  



                                                                                       

                                                                                                   







                                                                            
                                                                                                          
















































































                                                                                        
         
 
package gui.lecture;

import gui.intro.About_GUI;
import gui.intro.MainMenue_GUI;

import java.awt.Color;
import java.awt.Component;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.URI;
import java.net.URISyntaxException;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.swing.AbstractButton;
import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
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.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.JTextPane;
import javax.swing.ScrollPaneConstants;
import javax.swing.UIManager;
import javax.swing.UnsupportedLookAndFeelException;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import javax.swing.table.TableModel;
import javax.swing.table.TableRowSorter;
import models.Links;
import models.RightsManagement;
import models.person;

import org.apache.log4j.Logger;
import org.apache.thrift.TException;

import server.generated.Person;
import server.generated.Server.Client;
import util.CheckIntegrity;
import util.OpenLinks;

@SuppressWarnings("serial")
public class PermissionCreateLecture_GUI extends JFrame {

	// Logger for this class
	private final static Logger LOGGER = Logger
			.getLogger(PermissionCreateLecture_GUI.class);

	private final JPanel contentPanel = new JPanel();
	Client client = models.Client.clientcon.getClient();
	String[] result;
	private Class[] classes;
	//private JTable table = null;
	private JTable tablePermittedUsers = null;
	private final ButtonGroup buttonGroup = new ButtonGroup();
	Object[] titles = { "Name", "Read", "Write", "Admin", "userID" };
	// Object[] titles = { "Name", "Read", "Write", "Link", "Admin", "userID" };
	Component c = null;
	private static final String HELP_MESSAGE = "<html><div align=\"center\">"
			+ "Hier können Sie die Berechtigungen für Ihre Veranstaltung ändern.<br />"
			+ "Es wird unterschieden, ob innerhalb der Suite (dieses Programm) Änderungen vorgenommen werden dürfen, <br />"
			+ "und/oder ob die Veranstaltung auch im VMChooser angezeigt wird."
			+ "</div></html>";
	private List<Person> map = null; // List of people who have rights
	
	final DefaultTableModel modelMyImages = new DefaultTableModel(titles, 0) {
		public boolean isCellEditable(int rowIndex, int mColIndex) {
			return false;
		}
	};
	
	final TableRowSorter<TableModel> rowSorterMyImages = new TableRowSorter<TableModel>(
			modelMyImages);
	
	
	
	
	
	
	
	

	final DefaultTableModel model = new DefaultTableModel(titles, 0) {

		public boolean isCellEditable(int rowIndex, int mColIndex) {
			if (mColIndex >= 1) {
				return true;
			}
			return false;
		}

		public Class getColumnClass(int c) {
			switch (c) {
			case 0:
				return String.class;
			default:
				return Boolean.class;
			}
		}

	};

	//private JTable tablePermittedUsers;

	public PermissionCreateLecture_GUI(Component formerGUI) {
		addWindowListener(new WindowAdapter() {
			@Override
			public void windowClosing(WindowEvent arg0) {
				System.exit(0);
			}
		});
		setResizable(false);

		try {
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		} catch (ClassNotFoundException | InstantiationException
				| IllegalAccessException | UnsupportedLookAndFeelException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		setTitle("bwLehrpool Suite - Berechtigungen");

		setBounds(0, 0, 603, 722);
		setLocationRelativeTo(formerGUI);

		getContentPane().setLayout(null);
		{
			JPanel panel = new JPanel();
			panel.setBackground(SystemColor.menu);
			panel.setBounds(10, 11, 577, 57);
			getContentPane().add(panel);
			panel.setLayout(null);
			{
				JLabel lblNewLabel = new JLabel(
						"Veranstaltung - Berechtigungen");
				lblNewLabel.setBounds(10, 11, 509, 22);
				panel.add(lblNewLabel);
				lblNewLabel.setFont(new Font("Tahoma", Font.BOLD, 18));
			}

			JTextPane txtpnBitteWhlenSie = new JTextPane();
			txtpnBitteWhlenSie.setEditable(false);
			txtpnBitteWhlenSie.setBackground(SystemColor.menu);
			txtpnBitteWhlenSie
					.setText("Definieren Sie hier bitte die gewünschten Berechtigungen für Ihre Veranstaltung");
			txtpnBitteWhlenSie.setBounds(10, 36, 509, 32);
			panel.add(txtpnBitteWhlenSie);
		}
		contentPanel.setBounds(10, 85, 577, 531);
		contentPanel.setBackground(SystemColor.menu);
		contentPanel.setBorder(new EmptyBorder(5, 5, 5, 5));
		getContentPane().add(contentPanel);
		contentPanel.setLayout(null);

	
		
		
		
		
		

		//tablePermittedUsers = new JTable();
		tablePermittedUsers = new JTable();
		tablePermittedUsers.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent e) {
				checkIntegrity(-1);
			}
		});

		tablePermittedUsers.setModel(model);
		tablePermittedUsers.setSelectionForeground(Color.WHITE);

		// invisible attribute userID for identifying selected user
		tablePermittedUsers.getColumnModel().getColumn(4).setWidth(0);
		tablePermittedUsers.getColumnModel().getColumn(4).setMinWidth(0);
		tablePermittedUsers.getColumnModel().getColumn(4).setMaxWidth(0);

		// if new session, get values for table from database
		if (RightsManagement.rightsManagement.getPermittedUserList().size() <= 0) {
			System.out.println("Loading data from db");
			// System.out.println(RightsManagement.rightsManagement.getPmImageCreateList().size());

			// person.verantwortlicher.getUserID();
			// System.out.println("Current userID: "
			// +person.verantwortlicher.getUserID());
			
			/*
			try {
				map = client.getAllOtherSatelliteUsers(person.verantwortlicher
						.getUserID());
				Iterator<server.generated.Person> i = map.iterator();

				int x = 0;
				while (i.hasNext()) {
					// erzeuge Objekte fuer die Tabelle
					Object[] obj = {
							map.get(x).getNachname() + ", "
									+ map.get(x).getVorname(), // Name
							false, // Read
							false, // Write
							false, // Link
							false, // Admin
							map.get(x).getUserID() // userID
					};
					// Fuege diese Objekte der Tabelle hinzu
					model.addRow(obj);
					i.next();
					x++;

				}
				// System.out.println("Number of returned users in permission list: "+
				// map.size());

			} catch (TException e1) {
				// TODO Auto-generated catch block
				e1.printStackTrace();
			}
			*/
		} else // read from model
		{
			System.out.println("reading from model");
			System.out
					.println("RightsManagement.rightsManagement.getPermittedUserList().size() = "
							+ RightsManagement.rightsManagement
									.getPermittedUserList().size());

			List<person> listt = RightsManagement.rightsManagement
					.getPermittedUserList();
			Iterator<person> i = listt.iterator();

			int x = 0;
			while (i.hasNext()) {
				// System.out.println("current pos=" + x);
				// erzeuge Objekte fuer die Tabelle
				person temp = i.next();

				Object[] obj = { temp.getName() + ", " + temp.getVorname(), // Name
						temp.isImageRead(), // Read
						temp.isImageWrite(), // Write
						temp.isImageLinkAllowed(), // Link
						temp.isImageAdmin(), // Admin
						temp.getUserID() // userID
				};
				System.out.println("Processing: " + temp.getName() + ", "
						+ temp.getVorname() + ", " + temp.isImageRead() + ", "
						+ temp.isImageWrite() + ", " + temp.isImageLinkAllowed() + ", "
						+ temp.isImageAdmin() + ", " + temp.getUserID());
				// Fuege diese Objekte der Tabelle hinzu
				model.addRow(obj);
				x++;
			}
		}// end set list of permitted users

		// table wird hier nie initialisiert und ist entsprechend null
		
		if (tablePermittedUsers == null)
			LOGGER.error("NPE incoming...");
		TableColumn tc1 = tablePermittedUsers.getColumnModel().getColumn(1);
		tc1.setCellEditor(tablePermittedUsers.getDefaultEditor(Boolean.class));
		tc1.setCellRenderer(tablePermittedUsers.getDefaultRenderer(Boolean.class));
		tc1.setHeaderRenderer(new CheckBoxHeader(new MyItemListener1(),
				(String) titles[1]));

		TableColumn tc2 = tablePermittedUsers.getColumnModel().getColumn(2);
		tc2.setCellEditor(tablePermittedUsers.getDefaultEditor(Boolean.class));
		tc2.setCellRenderer(tablePermittedUsers.getDefaultRenderer(Boolean.class));
		tc2.setHeaderRenderer(new CheckBoxHeader(new MyItemListener2(),
				(String) titles[2]));

		TableColumn tc3 = tablePermittedUsers.getColumnModel().getColumn(3);
		tc3.setCellEditor(tablePermittedUsers.getDefaultEditor(Boolean.class));
		tc3.setCellRenderer(tablePermittedUsers.getDefaultRenderer(Boolean.class));
		tc3.setHeaderRenderer(new CheckBoxHeader(new MyItemListener3(),
				(String) titles[3]));

		tc1.setHeaderRenderer(new CheckBoxHeader(new MyItemListener1(),
				(String) titles[1]));
		tc2.setHeaderRenderer(new CheckBoxHeader(new MyItemListener2(),
				(String) titles[2]));
		tc3.setHeaderRenderer(new CheckBoxHeader(new MyItemListener3(),
				(String) titles[3]));

		JLabel lblHauptmen = new JLabel("Hauptmenü");
		lblHauptmen.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {

				PermissionCreateLecture_GUI.this.setVisible(false);
				MainMenue_GUI main = new MainMenue_GUI(c);
				main.setVisible(true);
			}
		});
		lblHauptmen.setForeground(Color.BLUE);
		lblHauptmen.setBounds(10, 11, 61, 14);
		contentPanel.add(lblHauptmen);

		JLabel label_1 = new JLabel(">");
		label_1.setBounds(69, 11, 13, 14);
		contentPanel.add(label_1);

		JLabel lblVlimage = new JLabel("Veranstaltung");
		lblVlimage.setForeground(Color.BLUE);
		lblVlimage.setBounds(81, 11, 90, 14);
		contentPanel.add(lblVlimage);

		JLabel label_2 = new JLabel(">");
		label_2.setBounds(181, 11, 13, 14);
		contentPanel.add(label_2);

		JLabel lblNewLabel_1 = new JLabel("Berechtigungen");
		lblNewLabel_1.setBounds(194, 11, 95, 14);
		contentPanel.add(lblNewLabel_1);

		JPanel panel = new JPanel();
		panel.setBounds(10, 67, 557, 148);
		contentPanel.add(panel);
		panel.setLayout(null);
		panel.setBorder(new TitledBorder(null, "Beschreibung",
				TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panel.setBackground(SystemColor.menu);

		JLabel label = new JLabel("Read");
		label.setBounds(20, 18, 90, 20);
		panel.add(label);

		JLabel label_3 = new JLabel("Write");
		label_3.setBounds(20, 38, 90, 20);
		panel.add(label_3);

		JLabel label_5 = new JLabel("Admin");
		label_5.setBounds(20, 78, 90, 20);
		panel.add(label_5);

		JLabel label_7 = new JLabel(
				"Image darf gelesen und gestartet werden und ist in Suchfenster sichtbar.");
		label_7.setBounds(120, 18, 380, 20);
		panel.add(label_7);

		JLabel lblimageDarfAngepasst = new JLabel(
				"<HTML>Image darf angepasst und &uuml;berschrieben, jedoch nicht gel&ouml;scht werden. Berechtigungen f&uuml;r andere Benutzer festlegen</HTML>");
		lblimageDarfAngepasst.setBounds(120, 38, 380, 45);
		panel.add(lblimageDarfAngepasst);

		JLabel lblvolleRechteRead = new JLabel(
				"<HTML>Volle Rechte: read, write, l&ouml;schen und Berechtigungen f&uuml;r andere Benutzer festlegen.</HTML>");
		lblvolleRechteRead.setBounds(120, 78, 380, 40);
		panel.add(lblvolleRechteRead);

		JCheckBox checkBox = new JCheckBox("");
		checkBox.setBounds(115, 118, 21, 23);
		panel.add(checkBox);

		JLabel label_4 = new JLabel("Für alle sichtbar");
		label_4.setBounds(20, 119, 90, 20);
		panel.add(label_4);

		JPanel panel_1 = new JPanel();
		panel_1.setLayout(null);
		panel_1.setBorder(new TitledBorder(null, "Suite-Berechtigungen",
				TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panel_1.setBackground(SystemColor.menu);
		panel_1.setBounds(10, 226, 311, 294);
		contentPanel.add(panel_1);

		JScrollPane scrollPaneMyImage = new JScrollPane();
		scrollPaneMyImage
				.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPaneMyImage.setBounds(10, 28, 291, 223);
		panel_1.add(scrollPaneMyImage);
		
		
		tablePermittedUsers.setBounds(0, 0, 555, 1);
		//panel_1.add(tablePermittedUsers);
	
		scrollPaneMyImage.setViewportView(tablePermittedUsers);
		
		

		JButton button = new JButton("Hinzufügen");
		button.setBounds(10, 260, 89, 23);
		panel_1.add(button);

		JButton button_1 = new JButton("Löschen");
		button_1.setEnabled(false);
		button_1.setBounds(109, 260, 89, 23);
		panel_1.add(button_1);

		JPanel panel_2 = new JPanel();
		panel_2.setLayout(null);
		panel_2.setBorder(new TitledBorder(null, "Sichtbarkeit im VMChooser",
				TitledBorder.LEADING, TitledBorder.TOP, null, null));
		panel_2.setBackground(SystemColor.menu);
		panel_2.setBounds(331, 226, 236, 294);
		contentPanel.add(panel_2);

		JScrollPane scrollPane_1 = new JScrollPane();
		scrollPane_1
				.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
		scrollPane_1.setEnabled(false);
		scrollPane_1.setBounds(23, 88, 203, 161);
		panel_2.add(scrollPane_1);

		JRadioButton radioButton = new JRadioButton("Sichtbar für alle");
		radioButton.setSelected(true);
		radioButton.setEnabled(false);
		radioButton.setBounds(6, 32, 109, 23);
		panel_2.add(radioButton);

		JRadioButton radioButton_1 = new JRadioButton("Individuell");
		radioButton_1.setEnabled(false);
		radioButton_1.setBounds(6, 58, 109, 23);
		panel_2.add(radioButton_1);

		JButton button_2 = new JButton("Hinzufügen");
		button_2.setEnabled(false);
		button_2.setBounds(23, 260, 89, 23);
		panel_2.add(button_2);

		JButton button_3 = new JButton("Löschen");
		button_3.setEnabled(false);
		button_3.setBounds(122, 260, 89, 23);
		panel_2.add(button_3);
		{
			JPanel buttonPane = new JPanel();
			buttonPane.setBounds(0, 640, 597, 33);
			buttonPane.setBackground(SystemColor.menu);
			buttonPane.setLayout(new FlowLayout(FlowLayout.RIGHT));
			getContentPane().add(buttonPane);
			{
				JButton cancelButton = new JButton("Zurück");
				cancelButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {

						CreateLectureAllgemein_GUI sr = new CreateLectureAllgemein_GUI(
								c);
						sr.setVisible(true);
						dispose();
					}
				});
				cancelButton.setActionCommand("OK");
				buttonPane.add(cancelButton);
				// getRootPane().setDefaultButton(cancelButton);
			}
			{
				JButton continueButton = new JButton("Weiter");
				continueButton.addActionListener(new ActionListener() {
					public void actionPerformed(ActionEvent e) {

						CreateLectureLink_GUI ea = new CreateLectureLink_GUI(c);
						ea.setVisible(true);
						dispose();

					}
				});
				continueButton.setActionCommand("Cancel");
				buttonPane.add(continueButton);
				getRootPane().setDefaultButton(continueButton);
			}
		}

		JSeparator separator = new JSeparator();
		separator.setBounds(0, 78, 597, 2);
		getContentPane().add(separator);

		JSeparator separator_1 = new JSeparator();
		separator_1.setBounds(0, 627, 597, 2);
		getContentPane().add(separator_1);

		JMenuBar menuBar = new JMenuBar();
		setJMenuBar(menuBar);

		JMenu mnNewMenu_1 = new JMenu("Hilfe");
		menuBar.add(mnNewMenu_1);

		JMenuItem mntmFaq = new JMenuItem("FAQ");
		mntmFaq.addMouseListener(new MouseAdapter() {
			@Override
			public void mousePressed(MouseEvent arg0) {

				OpenLinks open = new OpenLinks();

				URI windows;
				try {
					windows = new URI(Links.getFAQ());

					open.openWebpage(windows);

				} catch (URISyntaxException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		});
		mnNewMenu_1.add(mntmFaq);

		JMenuItem mntmOtrs = new JMenuItem("OTRS");
		mntmOtrs.addMouseListener(new MouseAdapter() {
			@Override
			public void mousePressed(MouseEvent arg0) {

				OpenLinks open = new OpenLinks();

				URI windows;
				try {
					windows = new URI(Links.getOTRS());

					open.openWebpage(windows);

				} catch (URISyntaxException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

			}
		});
		mnNewMenu_1.add(mntmOtrs);

		JMenuItem mntmAbout = new JMenuItem("About");
		mntmAbout.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				About_GUI ab = new About_GUI();
				ab.setVisible(true);
			}
		});
		mnNewMenu_1.add(mntmAbout);

		JMenu mnNewMenu_Info = new JMenu("Info");
		mnNewMenu_Info.addMouseListener(new MouseAdapter() {
			@Override
			public void mouseClicked(MouseEvent arg0) {
				JOptionPane.showMessageDialog(c, HELP_MESSAGE,
						"Hilfe zu dieser Oberfläche",
						JOptionPane.INFORMATION_MESSAGE);
			}
		});
		menuBar.add(mnNewMenu_Info);

		c = this;

	}// end constructor

	private void checkIntegrity(int row) {

		int selectedRow;

		if (row == -1) {
			selectedRow = tablePermittedUsers.getSelectedRow();
		} else {
			selectedRow = row;
		}

		boolean isRead, isWrite, isLink, isAdmin;

		// collect all row data
		isRead = (boolean) tablePermittedUsers.getValueAt(selectedRow, 1);
		isWrite = (boolean) tablePermittedUsers.getValueAt(selectedRow, 2);
		isLink = (boolean) tablePermittedUsers.getValueAt(selectedRow, 3);
		isAdmin = (boolean) tablePermittedUsers.getValueAt(selectedRow, 4);

		boolean[] checkedVals = CheckIntegrity.isIntegre(isRead, isWrite,
				isLink, isAdmin);

		tablePermittedUsers.setValueAt(checkedVals[0], selectedRow, 1);
		tablePermittedUsers.setValueAt(checkedVals[1], selectedRow, 2);
		tablePermittedUsers.setValueAt(checkedVals[2], selectedRow, 3);
		tablePermittedUsers.setValueAt(checkedVals[3], selectedRow, 4);
	}// end checkIntegrity()

	// Column 0 == Concat user name

	// Read column
	class MyItemListener1 implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			Object source = e.getSource();
			if (source instanceof AbstractButton == false)
				return;
			boolean checked = e.getStateChange() == ItemEvent.SELECTED;
			for (int x = 0, y = tablePermittedUsers.getRowCount(); x < y; x++) {
				tablePermittedUsers.setValueAt(new Boolean(checked), x, 1);
			}
		}
	}

	// Write column
	class MyItemListener2 implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			Object source = e.getSource();
			if (source instanceof AbstractButton == false)
				return;
			boolean checked = e.getStateChange() == ItemEvent.SELECTED;
			for (int x = 0, y = tablePermittedUsers.getRowCount(); x < y; x++) {
				tablePermittedUsers.setValueAt(new Boolean(checked), x, 2);
			}
		}
	}

	// Admin column
	class MyItemListener3 implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			Object source = e.getSource();
			if (source instanceof AbstractButton == false)
				return;
			boolean checked = e.getStateChange() == ItemEvent.SELECTED;
			for (int x = 0, y = tablePermittedUsers.getRowCount(); x < y; x++) {
				tablePermittedUsers.setValueAt(new Boolean(checked), x, 3);
			}
		}
	}

	// Invisible userID column
	class MyItemListener4 implements ItemListener {
		public void itemStateChanged(ItemEvent e) {
			Object source = e.getSource();
			if (source instanceof AbstractButton == false)
				return;
			boolean checked = e.getStateChange() == ItemEvent.SELECTED;
			for (int x = 0, y = tablePermittedUsers.getRowCount(); x < y; x++) {
				tablePermittedUsers.setValueAt(new Boolean(checked), x, 4);
			}
		}
	}

	// save the entered rights into the model and prepare them to be written to
	// the database
	private void saveTableToList() {
		System.out.println("Saving Table to List");

		List<person> list = new ArrayList<person>();

		int seperatorIndex = 0;

		// get values from table and save the checkbox values
		if (map == null)
			System.out.println("Error: map is null");

		// for (int i = 0; i < map.size(); i++) {
		for (int i = 0; i < tablePermittedUsers.getRowCount(); i++) {
			// System.out.println("in for, rowcount="+table.getRowCount());
			person temp = new person();

			// table.getModel().setValueAt(map.get, i, 5);

			temp.setUserID(tablePermittedUsers.getModel().getValueAt(i, 5).toString()); // get
																			// userID
			temp.setImageAdmin(Boolean.parseBoolean(tablePermittedUsers.getModel()
					.getValueAt(i, 4).toString())); // get Admin
			temp.setImageLinkAllowed(Boolean.parseBoolean(tablePermittedUsers.getModel()
					.getValueAt(i, 3).toString()));// get Link
			temp.setImageWrite(Boolean.parseBoolean(tablePermittedUsers.getModel()
					.getValueAt(i, 2).toString()));// get Write
			temp.setImageRead(Boolean.parseBoolean(tablePermittedUsers.getModel().getValueAt(i, 1)
					.toString()));// get Read
			seperatorIndex = tablePermittedUsers.getModel().getValueAt(i, 0).toString()
					.indexOf(",");
			temp.setName(tablePermittedUsers.getModel().getValueAt(i, 0).toString()
					.substring(0, seperatorIndex));
			temp.setVorname(tablePermittedUsers.getModel().getValueAt(i, 0).toString()
					.substring(seperatorIndex + 2));

			// check if at least one checkbox is checked. If yes, save this
			// entry into list, if not ignore this entry
			if (temp.isImageAdmin() || temp.isImageLinkAllowed() || temp.isImageWrite()
					|| temp.isImageRead()) {
				// save entry
				list.add(temp);
			} else {
				// do nothing
			}
		}

		System.out.println("Setting list information.\tTable size: "
				+ tablePermittedUsers.getRowCount() + "\t List length (=selected users): "
				+ list.size());
		for (int y = 0; y < list.size(); y++) {
			System.out.println("" + list.get(y).getName());
		}

		RightsManagement.rightsManagement.setPermittedUserList(list);
	}// end saveTableToList()

}// end class

class CheckBoxHeader extends JCheckBox implements TableCellRenderer,
		MouseListener {
	protected CheckBoxHeader rendererComponent;
	protected int column;
	protected boolean mousePressed = false;

	public CheckBoxHeader(ItemListener itemListener, String text) {
		rendererComponent = this;
		rendererComponent.addItemListener(itemListener);
		rendererComponent.setText(text);
	}

	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {
		if (table != null) {
			JTableHeader header = table.getTableHeader();
			if (header != null) {
				rendererComponent.setForeground(header.getForeground());
				rendererComponent.setBackground(header.getBackground());
				rendererComponent.setFont(header.getFont());
				rendererComponent.setBorder(header.getBorder());
				header.addMouseListener(rendererComponent);
			}
		}
		setColumn(column);
		// rendererComponent.setText("Check All");
		// setBorder(UIManager.getBorder("TableHeader.cellBorder"));

		return rendererComponent;
	}

	protected void setColumn(int column) {
		this.column = column;
	}

	public int getColumn() {
		return column;
	}

	protected void handleClickEvent(MouseEvent e) {
		if (mousePressed) {
			mousePressed = false;
			JTableHeader header = (JTableHeader) (e.getSource());
			JTable tableView = header.getTable();
			TableColumnModel columnModel = tableView.getColumnModel();
			int viewColumn = columnModel.getColumnIndexAtX(e.getX());
			int column = tableView.convertColumnIndexToModel(viewColumn);

			if (viewColumn == this.column && e.getClickCount() == 1
					&& column != -1) {
				doClick();
			}
		}
	}

	public void mouseClicked(MouseEvent e) {
		handleClickEvent(e);
		((JTableHeader) e.getSource()).repaint();
	}

	public void mousePressed(MouseEvent e) {
		mousePressed = true;
	}

	public void mouseReleased(MouseEvent e) {
	}

	public void mouseEntered(MouseEvent e) {
	}

	public void mouseExited(MouseEvent e) {
	}
}