package de.uni_passau.fim.pkjab.view; import javax.swing.JCheckBox; import javax.swing.JDialog; import javax.swing.JTextField; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.BorderFactory; import javax.swing.JColorChooser; import java.awt.GridLayout; import java.awt.Font; import java.awt.Color; import java.awt.Dimension; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; class ThemeChooser extends JDialog { private AbstractTheme theme; private static final String BGR_COLOR = "Hintergrundfarbe: "; private static final String FGR_COLOR = "Vordergrundfarbe: "; private static final String FONT_FAMILY = "Schriftart: "; private static final String BUTTON_OK = "OK"; private static final String BUTTON_CANCEL = "Abbrechen"; private static final String BOLD = "fett"; private static final String ITALIC = "kursiv"; private static final String FONT_SIZE = "Schriftgroesse: "; private Color nBgr; private Color nFgr; ThemeChooser(JFrame owner, String title, boolean modal) { super(owner, title, modal); final DefaultTheme defaultTheme = new DefaultTheme(); final Dimension colorDim = new Dimension(20, 20); nBgr = defaultTheme.getBackgroundColor(); nFgr = defaultTheme.getForegroundColor(); final JButton bgrColorBtn = new JButton(); bgrColorBtn.setMinimumSize(colorDim); bgrColorBtn.setBackground(defaultTheme.getBackgroundColor()); bgrColorBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Color newColor = JColorChooser.showDialog( null, BGR_COLOR, defaultTheme.getBackgroundColor()); bgrColorBtn.setBackground(newColor); nBgr = newColor; } }); final JButton fgrColorBtn = new JButton(); fgrColorBtn.setMinimumSize(colorDim); fgrColorBtn.setBackground(defaultTheme.getForegroundColor()); fgrColorBtn.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { Color newColor = JColorChooser.showDialog( null, FGR_COLOR, defaultTheme.getForegroundColor()); fgrColorBtn.setBackground(newColor); nFgr = newColor; } }); final JTextField fontNameField = new JTextField(defaultTheme.getFont().getFontName()); final JCheckBox boldCheckBox = new JCheckBox(BOLD); final JCheckBox italicCheckBox = new JCheckBox(ITALIC); final JTextField fontSizeField = new JTextField(); fontSizeField.setText(defaultTheme.getFont().getSize() + ""); JPanel contentPane = new JPanel(); contentPane.setLayout(new GridLayout(7, 2, 5, 10)); contentPane.add(new JLabel(BGR_COLOR)); contentPane.add(bgrColorBtn); contentPane.add(new JLabel(FGR_COLOR)); contentPane.add(fgrColorBtn); contentPane.add(new JLabel(FONT_FAMILY)); contentPane.add(fontNameField); contentPane.add(new JLabel(" ")); contentPane.add(boldCheckBox); contentPane.add(new JLabel(" ")); contentPane.add(italicCheckBox); contentPane.add(new JLabel(FONT_SIZE)); contentPane.add(fontSizeField); final JButton okButton = new JButton(BUTTON_OK); okButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { int fontStyle = 0; if (boldCheckBox.isSelected()) fontStyle |= Font.BOLD; if (italicCheckBox.isSelected()) fontStyle |= Font.ITALIC; Font font = new Font(fontNameField.getText(), fontStyle, Integer.parseInt(fontSizeField.getText())); theme = new IndividualTheme(nBgr, nFgr, font); setVisible(false); } }); final JButton cancelButton = new JButton(BUTTON_CANCEL); cancelButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { setVisible(false); } }); contentPane.add(okButton); contentPane.add(cancelButton); contentPane.setBorder(BorderFactory.createEmptyBorder(10, 20, 5, 20)); setContentPane(contentPane); getRootPane().setDefaultButton(okButton); pack(); setLocationRelativeTo(null); setVisible(true); } AbstractTheme getTheme() { return theme; } }