package org.vaadin.mideaas.app; import java.io.File; import java.io.IOException; import java.util.LinkedList; import java.util.List; import org.vaadin.mideaas.frontend.MideaasEditor; import org.vaadin.mideaas.frontend.MideaasEditor.CloseHandler; import org.vaadin.mideaas.frontend.MideaasEditorPlugin; import org.vaadin.mideaas.model.GitRepository; import org.vaadin.mideaas.model.LobbyBroadcaster; import org.vaadin.mideaas.model.SharedProject; import org.vaadin.mideaas.model.User; import org.vaadin.mideaas.model.UserSettings; import com.vaadin.navigator.View; import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent; import com.vaadin.ui.Component; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.Label; @SuppressWarnings("serial") public class EditorView extends CustomComponent implements View, CloseHandler { private final MideaasUI ui; private User user; private UserSettings settings; public EditorView(String projectName, MideaasUI ui, UserSettings settings) { this.ui = ui; this.settings = settings; setSizeFull(); Component editor = createEditor(projectName, ui); editor.setSizeFull(); setCompositionRoot(editor); } @Override public void enter(ViewChangeEvent event) { } private Component createEditor(String projectName, MideaasUI ui) { user = ui.getUser(); if (user==null) { return new Label("Not logged in."); } SharedProject project = SharedProject.getProject(projectName); if (project==null) { return new Label("No such project: "+projectName); } project.addUser(user); LobbyBroadcaster.broadcastProjectsChanged(); List<MideaasEditorPlugin> plugins = new LinkedList<MideaasEditorPlugin>(); plugins.add(new ZipPlugin(project, user, settings)); try { plugins.add(new GitPlugin(project, user, GitRepository.fromExistingGitDir(project.getProjectDir()))); } catch (IOException e) { System.err.println("WARNING: could not add git plugin!"); } UserSettings settings = MideaasConfig.getDefaultUserSettings(); plugins.add(new SettingsPlugin(settings)); File fbf = MideaasConfig.getFeedbackFile(); if (fbf != null) { plugins.add(new FeedbackPlugin(fbf)); } plugins.add(new TestPlugin()); MideaasEditor editor = new MideaasEditor(user, project, settings, plugins); editor.setTestingEnabled(!MideaasConfig.isExperiment()); editor.setCloseHandler(this); return editor; } @Override public void closeRequested(SharedProject project) { LobbyBroadcaster.broadcastProjectsChanged(); ui.navigateTo("lobby"); } }