/* EditMontageReferencePanel.java created 2007-10-24
*
*/
package org.signalml.app.view.montage;
import static org.signalml.app.util.i18n.SvarogI18n._;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.JPanel;
import org.signalml.app.view.common.components.panels.TextPanePanel;
import org.signalml.domain.montage.Montage;
import org.signalml.util.Util;
/** EditMontageReferencePanel
*
*
* @author Michal Dobaczewski © 2007-2008 CC Otwarte Systemy Komputerowe Sp. z o.o.
*/
public class MontageMiscellaneousPanel extends JPanel implements PropertyChangeListener {
private static final long serialVersionUID = 1L;
private Montage montage;
private TextPanePanel editDescriptionPanel;
public MontageMiscellaneousPanel() {
super();
initialize();
}
private void initialize() {
setLayout(new GridLayout(3,1,3,3));
add(getEditDescriptionPanel());
}
public Montage getMontage() {
return montage;
}
public void setMontage(Montage montage) {
if (this.montage != montage) {
if (this.montage != null) {
this.montage.removePropertyChangeListener(Montage.DESCRIPTION_PROPERTY, this);
}
this.montage = montage;
if (montage != null) {
montage.addPropertyChangeListener(Montage.DESCRIPTION_PROPERTY, this);
String text = montage.getDescription();
editDescriptionPanel.getTextPane().setText(text != null ? text : "");
}
}
}
public TextPanePanel getEditDescriptionPanel() {
if (editDescriptionPanel == null) {
editDescriptionPanel = new TextPanePanel(_("Edit description"));
editDescriptionPanel.setPreferredSize(new Dimension(300,200));
editDescriptionPanel.setMinimumSize(new Dimension(300,200));
editDescriptionPanel.getTextPane().addFocusListener(new FocusAdapter() {
@Override
public void focusLost(FocusEvent e) {
if (montage != null) {
String description = editDescriptionPanel.getTextPane().getText();
// XXX: this doesn't look good
if (description == null || description.isEmpty()) {
montage.setDescription(description);
}
}
}
});
}
return editDescriptionPanel;
}
@Override
public void propertyChange(PropertyChangeEvent evt) {
String name = evt.getPropertyName();
if (Montage.DESCRIPTION_PROPERTY.equals(name)) {
String text = (String) evt.getNewValue();
editDescriptionPanel.getTextPane().setText(text != null ? text : "");
}
}
}