package org.leumasjaffe.charsheet.view.magic; import javax.swing.JPanel; import java.awt.GridBagLayout; import java.awt.GridBagConstraints; import java.awt.Insets; import java.util.Set; import javax.swing.JTextArea; import org.leumasjaffe.charsheet.model.magic.DDSpell; import org.leumasjaffe.charsheet.model.magic.DDSpell.Component; import javax.swing.JScrollPane; import javax.swing.JLabel; import javax.swing.JTextField; import java.awt.Font; import java.awt.FlowLayout; import javax.swing.JCheckBox; public class SpellInfoPanel extends JPanel { /** * */ private static final long serialVersionUID = 1L; private JTextField name; private JTextField school; private JTextField keywords; private JTextField action; private JTextField range; public SpellInfoPanel(final DDSpell spell) { GridBagLayout gridBagLayout = new GridBagLayout(); gridBagLayout.columnWidths = new int[]{0, 0}; gridBagLayout.rowHeights = new int[]{0, 0, 0}; gridBagLayout.columnWeights = new double[]{1.0, Double.MIN_VALUE}; gridBagLayout.rowWeights = new double[]{1.0, 1.0, Double.MIN_VALUE}; setLayout(gridBagLayout); JPanel panel = new JPanel(); GridBagConstraints gbc_panel = new GridBagConstraints(); gbc_panel.insets = new Insets(0, 0, 5, 0); gbc_panel.fill = GridBagConstraints.BOTH; gbc_panel.gridx = 0; gbc_panel.gridy = 0; add(panel, gbc_panel); GridBagLayout gbl_panel = new GridBagLayout(); gbl_panel.columnWidths = new int[]{0, 0, 0, 0, 0}; gbl_panel.rowHeights = new int[]{0, 0, 0, 0, 0, 0}; gbl_panel.columnWeights = new double[]{0.0, 1.0, 0.0, 1.0, Double.MIN_VALUE}; gbl_panel.rowWeights = new double[]{0.0, 0.0, 1.0, 0.0, 1.0, Double.MIN_VALUE}; panel.setLayout(gbl_panel); JLabel lblName = new JLabel("Name:"); lblName.setFont(new Font("Tahoma", Font.BOLD, 14)); GridBagConstraints gbc_lblName = new GridBagConstraints(); gbc_lblName.insets = new Insets(0, 0, 5, 5); gbc_lblName.anchor = GridBagConstraints.EAST; gbc_lblName.gridx = 0; gbc_lblName.gridy = 0; panel.add(lblName, gbc_lblName); name = new JTextField(spell.getName()); name.setEditable(false); GridBagConstraints gbc_name = new GridBagConstraints(); gbc_name.insets = new Insets(0, 0, 5, 5); gbc_name.fill = GridBagConstraints.HORIZONTAL; gbc_name.gridx = 1; gbc_name.gridy = 0; panel.add(name, gbc_name); name.setColumns(10); JLabel lblSpellSchool = new JLabel("Spell School:"); lblSpellSchool.setFont(new Font("Tahoma", Font.BOLD, 14)); GridBagConstraints gbc_lblSpellSchool = new GridBagConstraints(); gbc_lblSpellSchool.anchor = GridBagConstraints.EAST; gbc_lblSpellSchool.insets = new Insets(0, 0, 5, 5); gbc_lblSpellSchool.gridx = 2; gbc_lblSpellSchool.gridy = 0; panel.add(lblSpellSchool, gbc_lblSpellSchool); school = new JTextField(spell.getSpellSchool()); school.setEditable(false); school.setColumns(10); GridBagConstraints gbc_school = new GridBagConstraints(); gbc_school.insets = new Insets(0, 0, 5, 0); gbc_school.fill = GridBagConstraints.HORIZONTAL; gbc_school.gridx = 3; gbc_school.gridy = 0; panel.add(school, gbc_school); JLabel lblKeywords = new JLabel("Keywords:"); lblKeywords.setFont(new Font("Tahoma", Font.BOLD, 14)); GridBagConstraints gbc_lblKeywords = new GridBagConstraints(); gbc_lblKeywords.anchor = GridBagConstraints.EAST; gbc_lblKeywords.insets = new Insets(0, 0, 5, 5); gbc_lblKeywords.gridx = 0; gbc_lblKeywords.gridy = 1; panel.add(lblKeywords, gbc_lblKeywords); keywords = new JTextField(spell.getKeywords().isEmpty() ? "" : asString(spell.getKeywords())); keywords.setEditable(false); keywords.setColumns(10); GridBagConstraints gbc_keywords = new GridBagConstraints(); gbc_keywords.gridwidth = 3; gbc_keywords.insets = new Insets(0, 0, 5, 0); gbc_keywords.fill = GridBagConstraints.HORIZONTAL; gbc_keywords.gridx = 1; gbc_keywords.gridy = 1; panel.add(keywords, gbc_keywords); JLabel lblComponents = new JLabel("Components:"); lblComponents.setFont(new Font("Tahoma", Font.BOLD, 14)); GridBagConstraints gbc_lblComponents = new GridBagConstraints(); gbc_lblComponents.anchor = GridBagConstraints.EAST; gbc_lblComponents.insets = new Insets(0, 0, 5, 5); gbc_lblComponents.gridx = 0; gbc_lblComponents.gridy = 2; panel.add(lblComponents, gbc_lblComponents); JPanel panel_1 = new JPanel(); GridBagConstraints gbc_panel_1 = new GridBagConstraints(); gbc_panel_1.insets = new Insets(0, 0, 5, 0); gbc_panel_1.gridwidth = 3; gbc_panel_1.fill = GridBagConstraints.BOTH; gbc_panel_1.gridx = 1; gbc_panel_1.gridy = 2; panel.add(panel_1, gbc_panel_1); panel_1.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); JCheckBox chckbxVerbal = new JCheckBox("Verbal"); chckbxVerbal.setEnabled(false); chckbxVerbal.setSelected(spell.getComponents().contains(Component.V)); panel_1.add(chckbxVerbal); JCheckBox chckbxSomatic = new JCheckBox("Somatic"); chckbxSomatic.setEnabled(false); chckbxSomatic.setSelected(spell.getComponents().contains(Component.S)); panel_1.add(chckbxSomatic); JCheckBox chckbxMaterial = new JCheckBox("Material"); chckbxMaterial.setEnabled(false); chckbxMaterial.setSelected(spell.getComponents().contains(Component.M)); panel_1.add(chckbxMaterial); JCheckBox chckbxFocus = new JCheckBox("Focus"); chckbxFocus.setEnabled(false); chckbxFocus.setSelected(spell.getComponents().contains(Component.F)); panel_1.add(chckbxFocus); JCheckBox chckbxDivineFocus = new JCheckBox("Divine Focus"); chckbxDivineFocus.setEnabled(false); chckbxDivineFocus.setSelected(spell.getComponents().contains(Component.DF)); panel_1.add(chckbxDivineFocus); JCheckBox chckbxExperience = new JCheckBox("Experience"); chckbxExperience.setEnabled(false); chckbxExperience.setSelected(spell.getComponents().contains(Component.XP)); panel_1.add(chckbxExperience); JLabel lblCastingTime = new JLabel("Casting Time:"); lblCastingTime.setFont(new Font("Tahoma", Font.BOLD, 14)); GridBagConstraints gbc_lblCastingTime = new GridBagConstraints(); gbc_lblCastingTime.anchor = GridBagConstraints.EAST; gbc_lblCastingTime.insets = new Insets(0, 0, 5, 5); gbc_lblCastingTime.gridx = 0; gbc_lblCastingTime.gridy = 3; panel.add(lblCastingTime, gbc_lblCastingTime); action = new JTextField(spell.getCastingTime().name()); action.setEditable(false); action.setColumns(10); GridBagConstraints gbc_action = new GridBagConstraints(); gbc_action.insets = new Insets(0, 0, 5, 5); gbc_action.fill = GridBagConstraints.HORIZONTAL; gbc_action.gridx = 1; gbc_action.gridy = 3; panel.add(action, gbc_action); JLabel lblRange = new JLabel("Range:"); lblRange.setFont(new Font("Tahoma", Font.BOLD, 14)); GridBagConstraints gbc_lblRange = new GridBagConstraints(); gbc_lblRange.anchor = GridBagConstraints.EAST; gbc_lblRange.insets = new Insets(0, 0, 5, 5); gbc_lblRange.gridx = 2; gbc_lblRange.gridy = 3; panel.add(lblRange, gbc_lblRange); range = new JTextField(spell.getRange().toString()); range.setEditable(false); range.setColumns(10); GridBagConstraints gbc_range = new GridBagConstraints(); gbc_range.insets = new Insets(0, 0, 5, 0); gbc_range.fill = GridBagConstraints.HORIZONTAL; gbc_range.gridx = 3; gbc_range.gridy = 3; panel.add(range, gbc_range); JScrollPane scrollPane = new JScrollPane(); GridBagConstraints gbc_scrollPane = new GridBagConstraints(); gbc_scrollPane.fill = GridBagConstraints.BOTH; gbc_scrollPane.gridx = 0; gbc_scrollPane.gridy = 1; add(scrollPane, gbc_scrollPane); JTextArea description = new JTextArea(spell.getDescription()); description.setEditable(false); description.setWrapStyleWord(true); description.setRows(10); scrollPane.setViewportView(description); description.setColumns(30); description.setLineWrap(true); } private static String asString(Set keys) { String str = keys.toString(); return str.substring(1, str.length()-1); } }