package timeflow.views; import timeflow.model.*; import timeflow.util.Pad; import timeflow.data.db.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; public class DescriptionView extends AbstractView { JTextArea content; JComponent controls; public DescriptionView(TFModel model) { super(model); setLayout(new BorderLayout()); JPanel left=new Pad(5,5); left.setBackground(Color.white); add(left, BorderLayout.WEST); JPanel right=new Pad(5,5); right.setBackground(Color.white); add(right, BorderLayout.EAST); JPanel top=new JPanel(); add(top, BorderLayout.NORTH); top.setLayout(new FlowLayout(FlowLayout.LEFT)); top.add(new JLabel("Notes & Comments on This Data:")); content=new JTextArea(); content.setLineWrap(true); content.setWrapStyleWord(true); add(content, BorderLayout.CENTER); content.addKeyListener(new KeyAdapter() { @Override public void keyReleased(KeyEvent e) { getModel().getDB().setDescription(content.getText()); getModel().noteNewDescription(DescriptionView.this); }}); controls=new HtmlControls("Each TimeFlow data set
comes with a free-form
"+ "description area.

This is a good place to write
notes "+ "about sources, how the data
was cleaned, etc."); } @Override public JComponent _getControls() { return controls; } @Override protected void _note(TFEvent e) { if (e.type==TFEvent.Type.DESCRIPTION_CHANGE || e.type==TFEvent.Type.DATABASE_CHANGE) { content.setText(getModel().getDB().getDescription()); repaint(); } } @Override public String getName() { return "Notes"; } @Override protected void onscreen(boolean majorChange) { ActDB db=getModel().getDB(); content.setText(db.getDescription()); content.requestFocus(); } }