I don't really think `layer` is the right place for this method... because it's concerned with view/control functionality, whereas `layer` should really be just about holding some data.  IMHO, it would be more appropriate to have `AodaacPanel.handleLayer()` check for ncwms directly, e.g.:

```javascript
handleLayer: function(layer) {
    if (layer.isNcWMS()) {
        // do blah blah
    }
}
```
but you may disagree with me on this one.

If you do want to keep the method in layer, then can I suggest adding a default version to the base class which returns false, then:

```javascript
if (layer.showAodaacControls && layer.showAodaacControls())
```

becomes

```javascript
if (layer.showAodaacControls())
```


Related to this - I've just reviewed also the code around https://github.com/aodn/aodn-portal/blob/0460f260bd77b592a59dcbc3b2b21c2223bd5eec/web-app/js/portal/details/DetailsPanelTab.js#L45 and I think it could be improved by having `filterGroupPanel`, `aodaacPanel` etc listen for the SELECTED_LAYER_CHANGED event directly and do what they have to do, rather than having `DetailsPanelTab` have to explicitly call each child panel's `handleLayer` method.

The benefits of this are:
* `DetailsPanelTab.handleLayer()` is simplified, it contains only logic to determine which tab to display (if any)
* the coupling between `DetailsPanelTab` and its child tabs is removed, e.g. we could more easily move one of the children to somewhere else because the children no longer have to call back to the parent (`DetailsPanelTab`).