package LinGUIne.wizards; import java.io.File; import java.io.IOException; import java.nio.file.Files; import javax.inject.Inject; import org.eclipse.e4.core.services.events.IEventBroker; import org.eclipse.jface.wizard.Wizard; import LinGUIne.events.LinGUIneEvents; import LinGUIne.events.OpenProjectDataEvent; import LinGUIne.model.Project; import LinGUIne.model.Project.Subdirectory; import LinGUIne.model.ProjectGroup; import LinGUIne.model.ProjectManager; import LinGUIne.model.TextData; /** * Wizard for creating a new text File and adding it to a Project. * * @author Kyle Mullins */ public class NewFileWizard extends Wizard { @Inject private ProjectManager projectMan; @Inject private IEventBroker eventBroker; private NewFileData wizardData; private NewFileWizardSelectProjectPage selectProjectPage; private NewFileWizardNamePage namePage; public NewFileWizard(){ super(); wizardData = new NewFileData(); } public void addStartingData(Project project, ProjectGroup group){ wizardData.setChosenProject(project); wizardData.setParentGroup(group); } @Override public void addPages(){ selectProjectPage = new NewFileWizardSelectProjectPage(wizardData, projectMan); namePage = new NewFileWizardNamePage(wizardData); //Only add the first page if the Project and Group haven't been chosen if(wizardData.getChosenProject() == null || wizardData.getParentGroup() == null){ addPage(selectProjectPage); } addPage(namePage); } @Override public boolean performFinish() { Project chosenProject = wizardData.getChosenProject(); File newFile = chosenProject.getSubdirectory(Subdirectory.Data).append( wizardData.getNewFileName()).toFile(); TextData newTextData = new TextData(newFile); try { Files.createFile(newFile.toPath()); chosenProject.addProjectData(newTextData); chosenProject.addDataToGroup(newTextData, wizardData.getParentGroup()); eventBroker.post(LinGUIneEvents.UILifeCycle.OPEN_PROJECT_DATA, new OpenProjectDataEvent(newTextData, chosenProject)); } catch(IOException e) { e.printStackTrace(); } return true; } }