/**
   * Unregisters <code>dockable</code>, the associated controller will no longer support drag and
   * drop for <code>dockable</code>.<br>
   * Clients and subclasses should not call this method.
   *
   * @param dockable the element to remove
   */
  protected void unregister(Dockable dockable) {
    if (dockables.remove(dockable)) {
      dockable.setController(null);

      fireDockableUnregistered(dockable);
    }
  }
  /**
   * Registers <code>dockable</code>, the associated controller will know the titles of <code>
   * dockable</code> to allow drag and drop operations.<br>
   * Clients and subclasses should not call this method.
   *
   * @param dockable a new Dockable
   */
  protected void register(Dockable dockable) {
    if (!dockables.contains(dockable)) {
      fireDockableRegistering(dockable);

      dockables.add(dockable);
      dockable.setController(controller);

      fireDockableRegistered(dockable);
    }
  }