package com.redhat.ceylon.eclipse.code.outline;
import static com.redhat.ceylon.eclipse.code.editor.DynamicMenuItem.collapseMenuItems;
import static com.redhat.ceylon.eclipse.ui.CeylonPlugin.imageRegistry;
import static com.redhat.ceylon.eclipse.ui.CeylonResources.LAST_EDIT;
import static com.redhat.ceylon.eclipse.ui.CeylonResources.NEXT_ANN;
import static com.redhat.ceylon.eclipse.ui.CeylonResources.PREV_ANN;
import static com.redhat.ceylon.eclipse.util.EditorUtil.getCurrentEditor;
import static org.eclipse.ui.ISharedImages.IMG_TOOL_BACK;
import static org.eclipse.ui.ISharedImages.IMG_TOOL_FORWARD;
import static org.eclipse.ui.PlatformUI.getWorkbench;
import org.eclipse.jface.action.IContributionItem;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.ISharedImages;
import org.eclipse.ui.IWorkbenchCommandConstants;
import org.eclipse.ui.actions.CompoundContributionItem;
import org.eclipse.ui.internal.texteditor.TextEditorPlugin;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
import com.redhat.ceylon.eclipse.code.editor.CeylonEditor;
import com.redhat.ceylon.eclipse.code.editor.DynamicMenuItem;
import com.redhat.ceylon.eclipse.code.open.SelectedDeclarationMenuItems;
import com.redhat.ceylon.eclipse.ui.CeylonPlugin;
public class NavigateMenuItems extends CompoundContributionItem {
private static final ImageDescriptor EDIT =
imageRegistry().getDescriptor(LAST_EDIT);
private static final ImageDescriptor NEXT =
imageRegistry().getDescriptor(NEXT_ANN);
private static final ImageDescriptor PREV =
imageRegistry().getDescriptor(PREV_ANN);
public NavigateMenuItems() {}
public NavigateMenuItems(String id) {
super(id);
}
@Override
public IContributionItem[] getContributionItems() {
IContributionItem[] items = getItems(getCurrentEditor());
if (collapseMenuItems(getParent())) {
MenuManager submenu = new MenuManager("Navigate");
submenu.setActionDefinitionId(CeylonEditor.NAVIGATE_MENU_ID);
for (IContributionItem item: items) {
submenu.add(item);
}
return new IContributionItem[] { submenu };
}
else {
return items;
}
}
private IContributionItem[] getItems(IEditorPart editor) {
boolean lastEditEnabled = TextEditorPlugin.getDefault().getLastEditPosition() != null;
IContributionItem[] items = new SelectedDeclarationMenuItems().getContributionItems();
ISharedImages images = getWorkbench().getSharedImages();
return new IContributionItem[] {
items[0], items[1], items[2], items[3], items[4], items[5], items[6],
new Separator(),
new DynamicMenuItem(IWorkbenchCommandConstants.NAVIGATE_NEXT,
"Ne&xt Annotation", true, NEXT),
new DynamicMenuItem(IWorkbenchCommandConstants.NAVIGATE_PREVIOUS,
"Pre&vious Annotation", true, PREV),
new Separator(),
new DynamicMenuItem(IWorkbenchCommandConstants.NAVIGATE_BACKWARD_HISTORY,
"&Back", true, images.getImageDescriptor(IMG_TOOL_BACK)),
new DynamicMenuItem(IWorkbenchCommandConstants.NAVIGATE_FORWARD_HISTORY,
"&Forward", true, images.getImageDescriptor(IMG_TOOL_FORWARD)),
new Separator(),
new DynamicMenuItem(ITextEditorActionDefinitionIds.GOTO_LAST_EDIT_POSITION,
"Last Edit Lo&cation", lastEditEnabled, EDIT),
new DynamicMenuItem(ITextEditorActionDefinitionIds.LINE_GOTO,
"&Go to Line...", true),
new DynamicMenuItem(CeylonPlugin.PLUGIN_ID + ".editor.gotoMatchingFence",
"Go to &Matching Bracket", true)
};
}
}