This is an automated email from the git hooks/post-receive script. New commit to branch feature/7056 in repository faxtomail. See http://git.codelutin.com/faxtomail.git commit 035fcea2d1d86183e137ff2fc618f6ab869596b9 Author: Kevin Morin <morin@codelutin.com> Date: Wed Jul 15 15:31:24 2015 +0200 Ouverture simultanée de plusieurs éléments (fixes #7332) --- .../faxtomail/ui/swing/FaxToMailUIContext.java | 11 +++++ .../ui/swing/actions/SaveDemandeAndExitAction.java | 2 +- .../ui/swing/actions/ShowDemandeAction.java | 56 ++++++++++++++++++++-- .../content/attachment/AttachmentEditorUI.jaxx | 9 ++++ .../swing/content/attachment/ButtonAttachment.java | 5 +- .../ui/swing/content/demande/DemandeUIHandler.java | 5 ++ .../ui/swing/content/demande/DemandesUI.css | 6 ++- .../ui/swing/content/demande/DemandesUI.jaxx | 41 +++++++++------- .../swing/content/demande/DemandesUIHandler.java | 13 ++++- .../demande/demandgroup/ButtonEmailGroup.java | 5 +- .../demandgroup/DemandGroupHighlightDialog.java | 3 +- .../content/demande/demandgroup/DemandGroupUI.jaxx | 9 ++++ .../content/demande/history/ButtonHistory.java | 5 +- .../content/demande/history/HistoryListUI.jaxx | 9 ++++ .../demande/replies/ButtonDemandReplies.java | 5 +- .../content/demande/replies/DemandRepliesUI.jaxx | 9 ++++ .../ui/swing/util/AbstractFaxToMailUIHandler.java | 8 ++-- .../ui/swing/util/AbstractToolbarPopupButton.java | 41 ++++++++++++++++ .../ui/swing/util/AbstractToolbarPopupHandler.java | 4 ++ .../ui/swing/util/AbstractToolbarPopupUI.jaxx | 4 +- .../i18n/faxtomail-ui-swing_fr_FR.properties | 1 + 21 files changed, 214 insertions(+), 37 deletions(-) diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java index 9b198fc..dfebc45 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/FaxToMailUIContext.java @@ -87,6 +87,7 @@ import java.io.Closeable; import java.io.File; import java.util.ArrayList; import java.util.Collection; +import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; @@ -198,6 +199,8 @@ public class FaxToMailUIContext extends AbstractBean implements Closeable, UIMes /** L'email courant (pour quoi faire ?). */ protected DemandeUIModel currentEmail; + protected Map<DemandeUIModel, JFrame> demandesFrames = new HashMap<>(); + //FIXME rustine en attendant de trouver pourquoi ca rame autant protected boolean useFolderCache; @@ -877,4 +880,12 @@ public class FaxToMailUIContext extends AbstractBean implements Closeable, UIMes public void setEmailFilter(EmailFilter emailFilter) { this.emailFilter = emailFilter; } + + public JFrame getFrameForDemande(DemandeUIModel demande) { + return demandesFrames.get(demande); + } + + public void setFrameForDemande(DemandeUIModel demande, JFrame frame) { + demandesFrames.put(demande, frame); + } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java index f9d0c28..9db1aad 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/SaveDemandeAndExitAction.java @@ -39,6 +39,6 @@ public class SaveDemandeAndExitAction extends SaveDemandeAction { @Override public void postSuccessAction() { super.postSuccessAction(); - getActionEngine().runInternalAction(getContext().getMainUI().getHandler(), GoToPreviousScreenAction.class); + getHandler().closeFrame(); } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java index 351a6b3..97f2c8e 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/actions/ShowDemandeAction.java @@ -29,15 +29,19 @@ import com.franciaflex.faxtomail.services.FaxToMailServiceContext; import com.franciaflex.faxtomail.services.service.EmailService; import com.franciaflex.faxtomail.services.service.exceptions.AlreadyLockedMailException; import com.franciaflex.faxtomail.services.service.exceptions.FolderNotReadableException; -import com.franciaflex.faxtomail.ui.swing.FaxToMailScreen; import com.franciaflex.faxtomail.ui.swing.content.MainUIHandler; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; +import com.franciaflex.faxtomail.ui.swing.content.demande.DemandesUI; +import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; import javax.swing.*; +import java.awt.*; +import java.awt.event.WindowAdapter; +import java.awt.event.WindowEvent; import static org.nuiton.i18n.I18n.t; @@ -46,15 +50,17 @@ import static org.nuiton.i18n.I18n.t; * * @author kmorin - morin@codelutin.com */ -public class ShowDemandeAction extends AbstractChangeScreenAction { +public class ShowDemandeAction extends AbstractMainUIFaxToMailAction { private static final Log log = LogFactory.getLog(ShowDemandeAction.class); // if true, take the email when opening protected boolean takeEmail; + protected JFrame frame; + public ShowDemandeAction(MainUIHandler handler) { - super(handler, true, FaxToMailScreen.DEMANDE); + super(handler, false); setActionDescription(t("faxtomail.action.goto.demand.tip")); } @@ -140,6 +146,7 @@ public class ShowDemandeAction extends AbstractChangeScreenAction { @Override public void doAction() throws Exception { DemandeUIModel currentEmail = getContext().getCurrentEmail(); + if (StringUtils.isNotBlank(currentEmail.getTopiaId())) { FaxToMailServiceContext serviceContext = getContext().newServiceContext(); @@ -167,7 +174,48 @@ public class ShowDemandeAction extends AbstractChangeScreenAction { } } - super.doAction(); + frame = getContext().getFrameForDemande(currentEmail); + + if (frame == null) { + final DemandesUI screenUI = new DemandesUI(getUI()); + String screenTitle = t("faxtomail.demand.title"); + ImageIcon icon = JAXXWidgetUtil.createActionIcon("email-group"); + screenUI.setLeftDecoration(new JLabel(icon)); + + frame = getHandler().openFrame(screenUI, screenTitle, new Dimension(800, 600)); + getContext().setFrameForDemande(currentEmail, frame); + + for (DemandeUIModel demande : currentEmail.getGroupedDemandes()) { + getContext().setFrameForDemande(demande, frame); + } + + frame.addWindowListener(new WindowAdapter() { + @Override + public void windowClosed(WindowEvent e) { + DemandeUIModel currentEmail = getContext().getCurrentEmail(); + getContext().setFrameForDemande(currentEmail, null); + + for (DemandeUIModel demande : currentEmail.getGroupedDemandes()) { + getContext().setFrameForDemande(demande, null); + } + } + }); + + } + } + + @Override + protected void releaseAction() { + super.releaseAction(); + SwingUtilities.invokeLater(new Runnable() { + @Override + public void run() { + if (frame != null) { + frame.toFront(); + frame = null; + } + } + }); } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUI.jaxx index 672eb97..4c81313 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/AttachmentEditorUI.jaxx @@ -26,6 +26,7 @@ id='attachmentDialog'> <import> + com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext com.franciaflex.faxtomail.persistence.entities.Attachment jaxx.runtime.swing.editor.FileEditor @@ -36,6 +37,14 @@ javax.swing.JComponent </import> + <script><![CDATA[ + + public AttachmentEditorUI(FaxToMailUIContext context, JFrame owner) { + super(context, owner); + } + + ]]></script> + <AttachmentEditorUIModel id='model' initializer='new AttachmentEditorUIModel()'/> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java index 8172975..5f46702 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/attachment/ButtonAttachment.java @@ -27,9 +27,11 @@ package com.franciaflex.faxtomail.ui.swing.content.attachment; import com.franciaflex.faxtomail.persistence.entities.Attachment; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton; +import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.ListUtils; +import javax.swing.*; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Collection; @@ -85,7 +87,8 @@ public class ButtonAttachment extends AbstractToolbarPopupButton<AttachmentEdito @Override protected AttachmentEditorUI createNewPopup() { - return new AttachmentEditorUI(FaxToMailUIContext.getApplicationContext()); + return new AttachmentEditorUI(FaxToMailUIContext.getApplicationContext(), + JAXXWidgetUtil.getParentContainer(this, JFrame.class)); } public String getButtonText(Collection<Attachment> attachments) { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java index d78fd1d..2aa1ce8 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandeUIHandler.java @@ -497,6 +497,11 @@ public class DemandeUIHandler extends AbstractFaxToMailUIHandler<DemandeUIModel, return ui.getValidator(); } + @Override + public Component getTopestUI() { + return getUI(); + } + /** * Récupère recursivement jusqu'au parent, les etats d'attentes définis pour un dossier. * diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUI.css b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUI.css index dca54e7..5feb326 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUI.css +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUI.css @@ -21,6 +21,11 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ +#demandsPanel { + rightDecoration: {topToolBar}; + title: "faxtomail.demand.title"; +} + #topToolBar { floatable: false; opaque: false; @@ -31,7 +36,6 @@ text: "faxtomail.demande.back.button.label"; actionIcon: cancel; toolTipText: "faxtomail.action.goto.previousScreen.tip"; - _applicationAction: { com.franciaflex.faxtomail.ui.swing.actions.GoToPreviousScreenAction.class }; } #saveButton { diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUI.jaxx index 71a57bd..af11030 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUI.jaxx @@ -21,9 +21,10 @@ <http://www.gnu.org/licenses/gpl-3.0.html>. #L% --> -<JPanel id='demandsPanel' layout="{ new BorderLayout() }" - implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<DemandesUIModel, DemandesUIHandler>' - onAncestorAdded="handler.showDemandGroupHighlightDialog()"> +<org.jdesktop.swingx.JXTitledPanel + id='demandsPanel' decorator='boxed' + implements='com.franciaflex.faxtomail.ui.swing.util.FaxToMailUI<DemandesUIModel, DemandesUIHandler>' + onAncestorAdded="handler.showDemandGroupHighlightDialog()"> <import> com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext @@ -48,23 +49,27 @@ <ButtonEmailGroup id="demandGroupButton"/> </JToolBar> - <JTabbedPane id="demandsTabPane" constraints="BorderLayout.CENTER"> - <!--<tab id="mainDemandTab">--> - <!--<DemandeUI id="mainDemand" constructorParams="this"/>--> - <!--</tab>--> - </JTabbedPane> + <JPanel layout="{ new BorderLayout() }"> + + <JTabbedPane id="demandsTabPane" constraints="BorderLayout.CENTER"> + <!--<tab id="mainDemandTab">--> + <!--<DemandeUI id="mainDemand" constructorParams="this"/>--> + <!--</tab>--> + </JTabbedPane> + + <JPanel layout='{new GridLayout(1,0)}' + constraints='BorderLayout.SOUTH'> + <JButton id="backButton" onActionPerformed="handler.closeFrame()"/> + <JButton id="saveButton" onActionPerformed="handler.save()"/> + <JButton id="transmitButton" onActionPerformed="handler.transmitDemande()"/> + <JButton id="printButton" onActionPerformed="handler.print()"/> + <JButton id="archiveButton" onActionPerformed="handler.archive()"/> + <JButton id="replyButton" onActionPerformed="handler.reply()"/> + <JButton id="groupButton" onActionPerformed="handler.group()"/> + </JPanel> - <JPanel layout='{new GridLayout(1,0)}' - constraints='BorderLayout.SOUTH'> - <JButton id="backButton"/> - <JButton id="saveButton" onActionPerformed="handler.save()"/> - <JButton id="transmitButton" onActionPerformed="handler.transmitDemande()"/> - <JButton id="printButton" onActionPerformed="handler.print()"/> - <JButton id="archiveButton" onActionPerformed="handler.archive()"/> - <JButton id="replyButton" onActionPerformed="handler.reply()"/> - <JButton id="groupButton" onActionPerformed="handler.group()"/> </JPanel> <DemandGroupHighlightDialog id="demandGroupHighlightDialog" constructorParams="getHandler().getContext(), demandGroupButton"/> -</JPanel> +</org.jdesktop.swingx.JXTitledPanel> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java index 94b7d9c..b7b7930 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/DemandesUIHandler.java @@ -35,6 +35,8 @@ import com.franciaflex.faxtomail.ui.swing.actions.SaveAndOpenSearchToGroupAction import com.franciaflex.faxtomail.ui.swing.actions.SaveDemandeAndExitAction; import com.franciaflex.faxtomail.ui.swing.util.AbstractFaxToMailUIHandler; import jaxx.runtime.validator.swing.SwingValidator; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.jaxx.application.swing.AbstractApplicationUIHandler; import org.nuiton.jaxx.application.swing.ApplicationUI; import org.nuiton.jaxx.application.swing.action.AbstractApplicationAction; @@ -55,6 +57,8 @@ import java.beans.PropertyChangeListener; */ public class DemandesUIHandler extends AbstractFaxToMailUIHandler<DemandesUIModel, DemandesUI> implements TabContainerHandler, CloseableUI { + private static final Log log = LogFactory.getLog(DemandesUIHandler.class); + protected Configuration config; protected final PropertyChangeListener demandEnabledAndValidListener = new PropertyChangeListener() { @@ -98,7 +102,7 @@ public class DemandesUIHandler extends AbstractFaxToMailUIHandler<DemandesUIMode } @Override - public void afterInit(DemandesUI demandesUI) { + public void afterInit(DemandesUI ui) { initUI(ui); DemandesUIModel model = getModel(); @@ -221,6 +225,11 @@ public class DemandesUIHandler extends AbstractFaxToMailUIHandler<DemandesUIMode return null; } + @Override + public Component getTopestUI() { + return getUI(); + } + /** * Returns the tab handler of the tab i. * @@ -315,7 +324,7 @@ public class DemandesUIHandler extends AbstractFaxToMailUIHandler<DemandesUIMode return change; } - protected void closeButtonPopups() { + public void closeButtonPopups() { getUI().getDemandGroupHighlightDialog().setVisible(false); DemandeUI demandeUI = (DemandeUI) getTabPanel().getSelectedComponent(); diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java index 80bdf8b..4759691 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/ButtonEmailGroup.java @@ -27,7 +27,9 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton; +import jaxx.runtime.swing.JAXXWidgetUtil; +import javax.swing.*; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Collection; @@ -66,7 +68,8 @@ public class ButtonEmailGroup extends AbstractToolbarPopupButton<DemandGroupUI> @Override protected DemandGroupUI createNewPopup() { - return new DemandGroupUI(FaxToMailUIContext.getApplicationContext()); + return new DemandGroupUI(FaxToMailUIContext.getApplicationContext(), + JAXXWidgetUtil.getParentContainer(this, JFrame.class)); } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupHighlightDialog.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupHighlightDialog.java index 1164a12..4dff1ea 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupHighlightDialog.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupHighlightDialog.java @@ -26,6 +26,7 @@ package com.franciaflex.faxtomail.ui.swing.content.demande.demandgroup; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.util.CloseButton; +import jaxx.runtime.swing.JAXXWidgetUtil; import javax.swing.*; import java.awt.*; @@ -47,7 +48,7 @@ public class DemandGroupHighlightDialog extends JDialog { protected final Timer timer; public DemandGroupHighlightDialog(FaxToMailUIContext context, ButtonEmailGroup buttonEmailGroup) { - super(context.getMainUI()); + super(JAXXWidgetUtil.getParentContainer(buttonEmailGroup, JFrame.class)); this.buttonEmailGroup = buttonEmailGroup; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUI.jaxx index f2d9496..73ab13c 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/demandgroup/DemandGroupUI.jaxx @@ -26,12 +26,21 @@ id='groupedDemandDialog'> <import> + com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel org.jdesktop.swingx.JXTable org.jdesktop.swingx.JXTitledPanel </import> + <script><![CDATA[ + + public DemandGroupUI(FaxToMailUIContext context, JFrame owner) { + super(context, owner); + } + + ]]></script> + <DemandeUIModel id='model' initializer='getContextValue(DemandeUIModel.class)'/> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java index f5f0355..11e6e9e 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/ButtonHistory.java @@ -29,8 +29,10 @@ import com.franciaflex.faxtomail.persistence.entities.History; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton; +import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.collections4.CollectionUtils; +import javax.swing.*; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Collection; @@ -80,7 +82,8 @@ public class ButtonHistory extends AbstractToolbarPopupButton<HistoryListUI> { @Override protected HistoryListUI createNewPopup() { - return new HistoryListUI(FaxToMailUIContext.getApplicationContext()); + return new HistoryListUI(FaxToMailUIContext.getApplicationContext(), + JAXXWidgetUtil.getParentContainer(this, JFrame.class)); } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx index e1f68f0..e12bb8a 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/history/HistoryListUI.jaxx @@ -26,12 +26,21 @@ id='historyListDialog'> <import> + com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel org.jdesktop.swingx.JXList org.jdesktop.swingx.JXTitledPanel </import> + <script><![CDATA[ + + public HistoryListUI(FaxToMailUIContext context, JFrame owner) { + super(context, owner); + } + + ]]></script> + <DemandeUIModel id='model' javaBean="null"/> diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java index dce7faa..af89479 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/ButtonDemandReplies.java @@ -29,8 +29,10 @@ import com.franciaflex.faxtomail.persistence.entities.Reply; import com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext; import com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel; import com.franciaflex.faxtomail.ui.swing.util.AbstractToolbarPopupButton; +import jaxx.runtime.swing.JAXXWidgetUtil; import org.apache.commons.collections4.CollectionUtils; +import javax.swing.*; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.util.Collection; @@ -88,7 +90,8 @@ public class ButtonDemandReplies extends AbstractToolbarPopupButton<DemandReplie @Override protected DemandRepliesUI createNewPopup() { - DemandRepliesUI ui = new DemandRepliesUI(FaxToMailUIContext.getApplicationContext()); + DemandRepliesUI ui = new DemandRepliesUI(FaxToMailUIContext.getApplicationContext(), + JAXXWidgetUtil.getParentContainer(this, JFrame.class)); return ui; } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUI.jaxx index 535d726..5e0cc10 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/content/demande/replies/DemandRepliesUI.jaxx @@ -26,12 +26,21 @@ id='repliesDialog'> <import> + com.franciaflex.faxtomail.ui.swing.FaxToMailUIContext com.franciaflex.faxtomail.ui.swing.content.demande.DemandeUIModel org.jdesktop.swingx.JXTable org.jdesktop.swingx.JXTitledPanel </import> + <script><![CDATA[ + + public DemandRepliesUI(FaxToMailUIContext context, JFrame owner) { + super(context, owner); + } + + ]]></script> + <Boolean id='editable' javaBean='null' /> <DemandeUIModel id='model' diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java index 15f752d..792bcda 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractFaxToMailUIHandler.java @@ -228,7 +228,7 @@ public abstract class AbstractFaxToMailUIHandler<M, UI extends FaxToMailUI<M, ?> public JFrame openFrame(ApplicationUI dialogContent, String title, Dimension dim) { - JFrame result = new JFrame(); + final JFrame result = new JFrame(); result.setResizable(true); getContext().setSecondaryFrame(result); @@ -263,7 +263,7 @@ public abstract class AbstractFaxToMailUIHandler<M, UI extends FaxToMailUI<M, ?> result.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { - closeFrame(getContext().getSecondaryFrame(), handler); + closeFrame(result, handler); } @Override @@ -285,7 +285,7 @@ public abstract class AbstractFaxToMailUIHandler<M, UI extends FaxToMailUI<M, ?> * Open frame and disable parent frame */ public JFrame openModalFrame(final ApplicationUI dialogContent, String title, Dimension dim) { - JFrame result = new JFrame(); + final JFrame result = new JFrame(); result.setResizable(true); getContext().setSecondaryFrame(result); @@ -323,7 +323,7 @@ public abstract class AbstractFaxToMailUIHandler<M, UI extends FaxToMailUI<M, ?> result.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { - closeFrame(getContext().getSecondaryFrame(), handler); + closeFrame(result, handler); } @Override diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java index 1524e9f..f6034a4 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupButton.java @@ -25,6 +25,9 @@ package com.franciaflex.faxtomail.ui.swing.util; */ import jaxx.runtime.SwingUtil; +import jaxx.runtime.swing.JAXXWidgetUtil; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import javax.swing.*; import javax.swing.event.ChangeEvent; @@ -42,6 +45,7 @@ import java.awt.event.WindowEvent; public abstract class AbstractToolbarPopupButton<UI extends AbstractToolbarPopupUI> extends JToggleButton { private static final long serialVersionUID = 1L; + private static final Log log = LogFactory.getLog(AbstractToolbarPopupButton.class); protected final UI popup; @@ -71,16 +75,53 @@ public abstract class AbstractToolbarPopupButton<UI extends AbstractToolbarPopup public void windowClosed(WindowEvent e) { setSelected(false); } + }); addChangeListener(new ChangeListener() { + + // window focus listener to force the popup to be on top of the demand frame, but not on top of other windows + final WindowAdapter windowAdapter = new WindowAdapter() { + @Override + public void windowGainedFocus(WindowEvent e) { + if (popup.isVisible()) { + if (log.isDebugEnabled()) { + log.debug("windowGainedFocus : popup always on top"); + } + popup.setAlwaysOnTop(true); + } + } + + @Override + public void windowLostFocus(WindowEvent e) { + if (popup.isVisible() && !popup.equals(e.getOppositeWindow())) { + if (log.isDebugEnabled()) { + log.debug("windowLostFocus : popup not always on top, bring to front opposite window"); + } + popup.setAlwaysOnTop(false); + e.getOppositeWindow().toFront(); + } + } + }; + @Override public void stateChanged(ChangeEvent e) { + JFrame buttonFrame = JAXXWidgetUtil.getParentContainer(AbstractToolbarPopupButton.this, JFrame.class); if (isSelected()) { if (!popup.isVisible()) { popup.openEditor(AbstractToolbarPopupButton.this); + if (log.isDebugEnabled()) { + log.debug("stateChanged addWindowListener"); + } + buttonFrame.addWindowFocusListener(windowAdapter); } } else { + if (popup.isVisible()) { + if (log.isDebugEnabled()) { + log.debug("stateChanged removeWindowListener"); + } + buttonFrame.removeWindowFocusListener(windowAdapter); + } popup.closeEditor(); } } diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java index 944104d..f3b370d 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupHandler.java @@ -27,6 +27,8 @@ package com.franciaflex.faxtomail.ui.swing.util; import jaxx.runtime.SwingUtil; import jaxx.runtime.swing.ComponentMover; import jaxx.runtime.swing.ComponentResizer; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import javax.swing.*; import java.awt.*; @@ -41,6 +43,8 @@ import static org.nuiton.i18n.I18n.t; */ public abstract class AbstractToolbarPopupHandler<M, UI extends AbstractToolbarPopupUI<M, ?>> extends AbstractFaxToMailUIHandler<M,UI> { + private static final Log log = LogFactory.getLog(AbstractToolbarPopupHandler.class); + public static final String CLOSE_DIALOG_ACTION = "closeDialog"; public static final String SHOW_DIALOG_ACTION = "showDialog"; diff --git a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.jaxx b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.jaxx index 627420f..74e2f3a 100644 --- a/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.jaxx +++ b/faxtomail-ui-swing/src/main/java/com/franciaflex/faxtomail/ui/swing/util/AbstractToolbarPopupUI.jaxx @@ -37,8 +37,8 @@ <script><![CDATA[ -public AbstractToolbarPopupUI(FaxToMailUIContext context) { - super(context.getMainUI()); +public AbstractToolbarPopupUI(FaxToMailUIContext context, JFrame owner) { + super(owner); FaxToMailUIUtil.setApplicationContext(this, context); } diff --git a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties index d455bc8..f6a0949 100644 --- a/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties +++ b/faxtomail-ui-swing/src/main/resources/i18n/faxtomail-ui-swing_fr_FR.properties @@ -342,3 +342,4 @@ jaxx.application.error.desktop.not.supported=L'ouverture des fichiers par le sys jaxx.application.error.desktop.print.not.supported=Erreur lors de l'impression jaxx.application.error.noPrinter=Erreur lors de l'impression swing.error.cannot.copy.file=Erreur lors de la copie des fichiers +test= -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.