From 7fb1a20ac157d9a29b6bf88066fab7df8435a879 Mon Sep 17 00:00:00 2001 From: j-dimension Date: Wed, 14 Aug 2024 22:22:25 +0200 Subject: [PATCH] added semi-automatic creation of related calendar entry. close #36 --- .../client/bea/SendBeaMessageDialog.java | 66 ++++++++-------- .../client/calendar/CalendarUtils.java | 35 ++++++++- .../files/AddDocumentFromTemplateDialog.java | 2 +- .../client/editors/files/AddNoteDialog.java | 2 +- .../editors/files/ArchiveFilePanel.java | 3 +- .../files/EditOrDuplicateEventDialog.java | 2 +- .../client/editors/files/NewEventPanel.java | 20 ++++- .../jlawyer/client/mail/SendEmailDialog.java | 72 +++++++++--------- .../client/mail/sidebar/ConfirmationStep.java | 4 +- .../de/costache/calendar/CalendarPanel.java | 3 +- .../calendar/NewEventEntryDialog.java | 27 +++++-- .../libs/j-lawyer-bea-wrapper.jar | Bin 9471320 -> 9472040 bytes 12 files changed, 151 insertions(+), 85 deletions(-) diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/bea/SendBeaMessageDialog.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/bea/SendBeaMessageDialog.java index c43b19bf1..a0b0b0bf3 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/bea/SendBeaMessageDialog.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/bea/SendBeaMessageDialog.java @@ -1899,28 +1899,6 @@ private void cmdSendActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST log.error("Unable to unarchive case " + this.contextArchiveFile.getFileNumber(), ex); } - BeaListItem priority=null; - if(this.cmbPriorities.getSelectedItem() instanceof BeaListItem) - // first index is a string (no priority selected) - priority=(BeaListItem)this.cmbPriorities.getSelectedItem(); - - if (this.chkSaveAsDocument.isSelected()) { - a = new SendBeaMessageAction(dlg, this, messageType, fromSafeId, attachmentMetadata, this.cu, this.chkEeb.isSelected(), this.authority, recipients, this.txtSubject.getText(), ed.getText(), priority, this.contextArchiveFile, createDocumentTag, this.txtAzSender.getText(), this.cmbAzRecipient.getEditor().getItem().toString(), folder); - } else { - a = new SendBeaMessageAction(dlg, this, messageType, fromSafeId, attachmentMetadata, this.cu, this.chkEeb.isSelected(), this.authority, recipients, this.txtSubject.getText(), ed.getText(), priority, createDocumentTag, this.txtAzSender.getText(), this.cmbAzRecipient.getEditor().getItem().toString()); - } - a.start(); - - - UserSettings uset = UserSettings.getInstance(); - if (fromSafeId != null) { - uset.setSetting(UserSettings.CONF_BEA_LASTUSEDMAILBOX, fromSafeId); - } - - if (this.cmbTemplates.getSelectedItem() != null) { - uset.setSetting(UserSettings.CONF_BEA_LASTUSEDTEMPLATE, this.cmbTemplates.getSelectedItem().toString()); - } - if (!(this.radioReviewTypeNone.isSelected()) && this.contextArchiveFile != null) { if (this.txtReviewDateField.getText().length() != 10) { JOptionPane.showMessageDialog(this, "Wiedervorlagedatum ungültig", "beA-Nachricht senden", JOptionPane.INFORMATION_MESSAGE); @@ -1948,7 +1926,7 @@ private void cmdSendActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST if (CalendarUtils.checkForConflicts(this, reviewDto)) { try { - CalendarUtils.getInstance().storeCalendarEntry(reviewDto, this.contextArchiveFile.getId(), (CalendarEntryTemplate) this.cmbReviewReason.getItemAt(this.cmbReviewReason.getSelectedIndex())); + CalendarUtils.getInstance().storeCalendarEntry(reviewDto, this.contextArchiveFile, (CalendarEntryTemplate) this.cmbReviewReason.getItemAt(this.cmbReviewReason.getSelectedIndex()), this); } catch (Exception ex) { log.error("Error adding review", ex); JOptionPane.showMessageDialog(this, "Fehler beim Speichern des Kalendereintrages: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); @@ -1957,6 +1935,30 @@ private void cmdSendActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST } } + + BeaListItem priority=null; + if(this.cmbPriorities.getSelectedItem() instanceof BeaListItem) + // first index is a string (no priority selected) + priority=(BeaListItem)this.cmbPriorities.getSelectedItem(); + + if (this.chkSaveAsDocument.isSelected()) { + a = new SendBeaMessageAction(dlg, this, messageType, fromSafeId, attachmentMetadata, this.cu, this.chkEeb.isSelected(), this.authority, recipients, this.txtSubject.getText(), ed.getText(), priority, this.contextArchiveFile, createDocumentTag, this.txtAzSender.getText(), this.cmbAzRecipient.getEditor().getItem().toString(), folder); + } else { + a = new SendBeaMessageAction(dlg, this, messageType, fromSafeId, attachmentMetadata, this.cu, this.chkEeb.isSelected(), this.authority, recipients, this.txtSubject.getText(), ed.getText(), priority, createDocumentTag, this.txtAzSender.getText(), this.cmbAzRecipient.getEditor().getItem().toString()); + } + a.start(); + + + UserSettings uset = UserSettings.getInstance(); + if (fromSafeId != null) { + uset.setSetting(UserSettings.CONF_BEA_LASTUSEDMAILBOX, fromSafeId); + } + + if (this.cmbTemplates.getSelectedItem() != null) { + uset.setSetting(UserSettings.CONF_BEA_LASTUSEDTEMPLATE, this.cmbTemplates.getSelectedItem().toString()); + } + + }//GEN-LAST:event_cmdSendActionPerformed @@ -2291,13 +2293,6 @@ private void cmdSaveDraftActionPerformed(java.awt.event.ActionEvent evt) {//GEN- log.error("Unable to unarchive case " + this.contextArchiveFile.getFileNumber(), ex); } - if (this.chkSaveAsDocument.isSelected()) { - a = new SaveBeaMessageAction(dlg, this, fromSafeId, attachmentMetadata, this.cu, this.chkEeb.isSelected(), this.authority, recipient, this.txtSubject.getText(), ed.getText(), this.contextArchiveFile, createDocumentTag, this.txtAzSender.getText(), this.cmbAzRecipient.getEditor().getItem().toString(), folder, priority); - } else { - a = new SaveBeaMessageAction(dlg, this, fromSafeId, attachmentMetadata, this.cu, this.chkEeb.isSelected(), this.authority, recipient, this.txtSubject.getText(), ed.getText(), createDocumentTag, this.txtAzSender.getText(), this.cmbAzRecipient.getEditor().getItem().toString(), priority); - } - a.start(); - if (!(this.radioReviewTypeNone.isSelected()) && this.contextArchiveFile != null) { if (this.txtReviewDateField.getText().length() != 10) { JOptionPane.showMessageDialog(this, "Wiedervorlagedatum ungültig", "beA-Nachricht als Entwurf speichern", JOptionPane.INFORMATION_MESSAGE); @@ -2325,7 +2320,7 @@ private void cmdSaveDraftActionPerformed(java.awt.event.ActionEvent evt) {//GEN- if (CalendarUtils.checkForConflicts(this, reviewDto)) { try { - CalendarUtils.getInstance().storeCalendarEntry(reviewDto, this.contextArchiveFile.getId(), (CalendarEntryTemplate) this.cmbReviewReason.getItemAt(this.cmbReviewReason.getSelectedIndex())); + CalendarUtils.getInstance().storeCalendarEntry(reviewDto, this.contextArchiveFile, (CalendarEntryTemplate) this.cmbReviewReason.getItemAt(this.cmbReviewReason.getSelectedIndex()), this); } catch (Exception ex) { log.error("Error adding review", ex); JOptionPane.showMessageDialog(this, "Fehler beim Speichern des Kalendereintrages: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); @@ -2333,6 +2328,15 @@ private void cmdSaveDraftActionPerformed(java.awt.event.ActionEvent evt) {//GEN- } } + + if (this.chkSaveAsDocument.isSelected()) { + a = new SaveBeaMessageAction(dlg, this, fromSafeId, attachmentMetadata, this.cu, this.chkEeb.isSelected(), this.authority, recipient, this.txtSubject.getText(), ed.getText(), this.contextArchiveFile, createDocumentTag, this.txtAzSender.getText(), this.cmbAzRecipient.getEditor().getItem().toString(), folder, priority); + } else { + a = new SaveBeaMessageAction(dlg, this, fromSafeId, attachmentMetadata, this.cu, this.chkEeb.isSelected(), this.authority, recipient, this.txtSubject.getText(), ed.getText(), createDocumentTag, this.txtAzSender.getText(), this.cmbAzRecipient.getEditor().getItem().toString(), priority); + } + a.start(); + + }//GEN-LAST:event_cmdSaveDraftActionPerformed private void tblAttachmentsMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblAttachmentsMouseClicked diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/calendar/CalendarUtils.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/calendar/CalendarUtils.java index d628404ff..ef8abc951 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/calendar/CalendarUtils.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/calendar/CalendarUtils.java @@ -674,11 +674,16 @@ import com.jdimension.jlawyer.client.settings.ClientSettings; import com.jdimension.jlawyer.client.settings.ServerSettings; import com.jdimension.jlawyer.client.utils.FrameUtils; +import com.jdimension.jlawyer.persistence.ArchiveFileBean; import com.jdimension.jlawyer.persistence.ArchiveFileReviewsBean; import com.jdimension.jlawyer.persistence.CalendarEntryTemplate; import com.jdimension.jlawyer.services.CalendarServiceRemote; import com.jdimension.jlawyer.services.JLawyerServiceLocator; +import de.costache.calendar.NewEventEntryDialog; +import java.awt.Dialog; +import java.awt.Window; import java.util.ArrayList; +import java.util.Calendar; import java.util.Collections; import java.util.Date; import java.util.List; @@ -901,7 +906,7 @@ public static void populateCalendarEntryTemplatesList(JList list) { list.setModel(listMod); } - public ArchiveFileReviewsBean storeCalendarEntry(ArchiveFileReviewsBean entry, String caseId, CalendarEntryTemplate template) throws Exception { + public ArchiveFileReviewsBean storeCalendarEntry(ArchiveFileReviewsBean entry, ArchiveFileBean entryCase, CalendarEntryTemplate template, Window parent) throws Exception { EditorsRegistry.getInstance().updateStatus("Wiedervorlage/Frist wird gespeichert..."); try { ClientSettings settings = ClientSettings.getInstance(); @@ -909,11 +914,37 @@ public ArchiveFileReviewsBean storeCalendarEntry(ArchiveFileReviewsBean entry, S JLawyerServiceLocator locator = JLawyerServiceLocator.getInstance(settings.getLookupProperties()); CalendarServiceRemote calService = locator.lookupCalendarServiceRemote(); - entry = calService.addReview(caseId, entry); + entry = calService.addReview(entryCase.getId(), entry); EventBroker eb = EventBroker.getInstance(); eb.publishEvent(new ReviewAddedEvent(entry)); eb.publishEvent(new CasesChangedEvent()); + + if(template!=null && template.isRelated()) { + NewEventEntryDialog relatedEventDlg = new NewEventEntryDialog(null, parent, Dialog.ModalityType.APPLICATION_MODAL, entryCase, true); + relatedEventDlg.setTitle("weiterer Eintrag mit " + template.getRelatedOffsetDays() + " Tagen Versatz"); + relatedEventDlg.setEventType(entry.getEventType()); + relatedEventDlg.setSummary(template.getRelatedName()); + relatedEventDlg.setDescription(template.getRelatedDescription()); + relatedEventDlg.setReviewAssignee(entry.getAssignee()); + + Calendar c = Calendar.getInstance(); + c.setTime(entry.getBeginDate()); + c.add(Calendar.DAY_OF_YEAR, template.getRelatedOffsetDays()); + relatedEventDlg.setBeginDate(c.getTime()); + + Calendar c2=Calendar.getInstance(); + c2.setTime(entry.getEndDate()); + c2.add(Calendar.DAY_OF_YEAR, template.getRelatedOffsetDays()); + relatedEventDlg.setEndDate(c2.getTime()); + + relatedEventDlg.setEndDate(c2.getTime()); + + FrameUtils.centerDialog(relatedEventDlg, parent); + relatedEventDlg.setVisible(true); + } + + return entry; } finally { EditorsRegistry.getInstance().clearStatus(); diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/AddDocumentFromTemplateDialog.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/AddDocumentFromTemplateDialog.java index 5003ca54c..8d3f68bc3 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/AddDocumentFromTemplateDialog.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/AddDocumentFromTemplateDialog.java @@ -1511,7 +1511,7 @@ private void addAndOpen(boolean openAfterAdd) { if (CalendarUtils.checkForConflicts(this, reviewDto)) { try { - CalendarUtils.getInstance().storeCalendarEntry(reviewDto, this.aFile.getId(), (CalendarEntryTemplate) this.cmbReviewReason.getItemAt(this.cmbReviewReason.getSelectedIndex())); + CalendarUtils.getInstance().storeCalendarEntry(reviewDto, this.aFile, (CalendarEntryTemplate) this.cmbReviewReason.getItemAt(this.cmbReviewReason.getSelectedIndex()), this); } catch (Exception ex) { log.error("Error adding review", ex); JOptionPane.showMessageDialog(this, "Fehler beim Speichern des Kalendereintrages: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/AddNoteDialog.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/AddNoteDialog.java index 28f32d619..18725f50b 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/AddNoteDialog.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/AddNoteDialog.java @@ -1145,7 +1145,7 @@ private void cmdAddDocumentActionPerformed(java.awt.event.ActionEvent evt) {//GE if (CalendarUtils.checkForConflicts(this, reviewDto)) { try { - CalendarUtils.getInstance().storeCalendarEntry(reviewDto, this.aFile.getId(), (CalendarEntryTemplate) this.cmbReviewReason.getItemAt(this.cmbReviewReason.getSelectedIndex())); + CalendarUtils.getInstance().storeCalendarEntry(reviewDto, this.aFile, (CalendarEntryTemplate) this.cmbReviewReason.getItemAt(this.cmbReviewReason.getSelectedIndex()), this); } catch (Exception ex) { log.error("Error adding review", ex); JOptionPane.showMessageDialog(this, "Fehler beim Speichern des Kalendereintrages: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/ArchiveFilePanel.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/ArchiveFilePanel.java index 13937c097..c5037744e 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/ArchiveFilePanel.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/ArchiveFilePanel.java @@ -1054,7 +1054,6 @@ public Component getTableCellRendererComponent(JTable table, Object value, boole ingo.populateMenu(this.mnuAssistant, capabilities2, (AssistantInputAdapter)this); } catch (Exception ex) { log.error(ex); - JOptionPane.showMessageDialog(this, "Assistent Ingo aktuell nicht erreichbar: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); } EventBroker b = EventBroker.getInstance(); @@ -4216,7 +4215,7 @@ public void addReview(CalendarEntryTemplate template, int eventType, String reas reviewDto.setLocation(location); reviewDto.setCalendarSetup(calSetup); - reviewDto = CalendarUtils.getInstance().storeCalendarEntry(reviewDto, this.dto.getId(), template); + reviewDto = CalendarUtils.getInstance().storeCalendarEntry(reviewDto, this.dto, template, EditorsRegistry.getInstance().getMainWindow()); if (this.chkArchived.isSelected()) { this.chkArchived.setSelected(false); diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/EditOrDuplicateEventDialog.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/EditOrDuplicateEventDialog.java index 784dcd4fc..c87bade0f 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/EditOrDuplicateEventDialog.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/EditOrDuplicateEventDialog.java @@ -1058,7 +1058,7 @@ private void cmdOKActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:e CalendarServiceRemote calService = locator.lookupCalendarServiceRemote(); if (this.mode == MODE_DUPLICATE) { // when duplicating, do not pass in the template because we do not want to handle adding related events - targetReview = CalendarUtils.getInstance().storeCalendarEntry(targetReview, this.caseDto.getId(), null); + targetReview = CalendarUtils.getInstance().storeCalendarEntry(targetReview, this.caseDto, null, this); } else if (this.mode == MODE_EDIT) { targetReview = calService.updateReview(this.caseDto.getId(), targetReview); EventBroker eb = EventBroker.getInstance(); diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/NewEventPanel.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/NewEventPanel.java index ea5c6ea2e..71bbff9b4 100644 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/NewEventPanel.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/editors/files/NewEventPanel.java @@ -724,18 +724,22 @@ public void mouseClicked(MouseEvent event) { list.repaint(list.getCellBounds(index, index)); int selectionCount = 0; - String selectedItemText = ""; + String selectedItemSummary = ""; + String selectedItemDescription = ""; for (int i = 0; i < list.getModel().getSize(); i++) { CalendarEntryTemplateListItem cli = (CalendarEntryTemplateListItem) list.getModel().getElementAt(i); if (cli.isSelected()) { selectionCount++; - selectedItemText = cli.toString(); + selectedItemSummary = cli.toString(); + selectedItemDescription = cli.getEntry().getDescription(); } } if (selectionCount == 1) { - txtReviewReason.setText(selectedItemText); + txtReviewReason.setText(selectedItemSummary); + taEventDescription.setText(selectedItemDescription); } else { txtReviewReason.setText(""); + taEventDescription.setText(""); } } }); @@ -1272,7 +1276,7 @@ public void setReviewAssignee(String assignee) { } } } - + public void setBeginDate(Date d) { this.txtEventBeginDateField.setText(dateFormat.format(d)); @@ -1286,6 +1290,14 @@ public void setEndDate(Date d) { this.cmbEventEndTime.setSelectedItem(timeFormat.format(d)); } + + public void setSummary(String summary) { + this.txtReviewReason.setText(summary); + } + + public void setDescription(String description) { + this.taEventDescription.setText(description); + } public void setEventType(int eventType) { this.radioEventTypeFollowUp.setSelected(true); diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/mail/SendEmailDialog.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/mail/SendEmailDialog.java index 21ebdb7ab..f29306a6d 100755 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/mail/SendEmailDialog.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/mail/SendEmailDialog.java @@ -1844,6 +1844,42 @@ private void cmdSendActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST } } } + + if (!(this.radioReviewTypeNone.isSelected()) && this.contextArchiveFile != null) { + if (this.txtReviewDateField.getText().length() != 10) { + JOptionPane.showMessageDialog(this, "Wiedervorlagedatum ungültig", "E-Mail senden", JOptionPane.INFORMATION_MESSAGE); + return; + } + Date d = null; + try { + SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy"); + d = df.parse(this.txtReviewDateField.getText()); + } catch (Throwable t) { + JOptionPane.showMessageDialog(this, "Wiedervorlagedatum ungültig", "E-Mail senden", JOptionPane.INFORMATION_MESSAGE); + return; + } + + ArchiveFileReviewsBean reviewDto = new ArchiveFileReviewsBean(); + reviewDto.setEventType(ArchiveFileReviewsBean.EVENTTYPE_FOLLOWUP); + if (this.radioReviewTypeRespite.isSelected()) { + reviewDto.setEventType(ArchiveFileReviewsBean.EVENTTYPE_RESPITE); + } + reviewDto.setDone(false); + reviewDto.setBeginDate(d); + reviewDto.setAssignee(this.cmbReviewAssignee.getSelectedItem().toString()); + reviewDto.setSummary(this.cmbReviewReason.getEditor().getItem().toString()); + reviewDto.setCalendarSetup(this.calendarSelectionButton1.getSelectedSetup()); + + if (CalendarUtils.checkForConflicts(this, reviewDto)) { + try { + CalendarUtils.getInstance().storeCalendarEntry(reviewDto, this.contextArchiveFile, (CalendarEntryTemplate) this.cmbReviewReason.getItemAt(this.cmbReviewReason.getSelectedIndex()), this); + } catch (Exception ex) { + log.error("Error adding review", ex); + JOptionPane.showMessageDialog(this, "Fehler beim Speichern des Kalendereintrages: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); + } + } + + } ProgressableAction a = null; if (this.chkSaveAsDocument.isSelected()) { @@ -1904,41 +1940,7 @@ private void cmdSendActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST uset.setSetting(UserSettings.CONF_MAIL_LASTUSEDTEMPLATE, this.cmbTemplates.getSelectedItem().toString()); } - if (!(this.radioReviewTypeNone.isSelected()) && this.contextArchiveFile != null) { - if (this.txtReviewDateField.getText().length() != 10) { - JOptionPane.showMessageDialog(this, "Wiedervorlagedatum ungültig", "E-Mail senden", JOptionPane.INFORMATION_MESSAGE); - return; - } - Date d = null; - try { - SimpleDateFormat df = new SimpleDateFormat("dd.MM.yyyy"); - d = df.parse(this.txtReviewDateField.getText()); - } catch (Throwable t) { - JOptionPane.showMessageDialog(this, "Wiedervorlagedatum ungültig", "E-Mail senden", JOptionPane.INFORMATION_MESSAGE); - return; - } - - ArchiveFileReviewsBean reviewDto = new ArchiveFileReviewsBean(); - reviewDto.setEventType(ArchiveFileReviewsBean.EVENTTYPE_FOLLOWUP); - if (this.radioReviewTypeRespite.isSelected()) { - reviewDto.setEventType(ArchiveFileReviewsBean.EVENTTYPE_RESPITE); - } - reviewDto.setDone(false); - reviewDto.setBeginDate(d); - reviewDto.setAssignee(this.cmbReviewAssignee.getSelectedItem().toString()); - reviewDto.setSummary(this.cmbReviewReason.getEditor().getItem().toString()); - reviewDto.setCalendarSetup(this.calendarSelectionButton1.getSelectedSetup()); - - if (CalendarUtils.checkForConflicts(this, reviewDto)) { - try { - CalendarUtils.getInstance().storeCalendarEntry(reviewDto, this.contextArchiveFile.getId(), (CalendarEntryTemplate) this.cmbReviewReason.getItemAt(this.cmbReviewReason.getSelectedIndex())); - } catch (Exception ex) { - log.error("Error adding review", ex); - JOptionPane.showMessageDialog(this, "Fehler beim Speichern des Kalendereintrages: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); - } - } - - } + }//GEN-LAST:event_cmdSendActionPerformed diff --git a/j-lawyer-client/src/com/jdimension/jlawyer/client/mail/sidebar/ConfirmationStep.java b/j-lawyer-client/src/com/jdimension/jlawyer/client/mail/sidebar/ConfirmationStep.java index a097edbae..7314aa1a1 100644 --- a/j-lawyer-client/src/com/jdimension/jlawyer/client/mail/sidebar/ConfirmationStep.java +++ b/j-lawyer-client/src/com/jdimension/jlawyer/client/mail/sidebar/ConfirmationStep.java @@ -667,6 +667,7 @@ import com.jdimension.jlawyer.client.events.CasesChangedEvent; import com.jdimension.jlawyer.client.events.EventBroker; import com.jdimension.jlawyer.client.settings.ClientSettings; +import com.jdimension.jlawyer.client.utils.FrameUtils; import com.jdimension.jlawyer.client.wizard.*; import com.jdimension.jlawyer.persistence.AddressBean; import com.jdimension.jlawyer.persistence.ArchiveFileAddressesBean; @@ -682,6 +683,7 @@ import javax.swing.JLabel; import javax.swing.JOptionPane; import org.apache.log4j.Logger; +import org.jdesktop.swingx.util.WindowUtils; /** * @@ -861,7 +863,7 @@ public void display() { if(newEvent!=null) { newEvent.setArchiveFileKey(newCase); try { - CalendarUtils.getInstance().storeCalendarEntry(newEvent, newCase.getId(), newEventTpl); + CalendarUtils.getInstance().storeCalendarEntry(newEvent, newCase, newEventTpl, WindowUtils.findWindow(this)); } catch (Exception ex) { log.error("Error adding review", ex); JOptionPane.showMessageDialog(this, "Fehler beim Speichern des Kalendereintrages: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); diff --git a/j-lawyer-client/src/de/costache/calendar/CalendarPanel.java b/j-lawyer-client/src/de/costache/calendar/CalendarPanel.java index ae71acbb5..11408004b 100644 --- a/j-lawyer-client/src/de/costache/calendar/CalendarPanel.java +++ b/j-lawyer-client/src/de/costache/calendar/CalendarPanel.java @@ -688,6 +688,7 @@ You should also get your employer (if you work as a programmer) or school, import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; +import java.awt.Dialog; import java.awt.Dimension; import java.awt.Image; import java.awt.event.ActionEvent; @@ -1194,7 +1195,7 @@ public void eventAdded(final ModelChangedEvent event) { return; } - NewEventEntryDialog dlg2 = new NewEventEntryDialog(this, EditorsRegistry.getInstance().getMainWindow(), true, sel); + NewEventEntryDialog dlg2 = new NewEventEntryDialog(this, EditorsRegistry.getInstance().getMainWindow(), Dialog.ModalityType.APPLICATION_MODAL, sel, false); dlg2.setEventType(ArchiveFileReviewsBean.EVENTTYPE_EVENT); dlg2.setBeginDate(event.getIntervalStart()); dlg2.setEndDate(event.getIntervalEnd()); diff --git a/j-lawyer-client/src/de/costache/calendar/NewEventEntryDialog.java b/j-lawyer-client/src/de/costache/calendar/NewEventEntryDialog.java index c497d6711..f1348652a 100644 --- a/j-lawyer-client/src/de/costache/calendar/NewEventEntryDialog.java +++ b/j-lawyer-client/src/de/costache/calendar/NewEventEntryDialog.java @@ -683,18 +683,20 @@ public class NewEventEntryDialog extends javax.swing.JDialog implements NewEvent private CalendarPanel calendarPanel = null; private ArchiveFileBean eventCase = null; + private boolean preventRelatedEvents=true; /** * Creates new form NewEventEntryDialog * * @param calPanel * @param parent - * @param modal + * @param modalityType * @param eventCase */ - public NewEventEntryDialog(CalendarPanel calPanel, java.awt.Frame parent, boolean modal, ArchiveFileBean eventCase) { - super(parent, modal); + public NewEventEntryDialog(CalendarPanel calPanel, java.awt.Window parent, java.awt.Dialog.ModalityType modalityType, ArchiveFileBean eventCase, boolean preventRelatedEvents) { + super(parent, modalityType); initComponents(); + this.preventRelatedEvents=preventRelatedEvents; this.eventCase = eventCase; this.calendarPanel = calPanel; this.newEventPanel.setNewEventListener(this); @@ -716,6 +718,14 @@ public void setEventType(int eventType) { public void setReviewAssignee(String assignee) { this.newEventPanel.setReviewAssignee(assignee); } + + public void setSummary(String summary) { + this.newEventPanel.setSummary(summary); + } + + public void setDescription(String description) { + this.newEventPanel.setDescription(description); + } /** * This method is called from within the constructor to initialize the form. @@ -776,7 +786,7 @@ public static void main(String args[]) { /* Create and display the dialog */ java.awt.EventQueue.invokeLater(() -> { - NewEventEntryDialog dialog = new NewEventEntryDialog(null, new javax.swing.JFrame(), true, null); + NewEventEntryDialog dialog = new NewEventEntryDialog(null, new javax.swing.JFrame(), ModalityType.APPLICATION_MODAL, null, true); dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent e) { @@ -806,14 +816,19 @@ public void addReview(CalendarEntryTemplate template, int eventType, String reas ev.setCalendarSetup(calSetup); try { - ev = CalendarUtils.getInstance().storeCalendarEntry(ev, this.eventCase.getId(), template); + if(this.preventRelatedEvents) + ev = CalendarUtils.getInstance().storeCalendarEntry(ev, this.eventCase, null, this); + else + ev = CalendarUtils.getInstance().storeCalendarEntry(ev, this.eventCase, template, this); } catch (Exception ex) { log.error("Error adding review", ex); JOptionPane.showMessageDialog(this, "Fehler beim Speichern des Kalendereintrages: " + ex.getMessage(), com.jdimension.jlawyer.client.utils.DesktopUtils.POPUP_TITLE_ERROR, JOptionPane.ERROR_MESSAGE); return; } - this.calendarPanel.addCalendarEvent(ev); + if(this.calendarPanel!=null) { + this.calendarPanel.addCalendarEvent(ev); + } } @Override diff --git a/j-lawyer-proprietary/libs/j-lawyer-bea-wrapper.jar b/j-lawyer-proprietary/libs/j-lawyer-bea-wrapper.jar index 7436a4159814d3dc900c4b4218ded080090075ce..7deb675aa0868774f30ba3216913755664dc865a 100644 GIT binary patch delta 16218 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