/* * Created by JFormDesigner on Fri Jun 26 16:37:31 CEST 2015 */ package op.settings.subpanels; import entity.system.SYSPropsTools; import gui.PnlBeanEditor; import gui.interfaces.DefaultPanel; import gui.interfaces.YesNoToggleButton; import op.OPDE; import op.settings.databeans.MailSettingsBean; import op.system.EMailSystem; import op.system.Recipient; import op.threads.DisplayMessage; import op.tools.SYSTools; import org.apache.log4j.Logger; import javax.swing.*; import javax.validation.ConstraintViolation; import javax.validation.ConstraintViolationException; import java.awt.*; import java.awt.event.ItemEvent; import java.lang.reflect.InvocationTargetException; import java.sql.SQLIntegrityConstraintViolationException; import java.util.Properties; import java.util.concurrent.ExecutionException; /** * @author Torsten Löhr */ public class PnlGlobalMailSettings extends DefaultPanel { boolean checkInProgress = false; boolean lastCheckOk = false; Logger logger = Logger.getLogger(getClass()); public PnlGlobalMailSettings() { super("opde.settings.global.mail"); setLayout(new BoxLayout(this, BoxLayout.X_AXIS)); try { final PnlBeanEditor<MailSettingsBean> pbe = new PnlBeanEditor<>(() -> new MailSettingsBean(OPDE.getProps()), MailSettingsBean.class, PnlBeanEditor.SAVE_MODE_CUSTOM); pbe.setCustomPanel(getButtonPanel(pbe)); pbe.addDataChangeListener(evt -> SYSPropsTools.storeProps(evt.getData().toProperties(new Properties()))); add(pbe); } catch (Exception e) { OPDE.fatal(logger, e); } } private JPanel getButtonPanel(PnlBeanEditor<MailSettingsBean> pbe) { final YesNoToggleButton tbActive = new YesNoToggleButton("opde.settings.global.mail.active", "opde.settings.global.mail.inactive", SYSTools.catchNull(OPDE.getProps().getProperty(SYSPropsTools.KEY_MAIL_SYSTEM_ACTIVE)).equalsIgnoreCase("true")); final JButton btnTestmail = new JButton(SYSTools.xx("opde.settings.global.mail.sendtest")); btnTestmail.addActionListener(e -> { logger.debug("Testmail clicked"); try { if (checkInProgress) return; checkInProgress = true; pbe.broadcast(); final Recipient testRecipient = new Recipient(OPDE.getProps().getProperty(SYSPropsTools.KEY_MAIL_RECIPIENT), OPDE.getProps().getProperty(SYSPropsTools.KEY_MAIL_RECIPIENT_PERSONAL)); OPDE.getDisplayManager().addSubMessage(new DisplayMessage("opde.settings.global.mail.testing", DisplayMessage.WAIT_TIL_NEXT_MESSAGE)); SwingWorker worker = new SwingWorker() { @Override protected Object doInBackground() { lastCheckOk = false; return EMailSystem.sendMail(SYSTools.xx("opde.settings.global.mail.testsubject"), SYSTools.xx("opde.settings.global.mail.testbody"), testRecipient, null); } @Override protected void done() { checkInProgress = false; try { lastCheckOk = (Boolean) get(); if (lastCheckOk) { OPDE.getDisplayManager().addSubMessage(new DisplayMessage("opde.settings.global.mail.success")); } else { OPDE.getDisplayManager().addSubMessage(new DisplayMessage("opde.settings.global.mail.fail", DisplayMessage.WARNING)); } tbActive.setSelected(lastCheckOk); } catch (InterruptedException e) { logger.debug(e); } catch (ExecutionException e) { OPDE.fatal(logger, e); } } }; worker.execute(); } catch (ConstraintViolationException cve) { String violations = ""; for (ConstraintViolation cv : cve.getConstraintViolations()) { violations += cv.getMessage() + "; "; } OPDE.getDisplayManager().addSubMessage(new DisplayMessage(violations, DisplayMessage.WARNING)); } catch (InvocationTargetException e1) { e1.printStackTrace(); } catch (NoSuchMethodException e1) { e1.printStackTrace(); } catch (IllegalAccessException e1) { e1.printStackTrace(); } catch (SQLIntegrityConstraintViolationException e1) { e1.printStackTrace(); } catch (Exception e1){ OPDE.fatal(e1); } finally { checkInProgress = false; } // reload(); }); // buttonPanel.add(btnTestmail); tbActive.addItemListener(e -> { if (e.getStateChange() == ItemEvent.SELECTED && !lastCheckOk) { OPDE.getDisplayManager().addSubMessage(new DisplayMessage("opde.settings.global.mail.yet.untested", DisplayMessage.WARNING)); } SYSPropsTools.storeProp(SYSPropsTools.KEY_MAIL_SYSTEM_ACTIVE, Boolean.toString(e.getStateChange() == ItemEvent.SELECTED)); }); // buttonPanel.add(tbActive); Box line = Box.createHorizontalBox(); line.add(Box.createHorizontalGlue()); line.add(btnTestmail); line.add(Box.createHorizontalGlue()); line.add(tbActive); Box page = Box.createVerticalBox(); page.add(Box.createRigidArea(new Dimension(0, 10))); page.add(new JSeparator()); page.add(Box.createRigidArea(new Dimension(0, 10))); page.add(line); page.add(Box.createVerticalGlue()); JPanel content = new JPanel(); content.setLayout(new BoxLayout(content, BoxLayout.PAGE_AXIS)); content.add(page); return content; } }