@Override
 public void cropDisplay(
     int p_cropLeftHex, int p_cropTopHex, int p_cropRightHex, int p_cropBotomHex) {
   for (BoardLayer layer : this) {
     layer.cropDisplay(p_cropLeftHex, p_cropTopHex, p_cropRightHex, p_cropBotomHex);
   }
 }
  /* (non-Javadoc)
   * @see com.fullmetalgalaxy.client.board.BoardLayer#show()
   */
  @Override
  public void show() {
    for (BoardLayer layer : this) {
      layer.show();
    }

    // zoom
    setZoom(GameEngine.model().getZoomDisplayed());
  }
 /* (non-Javadoc)
  * @see com.fullmetalgalaxy.client.board.BoardLayer#setZoom(com.fullmetalgalaxy.model.EnuZoom)
  */
 @Override
 public void setZoom(EnuZoom p_zoom) {
   boolean isSizeReset = false;
   for (BoardLayer layer : this) {
     layer.setZoom(p_zoom);
     if (!isSizeReset && layer.asWidget().isVisible()) {
       isSizeReset = true;
       m_panel.setPixelSize(layer.asWidget().getOffsetWidth(), layer.asWidget().getOffsetHeight());
     }
   }
 }
 /* (non-Javadoc)
  * @see com.fullmetalgalaxy.client.board.BoardLayer#onModelChange()
  */
 @Override
 public void onModelChange() {
   for (BoardLayer layer : this) {
     try {
       layer.onModelChange();
     } catch (Exception e) {
       // no i18n
       RpcUtil.logError("a board layer bug while notify a model update", e);
     }
   }
 }
 /* (non-Javadoc)
  * @see com.fullmetalgalaxy.client.board.BoardLayer#redraw(int, int, int, int)
  */
 @Override
 public void redraw(int p_left, int p_top, int p_right, int p_botom) {
   for (BoardLayer layer : this) {
     layer.redraw(p_left, p_top, p_right, p_botom);
   }
 }
 /* (non-Javadoc)
  * @see com.fullmetalgalaxy.client.board.BoardLayer#hide()
  */
 @Override
 public void hide() {
   for (BoardLayer layer : this) {
     layer.hide();
   }
 }
 public void addLayer(BoardLayer p_layer) {
   m_panel.add(p_layer.asWidget(), 0, 0);
   add(p_layer);
 }