private void setPrologInterface(PrologInterface newPif, boolean updateActivePif) {
    if (currentPif == newPif) {
      return;
    }
    if (currentPif != null) {
      viewerStates.put(currentPif, viewer.saveState());
    }
    currentPif = newPif;
    if (currentPif != null) {
      addHooks(currentPif);
      try {
        connect(currentPif);
      } catch (PrologInterfaceException e) {
        Debug.report(e);
      }
      reconfigureViewer(currentPif);
      getDefaultPrologConsoleService().fireActivePrologInterfaceChanged(this);
      if (updateActivePif) {
        PrologRuntimeUIPlugin.getDefault()
            .getPrologInterfaceService()
            .setActivePrologInterface(currentPif);
      }

    } else {
      Debug.debug("no pif (yet).");
    }
    if (automatedSelector != null) {
      automatedSelector.update();
    }
    writeCurrentProcessPortToFile();
  }