135 lines
4.4 KiB
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;
|
|
}
|
|
}
|
|
|
|
}
|