/** SpagoBI, the Open Source Business Intelligence suite Copyright (C) 2012 Engineering Ingegneria Informatica S.p.A. - SpagoBI Competency Center This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. **/ package it.eng.spagobi.studio.core.actions; import it.eng.spagobi.studio.core.Activator; import it.eng.spagobi.studio.utils.util.ImageDescriptorGatherer; import it.eng.spagobi.studio.utils.util.SpagoBIStudioConstants; import java.util.Arrays; import java.util.Comparator; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.IAction; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ISelection; import org.eclipse.swt.SWT; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.ui.IViewPart; import org.eclipse.ui.IWorkbench; import org.eclipse.ui.IWorkbenchPage; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowPulldownDelegate; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.views.IViewDescriptor; import org.eclipse.ui.views.IViewRegistry; public class DocumentsWizardMenuAction implements IWorkbenchWindowPulldownDelegate { private Menu actionsMenu; public void run(IAction action) { int i = 0; } public void selectionChanged(IAction action, ISelection selection) { int i = 0; } public void dispose() { // if (docWizMenu != null) { // dsocWizMenu.dispose(); // } } public void init(IWorkbenchWindow window) { Action actionHome = new Action( "&Home", ImageDescriptor.createFromFile(null, "metadata.png")) { public void run() { System.out.println("HOME"); } }; //actionHome.setAccelerator(SWT.CTRL + 'H'); ActionContributionItem item = new ActionContributionItem(actionHome); item.setMode(ActionContributionItem.MODE_FORCE_TEXT); } public Menu getMenu(Control parent) { actionsMenu = createActionsMenu(parent, actionsMenu); return actionsMenu; } private static Menu createActionsMenu(Control parent, Menu menu){ if (menu == null) { menu = new Menu(parent); //BIRT ActionContributionItem birtACI = new ActionContributionItem(new Action() { public void run() { it.eng.spagobi.studio.birt.services.WizardLauncher.wizardLaunch(); } }); birtACI.getAction().setText("Birt"); birtACI.getAction().setImageDescriptor(ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.ICON_WIZARD_BIRT, Activator.PLUGIN_ID)); birtACI.fill(menu, -1); // Chart ActionContributionItem chartACI = new ActionContributionItem(new Action() { public void run() { it.eng.spagobi.studio.chart.services.WizardLauncher.wizardLaunch(); } }); chartACI.getAction().setText("Chart"); chartACI.getAction().setImageDescriptor(ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.ICON_WIZARD_CHART, Activator.PLUGIN_ID)); chartACI.fill(menu, -1); // Document Composition ActionContributionItem docCompACI = new ActionContributionItem(new Action() { public void run() { it.eng.spagobi.studio.documentcomposition.services.WizardLauncher.wizardLaunch(); } }); docCompACI.getAction().setText("Document Composition"); docCompACI.getAction().setImageDescriptor(ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.ICON_WIZARD_DOC_COMP, Activator.PLUGIN_ID)); docCompACI.fill(menu, -1); // Jasper ActionContributionItem jasperACI = new ActionContributionItem(new Action() { public void run() { it.eng.spagobi.studio.jasper.services.WizardLauncher.wizardLaunch(); } }); jasperACI.getAction().setText("Jasper report"); jasperACI.getAction().setImageDescriptor(ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.ICON_WIZARD_JASPER, Activator.PLUGIN_ID)); jasperACI.fill(menu, -1); // Geo ActionContributionItem geoACI = new ActionContributionItem(new Action() { public void run() { it.eng.spagobi.studio.geo.services.WizardLauncher.wizardLaunch(); } }); geoACI.getAction().setText("Geo"); geoACI.getAction().setImageDescriptor(ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.ICON_WIZARD_GEO, Activator.PLUGIN_ID)); geoACI.fill(menu, -1); // Dashboard ActionContributionItem dashACI = new ActionContributionItem(new Action() { public void run() { it.eng.spagobi.studio.dashboard.services.WizardLauncher.wizardLaunch(); } }); dashACI.getAction().setText("Dashboard"); dashACI.getAction().setImageDescriptor(ImageDescriptorGatherer.getImageDesc(SpagoBIStudioConstants.ICON_WIZARD_DASHBOARD, Activator.PLUGIN_ID)); dashACI.fill(menu, -1); } return menu; } private static Menu createViewsMenu(Control parent, Menu menu) { if (menu == null) { menu = new Menu(parent); IViewRegistry viewsRegistry = PlatformUI.getWorkbench().getViewRegistry(); // Get all views IViewDescriptor[] viewDescriptors = viewsRegistry.getViews(); // Sort alphabetically by label Arrays.sort(viewDescriptors, new Comparator<IViewDescriptor>() { public int compare(IViewDescriptor vd1, IViewDescriptor vd2) { return vd1.getLabel().compareTo(vd1.getLabel()); } }); // Configure the menu items for each View for (IViewDescriptor viewDescriptor : viewDescriptors) { MenuItem menuItem = new MenuItem(menu, SWT.PUSH); menuItem.setText(viewDescriptor.getLabel()); menuItem.setImage(viewDescriptor.getImageDescriptor() .createImage()); menuItem.setData(viewDescriptor.getId()); // Handle selection menuItem.addSelectionListener(new SelectionAdapter() { public void widgetSelected(SelectionEvent e) { IWorkbench workbench = PlatformUI.getWorkbench(); try { IViewDescriptor viewWithId = workbench.getViewRegistry().find( (String) e.widget.getData()); if (viewWithId != null) { IWorkbenchPage activePage = workbench.getActiveWorkbenchWindow().getActivePage(); IViewPart view = activePage.showView(viewWithId.getId(), null, IWorkbenchPage.VIEW_CREATE); activePage.activate(view); } else { // may be delete this menuItem ? } } catch (PartInitException pie) { } } }); } } else { // Delete children } return menu; } }