/**
  * Return the full path of the given page; the path is composed by the concatenation of the code
  * of the page starting from the root to the given page.
  *
  * @param page The page whose path must be found.
  * @param separator The separator of the page codes
  * @return The full path of the page
  */
 public static StringBuffer getFullPath(IPage page, String separator) {
   if (page.isRoot()) {
     return new StringBuffer(page.getCode());
   }
   IPage temp = page;
   StringBuffer buffer = new StringBuffer();
   buffer.insert(0, temp.getCode());
   while (!temp.getCode().equals(temp.getParentCode())) {
     temp = temp.getParent();
     if (temp.isShowable()) {
       buffer.insert(0, temp.getCode() + separator);
     }
   }
   return buffer;
 }
  /**
   * Get an Image of the page. The Image is build from the Control.
   *
   * @param The IPage for which an Image is requested.
   * @return The Image of the page, or null if no Image can be built.
   */
  public static Image getPageImage(IPage page) {
    Rectangle size;
    Control control = page.getControl();

    size = control.getBounds();
    if (size.width == 0 && size.height == 0) {
      Point pt = control.computeSize(SWT.DEFAULT, SWT.DEFAULT);
      size = new Rectangle(0, 0, pt.x, pt.y);
    }

    Image image = new Image(control.getDisplay(), size);
    GC gc = new GC(image);

    boolean success = control.print(gc);
    gc.dispose();
    if (!success) {
      image.dispose();
      return null;
    }

    return image;
  }
 public PagingListener(Table table, IPage page) {
   this.table = table;
   this.page = page;
   this.count = (int) page.getCount();
   table.setItemCount(count);
 }