package timeflow.app.ui;
|
|
import timeflow.model.*;
|
import timeflow.app.ui.ImportDelimitedPanel.SchemaPanel;
|
import timeflow.data.time.*;
|
import timeflow.data.db.*;
|
|
import javax.swing.*;
|
|
import java.util.*;
|
import java.awt.*;
|
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionListener;
|
|
// panel with form for editing a given database entry
|
public class EditRecordPanel extends JPanel
|
{
|
|
Act act;
|
HashMap<Field, EditValuePanel> fieldUI = new HashMap<Field, EditValuePanel>();
|
JButton submit, cancel;
|
Dimension idealSize = new Dimension();
|
TFModel model;
|
|
private static void edit(final TFModel model, final Act act, final boolean isAdd)
|
{
|
final JFrame window = new JFrame(isAdd ? "Add Record" : "Edit Record");
|
window.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
|
final EditRecordPanel editor = new EditRecordPanel(model, act);
|
window.getContentPane().setLayout(new GridLayout(1, 1));
|
window.getContentPane().add(editor);
|
editor.submit.addActionListener(new ActionListener()
|
{
|
|
@Override
|
public void actionPerformed(ActionEvent e)
|
{
|
window.setVisible(false);
|
editor.submitValues();
|
model.noteAdd(this);
|
}
|
});
|
editor.cancel.addActionListener(new ActionListener()
|
{
|
|
@Override
|
public void actionPerformed(ActionEvent e)
|
{
|
window.setVisible(false);
|
if (isAdd)
|
{
|
model.getDB().delete(act);
|
}
|
}
|
});
|
window.setBounds(50, 50, 700, 500);
|
window.pack();
|
window.setVisible(true);
|
}
|
|
public static void edit(TFModel model, Act act)
|
{
|
edit(model, act, false);
|
}
|
|
public static void add(TFModel model)
|
{
|
Act act = model.getDB().createAct();
|
edit(model, act, true);
|
}
|
|
public static void add(TFModel model, RoughTime r)
|
{
|
Act act = model.getDB().createAct();
|
act.set(act.getDB().getField(VirtualField.START), r);
|
edit(model, act, true);
|
}
|
|
public EditRecordPanel(TFModel model, Act act)
|
{
|
this.model = model;
|
this.act = act;
|
|
setBackground(Color.white);
|
setLayout(new BorderLayout());
|
|
JPanel buttons = new JPanel();
|
add(buttons, BorderLayout.SOUTH);
|
buttons.setBackground(Color.lightGray);
|
submit = new JButton("OK");
|
buttons.add(submit);
|
cancel = new JButton("Cancel");
|
buttons.add(cancel);
|
|
JPanel entryPanel = new JPanel();
|
JScrollPane scroller = new JScrollPane(entryPanel);
|
add(scroller, BorderLayout.CENTER);
|
|
java.util.List<Field> fields = act.getDB().getFields();
|
int n = fields.size();
|
entryPanel.setLayout(null);
|
|
DBUtils.setRecSizesFromCurrent(act.getDB());
|
int top = 0;
|
|
for (Field f : fields)
|
{
|
EditValuePanel p = new EditValuePanel(f.getName(), act.get(f),
|
f.getType(), f.getRecommendedSize() > 100);
|
entryPanel.add(p);
|
Dimension d = p.getPreferredSize();
|
p.setBounds(0, top, d.width, d.height);
|
top += d.height;
|
idealSize.width = Math.max(d.width + 5, idealSize.width);
|
idealSize.height = Math.max(top + 45, idealSize.height);
|
fieldUI.put(f, p);
|
}
|
|
}
|
|
public Dimension getPreferredSize()
|
{
|
return idealSize;
|
}
|
|
public void submitValues()
|
{
|
for (Field f : fieldUI.keySet())
|
{
|
act.set(f, fieldUI.get(f).getInputValue());
|
}
|
model.noteRecordChange(this);
|
}
|
}
|