Exemplo n.º 1
0
  /**
   * Constructor.
   *
   * @param pSelectorCallback called when the selector is clicked. Must <b>not</b> be <code>null
   *     </code>.
   * @param pMoreArrowCallback called when the 'More' arrow is clicked. Must <b>not</b> be <code>
   *     null</code>.
   */
  public CbGenericListItem(
      final CbSelectorCallbackIF<W> pSelectorCallback,
      final CbMoreArrowCallbackIF<W> pMoreArrowCallback) {
    // dummy widget we put on the panel until the display widget is set in setDisplayWidget()
    Label dummy = new Label("<dummy>"); // $NON-NLS-1$

    // image shown when the marker is active
    Image markerActive = new Image(CbConstants.IMG_BUNDLE.markerActive());
    markerActive.setStyleName(CbConstants.CSS.ccColMarker());
    markerActive.setVisible(false);
    Image markerPassive = new Image(CbConstants.IMG_BUNDLE.markerPassive());
    markerPassive.setStyleName(CbConstants.CSS.ccColMarker());

    CbMoreArrow moreArrow = new CbMoreArrow(pMoreArrowCallback.getTooltipText());
    moreArrow.addStyleName(CbConstants.CSS.cbMoreArrowLabelSmaller());

    iDisplayWidgetWrapper = new FlowPanel();
    iDisplayWidgetWrapper.add(dummy);
    iDisplayWidgetWrapper.setStyleName(CbConstants.CSS.cbDisplayWidgetWrapper());

    final FlowPanel fp = new FlowPanel();
    fp.setStyleName(CbConstants.CSS.cbGeneralListItem());
    fp.add(markerActive);
    fp.add(markerPassive);
    fp.add(iDisplayWidgetWrapper);
    fp.add(moreArrow);

    final ClickHandler clickHandler =
        new ClickHandler() {
          @Override
          public void onClick(final ClickEvent pEvent) {
            int pos = COL_SELECTOR;
            if (!fp.getWidget(pos).isVisible()) {
              pos++;
            }
            if (CbUtil.isInside(fp.getWidget(pos), pEvent)) {
              pSelectorCallback.onItemSelected(CbGenericListItem.this);
            } else {
              pMoreArrowCallback.onMoreArrowClicked(CbGenericListItem.this);
            }
          }
        };
    addClickHandler(clickHandler);
    initWidget(fp);
  }