// -*- mode: java; c-basic-offset: 2; -*-
// Copyright 2009-2011 Google, All Rights reserved
// Copyright 2011-2012 MIT, All rights reserved
// Released under the Apache License, Version 2.0
// http://www.apache.org/licenses/LICENSE-2.0
package com.google.appinventor.client.explorer.project;
import com.google.appinventor.client.Ode;
import com.google.appinventor.client.explorer.commands.CommandRegistry;
import com.google.appinventor.client.explorer.commands.ProjectNodeCommand;
import com.google.appinventor.client.widgets.ContextMenu;
import com.google.appinventor.shared.rpc.project.ProjectNode;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.ui.Widget;
import java.util.List;
/**
* A context menu for a project node.
*
*/
public final class ProjectNodeContextMenu {
private ProjectNodeContextMenu() {
}
/**
* Shows a context menu for a node.
*
* @param node node for which to show the context menu
* @param host widget to anchor context menu to
*/
public static void show(final ProjectNode node, Widget host) {
List<CommandRegistry.Entry> entries = Ode.getCommandRegistry().get(node);
if (entries.isEmpty()) {
return;
}
final ContextMenu menu = new ContextMenu();
// Position the context menu to the East of the host widget.
menu.setPopupPosition(host.getAbsoluteLeft() + host.getOffsetWidth(),
host.getAbsoluteTop());
for (final CommandRegistry.Entry entry : entries) {
final ProjectNodeCommand cmd = entry.getCommand();
// Create the menu item.
menu.addItem(cmd.getLabel(), new Command() {
@Override
public void execute() {
menu.hide();
cmd.execute(node);
}
});
}
menu.show();
}
}