jNetClient/src/jnet/client/gui/serversettings/TableUsers.java

135 lines
4.4 KiB
Java

package jnet.client.gui.serversettings;
import jnet.client.gui.serversettings.TableDeviceType;
import jnet.client.Client;
import jnet.client.gui.dialog.UserDialog;
import java.awt.Component;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableCellRenderer;
import jnet.lib.object.User;
public class TableUsers extends JTable {
private static final String[] COLUMN_NAMES = {
"ID",
"Uživatel",
"Přidat mapu",
"Odebrat mapu",
"Upravit mapu",
"Přidat objekt",
"Odebrat objekt",
"Upravit objekt",
"Nastavit server"
};
public TableUsers() {
tableSetup();
}
private void tableSetup() {
DefaultTableModel model = new DefaultTableModel(COLUMN_NAMES, Client.users.size()) {
@Override
public boolean isCellEditable(int row, int column) {
//all cells false
return false;
}
@Override
public Class<?> getColumnClass(int columnIndex) {
if (columnIndex > 1) {
return ImageIcon.class;
}
return super.getColumnClass(columnIndex);
}
};
this.setModel(model);
this.setRowHeight(25);
this.getColumnModel().getColumn(1).setCellRenderer(new ImageRenderer());
this.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) { // Kontrola dvojitého kliku
int row = getSelectedRow(); // Získání vybraného řádku
if (row != -1) {
Object id = getValueAt(row, 0);
for (User user : Client.users) {
if (user.getId() == (int) id) {
new UserDialog(user).setVisible(true);
break;
}
}
}
}
}
});
int row = 0;
for (User u : Client.users) {
try {
ImageIcon ii_yes = new ImageIcon(ImageIO.read(getClass().getResourceAsStream("/img/yes.png")));
ImageIcon ii_no = new ImageIcon(ImageIO.read(getClass().getResourceAsStream("/img/no.png")));
this.setValueAt(u.getId(), row, 0);
this.setValueAt(u.getUsername(), row, 1);
this.setValueAt((u.isAddMap() ? ii_yes : ii_no), row, 2);
this.setValueAt((u.isRemoveMap() ? ii_yes : ii_no), row, 3);
this.setValueAt((u.isEditMap() ? ii_yes : ii_no), row, 4);
this.setValueAt((u.isAddObject()? ii_yes : ii_no), row, 5);
this.setValueAt((u.isEditObject()? ii_yes : ii_no), row, 6);
this.setValueAt((u.isRemoveObject()? ii_yes : ii_no), row, 7);
this.setValueAt((u.isEditServer() ? ii_yes : ii_no), row, 8);
row++;
} catch (IOException ex) {
Logger.getLogger(TableDeviceType.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
static class ImageRenderer extends JLabel implements TableCellRenderer {
public ImageRenderer() {
setHorizontalAlignment(CENTER); // Obrázky budou centrované
setOpaque(true); // Zajištění vykreslení pozadí
}
@Override
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if (isSelected) {
setBackground(table.getSelectionBackground());
} else {
setBackground(table.getBackground());
}
if (value instanceof ImageIcon) {
setIcon((ImageIcon) value);
setText(null); // Zamezení zobrazení textu
} else {
setIcon(null);
setText(value != null ? value.toString() : "");
}
return this;
}
}
}