Omaha #3467 Error occurs when loading/editing the Range Rings tool multiple times

Change-Id: I68642e05ce970545a516d4fab1492a860c530032

Former-commit-id: 447986eed3 [formerly 06b98bb48a] [formerly 447986eed3 [formerly 06b98bb48a] [formerly ee36d09cb0 [formerly 725354074d54112c8658dc34a8ac564739acbebb]]]
Former-commit-id: ee36d09cb0
Former-commit-id: 8ace5b852c [formerly a3feb0de78]
Former-commit-id: e7e58b4e78
This commit is contained in:
Mark Peters 2014-09-02 16:31:44 -05:00
parent 91ae999120
commit 72184dbcaf
4 changed files with 24 additions and 43 deletions

View file

@ -47,7 +47,6 @@ import com.raytheon.uf.viz.core.drawables.IDescriptor;
import com.raytheon.uf.viz.core.drawables.IFrameCoordinator.FrameChangeMode;
import com.raytheon.uf.viz.core.drawables.IFrameCoordinator.FrameChangeOperation;
import com.raytheon.uf.viz.core.drawables.IRenderableDisplay;
import com.raytheon.uf.viz.core.drawables.ResourcePair;
import com.raytheon.uf.viz.core.exception.VizException;
import com.raytheon.uf.viz.core.globals.VizGlobalsManager;
import com.raytheon.uf.viz.core.maps.scales.MapScalesManager;
@ -55,7 +54,6 @@ import com.raytheon.uf.viz.core.procedures.Bundle;
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
import com.raytheon.uf.viz.core.rsc.IInputHandler;
import com.raytheon.uf.viz.core.rsc.IInputHandler.InputPriority;
import com.raytheon.uf.viz.core.rsc.capabilities.EditableCapability;
import com.raytheon.uf.viz.core.time.TimeMatchingJob;
import com.raytheon.uf.viz.d2d.core.legend.D2DLegendResource;
import com.raytheon.uf.viz.d2d.core.legend.D2DLegendResource.LegendMode;
@ -68,7 +66,6 @@ import com.raytheon.viz.ui.color.IBackgroundColorChangedListener;
import com.raytheon.viz.ui.editor.AbstractEditor;
import com.raytheon.viz.ui.editor.IMultiPaneEditor;
import com.raytheon.viz.ui.editor.ISelectedPanesChangedListener;
import com.raytheon.viz.ui.input.EditableManager;
import com.raytheon.viz.ui.input.InputAdapter;
import com.raytheon.viz.ui.input.PanHandler;
import com.raytheon.viz.ui.panes.PaneManager;
@ -95,6 +92,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Aug 9, 2013 DR 16427 D. Friedman Swap additional input handlers.
* Oct 10, 2013 #2104 mschenke Switched to use MapScalesManager
* Jul 15, 2014 2954 njensen Updated init() for MapScalesManager change
* Aug 25, 2014 3467 mapeters Removed changing of editability from swapPanes().
*
* </pre>
*
@ -112,8 +110,6 @@ public class SideView extends ViewPart implements IMultiPaneEditor,
private LoopProperties loopProperties;
private AbstractVizResource<?, ?> editableResource = null;
private Bundle bundleToLoad = null;
private BackgroundColor backgroundColor;
@ -368,21 +364,6 @@ public class SideView extends ViewPart implements IMultiPaneEditor,
if (dPane.isVisible() == false) {
editorHiddenDisplays.add(dPane.getRenderableDisplay());
}
if (editableResource == null) {
for (ResourcePair rp : dPane.getDescriptor()
.getResourceList()) {
AbstractVizResource<?, ?> rsc = rp.getResource();
if (rsc != null
&& rsc.hasCapability(EditableCapability.class)) {
if (rsc.getCapability(EditableCapability.class)
.isEditable()) {
editableResource = rsc;
break;
}
}
}
}
}
IRenderableDisplay[] myRenderables = paneManager
@ -574,16 +555,6 @@ public class SideView extends ViewPart implements IMultiPaneEditor,
}
}
// Set up editableness
if (editableResource != null) {
EditableManager.makeEditable(editableResource, false);
}
this.editableResource = editableResource;
if (this.editableResource != null) {
EditableManager.makeEditable(this.editableResource, true);
}
theEditor.getBackgroundColor().setColor(BGColorMode.EDITOR,
myRenderables[0].getBackgroundColor());

