package open.dolphin.system;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import javax.swing.ButtonGroup;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import open.dolphin.client.ClientContext;
/**
* AgreementPanel
*
* @author Minagawa,Kazushi
*/
public final class AgreementPanel extends JPanel {
public static final String AGREE_PROP = "agreeProp";
// モデル
private AgreementModel model;
// 束縛サポート
private final PropertyChangeSupport boundSupport = new PropertyChangeSupport(this);
// GUI コンポーネント
private JTextArea agreeArea;
private JRadioButton agreeBtn;
private JRadioButton disagreeBtn;
/**
* AgreementPanelを生成する。
* @param model AgreementModel
*/
public AgreementPanel(AgreementModel model) {
initialize();
connect();
setModel(model);
}
public AgreementModel getModel() {
return model;
}
public void setModel(AgreementModel model) {
this.model = model;
if (model != null) {
agreeArea.setText(model.getAgreeText());
agreeBtn.setSelected(model.isAgree());
disagreeBtn.setSelected(!model.isAgree());
}
}
public boolean isAgree() {
return getModel().isAgree();
}
public void setAgree(boolean newAgree) {
boolean old = getModel().isAgree();
getModel().setAgree(newAgree);
boundSupport.firePropertyChange(AGREE_PROP, old, getModel().isAgree());
}
public void addAgreePropertyListener(PropertyChangeListener l) {
boundSupport.addPropertyChangeListener(AGREE_PROP, l);
}
public void removeAgreePropertyListener(PropertyChangeListener l) {
boundSupport.removePropertyChangeListener(AGREE_PROP, l);
}
private void initialize() {
agreeArea = new JTextArea();
agreeArea.setEditable(false);
agreeArea.setLineWrap(true);
agreeArea.setMargin(new Insets(10, 10, 10, 10));
java.util.ResourceBundle bundle = ClientContext.getMyBundle(AgreementPanel.class);
agreeBtn = new JRadioButton(bundle.getString("actionText.agree"));
disagreeBtn = new JRadioButton(bundle.getString("actionText.disagree"));
ButtonGroup bg = new ButtonGroup();
bg.add(agreeBtn);
bg.add(disagreeBtn);
JPanel btnPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
btnPanel.add(agreeBtn);
btnPanel.add(disagreeBtn);
JScrollPane scroller = new JScrollPane(agreeArea, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
this.setLayout(new BorderLayout());
this.add(scroller, BorderLayout.CENTER);
this.add(btnPanel, BorderLayout.SOUTH);
}
private void connect() {
ActionListener agreeListener = (ActionEvent e) -> {
setAgree(agreeBtn.isSelected());
};
agreeBtn.addActionListener(agreeListener);
disagreeBtn.addActionListener(agreeListener);
}
}