From a3608d98fd4bf2a0e4d34d16d36c21b23a48b530 Mon Sep 17 00:00:00 2001 From: Roger Ferrel Date: Fri, 9 Nov 2012 15:15:09 -0600 Subject: [PATCH] Issue #1298 Changes for non-blocking StoreTransmitDlg. Changes from reviewer's coments. Change-Id: I34e111ee2abc8ca154334e9017ea448bfa6fa31f Former-commit-id: 13c0fb3f3d126d5fac54f41b76cdf5f9dd46d39e [formerly 6445081aa9ee3c57ab5f3fc21cf6e46c665c5d67] [formerly 13c0fb3f3d126d5fac54f41b76cdf5f9dd46d39e [formerly 6445081aa9ee3c57ab5f3fc21cf6e46c665c5d67] [formerly 76109f3bf7ddad6c8b401801f31c9064cfc84627 [formerly 35e8deb27aecf5c805f0c007e70c45d8cc9988cb]]] Former-commit-id: 76109f3bf7ddad6c8b401801f31c9064cfc84627 Former-commit-id: 01899535e38c38e8f3d3a63913c1d5a1d05c3853 [formerly e7cd99ff0d327d5b91a3997145aaa48acd420455] Former-commit-id: 3ebaaa89927ade983b9c1a373d73ce408413f5d6 --- .../formatterlauncher/ProductEditorComp.java | 11 ++- .../formatterlauncher/StoreTransmitDlg.java | 71 +++++++------------ 2 files changed, 35 insertions(+), 47 deletions(-) diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/ProductEditorComp.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/ProductEditorComp.java index a7777831ff..d066af7907 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/ProductEditorComp.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/ProductEditorComp.java @@ -141,6 +141,7 @@ import com.raytheon.viz.ui.dialogs.ICloseCallback; * 31 AUG 2012 15037 mli Handle bad characters in text formatter definition * 07 Nov 2012 1298 rferrel Changes for non-blocking CallToActionsDlg. * Changes for non-blocking FindReplaceDlg. + * Changes for non-blocking StoreTransmitDlg. * * * @@ -1084,8 +1085,6 @@ public class ProductEditorComp extends Composite implements // Store/transmit... boolean showStore = (action == Action.STORE) ? true : false; - StoreTransmitDlg storeDlg = new StoreTransmitDlg(parent.getShell(), - showStore, this, transmissionCB); String pid; if (showStore) { pid = guessTDBPil(); @@ -1096,7 +1095,13 @@ public class ProductEditorComp extends Composite implements pid = "kkkknnnxxx"; } } - storeDlg.open(pid); + + // The dialog being opened is modal to the parent dialog. This will + // prevent the launching of another dialog until the modal dialog is + // closed. + StoreTransmitDlg storeDlg = new StoreTransmitDlg(parent.getShell(), + showStore, this, transmissionCB, pid); + storeDlg.open(); } } diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/StoreTransmitDlg.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/StoreTransmitDlg.java index 379abf9d87..98174d46bc 100755 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/StoreTransmitDlg.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/dialogs/formatterlauncher/StoreTransmitDlg.java @@ -29,7 +29,6 @@ import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Dialog; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.ProgressBar; @@ -52,6 +51,7 @@ import com.raytheon.uf.viz.core.requests.ThriftClient; import com.raytheon.viz.core.mode.CAVEMode; import com.raytheon.viz.gfe.core.DataManager; import com.raytheon.viz.gfe.product.TextDBUtil; +import com.raytheon.viz.ui.dialogs.CaveSWTDialog; /** * Display the Store/Transmit dialog. @@ -64,33 +64,20 @@ import com.raytheon.viz.gfe.product.TextDBUtil; * 19 FEB 2010 4132 ryu Product correction. * 28May2010 2187 cjeanbap Added StdTextProductFactory * functionality. + * 09 NOV 2012 1298 rferrel Changes for non-blocking dialog. * * * @author lvenable * @version 1.0 * */ -public class StoreTransmitDlg extends Dialog implements IStoreTransmitProduct { +public class StoreTransmitDlg extends CaveSWTDialog implements + IStoreTransmitProduct { private static final transient IUFStatusHandler statusHandler = UFStatus .getHandler(StoreTransmitDlg.class); private static int SEQ_NUMBER = 0; - /** - * Dialog shell. - */ - private Shell shell; - - /** - * The display control. - */ - private Display display; - - /** - * Return object when the shell is disposed. - */ - private String returnObj = null; - /** * PRoduct ID text control. */ @@ -138,6 +125,8 @@ public class StoreTransmitDlg extends Dialog implements IStoreTransmitProduct { */ private ITransmissionState transmissionCB; + private String pid; + /** * Constructor. * @@ -147,25 +136,20 @@ public class StoreTransmitDlg extends Dialog implements IStoreTransmitProduct { * Store flag. True is store, false is transmit. */ public StoreTransmitDlg(Shell parent, boolean storeDialog, - ProductEditorComp editor, ITransmissionState transmissionCB) { - super(parent, 0); + ProductEditorComp editor, ITransmissionState transmissionCB, + String pid) { + super(parent, SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL, + CAVE.DO_NOT_BLOCK); this.transmissionCB = transmissionCB; isStoreDialog = storeDialog; parentEditor = editor; this.productText = editor.getProductText(); + this.pid = pid; } - /** - * Setup and open the dialog. - * - * @return Return object. - */ - public Object open(String initialPid) { - Shell parent = getParent(); - display = parent.getDisplay(); - shell = new Shell(parent, SWT.DIALOG_TRIM); - + @Override + protected void initializeComponents(Shell shell) { String title = null; CAVEMode opMode = DataManager.getCurrentInstance().getOpMode(); if (opMode.equals(CAVEMode.OPERATIONAL)) { @@ -199,18 +183,12 @@ public class StoreTransmitDlg extends Dialog implements IStoreTransmitProduct { // Initialize all of the controls and layouts initializeComponents(); - productIdTF.insert(initialPid); + } - shell.pack(); - - shell.open(); - while (!shell.isDisposed()) { - if (!display.readAndDispatch()) { - display.sleep(); - } - } - - return returnObj; + @Override + protected void preOpened() { + super.preOpened(); + productIdTF.insert(pid); } /** @@ -226,6 +204,8 @@ public class StoreTransmitDlg extends Dialog implements IStoreTransmitProduct { createMainControls(); createBottomButtons(); + Display display = shell.getParent().getDisplay(); + countdownThread = new StoreTransmitCountdownThread(display, progBar, progressLbl, countdownText, this, isStoreDialog); } @@ -327,6 +307,7 @@ public class StoreTransmitDlg extends Dialog implements IStoreTransmitProduct { if (countdownThread.isDone() == false) { countdownThread.cancelThread(); progressLbl.setText(countdownText); + Display display = shell.getParent().getDisplay(); progressLbl.setBackground(display .getSystemColor(SWT.COLOR_WIDGET_BACKGROUND)); progressLbl.setForeground(display @@ -334,8 +315,8 @@ public class StoreTransmitDlg extends Dialog implements IStoreTransmitProduct { } } - returnObj = null; - shell.dispose(); + setReturnValue(null); + close(); } }); } @@ -374,9 +355,11 @@ public class StoreTransmitDlg extends Dialog implements IStoreTransmitProduct { // The asyncExec call is used to dispose of the shell since it is // called outside the GUI thread (count down thread). - display.asyncExec(new Runnable() { + VizApp.runAsync(new Runnable() { + + @Override public void run() { - shell.dispose(); + close(); } }); }