package org.vaadin.mideaas.frontend;
import java.util.Collections;
import org.vaadin.mideaas.model.SharedProject;
import com.vaadin.ui.MenuBar;
import com.vaadin.ui.MenuBar.Command;
import com.vaadin.ui.MenuBar.MenuItem;
import com.vaadin.ui.UI;
@SuppressWarnings("serial")
public class MenuBarUtil {
public static void addBuildMenu(MenuBar menuBar, final Builder builder, final String buildDir) {
MenuItem buildMenu = menuBar.addItem("Maven", null);
buildMenu.addItem("compile", new Command() {
@Override
public void menuSelected(MenuItem selectedItem) {
builder.build(Collections.singletonList("package"), buildDir, null, null);
}
});
buildMenu.addItem("package", new Command() {
@Override
public void menuSelected(MenuItem selectedItem) {
builder.build(Collections.singletonList("package"), buildDir, null, null);
}
});
buildMenu.addItem("clean", new Command() {
@Override
public void menuSelected(MenuItem selectedItem) {
builder.build(Collections.singletonList("clean"), buildDir, null, null);
}
});
}
public static void addAddonMenu(MenuBar menuBar, final SharedProject project) {
MenuItem menu = menuBar.addItem("Dependencies", null);
menu.addItem("Manage", new Command() {
@Override
public void menuSelected(MenuItem selectedItem) {
UI.getCurrent().addWindow(new AddonManagementWindow(project));
}
});
}
public static void addMenuItem(final MenuBar menuBar, final String text, final Runnable runnable) {
menuBar.addItem(text, new Command() {
@Override
public void menuSelected(MenuItem selectedItem) {
runnable.run();
}
});
}
public static void addMenuItemBefore(final MenuBar menuBar, final String text, final Runnable runnable, MenuItem item) {
menuBar.addItemBefore(text, null, new Command() {
@Override
public void menuSelected(MenuItem selectedItem) {
runnable.run();
}
}, item);
}
public static void addZipMenu(MenuBar menuBar, final Runnable zipProject) {
menuBar.addItem("Zip", new Command() {
@Override
public void menuSelected(MenuItem selectedItem) {
zipProject.run();
}
});
}
public static void addPanicMenu(MenuBar menuBar, final SharedProject project, final Builder builder, final String buildDir) {
MenuItem menu = menuBar.addItem("Panic", null);
menu.addItem("Clean project", new Command() {
@Override
public void menuSelected(MenuItem selectedItem) {
builder.build(Collections.singletonList("clean"), buildDir, null, null);
}
});
menu.addItem("Compile all", new Command() {
@Override
public void menuSelected(MenuItem selectedItem) {
project.compileAll();
}
});
menu.addItem("Stop all Jetty servers", new Command() {
@Override
public void menuSelected(MenuItem selectedItem) {
JettyUtil.stopAllJettys();
}
});
}
// TODO: separate git from this ui component
// public void addGitMenu() {
// MenuItem gitMenu = addItem("Git", null);
//
// gitInit = gitMenu.addItem("init", new Command() {
// @Override
// public void menuSelected(MenuItem selectedItem) {
// try {
// project.initializeGit();
// updateGitMenu();
// } catch (IllegalStateException e) {
// Notification.show(e.getMessage(), Notification.Type.ERROR_MESSAGE);
// } catch (IOException e) {
// Notification.show(e.getMessage(), Notification.Type.ERROR_MESSAGE);
// } catch (NoFilepatternException e) {
// Notification.show(e.getMessage(), Notification.Type.ERROR_MESSAGE);
// } catch (GitAPIException e) {
// Notification.show(e.getMessage(), Notification.Type.ERROR_MESSAGE);
// }
// }
//
// });
//
// gitLog = gitMenu.addItem("log", new Command() {
// @Override
// public void menuSelected(MenuItem selectedItem) {
// GitLogWindow win = new GitLogWindow(project);
// UI.getCurrent().addWindow(win);
// }
//
// });
//
// gitCommit = gitMenu.addItem("commit", new Command() {
// @Override
// public void menuSelected(MenuItem selectedItem) {
// GitCommitWindow win = new GitCommitWindow(project);
// UI.getCurrent().addWindow(win);
// }
//
// });
//
// gitPush = gitMenu.addItem("push", new Command() {
// @Override
// public void menuSelected(MenuItem selectedItem) {
// GitPushWindow win = new GitPushWindow(project);
// UI.getCurrent().addWindow(win);
// }
//
// });
//
// updateGitMenu();
// }
// private void updateGitMenu() {
// boolean git = project.getGit()!=null;
// gitInit.setEnabled(!git);
// gitLog.setEnabled(git);
// gitCommit.setEnabled(git);
// gitPush.setEnabled(git);
// }
}