Issues #1229 Changes for non-blocking ColormapDialog.

Change-Id: I95126e4d7e0b450e014764c96caf93cdff9c2d8d

Former-commit-id: bacff2f0f1 [formerly cdf5c546ab] [formerly 8e86f32714] [formerly 6833c7e04c [formerly 8e86f32714 [formerly 88476b683c5c480395edacd2920e32a0589a92e5]]]
Former-commit-id: 6833c7e04c
Former-commit-id: 68aa8f3b270c031298664186936eadb3c07db89b [formerly d5acf40cc2]
Former-commit-id: 1075e8ba16
This commit is contained in:
Roger Ferrel 2012-10-17 10:20:18 -05:00
parent 824a1f8699
commit 85fbb59441
3 changed files with 82 additions and 28 deletions

View file

@ -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.gfe.core.parm.Parm;
import com.raytheon.viz.ui.cmenu.AbstractRightClickAction; import com.raytheon.viz.ui.cmenu.AbstractRightClickAction;
import com.raytheon.viz.ui.dialogs.ColormapDialog; 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. * 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 * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Feb 2, 2011 7999 dgilling Initial creation * Feb 2, 2011 7999 dgilling Initial creation
* Oct 17, 2012 1229 rferrel Changes for non-blocking ColormapDialog.
* *
* </pre> * </pre>
* *
@ -49,6 +51,8 @@ public class ChangeColorMapRangeAction extends AbstractRightClickAction {
private Parm parm; private Parm parm;
private ColormapDialog colorMapDlg;
public ChangeColorMapRangeAction(Parm parm) { public ChangeColorMapRangeAction(Parm parm) {
super("Set Range..."); super("Set Range...");
this.parm = parm; this.parm = parm;
@ -61,21 +65,42 @@ public class ChangeColorMapRangeAction extends AbstractRightClickAction {
*/ */
@Override @Override
public void run() { public void run() {
Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow() if (colorMapDlg == null || colorMapDlg.getShell() == null
.getShell(); || colorMapDlg.isDisposed()) {
ColorMapCapability cap = getSelectedRsc().getCapability( Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
ColorMapCapability.class); .getShell();
IColorMap prevColorMap = cap.getColorMapParameters().getColorMap(); ColorMapCapability cap = getSelectedRsc().getCapability(
float prevMax = cap.getColorMapParameters().getColorMapMax(); ColorMapCapability.class);
float prevMin = cap.getColorMapParameters().getColorMapMin(); 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", colorMapDlg = new ColormapDialog(shell, "Set Color Table Range",
cap, parm.getGridInfo().getPrecision()); cap, parm.getGridInfo().getPrecision());
if (cmd.open() != ColormapDialog.OK) { colorMapDlg.setBlockOnOpen(false);
cap.getColorMapParameters().setColorMap(prevColorMap); colorMapDlg.setCloseCallback(new ICloseCallback() {
cap.getColorMapParameters().setColorMapMax(prevMax);
cap.getColorMapParameters().setColorMapMin(prevMin); @Override
cap.notifyResources(); 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();
} }
} }
} }

View file

@ -26,6 +26,7 @@ import org.eclipse.ui.PlatformUI;
import com.raytheon.uf.common.colormap.IColorMap; import com.raytheon.uf.common.colormap.IColorMap;
import com.raytheon.uf.viz.core.rsc.capabilities.ColorMapCapability; import com.raytheon.uf.viz.core.rsc.capabilities.ColorMapCapability;
import com.raytheon.viz.ui.dialogs.ColormapDialog; 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 * Date Ticket# Engineer Description
* ------------ ---------- ----------- -------------------------- * ------------ ---------- ----------- --------------------------
* Jul 24, 2007 chammack Initial Creation. * Jul 24, 2007 chammack Initial Creation.
* Oct 17, 2012 1229 rferrel Changes for non-blocking ColormapDialog.
* *
* </pre> * </pre>
* *
@ -45,6 +47,8 @@ import com.raytheon.viz.ui.dialogs.ColormapDialog;
* @version 1 * @version 1
*/ */
public class ChangeColorMapAction extends AbstractRightClickAction { public class ChangeColorMapAction extends AbstractRightClickAction {
private ColormapDialog colorMapDlg;
public ChangeColorMapAction() { public ChangeColorMapAction() {
super("Change Colormap..."); super("Change Colormap...");
} }
@ -60,21 +64,42 @@ public class ChangeColorMapAction extends AbstractRightClickAction {
*/ */
@Override @Override
public void run() { 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", if (colorMapDlg == null || colorMapDlg.getShell() == null
cap); || colorMapDlg.isDisposed()) {
if (cmd.open() != ColormapDialog.OK) { Shell shell = PlatformUI.getWorkbench().getActiveWorkbenchWindow()
cap.getColorMapParameters().setColorMap(prevColorMap); .getShell();
cap.getColorMapParameters().setColorMapMax(prevMax); ColorMapCapability cap = getSelectedRsc().getCapability(
cap.getColorMapParameters().setColorMapMin(prevMin); ColorMapCapability.class);
cap.notifyResources(); 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();
} }
} }
} }

View file

@ -45,6 +45,7 @@ import com.raytheon.uf.viz.core.rsc.capabilities.ColorMapCapability;
* Feb 5, 2007 chammack Initial Creation. * Feb 5, 2007 chammack Initial Creation.
* Aug 20, 2008 dglazesk Updated for the new ColorMap interface * Aug 20, 2008 dglazesk Updated for the new ColorMap interface
* Oct 31, 2010 ryu use Text widgets for alternative entry * Oct 31, 2010 ryu use Text widgets for alternative entry
* Oct 17, 2016 1229 rferrel Changes to allow non-blocking dialog.
* *
* </pre> * </pre>
* *
@ -165,4 +166,7 @@ public class ColormapDialog extends CaveJFACEDialog {
super.cancelPressed(); super.cancelPressed();
} }
public ColorMapCapability getColorMapCapability() {
return cap;
}
} }