From 85fbb594419312f96bc943f69d46cc89f6163541 Mon Sep 17 00:00:00 2001 From: Roger Ferrel Date: Wed, 17 Oct 2012 10:20:18 -0500 Subject: [PATCH] Issues #1229 Changes for non-blocking ColormapDialog. Change-Id: I95126e4d7e0b450e014764c96caf93cdff9c2d8d Former-commit-id: bacff2f0f16e156f6bc45cd299fd0f58a52848e0 [formerly cdf5c546aba382947890f3e6aa6dc8c5c847a0a1] [formerly 8e86f32714c3db22481d692dc552adf92d6af807] [formerly 6833c7e04c4e318a05872ca95d457dc0f98eb3b6 [formerly 8e86f32714c3db22481d692dc552adf92d6af807 [formerly 88476b683c5c480395edacd2920e32a0589a92e5]]] Former-commit-id: 6833c7e04c4e318a05872ca95d457dc0f98eb3b6 Former-commit-id: 68aa8f3b270c031298664186936eadb3c07db89b [formerly d5acf40cc22ed786882334edbaf3030361209521] Former-commit-id: 1075e8ba16e880fcfb844dc36c0fcd17cf2050a2 --- .../colorbar/ChangeColorMapRangeAction.java | 53 ++++++++++++++----- .../viz/ui/cmenu/ChangeColorMapAction.java | 53 ++++++++++++++----- .../viz/ui/dialogs/ColormapDialog.java | 4 ++ 3 files changed, 82 insertions(+), 28 deletions(-) diff --git a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/rsc/colorbar/ChangeColorMapRangeAction.java b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/rsc/colorbar/ChangeColorMapRangeAction.java index a5cc5813ae..d7e08dc049 100644 --- a/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/rsc/colorbar/ChangeColorMapRangeAction.java +++ b/cave/com.raytheon.viz.gfe/src/com/raytheon/viz/gfe/rsc/colorbar/ChangeColorMapRangeAction.java @@ -27,6 +27,7 @@ import com.raytheon.uf.viz.core.rsc.capabilities.ColorMapCapability; import com.raytheon.viz.gfe.core.parm.Parm; import com.raytheon.viz.ui.cmenu.AbstractRightClickAction; import com.raytheon.viz.ui.dialogs.ColormapDialog; +import com.raytheon.viz.ui.dialogs.ICloseCallback; /** * Action for right click menu for changing range of color map values. @@ -38,6 +39,7 @@ import com.raytheon.viz.ui.dialogs.ColormapDialog; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Feb 2, 2011 7999 dgilling Initial creation + * Oct 17, 2012 1229 rferrel Changes for non-blocking ColormapDialog. * * * @@ -49,6 +51,8 @@ public class ChangeColorMapRangeAction extends AbstractRightClickAction { private Parm parm; + private ColormapDialog colorMapDlg; + public ChangeColorMapRangeAction(Parm parm) { super("Set Range..."); this.parm = parm; @@ -61,21 +65,42 @@ public class ChangeColorMapRangeAction extends AbstractRightClickAction { */ @Override public void run() { - Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow() - .getShell(); - ColorMapCapability cap = getSelectedRsc().getCapability( - ColorMapCapability.class); - IColorMap prevColorMap = cap.getColorMapParameters().getColorMap(); - float prevMax = cap.getColorMapParameters().getColorMapMax(); - float prevMin = cap.getColorMapParameters().getColorMapMin(); + if (colorMapDlg == null || colorMapDlg.getShell() == null + || colorMapDlg.isDisposed()) { + Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow() + .getShell(); + ColorMapCapability cap = getSelectedRsc().getCapability( + ColorMapCapability.class); + final IColorMap prevColorMap = cap.getColorMapParameters() + .getColorMap(); + final float prevMax = cap.getColorMapParameters().getColorMapMax(); + final float prevMin = cap.getColorMapParameters().getColorMapMin(); - ColormapDialog cmd = new ColormapDialog(shell, "Set Color Table Range", - cap, parm.getGridInfo().getPrecision()); - if (cmd.open() != ColormapDialog.OK) { - cap.getColorMapParameters().setColorMap(prevColorMap); - cap.getColorMapParameters().setColorMapMax(prevMax); - cap.getColorMapParameters().setColorMapMin(prevMin); - cap.notifyResources(); + colorMapDlg = new ColormapDialog(shell, "Set Color Table Range", + cap, parm.getGridInfo().getPrecision()); + colorMapDlg.setBlockOnOpen(false); + colorMapDlg.setCloseCallback(new ICloseCallback() { + + @Override + public void dialogClosed(Object returnValue) { + if (returnValue instanceof Integer) { + int status = (Integer) returnValue; + if (status != ColormapDialog.OK) { + ColorMapCapability cap = colorMapDlg + .getColorMapCapability(); + cap.getColorMapParameters().setColorMap( + prevColorMap); + cap.getColorMapParameters().setColorMapMax(prevMax); + cap.getColorMapParameters().setColorMapMin(prevMin); + cap.notifyResources(); + } + } + colorMapDlg = null; + } + }); + colorMapDlg.open(); + } else { + colorMapDlg.bringToTop(); } } } diff --git a/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/cmenu/ChangeColorMapAction.java b/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/cmenu/ChangeColorMapAction.java index 9e40d8d1f1..0b53f327c0 100644 --- a/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/cmenu/ChangeColorMapAction.java +++ b/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/cmenu/ChangeColorMapAction.java @@ -26,6 +26,7 @@ import org.eclipse.ui.PlatformUI; import com.raytheon.uf.common.colormap.IColorMap; import com.raytheon.uf.viz.core.rsc.capabilities.ColorMapCapability; import com.raytheon.viz.ui.dialogs.ColormapDialog; +import com.raytheon.viz.ui.dialogs.ICloseCallback; /** * @@ -38,6 +39,7 @@ import com.raytheon.viz.ui.dialogs.ColormapDialog; * Date Ticket# Engineer Description * ------------ ---------- ----------- -------------------------- * Jul 24, 2007 chammack Initial Creation. + * Oct 17, 2012 1229 rferrel Changes for non-blocking ColormapDialog. * * * @@ -45,6 +47,8 @@ import com.raytheon.viz.ui.dialogs.ColormapDialog; * @version 1 */ public class ChangeColorMapAction extends AbstractRightClickAction { + private ColormapDialog colorMapDlg; + public ChangeColorMapAction() { super("Change Colormap..."); } @@ -60,21 +64,42 @@ public class ChangeColorMapAction extends AbstractRightClickAction { */ @Override public void run() { - Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow() - .getShell(); - ColorMapCapability cap = getSelectedRsc().getCapability( - ColorMapCapability.class); - IColorMap prevColorMap = cap.getColorMapParameters().getColorMap(); - float prevMax = cap.getColorMapParameters().getColorMapMax(); - float prevMin = cap.getColorMapParameters().getColorMapMin(); - ColormapDialog cmd = new ColormapDialog(shell, "Set Color Table Range", - cap); - if (cmd.open() != ColormapDialog.OK) { - cap.getColorMapParameters().setColorMap(prevColorMap); - cap.getColorMapParameters().setColorMapMax(prevMax); - cap.getColorMapParameters().setColorMapMin(prevMin); - cap.notifyResources(); + if (colorMapDlg == null || colorMapDlg.getShell() == null + || colorMapDlg.isDisposed()) { + Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow() + .getShell(); + ColorMapCapability cap = getSelectedRsc().getCapability( + ColorMapCapability.class); + final IColorMap prevColorMap = cap.getColorMapParameters() + .getColorMap(); + final float prevMax = cap.getColorMapParameters().getColorMapMax(); + final float prevMin = cap.getColorMapParameters().getColorMapMin(); + colorMapDlg = new ColormapDialog(shell, "Set Color Table Range", + cap); + colorMapDlg.setBlockOnOpen(false); + colorMapDlg.setCloseCallback(new ICloseCallback() { + + @Override + public void dialogClosed(Object returnValue) { + if (returnValue instanceof Integer) { + int status = (Integer) returnValue; + if (status != ColormapDialog.OK) { + ColorMapCapability cap = colorMapDlg + .getColorMapCapability(); + cap.getColorMapParameters().setColorMap( + prevColorMap); + cap.getColorMapParameters().setColorMapMax(prevMax); + cap.getColorMapParameters().setColorMapMin(prevMin); + cap.notifyResources(); + } + } + colorMapDlg = null; + } + }); + colorMapDlg.open(); + } else { + colorMapDlg.bringToTop(); } } } diff --git a/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/dialogs/ColormapDialog.java b/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/dialogs/ColormapDialog.java index ab7262d07f..d390c25248 100644 --- a/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/dialogs/ColormapDialog.java +++ b/cave/com.raytheon.viz.ui/src/com/raytheon/viz/ui/dialogs/ColormapDialog.java @@ -45,6 +45,7 @@ import com.raytheon.uf.viz.core.rsc.capabilities.ColorMapCapability; * Feb 5, 2007 chammack Initial Creation. * Aug 20, 2008 dglazesk Updated for the new ColorMap interface * Oct 31, 2010 ryu use Text widgets for alternative entry + * Oct 17, 2016 1229 rferrel Changes to allow non-blocking dialog. * * * @@ -165,4 +166,7 @@ public class ColormapDialog extends CaveJFACEDialog { super.cancelPressed(); } + public ColorMapCapability getColorMapCapability() { + return cap; + } }