package com.opticalcobra.storybear.menu; import java.awt.Color; import java.awt.Component; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.sql.SQLException; import java.util.Collections; import java.util.List; import javax.swing.DefaultListCellRenderer; import javax.swing.JComponent; import javax.swing.JList; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.ListModel; import javax.swing.ListSelectionModel; import com.opticalcobra.storybear.main.User; import com.opticalcobra.storybear.res.Ressources; import javax.swing.JTextField; import javax.swing.event.ListDataListener; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; public class UserPanel extends MenuInnerPanel { public static int startY = 140; protected List<User> list; private JList userlist; private TextButton selectUser; private JTextField usernameField; public UserPanel(Menu menu) { super(menu); addMenuHeadline("Benutzer"); addMenuHeadlineUnderlining(); JTextArea textUsername = generateStandardTextArea(); textUsername.setBounds(Menu.leftPageX, (int)(startY/Ressources.SCALE), Menu.pageWidth, (int)(65/Ressources.SCALE)); textUsername.setText("Melde dich mit deinem Nutzernamen an."); //add(textUsername); userlist = new JList(new UserList()); userlist.setCellRenderer(new UserListCellRenderer()); userlist.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); userlist.setFont(Menu.fontText[0]); userlist.setForeground(Color.black); userlist.setBackground(Ressources.PAGECOLOR); userlist.setCursor(Ressources.CURSORCLICKABLE); userlist.addListSelectionListener(new ListSelectionListener() { @Override public void valueChanged(ListSelectionEvent e) { selectUser.setEnabled(true); } }); JScrollPane scrollpane = new Scrollbar(Ressources.PAGECOLOR); scrollpane.setBounds(Menu.leftPageX, (int)((startY+60)/Ressources.SCALE), Menu.pageWidth, (int)(540/Ressources.SCALE)); scrollpane.setBackground(Ressources.PAGECOLOR); scrollpane.setForeground(Ressources.PAGECOLOR); scrollpane.setBorder(null); scrollpane.setViewportView(userlist); add(scrollpane); add(textUsername); selectUser = new TextButton("Benutzer w�hlen", Menu.leftPageXUnscaled, 760, 300, 60); selectUser.setEnabled(false); selectUser.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { selectUser(); } }); add(selectUser); textUsername = generateStandardTextArea(); textUsername.setText("Du hast noch keinen Nutzernamen? Leg dir hier einen neuen an."); textUsername.setBounds(Menu.rightPageX, (int)(startY/Ressources.SCALE), Menu.pageWidth, (int)(100/Ressources.SCALE)); add(textUsername); usernameField = generateStandardTextField(); usernameField.setBounds(Menu.rightPageX, (int)((startY+100)/Ressources.SCALE), (int)(300/Ressources.SCALE), (int)(60/Ressources.SCALE)); add(usernameField); TextButton addUser = new TextButton("Benutzer anlegen", Menu.rightPageXUnscaled+320, startY+100, 280, 60); addUser.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent arg0) { addUser(); } }); add(addUser); loadUser(); } private void selectUser() { User.setCurrentUser((User) userlist.getSelectedValue()); menu.currentUser.setText(User.isCurrentUserSet() ? User.getCurrentUser().getName() : ""); menu.enableAllMenuButtons(); menu.getMain().setVisible(false); menu.setMain(menu.manu); menu.getMain().setVisible(true); } private void loadUser() { try { list = db.queryUserList(); Collections.sort(list); } catch (SQLException e) { e.printStackTrace(); } userlist.setModel(new UserList()); } private void addUser() { try { db.addUser(new User(usernameField.getText())); } catch (SQLException e) { e.printStackTrace(); } loadUser(); } private class UserList implements ListModel { @Override public void addListDataListener(ListDataListener l) { } @Override public Object getElementAt(int index) { return list.get(index); } @Override public int getSize() { return list.size(); } @Override public void removeListDataListener(ListDataListener l) { } } private class UserListCellRenderer extends DefaultListCellRenderer { @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JComponent c = (JComponent) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus); c.setBackground(Ressources.TRANSPARENTCOLOR); c.setBorder(null); c.setVisible(true); if (isSelected) { c.setForeground(Ressources.MENUCOLORSELECTED); } return c; } } }