      /**
       * The constants used in this Content Widget.
       */
      public static interface CwConstants extends Constants,
          ContentWidget.CwConstants {
        String cwBasicPopupClickOutsideInstructions();

        String cwBasicPopupDescription();

        String cwBasicPopupInstructions();

        String cwBasicPopupName();

        String cwBasicPopupShowButton();
      }

      /**
       * An instance of the constants.
       */
      private CwConstants constants;

      /**
       * Initialize this example.
       */
      @Override
      public Widget onInitialize() {
        // Create a basic popup widget
        final DecoratedPopupPanel simplePopup = new DecoratedPopupPanel(true);
        simplePopup.ensureDebugId("cwBasicPopup-simplePopup");
        simplePopup.setWidth("150px");
        simplePopup.setWidget(new HTML(
            constants.cwBasicPopupClickOutsideInstructions()));

        // Create a button to show the popup
        Button openButton = new Button(constants.cwBasicPopupShowButton(),
            new ClickHandler() {
              public void onClick(ClickEvent event) {
                // Reposition the popup relative to the button
                Widget source = (Widget) event.getSource();
                int left = source.getAbsoluteLeft() + 10;
                int top = source.getAbsoluteTop() + 10;
                simplePopup.setPopupPosition(left, top);

                // Show the popup
                simplePopup.show();
              }
            });

        // Create a popup to show the full size image
        Image jimmyFull = new Image(Showcase.images.jimmy());
        final PopupPanel imagePopup = new PopupPanel(true);
        imagePopup.setAnimationEnabled(true);
        imagePopup.ensureDebugId("cwBasicPopup-imagePopup");
        imagePopup.setWidget(jimmyFull);
        jimmyFull.addClickHandler(new ClickHandler() {
          public void onClick(ClickEvent event) {
            imagePopup.hide();
          }
        });

        // Add an image thumbnail
        Image jimmyThumb = new Image(Showcase.images.jimmyThumb());
        jimmyThumb.ensureDebugId("cwBasicPopup-thumb");
        jimmyThumb.addStyleName("cw-BasicPopup-thumb");
        jimmyThumb.addClickHandler(new ClickHandler() {
          public void onClick(ClickEvent event) {
            imagePopup.center();
          }
        });

        // Add the widgets to a panel
        VerticalPanel vPanel = new VerticalPanel();
        vPanel.setSpacing(5);
        vPanel.add(openButton);
        vPanel.add(new HTML("<br><br><br>" + constants.cwBasicPopupInstructions()));
        vPanel.add(jimmyThumb);

        // Return the panel
        return vPanel;
      }