package jrummikub.view.impl; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import java.util.LinkedList; import javax.swing.BoxLayout; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTabbedPane; import javax.swing.JTextField; import javax.swing.border.CompoundBorder; import javax.swing.border.EmptyBorder; import javax.swing.border.LineBorder; @SuppressWarnings("serial") class SettingsPanel extends JPanel { private JPanel playerSetupPanel; private JPanel playerSettingsViewport; private JPanel ruleSetupPanel; private LinkedList playerSettingsPanels = new LinkedList(); private void addPlayerSettings() { PlayerSettingsPanel panel = new PlayerSettingsPanel(); playerSettingsPanels.add(panel); playerSettingsViewport.add(panel, playerSettingsViewport.getComponentCount() - 1); } private void createPlayerSetupPanel() { playerSetupPanel = new JPanel(); playerSetupPanel.setLayout(new BorderLayout()); playerSettingsViewport = new JPanel(); playerSettingsViewport.setLayout(new BoxLayout(playerSettingsViewport, BoxLayout.Y_AXIS)); JScrollPane scrollPane = new JScrollPane(playerSettingsViewport, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); playerSetupPanel.add(scrollPane); playerSettingsViewport.add(new JButton("Neuer Spieler")); addPlayerSettings(); addPlayerSettings(); } private void createRuleSetupPanel() { ruleSetupPanel = new JPanel(); } SettingsPanel() { setLayout(new BorderLayout()); final JTabbedPane tabbedPane = new JTabbedPane(); createPlayerSetupPanel(); tabbedPane.addTab("Spieler", playerSetupPanel); createRuleSetupPanel(); tabbedPane.addTab("Regeln", ruleSetupPanel); add(tabbedPane); JButton startButton = new JButton("Spiel starten"); add(startButton, BorderLayout.SOUTH); setBorder(new CompoundBorder(new LineBorder(Color.BLACK), new EmptyBorder( 10, 10, 10, 10))); addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { // Insets insets = getInsets(); // int x = insets.left, y = insets.top, width = getWidth() - insets.left // - insets.right, height = getHeight() - insets.top - insets.bottom; // tabbedPane.setBounds(x, y, width, height); } }); } private static class PlayerSettingsPanel extends JPanel { PlayerSettingsPanel() { setLayout(new BorderLayout()); add(new JButton(ImageUtil.createColorIcon(Color.RED, 16)), BorderLayout.WEST); add(new JTextField()); add(new JButton("\u2716"), BorderLayout.EAST); } @Override public Dimension getPreferredSize() { return getComponent(1).getPreferredSize(); } @Override public Dimension getMaximumSize() { return new Dimension(Integer.MAX_VALUE, getPreferredSize().height); } } }