package gui.image;
import gui.intro.About_GUI;
import gui.intro.ListAllOtherUsers_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.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.swing.AbstractButton;
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.JScrollPane;
import javax.swing.JSeparator;
import javax.swing.JTable;
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.table.DefaultTableModel;
import javax.swing.table.JTableHeader;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;
import models.Image;
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 PermissionCreateImage_GUI extends JFrame {
private final static Logger LOGGER = Logger
.getLogger(PermissionCreateImage_GUI.class);
Client client = models.Client.clientcon.getClient();
private final JPanel contentPanel = new JPanel();
String[] result;
private JTable table = null;
private Class[] classes;
Object[] titles = { "Name", "Read", "Write", "Link", "Admin", "userID" };
private List<Person> map = null; // List of people who have rights
Component c = null;
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 JLabel lblRead;
private JLabel lblWrite;
private JLabel lblAdmin;
private JLabel lblLinkallowed;
private JLabel lblReadDesc;
private JLabel lblWriteDesc;
private JLabel lblAdminDesc;
private JLabel lblLinkallowedDesc;
private static final String HELP_MESSAGE = "<html><div align=\"center\">"
+ "Legen Sie fest, welche Personen welche Rechte an Ihrem Image haben.<br />"
+ "Sie können die Rechte read, write, link und admin vergeben.<br />"
+ "Link bedeutet, dass diese Person Veranstaltungen auf Ihr Image verlinken darf und dieses somit<br />"
+ "implizit freigeben darf. Eine Person mit Adminrechten darf zusätzlich das Image löschen und Berechtigungen<br />"
+ "für andere Benutzer festlegen und ist somit wie der Besitzer zu betrachten."
+ "</div></html>";
private JButton btnAddUser;
private JButton btnDeleteUser;
public PermissionCreateImage_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 - Image bearbeiten");
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(
"Image 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 Ihr Image");
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);
JPanel panel_1 = new JPanel();
panel_1.setBackground(SystemColor.menu);
panel_1.setBorder(new TitledBorder(null, "Weitere Berechtigungen",
TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel_1.setBounds(10, 170, 557, 361);
contentPanel.add(panel_1);
panel_1.setLayout(null);
JScrollPane scrollPane = new JScrollPane();
scrollPane
.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
scrollPane.setBounds(10, 21, 537, 185);
panel_1.add(scrollPane);
table = new JTable();
table.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
checkIntegrity(-1);
}
});
table.setModel(model);
table.setSelectionForeground(Color.WHITE);
// invisible attribute userID for identifying selected user
table.getColumnModel().getColumn(5).setWidth(0);
table.getColumnModel().getColumn(5).setMinWidth(0);
table.getColumnModel().getColumn(5).setMaxWidth(0);
// if new session, get values for table from database -> initialiting users
if (RightsManagement.rightsManagement.getPermittedUserList().size() <= 0) {
System.out.println("Loading data from db");
//do nothing
/*try {
user.add(0, person.verantwortlicher.getUserID());
if(user==null){
System.out.println("user is null");
}
//map = client.getAllOtherSatelliteUsers(person.verantwortlicher.getUserID());
map = client.getAllOtherSatelliteUsers(user);
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++;
}
} 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()) {
// 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
//TableCellRenderer rend = table.getTableHeader().getDefaultRenderer();
TableColumn tc1 = table.getColumnModel().getColumn(1);
tc1.setCellEditor(table.getDefaultEditor(Boolean.class));
tc1.setCellRenderer(table.getDefaultRenderer(Boolean.class));
tc1.setHeaderRenderer(new CheckBoxHeader(new MyItemListener1(),
(String) titles[1]));
// tc1.setCellRenderer(cellRenderer)
TableColumn tc2 = table.getColumnModel().getColumn(2);
tc2.setCellEditor(table.getDefaultEditor(Boolean.class));
tc2.setCellRenderer(table.getDefaultRenderer(Boolean.class));
tc2.setHeaderRenderer(new CheckBoxHeader(new MyItemListener2(),
(String) titles[2]));
TableColumn tc3 = table.getColumnModel().getColumn(3);
tc3.setCellEditor(table.getDefaultEditor(Boolean.class));
tc3.setCellRenderer(table.getDefaultRenderer(Boolean.class));
tc3.setHeaderRenderer(new CheckBoxHeader(new MyItemListener3(),
(String) titles[3]));
TableColumn tc4 = table.getColumnModel().getColumn(4);
tc4.setCellEditor(table.getDefaultEditor(Boolean.class));
tc4.setCellRenderer(table.getDefaultRenderer(Boolean.class));
tc4.setHeaderRenderer(new CheckBoxHeader(new MyItemListener4(),
(String) titles[4]));
scrollPane.setViewportView(table);
JPanel panel = new JPanel();
panel.setLayout(null);
panel.setBorder(new TitledBorder(null, "Freigabe",
TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel.setBackground(SystemColor.menu);
panel.setBounds(10, 260, 537, 80);
panel_1.add(panel);
JLabel label = new JLabel("Freigabemodus:");
label.setBounds(10, 30, 250, 20);
panel.add(label);
final JComboBox comboBox_1 = new JComboBox();
comboBox_1
.setModel(new DefaultComboBoxModel(new String[] {
"Lokal (Eigene Hochschule)",
"Öffentlich (Alle Hochschulen)" }));
comboBox_1.setSelectedIndex(0);
comboBox_1.setBounds(270, 30, 250, 20);
panel.add(comboBox_1);
btnAddUser = new JButton("Hinzufügen...");
btnAddUser.setBounds(10, 217, 113, 23);
panel_1.add(btnAddUser);
btnDeleteUser = new JButton("Löschen");
btnDeleteUser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
// delete selected users from table
int[] deletableRows= table.getSelectedRows();
int pointerCorrection=0; //after deleting a row, the length of selected rows is reduced by 1. This pointer counts the already deleted rows and correct the offset of i
LOGGER.info("deletabelRows.length="+deletableRows.length);
for (int i=0; i<deletableRows.length; i++){
LOGGER.info("Deleting rowCount["+i+"], tableRow number "+deletableRows[i-pointerCorrection]);
model.removeRow(deletableRows[i-pointerCorrection]);
pointerCorrection++;
}
}
});
btnDeleteUser.setBounds(134, 217, 113, 23);
panel_1.add(btnDeleteUser);
btnAddUser.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
//show list of all other relevant users
ListAllOtherUsers_GUI lu = new ListAllOtherUsers_GUI(c, table, 5); //give access to the table model and inform that the userID is position 5 in the model
lu.setVisible(true);
}
});
JLabel lblHauptmen = new JLabel("Hauptmenü");
lblHauptmen.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent arg0) {
PermissionCreateImage_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("Image");
lblVlimage.setForeground(Color.BLUE);
lblVlimage.setBounds(81, 11, 45, 14);
contentPanel.add(lblVlimage);
JLabel label_2 = new JLabel(">");
label_2.setBounds(133, 11, 13, 14);
contentPanel.add(label_2);
JLabel lblNewLabel_1 = new JLabel("Neu");
lblNewLabel_1.setBounds(146, 11, 155, 14);
contentPanel.add(lblNewLabel_1);
JPanel panel_2 = new JPanel();
panel_2.setBackground(SystemColor.menu);
panel_2.setBorder(new TitledBorder(null, "Beschreibung",
TitledBorder.LEADING, TitledBorder.TOP, null, null));
panel_2.setBounds(10, 35, 557, 124);
contentPanel.add(panel_2);
panel_2.setLayout(null);
lblRead = new JLabel("Read");
lblRead.setBounds(28, 18, 90, 20);
panel_2.add(lblRead);
lblWrite = new JLabel("Write");
lblWrite.setBounds(28, 38, 90, 20);
panel_2.add(lblWrite);
lblAdmin = new JLabel("Admin");
lblAdmin.setBounds(28, 78, 90, 20);
panel_2.add(lblAdmin);
lblLinkallowed = new JLabel("Link");
lblLinkallowed.setBounds(28, 58, 90, 20);
panel_2.add(lblLinkallowed);
lblReadDesc = new JLabel(
"Image lesen und starten, in Suchfenster und VMchooser sichtbar.");
lblReadDesc.setBounds(128, 18, 380, 20);
panel_2.add(lblReadDesc);
lblWriteDesc = new JLabel(
"Image anpassen und überschreiben, jedoch nicht löschen.");
lblWriteDesc.setBounds(128, 38, 380, 20);
panel_2.add(lblWriteDesc);
lblAdminDesc = new JLabel(
"<HTML>Volle Rechte: read, write, löschen, Link und<br>Berechtigungen für andere Benutzer festlegen.</HTML>");
lblAdminDesc.setBounds(128, 78, 380, 40);
panel_2.add(lblAdminDesc);
lblLinkallowedDesc = new JLabel(
"Erzeugung einer Veranstaltung auf ein Image ist erlaubt.");
lblLinkallowedDesc.setBounds(128, 58, 380, 20);
panel_2.add(lblLinkallowedDesc);
{
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) {
CreateImageTechnisch_GUI ci = new CreateImageTechnisch_GUI(
c);
ci.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) {
// before save, check integrity to avoid dblClick errors
// of rights
for (int i = 0; i < table.getRowCount(); i++) {
checkIntegrity(i); // check integrity of each line
// again
System.out.println("in auto-correct");
}
saveTableToList();
Image.image.setShareMode(comboBox_1.getSelectedIndex());
FTPCreateUploader_GUI ea = new FTPCreateUploader_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;
this.setLocationRelativeTo(formerGUI);
this.setVisible(true);
}// end constructor
private void checkIntegrity(int row) {
int selectedRow;
if (row == -1) {
selectedRow = table.getSelectedRow();
} else {
selectedRow = row;
}
boolean isRead, isWrite, isLink, isAdmin;
// collect all row data
isRead = (boolean) table.getValueAt(selectedRow, 1);
isWrite = (boolean) table.getValueAt(selectedRow, 2);
isLink = (boolean) table.getValueAt(selectedRow, 3);
isAdmin = (boolean) table.getValueAt(selectedRow, 4);
boolean[] checkedVals = CheckIntegrity.isIntegreForImage(isRead, isWrite,
isLink, isAdmin);
table.setValueAt(checkedVals[0], selectedRow, 1);
table.setValueAt(checkedVals[1], selectedRow, 2);
table.setValueAt(checkedVals[2], selectedRow, 3);
table.setValueAt(checkedVals[3], selectedRow, 4);
}// end checkIntegrity()
// 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 = table.getRowCount(); x < y; x++) {
table.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 = table.getRowCount(); x < y; x++) {
table.setValueAt(new Boolean(checked), x, 1); //set read
table.setValueAt(new Boolean(checked), x, 2); // set write
}
}
}
// Link 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 = table.getRowCount(); x < y; x++) {
table.setValueAt(new Boolean(checked), x, 1); //set read
table.setValueAt(new Boolean(checked), x, 3); //set link
}
}
}
// Admin 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 = table.getRowCount(); x < y; x++) {
table.setValueAt(new Boolean(checked), x, 1); //set read
table.setValueAt(new Boolean(checked), x, 2); // set write
table.setValueAt(new Boolean(checked), x, 3); // set link
table.setValueAt(new Boolean(checked), x, 4); //set admin
//TODO
//also set table header (un-)selected
}
JTableHeader header = table.getTableHeader();
//header.getColumnModel().getColumn(1).setHeaderValue(Status.);
//header.getColumnModel().getColumn(2).setHeaderValue(new Boolean(checked));
//model.setValueAt(new Boolean(checked), 0, 1);
//table.setValueAt(new Boolean(checked), 0, 1);
}
}
// invisible userID column
class MyItemListener5 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 = table.getRowCount(); x < y; x++) {
table.setValueAt(new Boolean(checked), x, 5);
}
}
}
// public void createRightsList() {
// /////
// }
// 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 < table.getRowCount(); i++) {
// System.out.println("in for, rowcount="+table.getRowCount());
person temp = new person();
// table.getModel().setValueAt(map.get, i, 5);
temp.setUserID(table.getModel().getValueAt(i, 5).toString()); // get
// userID
temp.setImageAdmin(Boolean.parseBoolean(table.getModel()
.getValueAt(i, 4).toString())); // get Admin
temp.setImageLinkAllowed(Boolean.parseBoolean(table.getModel()
.getValueAt(i, 3).toString()));// get Link
temp.setImageWrite(Boolean.parseBoolean(table.getModel()
.getValueAt(i, 2).toString()));// get Write
temp.setImageRead(Boolean.parseBoolean(table.getModel().getValueAt(i, 1)
.toString()));// get Read
seperatorIndex = table.getModel().getValueAt(i, 0).toString()
.indexOf(",");
temp.setName(table.getModel().getValueAt(i, 0).toString()
.substring(0, seperatorIndex));
temp.setVorname(table.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: "
+ table.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;
//protected boolean readFlag = false, writeFlag = false, linkFlag = false, adminFlag = 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);
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();
}
/*
//also set dependent headers clicked
switch(viewColumn)
{
case 2: //write
//also set read
if (viewColumn == ++this.column && e.getClickCount() == 1 && column != -1 && writeFlag == false && readFlag == false) //going backward through table --> ++
{
doClick();
writeFlag = true;
readFlag = true;
}
break;
case 3: //link
//also set read
if (viewColumn == (this.column+2) && e.getClickCount() == 1 && column != -1) //going backward through table --> ++
{
//System.out.println("clickCount: " + e.getClickCount());
doClick();
//System.out.println("viewColumn = " + viewColumn + "++this.column = "+ ++this.column);
}
break;
case 4: //admin
break;
default:
break;
}
*/
}
//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) {
}
}