package com.redhat.ceylon.eclipse.code.editor;
import static com.redhat.ceylon.eclipse.code.editor.DynamicMenuItem.collapseMenuItems;
import static com.redhat.ceylon.eclipse.code.editor.DynamicMenuItem.isContextMenu;
import static com.redhat.ceylon.eclipse.ui.CeylonPlugin.PLUGIN_ID;
import static com.redhat.ceylon.eclipse.ui.CeylonPlugin.imageRegistry;
import static com.redhat.ceylon.eclipse.ui.CeylonResources.CEYLON_DELETE;
import static com.redhat.ceylon.eclipse.ui.CeylonResources.CEYLON_DELETE_IMPORT;
import static com.redhat.ceylon.eclipse.ui.CeylonResources.CEYLON_REVEAL;
import static com.redhat.ceylon.eclipse.ui.CeylonResources.QUICK_ASSIST;
import static com.redhat.ceylon.eclipse.ui.CeylonResources.TERMINATE_STATEMENT;
import static com.redhat.ceylon.eclipse.util.EditorUtil.getCurrentEditor;
import java.util.Arrays;
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.actions.CompoundContributionItem;
import org.eclipse.ui.texteditor.ITextEditorActionDefinitionIds;
import com.redhat.ceylon.eclipse.code.imports.CleanImportsHandler;
import com.redhat.ceylon.eclipse.code.refactor.DeleteRefactoring;
import com.redhat.ceylon.eclipse.code.refactor.RevealInferredTypeHandler;
public class SourceMenuItems extends CompoundContributionItem {
private static ImageDescriptor REVEAL =
imageRegistry().getDescriptor(CEYLON_REVEAL);
private static ImageDescriptor TERMINATE =
imageRegistry().getDescriptor(TERMINATE_STATEMENT);
private static ImageDescriptor FIX =
imageRegistry().getDescriptor(QUICK_ASSIST);
private static ImageDescriptor DELETE =
imageRegistry().getDescriptor(CEYLON_DELETE);
private static ImageDescriptor DELETE_IMPORT =
imageRegistry().getDescriptor(CEYLON_DELETE_IMPORT);
// private static ImageDescriptor FORMAT = imageRegistry.getDescriptor(FORMAT_BLOCK);
// private static ImageDescriptor ADD = imageRegistry.getDescriptor(ADD_COMMENT);
// private static ImageDescriptor REMOVE = imageRegistry.getDescriptor(REMOVE_COMMENT);
// private static ImageDescriptor TOGGLE = imageRegistry.getDescriptor(TOGGLE_COMMENT);
// private static ImageDescriptor CORRECT = imageRegistry.getDescriptor(CORRECT_INDENT);
// private static ImageDescriptor LEFT = imageRegistry.getDescriptor(SHIFT_LEFT);
// private static ImageDescriptor RIGHT = imageRegistry.getDescriptor(SHIFT_RIGHT);
public SourceMenuItems() {}
public SourceMenuItems(String id) {
super(id);
}
@Override
public IContributionItem[] getContributionItems() {
IContributionItem[] items = getItems(getCurrentEditor());
if (collapseMenuItems(getParent())) {
MenuManager submenu = new MenuManager("Source");
submenu.setActionDefinitionId(CeylonEditor.SOURCE_MENU_ID);
for (IContributionItem item: items) {
submenu.add(item);
}
return new IContributionItem[] { submenu };
}
else if (isContextMenu(getParent())) {
IContributionItem[] copy = Arrays.copyOf(items, items.length+1);
copy[items.length] = new Separator();
return copy;
}
else {
return items;
}
}
private IContributionItem[] getItems(IEditorPart editor) {
return new IContributionItem[] {
new DynamicMenuItem(PLUGIN_ID + ".action.cleanImports",
"&Organize Imports",
new CleanImportsHandler().isEnabled(), DELETE_IMPORT),
new DynamicMenuItem(PLUGIN_ID + ".action.delete",
"Safe &Delete...",
editor!=null && new DeleteRefactoring(editor).getEnabled(), DELETE),
new DynamicMenuItem(PLUGIN_ID + ".action.revealInferredType",
"Reveal Inferred &Types",
editor!=null && new RevealInferredTypeHandler().isEnabled(), REVEAL),
new Separator(),
new DynamicMenuItem(PLUGIN_ID + ".action.pasteAsCeylon",
"&Paste Java as Ceylon",
true),
new Separator(),
new DynamicMenuItem(ITextEditorActionDefinitionIds.QUICK_ASSIST,
"&Quick Fix/Assist",
true, FIX),
new Separator(),
new DynamicMenuItem(PLUGIN_ID + ".editor.terminateStatement",
"Terminate &Statement",
true, TERMINATE),
new Separator(),
new DynamicMenuItem(PLUGIN_ID + ".editor.correctIndentation",
"Correct &Indentation",
true),
new DynamicMenuItem(PLUGIN_ID + ".editor.formatSource",
"&Format",
true),
new DynamicMenuItem(PLUGIN_ID + ".editor.formatBlock",
"Format &Block",
true),
new Separator(),
new DynamicMenuItem(ITextEditorActionDefinitionIds.SHIFT_LEFT,
"Shift &Left",
true),
new DynamicMenuItem(ITextEditorActionDefinitionIds.SHIFT_RIGHT,
"Shift &Right",
true),
new Separator(),
new DynamicMenuItem(PLUGIN_ID + ".editor.toggleComment",
"Toggle &Comment",
true),
new DynamicMenuItem(PLUGIN_ID + ".editor.addBlockComment",
"&Add Block Comment",
true),
new DynamicMenuItem(PLUGIN_ID + ".editor.removeBlockComment",
"Re&move Block Comment",
true),
new Separator(),
new DynamicMenuItem(ITextEditorActionDefinitionIds.CONTENT_ASSIST_PROPOSALS,
"Content Proposals",
true),
new DynamicMenuItem(ITextEditorActionDefinitionIds.CONTENT_ASSIST_CONTEXT_INFORMATION,
"Parameter Context Information",
true)
};
}
}