package no.ugland.utransprod.gui.edit;
import java.awt.BorderLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;
import no.ugland.utransprod.gui.Viewer;
import no.ugland.utransprod.gui.WindowInterface;
import no.ugland.utransprod.gui.handlers.AccidentViewHandler;
import no.ugland.utransprod.gui.model.AccidentModel;
import no.ugland.utransprod.model.Accident;
import no.ugland.utransprod.model.validators.AccidentValidator;
import no.ugland.utransprod.util.IconFeedbackPanel;
import no.ugland.utransprod.util.InternalFrameBuilder;
import com.jgoodies.forms.builder.ButtonStackBuilder;
import com.jgoodies.forms.builder.PanelBuilder;
import com.jgoodies.forms.factories.ButtonBarFactory;
import com.jgoodies.forms.layout.CellConstraints;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.validation.Validator;
import com.jgoodies.validation.view.ValidationComponentUtils;
import com.toedter.calendar.JDateChooser;
public class EditAccidentView extends AbstractEditView<AccidentModel, Accident>
implements Viewer {
private JTextField textFieldRegisteredBy;
private JDateChooser dateChooserRegistrationDate;
private JComboBox comboBoxJobFunction;
private JRadioButton radioButtonPersonalInjury;
private JRadioButton radioButtonNotPersonalInjury;
private JButton buttonAddParticipant;
private JButton buttonDeleteParticipant;
private JList listParticipants;
private JDateChooser dateChooserAccidentDate;
private JTextField textFieldTime;
private JTextArea textAreaDescription;
private JTextArea textAreaCause;
private JCheckBox checkBoxLeader;
private JCheckBox checkBoxPolice;
private JCheckBox checkBoxSocialSecurity;
private JLabel labelLink;
private JButton buttonPrint;
private JTextArea textAreaPreventiveActionComment;
private JComboBox comboBoxResponsible;
private JTextField textFieldAbsentDays;
private JDateChooser dateChooserDoneDate;
private JComboBox comboBoxStatus;
public EditAccidentView(final boolean searchDialog,
final AccidentModel accidentModel,
final AccidentViewHandler accidentViewHandler) {
super(searchDialog, accidentModel, accidentViewHandler);
}
private JPanel buildDetailPanel() {
FormLayout layout = new FormLayout("p,3dlu,70dlu,3dlu,p,3dlu,60dlu",
"p,3dlu,p");
PanelBuilder builder = new PanelBuilder(layout);
// PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
CellConstraints cc = new CellConstraints();
builder.addLabel("Registert av:", cc.xy(1, 1));
builder.add(textFieldRegisteredBy, cc.xy(3, 1));
builder.addLabel("Dato:", cc.xy(5, 1));
builder.add(dateChooserRegistrationDate, cc.xy(7, 1));
builder.addLabel("Avdeling for hendelse/ulykke:", cc.xyw(1, 3, 3));
builder.add(comboBoxJobFunction, cc.xyw(5, 3, 3));
return builder.getPanel();
}
private JPanel buildDateTimePanel() {
FormLayout layout = new FormLayout(
"60dlu,3dlu,p,3dlu,40dlu,10dlu,3dlu,p,3dlu,p", "p,3dlu,p");
PanelBuilder builder = new PanelBuilder(layout);
// PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
CellConstraints cc = new CellConstraints();
builder.addLabel("Dato/klokkeslett for hendelse/ulykke:",
cc.xyw(1, 1, 6));
builder.addLabel("Ferdig dato", cc.xy(8, 1));
builder.addLabel("Status", cc.xy(10, 1));
builder.add(dateChooserAccidentDate, cc.xy(1, 3));
builder.addLabel("/", cc.xy(3, 3));
builder.add(textFieldTime, cc.xy(5, 3));
builder.add(dateChooserDoneDate, cc.xy(8, 3));
builder.add(comboBoxStatus, cc.xy(10, 3));
return builder.getPanel();
}
private JPanel buildCheckBoxPanel() {
FormLayout layout = new FormLayout("p,3dlu,fill:70dlu",
"p,3dlu,p,3dlu,p");
PanelBuilder builder = new PanelBuilder(layout);
// PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
CellConstraints cc = new CellConstraints();
builder.add(checkBoxLeader, cc.xyw(1, 1, 3));
builder.add(checkBoxPolice, cc.xy(1, 3));
builder.add(checkBoxSocialSecurity, cc.xy(1, 5));
if (!search) {
builder.add(labelLink, cc.xy(3, 5));
}
return builder.getPanel();
}
private JPanel buildResponsiblePanel() {
FormLayout layout = new FormLayout("p,3dlu,p", "p");
PanelBuilder builder = new PanelBuilder(layout);
// PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
CellConstraints cc = new CellConstraints();
builder.addLabel("Saksbehandler:", cc.xy(1, 1));
builder.add(comboBoxResponsible, cc.xy(3, 1));
return builder.getPanel();
}
@Override
protected final JComponent buildEditPanel(final WindowInterface window) {
FormLayout layout = new FormLayout(
"10dlu,300dlu:grow,10dlu",
"10dlu,p,3dlu,p,3dlu,fill:p:grow,3dlu,p,3dlu,p,3dlu,fill:50dlu:grow,3dlu,p,3dlu,fill:50dlu:grow,3dlu,p,3dlu,fill:50dlu:grow,3dlu,p,3dlu,p,5dlu,"
+ "p");
PanelBuilder builder = new PanelBuilder(layout);
// PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
CellConstraints cc = new CellConstraints();
builder.add(buildDetailPanel(), cc.xy(2, 2));
// builder.add(radioButtonPersonalInjury, cc.xy(2, 4));
// builder.add(radioButtonNotPersonalInjury, cc.xy(2, 6));
builder.add(buildAccidentTypePanel(), cc.xy(2, 4));
if (!search) {
builder.add(buildParticipantsPanel(), cc.xy(2, 6));
}
builder.add(buildDateTimePanel(), cc.xy(2, 8));
builder.addLabel("Beskrivelse av hendelse/ulykke:", cc.xy(2, 10));
builder.add(new JScrollPane(textAreaDescription), cc.xy(2, 12));
builder.addLabel("�rsak til hendelse/ulykke:", cc.xy(2, 14));
builder.add(new JScrollPane(textAreaCause), cc.xy(2, 16));
builder.addLabel("Beskrivelse av tiltak:", cc.xy(2, 18));
builder.add(new JScrollPane(textAreaPreventiveActionComment),
cc.xy(2, 20));
builder.add(buildResponsiblePanel(), cc.xy(2, 22));
builder.add(buildCheckBoxPanel(), cc.xy(2, 24));
if (search) {
builder.add(
ButtonBarFactory.buildCenteredBar(buttonSave, buttonCancel),
cc.xy(2, 26));
} else {
builder.add(ButtonBarFactory.buildCenteredBar(buttonPrint,
buttonSave, buttonCancel), cc.xy(2, 26));
}
return new IconFeedbackPanel(validationResultModel, builder.getPanel());
}
private JPanel buildAccidentTypePanel() {
FormLayout layout = new FormLayout("p,40dlu,p,3dlu,30dlu", "p,3dlu,p");
PanelBuilder builder = new PanelBuilder(layout);
// PanelBuilder builder = new PanelBuilder(new FormDebugPanel(),layout);
CellConstraints cc = new CellConstraints();
builder.add(radioButtonPersonalInjury, cc.xy(1, 1));
builder.addLabel("Antall frav�rsdager:", cc.xy(3, 1));
builder.add(textFieldAbsentDays, cc.xy(5, 1));
builder.add(radioButtonNotPersonalInjury, cc.xy(1, 3));
return builder.getPanel();
}
private JPanel buildParticipantsPanel() {
FormLayout layout = new FormLayout("100dlu:grow,3dlu,p",
"p,3dlu,40dlu:grow");
PanelBuilder builder = new PanelBuilder(layout);
CellConstraints cc = new CellConstraints();
builder.addLabel("Involverte:", cc.xy(1, 1));
builder.add(new JScrollPane(listParticipants), cc.xy(1, 3));
builder.add(buildParticipantButtonPanel(), cc.xy(3, 3));
return builder.getPanel();
}
private JPanel buildParticipantButtonPanel() {
ButtonStackBuilder builder = new ButtonStackBuilder();
builder.addGridded(buttonAddParticipant);
builder.addGlue();
builder.addGridded(buttonDeleteParticipant);
return builder.getPanel();
}
@Override
protected final Validator getValidator(final AccidentModel object,
boolean search) {
return new AccidentValidator(object);
}
@Override
protected final void initComponentAnnotations() {
ValidationComponentUtils.setMandatory(textFieldRegisteredBy, true);
ValidationComponentUtils.setMessageKey(textFieldRegisteredBy,
"Ulykke.registert av");
ValidationComponentUtils
.setMandatory(dateChooserRegistrationDate, true);
ValidationComponentUtils.setMessageKey(dateChooserRegistrationDate,
"Ulykke.registreringsdato");
ValidationComponentUtils.setMandatory(comboBoxJobFunction, true);
ValidationComponentUtils.setMessageKey(comboBoxJobFunction,
"Ulykke.funksjon");
ValidationComponentUtils.setMandatory(radioButtonPersonalInjury, true);
ValidationComponentUtils.setMessageKey(radioButtonPersonalInjury,
"Ulykke.type");
ValidationComponentUtils.setMandatory(dateChooserAccidentDate, true);
ValidationComponentUtils.setMessageKey(dateChooserAccidentDate,
"Ulykke.ulykkesdato");
ValidationComponentUtils.setMandatory(textAreaDescription, true);
ValidationComponentUtils.setMessageKey(textAreaDescription,
"Ulykke.beskrivelse");
ValidationComponentUtils.setMandatory(textAreaCause, true);
ValidationComponentUtils.setMessageKey(textAreaCause, "Ulykke.�rsak");
}
@Override
protected final void initEditComponents(final WindowInterface aWindow) {
textFieldRegisteredBy = ((AccidentViewHandler) viewHandler)
.getTextFieldRegisteredBy(presentationModel, search);
dateChooserRegistrationDate = ((AccidentViewHandler) viewHandler)
.getDateChooserRegistrationDate(presentationModel, search);
comboBoxJobFunction = ((AccidentViewHandler) viewHandler)
.getComboBoxJobFunction(presentationModel);
radioButtonPersonalInjury = ((AccidentViewHandler) viewHandler)
.getRadioButtonPersonalInjury(presentationModel);
radioButtonNotPersonalInjury = ((AccidentViewHandler) viewHandler)
.getRadioButtonNotPersonalInjury(presentationModel);
buttonAddParticipant = ((AccidentViewHandler) viewHandler)
.getButtonAddParticipant(aWindow, presentationModel);
buttonDeleteParticipant = ((AccidentViewHandler) viewHandler)
.getButtonDeleteParticipant(aWindow, presentationModel);
listParticipants = ((AccidentViewHandler) viewHandler)
.getListParticipants(presentationModel);
dateChooserAccidentDate = ((AccidentViewHandler) viewHandler)
.getDateChooserAccidentDate(presentationModel);
textFieldTime = ((AccidentViewHandler) viewHandler)
.getTextFieldTime(presentationModel);
textAreaDescription = ((AccidentViewHandler) viewHandler)
.getTextAreaDescription(presentationModel);
textAreaCause = ((AccidentViewHandler) viewHandler)
.getTextAreaCause(presentationModel);
checkBoxLeader = ((AccidentViewHandler) viewHandler)
.getCheckBoxLeader(presentationModel);
checkBoxPolice = ((AccidentViewHandler) viewHandler)
.getCheckBoxPolice(presentationModel);
checkBoxSocialSecurity = ((AccidentViewHandler) viewHandler)
.getCheckBoxSocialSecurity(presentationModel);
labelLink = ((AccidentViewHandler) viewHandler).getLabelLink(aWindow);
buttonPrint = ((AccidentViewHandler) viewHandler).getButtonPrint(
aWindow, presentationModel);
textAreaPreventiveActionComment = ((AccidentViewHandler) viewHandler)
.getTextAreaPreventiveActionComment(presentationModel);
comboBoxResponsible = ((AccidentViewHandler) viewHandler)
.getComboBoxResponsible(presentationModel);
textFieldAbsentDays = ((AccidentViewHandler) viewHandler)
.getTextFieldAbsentDays(presentationModel);
dateChooserDoneDate = ((AccidentViewHandler) viewHandler)
.getDateChooserDoneDate(presentationModel);
comboBoxStatus = ((AccidentViewHandler) viewHandler)
.getComboBoxStatus(presentationModel);
}
public final String getDialogName() {
return "EditAccidentView";
}
public final String getHeading() {
return "Ulykke";
}
public WindowInterface buildWindow() {
WindowInterface windowDialog = InternalFrameBuilder.buildInternalFrame(
"Registrere ulykke/hendelse",
((AccidentViewHandler) viewHandler).getRegisterWindowSize(),
false);
windowDialog.add(buildPanel(windowDialog), BorderLayout.CENTER);
return windowDialog;
}
public void cleanUp() {
}
public String getTitle() {
return "Registrere hendelse/ulykke";
}
public void initWindow() {
}
public boolean useDispose() {
return false;
}
}