InternalDecorator(
      final Project project, @NotNull WindowInfoImpl info, final ToolWindowImpl toolWindow) {
    super(new BorderLayout());
    myProject = project;
    myToolWindow = toolWindow;
    myToolWindow.setDecorator(this);
    myDivider = new MyDivider();

    myToggleFloatingModeAction = new ToggleFloatingModeAction();
    myToggleWindowedModeAction = new ToggleWindowedModeAction();
    myToggleSideModeAction = new ToggleSideModeAction();
    myToggleDockModeAction = new ToggleDockModeAction();
    myToggleAutoHideModeAction = new TogglePinnedModeAction();
    myToggleContentUiTypeAction = new ToggleContentUiTypeAction();
    myToggleToolbarGroup = ToggleToolbarAction.createToggleToolbarGroup(myProject, myToolWindow);

    myHeader =
        new ToolWindowHeader(
            toolWindow,
            info,
            new Producer<ActionGroup>() {
              @Override
              public ActionGroup produce() {
                return /*createGearPopupGroup()*/ createPopupGroup(true);
              }
            }) {
          @Override
          protected boolean isActive() {
            return isFocused();
          }

          @Override
          protected void hideToolWindow() {
            fireHidden();
          }

          @Override
          protected void toolWindowTypeChanged(ToolWindowType type) {
            fireTypeChanged(type);
          }

          @Override
          protected void sideHidden() {
            fireHiddenSide();
          }
        };

    init();

    apply(info);
  }