View file

@ -34,6 +34,7 @@ import com.vividsolutions.jts.geom.Coordinate;
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* 10-21-09 #1711 bsteffen Initial Comments, changed to accomodate both Fixed and Movable Rings
* 08-13-14 #3467 mapeters Modified equals() method to prevent ArrayIndexOutOfBoundsException.
*
* </pre>
*
@ -179,7 +180,7 @@ public class RangeRing {
if (radii.length != otherRing.radii.length) {
return false;
}
for (int i = 0; i <= radii.length; i++) {
for (int i = 0; i < radii.length; i++) {
if (radii[i] != otherRing.radii[i]) {
return false;
}

View file

@ -85,6 +85,8 @@ import com.vividsolutions.jts.geom.Coordinate;
* 07-02-2013 #2145 rferrel populatePointsMenuButton no longer modifies movableRings.
* Indicate selected movable ring and only delete selected ring.
* Verify listeners for radius, latitude and longitude fields.
* 08-20-12 #3467 mapeters Added addChangeListenerToResourceData and
* removeChangeListenerFromResourceData functions.
*
* </pre>
*
@ -1041,4 +1043,13 @@ public class RangeRingDialog extends CaveJFACEDialog implements
}
});
}
public void addChangeListenerToResourceData(IResourceDataChanged resource) {
this.resourceData.addChangeListener(resource);
}
public void removeChangeListenerFromResourceData(
IResourceDataChanged resource) {
this.resourceData.removeChangeListener(resource);
}
}

View file

@ -80,6 +80,7 @@ import com.vividsolutions.jts.geom.Point;
* 15Mar2013 15693 mgamazaychikov Added magnification capability.
* 07-21-14 #3412 mapeters Updated deprecated drawCircle call.
* 07-29-14 #3465 mapeters Updated deprecated drawString() calls.
* 08-13-14 #3467 mapeters ringDialog notifies this of changes.
* </pre>
*
* @author ebabin
@ -118,6 +119,9 @@ public class RangeRingsLayer extends AbstractMovableToolLayer<RangeRing>
GenericToolsResourceData<RangeRingsLayer> resourceData,
LoadProperties loadProperties) throws VizException {
super(resourceData, loadProperties);
if (ringDialog != null) {
ringDialog.addChangeListenerToResourceData(this);
}
getCapabilities().addCapability(new OutlineCapability());
// add magnification capability
getCapabilities().addCapability(new MagnificationCapability());
@ -136,6 +140,7 @@ public class RangeRingsLayer extends AbstractMovableToolLayer<RangeRing>
resourceData.fireChangeListeners(ChangeType.DATA_UPDATE, false);
super.disposeInternal();
resourceData.removeChangeListener(this);
ringDialog.removeChangeListenerFromResourceData(this);
}
@Override
@ -154,7 +159,7 @@ public class RangeRingsLayer extends AbstractMovableToolLayer<RangeRing>
setObjects(dataManager.getRangeRings());
}
public void displayDialog() throws VizException {
public void displayDialog() {
VizApp.runAsync(new Runnable() {
@ -164,19 +169,17 @@ public class RangeRingsLayer extends AbstractMovableToolLayer<RangeRing>
Shell shell = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getShell();
if (ringDialog == null || ringDialog.getReturnCode() != 0) {
ringDialog = new RangeRingDialog(shell, resourceData);
ringDialog.setBlockOnOpen(false);
ringDialog.open();
} else {
ringDialog.open();
resourceData.addChangeListener(ringDialog);
ringDialog.open();
}
} catch (VizException e) {
// TODO Auto-generated catch block
e.printStackTrace();
statusHandler.handle(Priority.PROBLEM,
e.getLocalizedMessage(), e);
}
}
@ -281,12 +284,7 @@ public class RangeRingsLayer extends AbstractMovableToolLayer<RangeRing>
if (object instanceof EditableCapability) {
EditableCapability cap = (EditableCapability) object;
if (cap.isEditable()) {
try {
displayDialog();
} catch (VizException e) {
statusHandler.handle(Priority.PROBLEM,
e.getLocalizedMessage(), e);
}
displayDialog();
}
} else if (object instanceof Boolean) {
if ((Boolean) object) {