package org.celllife.idart.gui.patient;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import org.apache.log4j.Logger;
import org.celllife.idart.database.hibernate.Alerts;
import org.celllife.idart.database.hibernate.util.HibernateUtil;
import org.celllife.idart.gui.platform.GenericFormGui;
import org.celllife.idart.gui.utils.ResourceUtils;
import org.celllife.idart.gui.utils.iDartColor;
import org.celllife.idart.gui.utils.iDartFont;
import org.celllife.idart.gui.utils.iDartImage;
import org.celllife.idart.messages.Messages;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.graphics.Rectangle;
import org.eclipse.swt.layout.RowData;
import org.eclipse.swt.layout.RowLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
import org.hibernate.Criteria;
import org.hibernate.Query;
public class StudyAlerts extends GenericFormGui {
private Table tblAlerts;
private Group grpAlerts;
public StudyAlerts(Shell shell) {
super(shell, HibernateUtil.getNewSession());
}
private static Logger log = Logger.getLogger(AddPatientToStudy.class);
private static SimpleDateFormat timeFormat = new SimpleDateFormat("d MMM yyyy ' at ' HH:mm a"); //$NON-NLS-1$
@Override
protected void clearForm() {
MessageBox m = new MessageBox(getShell(), SWT.ICON_WARNING
| SWT.YES | SWT.NO);
m.setText(Messages.getString("StudyAlerts.deleteWarningTitle"));
m
.setMessage(Messages.getString("StudyAlerts.deleteWarning"));
if (m.open() == SWT.YES) {
tblAlerts.removeAll();
String hql = "update Alerts set Void = TRUE";
Query query = hSession.createQuery(hql);
query.executeUpdate();
hSession.flush();
}
}
@Override
protected void cmdCancelWidgetSelected() {
closeShell(true);
}
@Override
protected void cmdClearWidgetSelected() {
clearForm();
}
@Override
protected void cmdSaveWidgetSelected() {
}
@Override
protected void createCompButtons() {
buildCompButtons();
}
private void createTable() {
tblAlerts = new Table(grpAlerts, SWT.FULL_SELECTION);
tblAlerts.setHeaderVisible(true);
tblAlerts.setLinesVisible(true);
tblAlerts.setBounds(new Rectangle(5, 10,780, 300));
tblAlerts.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8));
TableColumn tblClmNumber = new TableColumn(tblAlerts, SWT.NONE);
tblClmNumber.setWidth(250);
tblClmNumber.setText("Date");
TableColumn tblClmDrugName = new TableColumn(tblAlerts, SWT.NONE);
tblClmDrugName.setWidth(530);
tblClmDrugName.setText("Alert Message");
populateTable();
}
@SuppressWarnings("unchecked")
private void populateTable() {
// getHSession().get);
String hql = "select alert from Alerts as alert where alert.Void = FALSE order by alert.alertDate";
List<Alerts> result = hSession.createQuery(hql).setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();
if (result == null) return;
if (result.size()==0) {
btnClear.setEnabled(false);
}else{
for (Alerts alert: result){
TableItem ti = new TableItem(tblAlerts,SWT.NONE);
ti.setBackground(ResourceUtils.getColor(iDartColor.WHITE));
String date = timeFormat.format(alert.getAlertDate());
ti.setText(0,date);
ti.setText(1,alert.getAlertMessage());
}
}
}
@Override
protected void createCompHeader() {
String headerTxt = "Study Alerts";
iDartImage icoImage = iDartImage.PACKAGESARRIVE;
buildCompHeader(headerTxt, icoImage);
}
@Override
protected void createContents() {
grpAlerts = new Group(getShell(), SWT.BORDER);
grpAlerts.setBounds(new Rectangle(5, 137, 790, 369));
createTable();
}
@Override
protected void enableFields(boolean enable) {
}
@Override
protected boolean fieldsOk() {
return false;
}
@Override
protected boolean submitForm() {
return false;
}
@Override
protected void createShell() {
String shellTxt = Messages.getString("StudyAlerts.title"); //$NON-NLS-1$;
Rectangle bounds = new Rectangle(25, 0, 800, 630);
buildShell(shellTxt, bounds);
}
@Override
protected void setLogger() {
super.setLog(log);
}
protected void buildCompButtons() {
Composite myCmp = new Composite(getShell(), SWT.NONE);
RowLayout rowlyt = new RowLayout();
rowlyt.justify = true;
rowlyt.pack = false;
rowlyt.spacing = 10;
myCmp.setLayout(rowlyt);
RowData rowD = new RowData(170, 30);
setCompButtons(new Composite(myCmp, SWT.NONE));
getCompButtons().setLayout(rowlyt);
// btnClear
btnClear = new Button(getCompButtons(), SWT.NONE);
btnClear.setText(Messages.getString("genericformgui.button.clear.text")); //$NON-NLS-1$
btnClear.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8));
btnClear.setToolTipText(Messages
.getString("genericformgui.button.clear.tooltip")); //$NON-NLS-1$
// btnCancel
btnCancel = new Button(getCompButtons(), SWT.NONE);
btnCancel.setText(Messages.getString("common.button.close.text")); //$NON-NLS-1$
btnCancel.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8));
btnCancel.setToolTipText(Messages
.getString("genericformgui.button.cancel.tooltip")); //$NON-NLS-1$
btnClear.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
cmdClearWidgetSelected();
}
});
btnCancel.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
cmdCancelWidgetSelected();
}
});
Control[] buttons = getCompButtons().getChildren();
for (int i = 0; i < buttons.length; i++) {
buttons[i].setLayoutData(rowD);
}
getCompButtons().pack();
Rectangle b = getShell().getBounds();
myCmp.setBounds(0, b.height - 79, b.width, 40);
}
}