private void resolveConflicts() {
    if (getWindow() != null) {
      return;
    }

    final GlusterHookEntity hookEntity = getSelectedItem();

    if (hookEntity == null) {
      return;
    }

    GlusterHookResolveConflictsModel conflictsModel = new GlusterHookResolveConflictsModel();
    conflictsModel.setTitle(
        ConstantsManager.getInstance().getConstants().resolveConflictsGlusterHookTitle());
    conflictsModel.setHelpTag(HelpTag.gluster_hook_resolve_conflicts);
    conflictsModel.setHashName("gluster_hook_resolve_conflicts"); // $NON-NLS-1$
    hookEntity.setServerHooks(new ArrayList<GlusterServerHook>());
    conflictsModel.setGlusterHookEntity(hookEntity);
    setWindow(conflictsModel);
    conflictsModel.startProgress();

    AsyncDataProvider.getInstance()
        .getGlusterHook(
            new AsyncQuery(
                conflictsModel,
                new INewAsyncCallback() {
                  @Override
                  public void onSuccess(Object model, Object returnValue) {

                    GlusterHookResolveConflictsModel innerConflictsModel =
                        (GlusterHookResolveConflictsModel) model;
                    List<GlusterServerHook> serverHooks =
                        ((GlusterHookEntity) returnValue).getServerHooks();
                    hookEntity.setServerHooks(serverHooks);

                    ArrayList<EntityModel<GlusterServerHook>> serverHookModels =
                        new ArrayList<EntityModel<GlusterServerHook>>();
                    GlusterServerHook engineCopy = new GlusterServerHook();
                    engineCopy.setHookId(hookEntity.getId());
                    engineCopy.setServerName("Engine (Master)"); // $NON-NLS-1$
                    engineCopy.setStatus(hookEntity.getStatus());
                    engineCopy.setContentType(hookEntity.getContentType());
                    engineCopy.setChecksum(hookEntity.getChecksum());
                    EntityModel<GlusterServerHook> engineCopyModel =
                        new EntityModel<GlusterServerHook>(engineCopy);
                    serverHookModels.add(engineCopyModel);

                    for (GlusterServerHook serverHook : serverHooks) {
                      serverHookModels.add(new EntityModel<GlusterServerHook>(serverHook));
                    }

                    innerConflictsModel.getHookSources().setItems(serverHookModels);
                    innerConflictsModel.getHookSources().setSelectedItem(engineCopyModel);

                    ArrayList<GlusterServerHook> serverHooksWithEngine =
                        new ArrayList<GlusterServerHook>(serverHooks);
                    serverHooksWithEngine.add(0, engineCopy);
                    innerConflictsModel.getServerHooksList().setItems(serverHooksWithEngine);
                    innerConflictsModel.getServerHooksList().setSelectedItem(engineCopy);

                    innerConflictsModel.stopProgress();

                    UICommand command =
                        UICommand.createDefaultOkUiCommand(
                            "OnResolveConflicts", ClusterGlusterHookListModel.this); // $NON-NLS-1$
                    innerConflictsModel.getCommands().add(command);

                    command =
                        new UICommand("Cancel", ClusterGlusterHookListModel.this); // $NON-NLS-1$
                    command.setTitle(ConstantsManager.getInstance().getConstants().close());
                    command.setIsCancel(true);
                    innerConflictsModel.getCommands().add(command);
                  }
                }),
            hookEntity.getId(),
            true);
  }