/* * iDART: The Intelligent Dispensing of Antiretroviral Treatment * Copyright (C) 2006 Cell-Life * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 as published by * the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License version * 2 for more details. * * You should have received a copy of the GNU General Public License version 2 * along with this program; if not, write to the Free Software Foundation, * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA * */ package org.celllife.idart.gui.generalAdmin; import java.lang.reflect.InvocationTargetException; import model.manager.excel.reports.in.PatientSheet; import org.apache.log4j.Logger; import org.celllife.idart.commonobjects.iDartProperties; import org.celllife.idart.database.hibernate.util.HibernateUtil; import org.celllife.idart.gui.clinic.AddClinic; import org.celllife.idart.gui.doctor.AddDoctor; import org.celllife.idart.gui.drug.AddDrug; import org.celllife.idart.gui.drugGroup.AddDrugGroup; import org.celllife.idart.gui.platform.GenericAdminGui; import org.celllife.idart.gui.platform.GenericFormGui; import org.celllife.idart.gui.stockCenter.StockCenterInfo; import org.celllife.idart.gui.user.ManagePharmUsers; import org.celllife.idart.gui.utils.ResourceUtils; import org.celllife.idart.gui.utils.iDartFont; import org.celllife.idart.gui.utils.iDartImage; import org.celllife.idart.messages.Messages; import org.celllife.idart.misc.MessageUtil; import org.celllife.idart.misc.SafeSaveDialog; import org.celllife.idart.misc.SafeSaveDialog.FileType; import org.celllife.idart.misc.task.Import; import org.celllife.idart.misc.task.TaskException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.jface.dialogs.InputDialog; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.dialogs.ProgressMonitorDialog; import org.eclipse.jface.operation.IRunnableWithProgress; import org.eclipse.jface.window.Window; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.program.Program; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.FileDialog; import org.eclipse.swt.widgets.Group; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.hibernate.Session; /** */ public class GeneralAdmin extends GenericAdminGui { /** * Constructor for GeneralAdmin. * @param parent Shell */ public GeneralAdmin(Shell parent) { super(parent); } @Override protected void createShell() { getLog().info(Messages.getString("GeneralAdmin.title.header")); //$NON-NLS-1$ String shellText = Messages.getString("GeneralAdmin.title.update"); //$NON-NLS-1$ buildShell(shellText); } /** * This method initializes compHeader */ @Override protected void createCompHeader() { String headerText = Messages.getString("GeneralAdmin.title.update"); //$NON-NLS-1$ iDartImage icoImage = iDartImage.GENERALADMIN; // Building the component from the GenericAdminGui buildCompHeader(headerText, icoImage); } @Override protected void createCompOptions() { createMyGroups(); } private void createMyGroups() { // create the 4 groups createGrpPharmacy(); createGrpImport(); createGrpClinic(); createGrpDrug(); createGrpDoctor(); createGrpDrugGroup(); } @Override protected void setLogger() { setLog(Logger.getLogger(this.getClass())); } /** * This method initializes grpClinics */ private void createGrpClinic() { // grpClinics Group grpClinics = new Group(getCompOptions(), SWT.NONE); grpClinics.setBounds(new Rectangle(495, 13, 305, 150)); grpClinics.setText(Messages.getString("GeneralAdmin.group.title")); //$NON-NLS-1$ grpClinics.setFont(ResourceUtils.getFont(iDartFont.VERASANS_12)); // lblPicClinics Label lblPicClinics = new Label(grpClinics, SWT.NONE); lblPicClinics.setBounds(new org.eclipse.swt.graphics.Rectangle(6, 0, 50, 43)); lblPicClinics.setText(EMPTY); lblPicClinics.setImage(ResourceUtils.getImage(iDartImage.CLINIC)); // btnClinicsAdd Button btnClinicsAdd = new Button(grpClinics, SWT.NONE); btnClinicsAdd.setBounds(new org.eclipse.swt.graphics.Rectangle(35, 55, 235, 30)); btnClinicsAdd .setToolTipText(Messages.getString("GeneralAdmin.button.tooltip")); //$NON-NLS-1$ btnClinicsAdd.setText(Messages.getString("GeneralAdmin.button.title")); //$NON-NLS-1$ btnClinicsAdd.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnClinicsAdd .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) { cmd_clinicsAdd(); } }); // btnClinicsUpdate Button btnClinicsUpdate = new Button(grpClinics, SWT.NONE); btnClinicsUpdate.setBounds(new org.eclipse.swt.graphics.Rectangle(35, 100, 235, 30)); btnClinicsUpdate .setToolTipText(Messages.getString("GeneralAdmin.clinic.button.tooltip")); //$NON-NLS-1$ btnClinicsUpdate.setText(Messages.getString("GeneralAdmin.clinic.button.title")); //$NON-NLS-1$ btnClinicsUpdate.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnClinicsUpdate .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) { cmd_clinicsUpdate(); } }); } /** * This method initializes grpDoctors */ private void createGrpDoctor() { // grpDoctors Group grpDoctors = new Group(getCompOptions(), SWT.NONE); grpDoctors.setBounds(new Rectangle(495, 329, 305, 150)); grpDoctors.setText(Messages.getString("GeneralAdmin.doctors.group.title")); //$NON-NLS-1$ grpDoctors.setFont(ResourceUtils.getFont(iDartFont.VERASANS_12)); // lblPicDoctors Label lblPicDoctors = new Label(grpDoctors, SWT.NONE); lblPicDoctors.setBounds(new org.eclipse.swt.graphics.Rectangle(6, 0, 50, 43)); lblPicDoctors.setText(EMPTY); lblPicDoctors.setImage(ResourceUtils.getImage(iDartImage.DOCTOR)); // btnDoctorsAdd Button btnDoctorsAdd = new Button(grpDoctors, SWT.NONE); btnDoctorsAdd.setText(Messages.getString("GeneralAdmin.doctors.button.title")); //$NON-NLS-1$ btnDoctorsAdd .setToolTipText(Messages.getString("GeneralAdmin.doctors.button.tooltip")); //$NON-NLS-1$ btnDoctorsAdd.setBounds(new org.eclipse.swt.graphics.Rectangle(35, 55, 235, 30)); btnDoctorsAdd.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnDoctorsAdd .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) { cmd_doctorAdd(); } }); // btnDoctorsUpdate Button btnDoctorsUpdate = new Button(grpDoctors, SWT.NONE); btnDoctorsUpdate.setText(Messages.getString("GeneralAdmin.button.docupdate.title")); //$NON-NLS-1$ btnDoctorsUpdate .setToolTipText(Messages.getString("GeneralAdmin.button.docupdate.tooltip")); //$NON-NLS-1$ btnDoctorsUpdate.setBounds(new org.eclipse.swt.graphics.Rectangle(35, 100, 235, 30)); btnDoctorsUpdate.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnDoctorsUpdate .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) { cmd_doctorUpdate(); } }); } /** * This method initializes grpDrugs */ private void createGrpDrug() { // grpDrugs Group grpDrugs = new Group(getCompOptions(), SWT.NONE); grpDrugs.setBounds(new Rectangle(50, 329, 305, 150)); grpDrugs.setText(Messages.getString("GeneralAdmin.group.drug.title")); //$NON-NLS-1$ grpDrugs.setFont(ResourceUtils.getFont(iDartFont.VERASANS_12)); // lblPicDrugs Label lblPicDrugs = new Label(grpDrugs, SWT.NONE); lblPicDrugs.setBounds(new org.eclipse.swt.graphics.Rectangle(6, 0, 50, 43)); lblPicDrugs.setText(EMPTY); lblPicDrugs.setImage(ResourceUtils .getImage(iDartImage.PRESCRIPTIONADDDRUG)); // btnDrugsAdd Button btnDrugsAdd = new Button(grpDrugs, SWT.NONE); btnDrugsAdd.setText(Messages.getString("GeneralAdmin.button.drug.title")); //$NON-NLS-1$ btnDrugsAdd .setToolTipText(Messages.getString("GeneralAdmin.button.drug.tooltip")); //$NON-NLS-1$ btnDrugsAdd.setBounds(new org.eclipse.swt.graphics.Rectangle(35, 55, 235, 30)); btnDrugsAdd.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnDrugsAdd .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) { cmd_drugsAdd(); } }); // btnDrugsUpdate Button btnDrugsUpdate = new Button(grpDrugs, SWT.NONE); btnDrugsUpdate.setText(Messages.getString("GeneralAdmin.button.drugupdate.title")); //$NON-NLS-1$ btnDrugsUpdate .setToolTipText(Messages.getString("GeneralAdmin.button.drugupdate.tooltip")); //$NON-NLS-1$ btnDrugsUpdate.setBounds(new org.eclipse.swt.graphics.Rectangle(35, 100, 235, 30)); btnDrugsUpdate.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnDrugsUpdate .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) { cmd_drugsUpdate(); } }); if(!iDartProperties.enableDrugEditor) { btnDrugsAdd.setEnabled(false); btnDrugsUpdate.setEnabled(false); } } /** * This method initializes grpDoctors */ private void createGrpDrugGroup() { // grpDrugGroups Group grpDrugGroups = new Group(getCompOptions(), SWT.NONE); grpDrugGroups.setBounds(new Rectangle(495, 171, 305, 150)); grpDrugGroups.setText(Messages.getString("GeneralAdmin.group.drugupdate.title")); //$NON-NLS-1$ grpDrugGroups.setFont(ResourceUtils.getFont(iDartFont.VERASANS_12)); // lblPicDoctors Label lblPicDrugGroups = new Label(grpDrugGroups, SWT.NONE); lblPicDrugGroups.setBounds(new org.eclipse.swt.graphics.Rectangle(6, 0, 50, 43)); lblPicDrugGroups.setText(EMPTY); lblPicDrugGroups.setImage(ResourceUtils.getImage(iDartImage.DRUGGROUP)); // btnRegimenAdd Button btnRegimenAdd = new Button(grpDrugGroups, SWT.NONE); btnRegimenAdd.setText(Messages.getString("GeneralAdmin.button.regimen.title")); //$NON-NLS-1$ btnRegimenAdd .setToolTipText(Messages.getString("GeneralAdmin.button.regimen.tooltip")); //$NON-NLS-1$ btnRegimenAdd.setBounds(new org.eclipse.swt.graphics.Rectangle(35, 55, 235, 30)); btnRegimenAdd.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnRegimenAdd .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) { cmd_regimenAdd(); } }); // btnRegimenUpdate Button btnRegimenUpdate = new Button(grpDrugGroups, SWT.NONE); btnRegimenUpdate.setText(Messages.getString("GeneralAdmin.button.regimenupdate.title")); //$NON-NLS-1$ btnRegimenUpdate .setToolTipText(Messages.getString("GeneralAdmin.button.regimenupdate.tooltip")); //$NON-NLS-1$ btnRegimenUpdate.setBounds(new org.eclipse.swt.graphics.Rectangle(35, 100, 235, 30)); btnRegimenUpdate.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnRegimenUpdate .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) { cmd_regimenUpdate(); } }); if(!iDartProperties.enableDrugGroupEditor) { btnRegimenAdd.setEnabled(false); btnRegimenUpdate.setEnabled(false); } } /** * This method initializes grpDoctors */ private void createGrpImport() { Group grpImport = new Group(getCompOptions(), SWT.NONE); grpImport.setBounds(new Rectangle(50, 171, 305, 150)); grpImport.setText(Messages.getString("GeneralAdmin.group.import.title")); //$NON-NLS-1$ grpImport.setFont(ResourceUtils.getFont(iDartFont.VERASANS_12)); Label lblPicImport = new Label(grpImport, SWT.NONE); lblPicImport.setBounds(new org.eclipse.swt.graphics.Rectangle(6, 0, 50, 43)); lblPicImport.setText(EMPTY); lblPicImport.setImage(ResourceUtils.getImage(iDartImage.PATIENTADMIN)); Button btnGenerateTemplate = new Button(grpImport, SWT.NONE); btnGenerateTemplate.setText(Messages.getString("GeneralAdmin.button.generateTemplate.title")); //$NON-NLS-1$ btnGenerateTemplate .setToolTipText(Messages.getString("GeneralAdmin.button.generateTemplate.tooltip")); //$NON-NLS-1$ btnGenerateTemplate.setBounds(new org.eclipse.swt.graphics.Rectangle(35, 55, 235, 30)); btnGenerateTemplate.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnGenerateTemplate .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) { cmd_generateTemplate(); } }); // btnRegimenUpdate Button btnImportPatients = new Button(grpImport, SWT.NONE); btnImportPatients.setText(Messages.getString("GeneralAdmin.button.importPatients.title")); //$NON-NLS-1$ btnImportPatients .setToolTipText(Messages.getString("GeneralAdmin.button.importPatients.tooltip")); //$NON-NLS-1$ btnImportPatients.setBounds(new org.eclipse.swt.graphics.Rectangle(35, 100, 235, 30)); btnImportPatients.setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnImportPatients .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) { cmd_importPatients(); } }); } /** * This method initializes grpPharmacy */ private void createGrpPharmacy() { // grpPharmacy Group grpPharmacy = new Group(getCompOptions(), SWT.NONE); grpPharmacy.setBounds(new Rectangle(50, 13, 305, 150)); grpPharmacy.setText(Messages.getString("GeneralAdmin.group.pharmacy.title")); //$NON-NLS-1$ grpPharmacy.setFont(ResourceUtils.getFont(iDartFont.VERASANS_12)); // lblPicPharmacy Label lblPicPharmacy = new Label(grpPharmacy, SWT.NONE); lblPicPharmacy.setBounds(new org.eclipse.swt.graphics.Rectangle(10, 0, 50, 43)); lblPicPharmacy.setText(EMPTY); lblPicPharmacy .setImage(ResourceUtils.getImage(iDartImage.PHARMACYUSER)); // btnManagePharmUsers Button btnManagePharmUsers = new Button(grpPharmacy, SWT.NONE); btnManagePharmUsers.setBounds(new org.eclipse.swt.graphics.Rectangle( 35, 100, 235, 30)); btnManagePharmUsers .setToolTipText(Messages.getString("GeneralAdmin.button.pharmacy.tooltip")); //$NON-NLS-1$ btnManagePharmUsers.setText(Messages.getString("GeneralAdmin.button.pharmacy.title")); //$NON-NLS-1$ btnManagePharmUsers .setFont(ResourceUtils.getFont(iDartFont.VERASANS_8)); btnManagePharmUsers .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) { cmd_managePharmUsers(); } }); // btnPharmDetailsUpdate Button btnPharmDetailsUpdate = new Button(grpPharmacy, SWT.NONE); btnPharmDetailsUpdate.setBounds(new org.eclipse.swt.graphics.Rectangle( 35, 55, 235, 30)); btnPharmDetailsUpdate .setToolTipText(Messages.getString("GeneralAdmin.button.pharmdetails.tooltip")); //$NON-NLS-1$ btnPharmDetailsUpdate.setText(Messages.getString("GeneralAdmin.button.pharmdetails.title")); //$NON-NLS-1$ btnPharmDetailsUpdate.setFont(ResourceUtils .getFont(iDartFont.VERASANS_8)); btnPharmDetailsUpdate .addSelectionListener(new org.eclipse.swt.events.SelectionAdapter() { @Override public void widgetSelected( org.eclipse.swt.events.SelectionEvent e) { cmd_pharmUsersUpdate(); } }); } public void cmd_clinicsAdd() { // AddClinic(true) to ADD new clinic AddClinic.addInitialisationOption(GenericFormGui.OPTION_isAddNotUpdate, true); new AddClinic(getShell()); } public void cmd_clinicsUpdate() { // AddClinic(false) to UPDATE existing clinic AddClinic.addInitialisationOption(GenericFormGui.OPTION_isAddNotUpdate, false); new AddClinic(getShell()); } public void cmd_doctorAdd() { // AddDoctor(true) to ADD new doctor AddDoctor.addInitialisationOption(GenericFormGui.OPTION_isAddNotUpdate, true); new AddDoctor(getShell()); } public void cmd_doctorUpdate() { // AddDoctor(false) to UPDATE existing doctor AddDoctor.addInitialisationOption(GenericFormGui.OPTION_isAddNotUpdate, false); new AddDoctor(getShell()); } public void cmd_drugsAdd() { // AddDrug(true) to ADD new drug AddDrug.addInitialisationOption(GenericFormGui.OPTION_isAddNotUpdate, true); new AddDrug(getShell()); } public void cmd_drugsUpdate() { // AddDrug(false) to UPDATE existing drug AddDrug.addInitialisationOption(GenericFormGui.OPTION_isAddNotUpdate, false); new AddDrug(getShell()); } public void cmd_managePharmUsers() { ManagePharmUsers.addInitialisationOption( GenericFormGui.OPTION_isAddNotUpdate, true); new ManagePharmUsers(getShell()); } public void cmd_pharmUsersUpdate() { new StockCenterInfo(getShell()); } public void cmd_regimenAdd() { // AddDrgGroup(true) to ADD new regimen AddDrugGroup.addInitialisationOption( GenericFormGui.OPTION_isAddNotUpdate, true); new AddDrugGroup(getShell()); } public void cmd_regimenUpdate() { AddDrugGroup.addInitialisationOption( GenericFormGui.OPTION_isAddNotUpdate, false); // UpdateRegimen(false) to UPDATE existing regimen new AddDrugGroup(getShell()); } protected void cmd_importPatients() { FileDialog dlg = new FileDialog(getShell(), SWT.SAVE); dlg.setFilterExtensions(FileType.EXCEL.getFilterExtensions()); dlg.setFilterNames(FileType.EXCEL.getFilterNames()); String fileName = dlg.open(); if (fileName == null){ return; } String sheet = "Sheet1"; InputDialog sheetInput = new InputDialog(getShell(), "Excel sheet name", "Please enter the name of the Excel sheet to import", sheet, null); if (sheetInput.open() == Window.OK) { sheet = sheetInput.getValue(); } else { return; } final Import task = new Import(); task.setSheet(sheet); task.setFileName(fileName); try { new ProgressMonitorDialog(null).run(true, true, new IRunnableWithProgress() { @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { try { task.run(monitor); } catch (TaskException e) { throw new InvocationTargetException(e); } } }); int errorCount = task.getErrorCount(); if (errorCount > 0){ boolean open = MessageDialog.openQuestion(null, "Complete with errors", "The import has completed successfuly but there were " + + errorCount + " errors. Do you want to open the error log file?"); if (open){ Program.launch(task.getErrorFile().getAbsolutePath()); } } else { MessageDialog .openInformation(null, "Completed", "Import completed successfully with" + " no errors"); } } catch (InvocationTargetException e) { MessageUtil.showError(e, "Error running task", e.getMessage()); } catch (InterruptedException e) { MessageDialog .openInformation(null, "Cancelled", e.getMessage()); } } protected void cmd_generateTemplate() { SafeSaveDialog dialog = new SafeSaveDialog(getShell(), FileType.EXCEL); String fileName = dialog.open(); if (fileName == null){ return; } PatientSheet sheet = new PatientSheet("Sheet1"); Session session = HibernateUtil.getNewSession(); sheet.setSession(session); sheet.init(); sheet.writeTemplateSheet(fileName); session.close(); Program.launch(fileName); } @Override protected void cmdCloseSelectedWidget() { cmdCloseSelected(); } }