@Override
  public void onThemeSelected(String themeId) {
    FragmentManager fm = getSupportFragmentManager();

    if (!Utils.isXLarge(ThemeBrowserActivity.this)) {
      // show details as a fragment on top
      FragmentTransaction ft = fm.beginTransaction();

      if (mSearchFragment != null && mSearchFragment.isVisible()) {
        fm.popBackStack();
      }

      setupBaseLayout();
      mDetailsFragment = ThemeDetailsFragment.newInstance(themeId);
      ft.add(R.id.theme_browser_container, mDetailsFragment, ThemeDetailsFragment.TAG);
      ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
      ft.addToBackStack(null);
      ft.commit();
    } else {
      // show details as a dialog
      mDetailsFragment = ThemeDetailsFragment.newInstance(themeId);
      mDetailsFragment.show(getSupportFragmentManager(), ThemeDetailsFragment.TAG);
      getSupportFragmentManager().executePendingTransactions();
      int minWidth = getResources().getDimensionPixelSize(R.dimen.theme_details_dialog_min_width);
      int height = getResources().getDimensionPixelSize(R.dimen.theme_details_dialog_height);
      int width = Math.max((int) (DisplayUtils.getDisplayPixelWidth(this) * 0.6), minWidth);
      mDetailsFragment.getDialog().getWindow().setLayout(width, height);
    }
  }