Fix HistogramView recounts on range update
[deliverable/tracecompass.git] / org.eclipse.linuxtools.tmf.ui / src / org / eclipse / linuxtools / tmf / ui / project / handlers / SelectTraceTypeContributionItem.java
CommitLineData
12c155f5
FC
1/*******************************************************************************
2 * Copyright (c) 2011 Ericsson
3 *
4 * All rights reserved. This program and the accompanying materials are
5 * made available under the terms of the Eclipse Public License v1.0 which
6 * accompanies this distribution, and is available at
7 * http://www.eclipse.org/legal/epl-v10.html
8 *
9 * Contributors:
10 * Patrick Tasse - Initial API and implementation
11 *******************************************************************************/
12
13package org.eclipse.linuxtools.tmf.ui.project.handlers;
14
15import java.util.HashMap;
16import java.util.HashSet;
17import java.util.LinkedList;
18import java.util.Map;
19
20import org.eclipse.core.runtime.IConfigurationElement;
21import org.eclipse.core.runtime.Platform;
22import org.eclipse.jface.action.IContributionItem;
23import org.eclipse.jface.action.MenuManager;
24import org.eclipse.jface.resource.ImageDescriptor;
25import org.eclipse.jface.viewers.ISelection;
26import org.eclipse.jface.viewers.StructuredSelection;
27import org.eclipse.linuxtools.tmf.TmfCorePlugin;
28import org.eclipse.linuxtools.tmf.ui.TmfUiPlugin;
29import org.eclipse.linuxtools.tmf.ui.project.model.TmfTraceElement;
30import org.eclipse.ui.IWorkbenchPage;
31import org.eclipse.ui.IWorkbenchWindow;
32import org.eclipse.ui.PlatformUI;
33import org.eclipse.ui.actions.CompoundContributionItem;
34import org.eclipse.ui.menus.CommandContributionItem;
35import org.eclipse.ui.menus.CommandContributionItemParameter;
36
37public class SelectTraceTypeContributionItem extends CompoundContributionItem {
38
39 //private static final ImageDescriptor SELECTED_ICON = ImageDescriptor.createFromImage(TmfUiPlugin.getDefault().getImageFromPath("icons/elcl16/bullet.gif")); //$NON-NLS-1$
40 private static final ImageDescriptor SELECTED_ICON = TmfUiPlugin.getDefault().getImageDescripterFromPath(
41 "icons/elcl16/bullet.gif"); //$NON-NLS-1$
42
43 @Override
44 protected IContributionItem[] getContributionItems() {
45 final String CATEGORY_ELEMENT = "category"; //$NON-NLS-1$
46 final String TYPE_ELEMENT = "type"; //$NON-NLS-1$
47 final String NAME_ATTRIBUTE = "name"; //$NON-NLS-1$
48 final String ID_ATTRIBUTE = "id"; //$NON-NLS-1$
49 final String BUNDLE_PARAMETER = "org.eclipse.linuxtools.tmf.ui.commandparameter.project.trace.select_trace_type.bundle"; //$NON-NLS-1$
50 final String TYPE_PARAMETER = "org.eclipse.linuxtools.tmf.ui.commandparameter.project.trace.select_trace_type.type"; //$NON-NLS-1$
51 final String ICON_PARAMETER = "org.eclipse.linuxtools.tmf.ui.commandparameter.project.trace.select_trace_type.icon"; //$NON-NLS-1$
52 final String SELECT_TRACE_TYPE_COMMAND_ID = "org.eclipse.linuxtools.tmf.ui.command.project.trace.select_trace_type"; //$NON-NLS-1$
53
54 Map<String, String> params;
55 LinkedList<IContributionItem> list = new LinkedList<IContributionItem>();
56
57 HashMap<String, MenuManager> categoriesMap = new HashMap<String, MenuManager>();
58 IConfigurationElement[] config = Platform.getExtensionRegistry().getConfigurationElementsFor(
59 TmfCorePlugin.TMF_TRACE_TYPE_ID);
60 for (IConfigurationElement ce : config) {
61 if (ce.getName().equals(CATEGORY_ELEMENT)) {
62 MenuManager subMenu = new MenuManager(ce.getAttribute(NAME_ATTRIBUTE));
63 categoriesMap.put(ce.getAttribute(ID_ATTRIBUTE), subMenu);
64 list.add(subMenu);
65 }
66 }
67
68 HashSet<String> selectedTraceTypes = new HashSet<String>();
69 IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
70 IWorkbenchPage page = window.getActivePage();
71 ISelection selection = page.getSelection();
72 if (selection instanceof StructuredSelection) {
73 for (Object element : ((StructuredSelection) selection).toList()) {
74 if (element instanceof TmfTraceElement) {
75 TmfTraceElement trace = (TmfTraceElement) element;
76 selectedTraceTypes.add(trace.getTraceType());
77 }
78 }
79 }
80
81 for (IConfigurationElement ce : config) {
82 if (ce.getName().equals(TYPE_ELEMENT)) {
83 String traceBundle = ce.getContributor().getName();
84 String traceType = ce.getAttribute(ID_ATTRIBUTE);
85 String traceIcon = ce.getAttribute(TmfTraceElement.ICON);
86 params = new HashMap<String, String>();
87 params.put(BUNDLE_PARAMETER, traceBundle);
88 params.put(TYPE_PARAMETER, traceType);
89 params.put(ICON_PARAMETER, traceIcon);
90
91 String label = ce.getAttribute(NAME_ATTRIBUTE).replaceAll("&", "&&"); //$NON-NLS-1$ //$NON-NLS-2$
92 ImageDescriptor icon = null;
93 if (selectedTraceTypes.contains(traceType)) {
94 icon = SELECTED_ICON;
95 }
96
97 CommandContributionItemParameter param = new CommandContributionItemParameter(PlatformUI.getWorkbench()
98 .getActiveWorkbenchWindow(), "my.parameterid", // id //$NON-NLS-1$
99 SELECT_TRACE_TYPE_COMMAND_ID, // commandId
100 params, // parameters
101 icon, // icon
102 icon, // disabled icon
103 icon, // hover icon
104 label, // label
105 null, // mnemonic
106 null, // tooltip
107 CommandContributionItem.STYLE_PUSH, // style
108 null, // help context id
109 true // visibleEnable
110 );
111
112 MenuManager subMenu = categoriesMap.get(ce.getAttribute(TmfTraceElement.CATEGORY));
113 if (subMenu != null) {
114 subMenu.add(new CommandContributionItem(param));
115 } else {
116 list.add(new CommandContributionItem(param));
117 }
118 }
119 }
120
121 return list.toArray(new IContributionItem[list.size()]);
122 }
123
124}
This page took 0.02906 seconds and 5 git commands to generate.