1 package org
.eclipse
.tracecompass
.internal
.provisional
.tmf
.ui
.views
.timegraph2
.swtjfx
;
4 import java
.util
.stream
.Collectors
;
5 import java
.util
.stream
.IntStream
;
7 import org
.eclipse
.jdt
.annotation
.Nullable
;
8 import org
.eclipse
.jface
.action
.Action
;
9 import org
.eclipse
.jface
.action
.ActionContributionItem
;
10 import org
.eclipse
.jface
.action
.IAction
;
11 import org
.eclipse
.jface
.action
.IMenuCreator
;
12 import org
.eclipse
.swt
.widgets
.Control
;
13 import org
.eclipse
.swt
.widgets
.Event
;
14 import org
.eclipse
.swt
.widgets
.Menu
;
15 import org
.eclipse
.tracecompass
.internal
.provisional
.tmf
.core
.views
.timegraph2
.ITimeGraphModelRenderProvider
;
16 import org
.eclipse
.tracecompass
.internal
.provisional
.tmf
.core
.views
.timegraph2
.ITimeGraphModelRenderProvider
.FilterMode
;
17 import org
.eclipse
.tracecompass
.internal
.provisional
.tmf
.core
.views
.timegraph2
.ITimeGraphModelRenderProvider
.SortingMode
;
18 import org
.eclipse
.tracecompass
.internal
.provisional
.tmf
.ui
.views
.timegraph2
.TimeGraphModelViewer
;
19 import org
.eclipse
.tracecompass
.internal
.tmf
.ui
.Activator
;
20 import org
.eclipse
.tracecompass
.internal
.tmf
.ui
.ITmfImageConstants
;
22 final class ActionFactory
{
24 private ActionFactory() {}
26 private static abstract class DrowDownMenuCreator
implements IMenuCreator
{
28 private @Nullable Menu fMenu
= null;
31 public final @Nullable Menu
getMenu(@Nullable Menu parent
) {
32 return null; // Not used?
36 public final Menu
getMenu(@Nullable Control parent
) {
40 Menu menu
= new Menu(parent
);
41 getMenuActions().forEach(action
-> {
42 new ActionContributionItem(action
).fill(menu
, -1);
49 public final void dispose() {
56 protected abstract List
<Action
> getMenuActions();
59 private static class SelectSortingModeAction
extends Action
{
61 public SelectSortingModeAction(TimeGraphModelViewer viewer
) {
62 super("Sorting Mode", IAction
.AS_DROP_DOWN_MENU
);
63 ITimeGraphModelRenderProvider provider
= viewer
.getModelRenderProvider();
65 setToolTipText("Select Sorting Mode");
66 setImageDescriptor(Activator
.getDefault().getImageDescripterFromPath(ITmfImageConstants
.IMG_UI_SHOW_LEGEND
));
67 setMenuCreator(new DrowDownMenuCreator() {
69 protected List
<Action
> getMenuActions() {
70 return IntStream
.range(0, provider
.getSortingModes().size())
72 SortingMode sortingMode
= provider
.getSortingModes().get(index
);
73 Action action
= new Action(sortingMode
.getName(), IAction
.AS_RADIO_BUTTON
) {
75 public void runWithEvent(@Nullable Event event
) {
77 provider
.setCurrentSortingMode(index
);
78 System
.out
.println("repainting viewer");
79 viewer
.repaintCurrentArea();
83 action
.setEnabled(true);
84 action
.setChecked(provider
.getCurrentSortingMode() == sortingMode
);
87 .collect(Collectors
.toList());
93 public void runWithEvent(@Nullable Event event
) {
94 // TODO Also open the menu, need to figure out how
98 private static class SelectFilterModesAction
extends Action
{
100 public SelectFilterModesAction(TimeGraphModelViewer viewer
) {
101 super("Filters", IAction
.AS_DROP_DOWN_MENU
);
102 ITimeGraphModelRenderProvider provider
= viewer
.getModelRenderProvider();
104 setToolTipText("Configure Filters");
105 setImageDescriptor(Activator
.getDefault().getImageDescripterFromPath(ITmfImageConstants
.IMG_UI_FILTERS
));
106 setMenuCreator(new DrowDownMenuCreator() {
108 protected List
<Action
> getMenuActions() {
109 return IntStream
.range(0, provider
.getFilterModes().size())
111 FilterMode filterMode
= provider
.getFilterModes().get(index
);
112 Action action
= new Action(filterMode
.getName(), IAction
.AS_CHECK_BOX
) {
114 public void runWithEvent(@Nullable Event event
) {
116 provider
.enableFilterMode(index
);
118 provider
.disableFilterMode(index
);
120 System
.out
.println("repainting viewer");
121 viewer
.repaintCurrentArea();
124 action
.setEnabled(true);
125 action
.setChecked(provider
.getActiveFilterModes().contains(filterMode
));
128 .collect(Collectors
.toList());
134 public void runWithEvent(@Nullable Event event
) {
135 // TODO Also open the menu, need to figure out how
139 public static Action
getSelectSortingModeAction(TimeGraphModelViewer viewer
) {
140 return new SelectSortingModeAction(viewer
);
143 public static Action
getSelectFilterModesAction(TimeGraphModelViewer viewer
) {
144 return new SelectFilterModesAction(viewer
);