package mapmaker; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class InheritTextArea extends JPanel implements InheritComponent { private JTextArea mTextArea; public JCheckBox mCheckBox = new JCheckBox("Inherit?"); private String mInheritedValue; private String mValue; public InheritTextArea(int aRows, int aCols) { mTextArea = new JTextArea(aRows, aCols); setLayout(new BorderLayout()); mCheckBox.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { boolean selected = mCheckBox.isSelected(); if (selected) { // Record old value. mValue = mTextArea.getText(); // Insert inherited value. mTextArea.setText(mInheritedValue); } else { // Restore old value. mTextArea.setText(mValue); } setInherited(selected); } }); add(new JScrollPane(mTextArea), BorderLayout.CENTER); JPanel placerPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); placerPanel.add(mCheckBox); add(placerPanel, BorderLayout.SOUTH); mCheckBox.setEnabled(false); mTextArea.setLineWrap(true); mTextArea.setWrapStyleWord(true); } public void setValues(String aInheritedValue, String aValue, boolean aInherited) { // Determine if there is a value to inherit. boolean enabled = (aInheritedValue != null && !aInheritedValue.equals("")); mCheckBox.setEnabled(enabled); setInherited(aInherited); if (aInherited) { mTextArea.setText(aInheritedValue); } else { mTextArea.setText(aValue); } mInheritedValue = aInheritedValue; mValue = aValue; } public String getInheritedValue() { return mInheritedValue; } public void setInherited(boolean aInherited) { mCheckBox.setSelected(aInherited); mTextArea.setEnabled(!aInherited); } public boolean isInherited() { return mCheckBox.isSelected(); } public void setText(String aText) { mTextArea.setText(aText); } public String getText() { return mTextArea.getText(); } }