Как объединить расширение файла, используя BasicNewFileResourceWizard и начальный контекст файла, одновременно используя aWizardNewFileCreationPage? - PullRequest
0 голосов
/ 25 июня 2019

У меня есть класс для предоставления расширения для вновь созданного файла.

public class MyNewFileWizard extends BasicNewFileResourceWizard
{
  @Override
  public void addPages()
  {
    super.addPages();
    MyWizardNewFileCreationPage page = (MyWizardNewFileCreationPage )getPage("newFilePage1");
    page.setFileExtension("css");
    addPage(page);
  }

  @Override
  public void init(IWorkbench workbench, IStructuredSelection currentSelection)
  {
    super.init(workbench, currentSelection);
    setNeedsProgressMonitor(true);
  }}

Также у меня есть класс, чтобы дать контекст этого созданного класса

public class MyWizardNewFileCreationPage extends WizardNewFileCreationPage
{

...

@Override
  protected InputStream getInitialContents()
  {


//to give same strings context for every generated css file
    StringBuilder sb = new StringBuilder();
    sb.append("SAMPLE_CSS_FILE"); //$NON-NLS-1$
    sb.append("SECTION_1"); //$NON-NLS-1$
    sb.append("SECTION_1_BODY_1"); //$NON-NLS-1$

    return new ByteArrayInputStream(sb.toString().getBytes());
  }

plugin.xml

..
<wizard
        category="ui.category"
        id="ui.wizard.MyNewFileWizard"
        name="Create a new app.test File"
        icon="icons/project.png"
        class="MyNewFileWizard"
        project="false"
        >
        </wizard>

Моя цель - создать класс css с уже определенным контекстом в нем. Так что как-то объединяет эти два класса.

Ответы [ 2 ]

0 голосов
/ 25 июня 2019
public class MyNewFileWizard extends BasicNewFileResourceWizard
{
  WizardNewFileCreationPage mainPage;

  public static final String WIZARD_ID = "ui.wizard.MyNewFileWizard";

  public MyNewFileWizard()
  {
    super();
  }

  @Override
  public void addPages()
  {

    mainPage = new WizardNewFileCreationPage("New File Page", getSelection())
    {
      @Override
      protected InputStream getInitialContents()
      {
        StringBuilder sb = new StringBuilder();
        sb.append("SAMPLE_README_FILE");
        sb.append("SECTION_1");
        sb.append("SECTION_1_BODY_1");

        return new ByteArrayInputStream(sb.toString().getBytes());
      }
    };

    mainPage.setFileExtension("css");
    addPage(mainPage);
  }
  @Override
  protected void initializeDefaultPageImageDescriptor()
  {
    //setDefaultPageImageDescriptor(imageHelper.getImageDescriptor("icon_48x48.png"));
  }

  @Override
  public void init(IWorkbench workbench, IStructuredSelection currentSelection)
  {
    super.init(workbench, currentSelection);
    setWindowTitle("New Solidity file");
    setNeedsProgressMonitor(true);
  }

  @Override
  public boolean performFinish()
  {
    IFile file = mainPage.createNewFile();
    if (file == null) {
      return false;
    }

    selectAndReveal(file);

    // Open editor on new file.
    IWorkbenchWindow dw = getWorkbench().getActiveWorkbenchWindow();
    try {
      if (dw != null) {
        IWorkbenchPage page = dw.getActivePage();
        if (page != null) {
          IDE.openEditor(page, file, true);
        }
      }
    }
    catch (PartInitException e) {
      //openError(dw.getShell(), "Problems opening editor", e.getMessage(), e);
    }

    return true;
  }
}
0 голосов
/ 25 июня 2019

Вы не можете позвонить super.addPages, потому что это добавит нормальный WizardNewFileCreationPage. Вы должны добавить только свою собственную страницу:

@Override
public void addPages()
{
   MyWizardNewFileCreationPage page = new MyWizardNewFileCreationPage("newFilePage1", getSelection());
   page.setFileExtension("css");
   addPage(page);
}

Но это означает, что стандарт BasicNewFileResourceWizard.performFinish не будет работать, поэтому вам также придется его переопределить:

@Override
public boolean performFinish() {
  MyWizardNewFileCreationPage mainPage = (MyWizardNewFileCreationPage )getPage("newFilePage1");

  IFile file = mainPage.createNewFile();
  if (file == null) {
      return false;
  }

  selectAndReveal(file);

  // Open editor on new file.
  IWorkbenchWindow dw = getWorkbench().getActiveWorkbenchWindow();
  try {
      if (dw != null) {
          IWorkbenchPage page = dw.getActivePage();
          if (page != null) {
              IDE.openEditor(page, file, true);
          }
      }
  } catch (final PartInitException e) {
      // Show error
  }

  return true;

}
...