Issue #1222 Fixed MapResourceGroup to manage keeping capabilties in sync with underlying resources by using listeners. Also fixed issue where you can set map resources to be time match basis to avoid errors. Fixed build when merging in 12.10
Change-Id: Iec0389be3a563df2d14f079cdd127a32ba552237 Former-commit-id: ac247423f66f1b29b2235595f08b8cee03962842
This commit is contained in:
parent
8880f378c2
commit
d63f741ab5
4 changed files with 53 additions and 13 deletions
|
@ -31,10 +31,12 @@ import com.raytheon.uf.viz.core.drawables.ResourcePair;
|
|||
import com.raytheon.uf.viz.core.exception.VizException;
|
||||
import com.raytheon.uf.viz.core.map.MapDescriptor;
|
||||
import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
|
||||
import com.raytheon.uf.viz.core.rsc.IResourceDataChanged;
|
||||
import com.raytheon.uf.viz.core.rsc.IResourceGroup;
|
||||
import com.raytheon.uf.viz.core.rsc.LoadProperties;
|
||||
import com.raytheon.uf.viz.core.rsc.ResourceList;
|
||||
import com.raytheon.uf.viz.core.rsc.ResourceProperties;
|
||||
import com.raytheon.uf.viz.core.rsc.capabilities.AbstractCapability;
|
||||
import com.raytheon.uf.viz.core.rsc.capabilities.ColorableCapability;
|
||||
import com.raytheon.uf.viz.core.rsc.capabilities.ImagingCapability;
|
||||
import com.raytheon.uf.viz.core.rsc.capabilities.OutlineCapability;
|
||||
|
@ -79,7 +81,20 @@ public class MapResourceGroup extends
|
|||
}
|
||||
|
||||
});
|
||||
|
||||
this.resourceData.addChangeListener(new IResourceDataChanged() {
|
||||
@Override
|
||||
public void resourceChanged(ChangeType type, Object object) {
|
||||
if (type == ChangeType.CAPABILITY
|
||||
&& object instanceof AbstractCapability) {
|
||||
for (ResourcePair rp : resourceData.getResourceList()) {
|
||||
rp.getLoadProperties()
|
||||
.getCapabilities()
|
||||
.addCapability(
|
||||
((AbstractCapability) object).clone());
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void addListener(AbstractVizResource<?, MapDescriptor> rsc)
|
||||
|
@ -129,6 +144,10 @@ public class MapResourceGroup extends
|
|||
for (ResourcePair rp : this.resourceData.getResourceList()) {
|
||||
AbstractVizResource<?, ?> rsc = rp.getResource();
|
||||
if (rsc != null) {
|
||||
rsc.getCapabilities().addCapability(
|
||||
getCapability(ColorableCapability.class).clone());
|
||||
rsc.getCapabilities().addCapability(
|
||||
getCapability(OutlineCapability.class).clone());
|
||||
rsc.init(target);
|
||||
}
|
||||
}
|
||||
|
@ -154,13 +173,6 @@ public class MapResourceGroup extends
|
|||
if (properties.isDisplayable(displayWidth)) {
|
||||
PaintProperties newProps = new PaintProperties(paintProps);
|
||||
|
||||
// keep these in sync
|
||||
|
||||
resource.getCapabilities().addCapability(
|
||||
getCapability(ColorableCapability.class));
|
||||
resource.getCapabilities().addCapability(
|
||||
getCapability(OutlineCapability.class));
|
||||
|
||||
if (resource.hasCapability(ImagingCapability.class)) {
|
||||
paintProps.setAlpha(resource.getCapability(
|
||||
ImagingCapability.class).getAlpha());
|
||||
|
|
|
@ -579,11 +579,13 @@ public class D2DLegendResource extends
|
|||
String name = selectedResource.getResource().getName();
|
||||
if (name != null && name.isEmpty() == false) {
|
||||
menuManager.add(new DummyAction(name));
|
||||
}
|
||||
TMB_ACTION.setSelectedRsc(selectedResource);
|
||||
TMB_ACTION.setContainer(getResourceContainer());
|
||||
if (TMB_ACTION.isHidden() == false) {
|
||||
menuManager.add(TMB_ACTION);
|
||||
menuManager.add(new Separator());
|
||||
}
|
||||
menuManager.add(new Separator());
|
||||
super.fillContextMenu(menuManager, selectedResource);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -32,6 +32,7 @@ import com.raytheon.uf.viz.core.rsc.AbstractVizResource;
|
|||
import com.raytheon.uf.viz.core.rsc.IResourceGroup;
|
||||
import com.raytheon.uf.viz.core.rsc.ResourceList;
|
||||
import com.raytheon.uf.viz.core.rsc.capabilities.BlendableCapability;
|
||||
import com.raytheon.uf.viz.core.rsc.capabilities.TimeMatchBasisCapability;
|
||||
|
||||
/**
|
||||
* Time match basis action, sets the selected resource as the time match basis
|
||||
|
@ -133,4 +134,29 @@ public class SetTimeMatchBasisAction extends AbstractRightClickAction {
|
|||
return tmb;
|
||||
}
|
||||
|
||||
/*
|
||||
* (non-Javadoc)
|
||||
*
|
||||
* @see com.raytheon.viz.ui.cmenu.AbstractRightClickAction#isHidden()
|
||||
*/
|
||||
@Override
|
||||
public boolean isHidden() {
|
||||
AbstractVizResource<?, ?> rsc = getTopMostSelectedResource();
|
||||
if (rsc.hasCapability(TimeMatchBasisCapability.class) == false) {
|
||||
if (rsc.hasCapability(BlendableCapability.class)) {
|
||||
ResourceList list = rsc
|
||||
.getCapability(BlendableCapability.class)
|
||||
.getResourceList();
|
||||
for (ResourcePair rp : list) {
|
||||
if (rp.getResource().hasCapability(
|
||||
TimeMatchBasisCapability.class)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue