@Override
  public void init(IWorkbench workbench, IStructuredSelection selection) {
    super.init(workbench, selection);

    mValues = new NewTemplateWizardState();

    File template = TemplateManager.getTemplateLocation(mTemplateName);
    if (template != null) {
      mValues.setTemplateLocation(template);
    }
    hideBuiltinParameters();

    List<IProject> projects = AdtUtils.getSelectedProjects(selection);
    if (projects.size() == 1) {
      mValues.project = projects.get(0);
    }

    mMainPage = new NewTemplatePage(mValues, true);
  }
  @Override
  public IWizardPage getNextPage(IWizardPage page) {
    TemplateMetadata template = mValues.getTemplateHandler().getTemplate();

    if (page == mMainPage && shouldAddIconPage()) {
      WizardPage iconPage = getIconPage(mValues.getIconState());
      mValues.updateIconState(mMainPage.getEvaluator());
      return iconPage;
    } else if (page == mMainPage
        || shouldAddIconPage() && page == getIconPage(mValues.getIconState())) {
      if (template != null) {
        if (InstallDependencyPage.isInstalled(template.getDependencies())) {
          return getPreviewPage(mValues);
        } else {
          return getDependencyPage(template, true);
        }
      }
    } else if (page == getDependencyPage(template, false)) {
      return getPreviewPage(mValues);
    }

    return super.getNextPage(page);
  }
 @Override
 protected boolean shouldAddIconPage() {
   return mValues.getIconState() != null;
 }
 @Override
 protected List<Change> computeChanges() {
   return mValues.computeChanges();
 }
 @Override
 @NonNull
 protected List<String> getFilesToOpen() {
   TemplateHandler activityTemplate = mValues.getTemplateHandler();
   return activityTemplate.getFilesToOpen();
 }