Import views plugins
[deliverable/tracecompass.git] / tmf / org.lttng.scope.tmf2.views.ui / src / org / lttng / scope / tmf2 / views / ui / timeline / widgets / timegraph / toolbar / ViewerToolBar.java
1 /*
2 * Copyright (C) 2017 EfficiOS Inc., Alexandre Montplaisir <alexmonthy@efficios.com>
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
10 package org.lttng.scope.tmf2.views.ui.timeline.widgets.timegraph.toolbar;
11
12 import org.lttng.scope.tmf2.views.ui.jfx.JfxImageFactory;
13 import org.lttng.scope.tmf2.views.ui.jfx.JfxUtils;
14 import org.lttng.scope.tmf2.views.ui.timeline.widgets.timegraph.StateRectangle;
15 import org.lttng.scope.tmf2.views.ui.timeline.widgets.timegraph.TimeGraphWidget;
16 import org.lttng.scope.tmf2.views.ui.timeline.widgets.timegraph.toolbar.debugopts.DebugOptionsButton;
17 import org.lttng.scope.tmf2.views.ui.timeline.widgets.timegraph.toolbar.drawnevents.EventSeriesMenuButton;
18 import org.lttng.scope.tmf2.views.ui.timeline.widgets.timegraph.toolbar.modelconfig.ModelConfigButton;
19 import org.lttng.scope.tmf2.views.ui.timeline.widgets.timegraph.toolbar.nav.NavigationButtons;
20
21 import javafx.scene.control.Alert;
22 import javafx.scene.control.Alert.AlertType;
23 import javafx.scene.control.Button;
24 import javafx.scene.control.Label;
25 import javafx.scene.control.Separator;
26 import javafx.scene.control.TextField;
27 import javafx.scene.control.ToolBar;
28 import javafx.scene.control.Tooltip;
29 import javafx.scene.image.Image;
30 import javafx.scene.image.ImageView;
31 import javafx.scene.layout.HBox;
32
33 /**
34 * Toolbar for the time graph viewer.
35 *
36 * @author Alexandre Montplaisir
37 */
38 public class ViewerToolBar extends ToolBar {
39
40 private static final String HELP_ICON_PATH = "/icons/toolbar/help.gif"; //$NON-NLS-1$
41
42 /**
43 * Constructor
44 *
45 * @param viewer
46 * The time graph viewer to which this toolbar belongs.
47 */
48 public ViewerToolBar(TimeGraphWidget viewer) {
49 super();
50
51 NavigationButtons navButtons = new NavigationButtons(viewer);
52
53 getItems().addAll(
54 new Label(viewer.getName()),
55 new Separator(),
56
57 new ZoomInButton(viewer),
58 new ZoomOutButton(viewer),
59 new ZoomToSelectionButton(viewer),
60 new ZoomToFullRangeButton(viewer),
61 new Separator(),
62
63 new HBox(
64 navButtons.getBackButton(),
65 navButtons.getForwardButton(),
66 navButtons.getMenuButton()
67 ),
68 getStateInfoButton(viewer),
69 new Separator(),
70
71 new ModelConfigButton(viewer),
72 new ArrowSeriesMenuButton(viewer),
73 new EventSeriesMenuButton(viewer),
74 new SortingModeMenuButton(viewer),
75 new FilterModeMenuButton(viewer),
76 new Separator(),
77
78 new DebugOptionsButton(viewer));
79 }
80
81 // FIXME Temporary, should be moved to tooltip
82 private Button getStateInfoButton(TimeGraphWidget viewer) {
83 Button button = new Button();
84 Image helpIcon = JfxImageFactory.instance().getImageFromResource(HELP_ICON_PATH);
85 button.setGraphic(new ImageView(helpIcon));
86 button.setTooltip(new Tooltip("Get State Info")); //$NON-NLS-1$
87 button.setOnAction(e -> {
88 StateRectangle state = viewer.getSelectedState();
89 if (state == null) {
90 return;
91 }
92 Alert alert = new Alert(AlertType.INFORMATION);
93 /* Use a read-only TextField so the text can be copy-pasted */
94 TextField content = new TextField(state.toString());
95 content.setEditable(false);
96 content.setPrefWidth(1000.0);
97 alert.getDialogPane().setContent(content);
98 alert.setResizable(true);
99 alert.show();
100
101 JfxUtils.centerDialogOnScreen(alert, this);
102 });
103 return button;
104 }
105
106 }
This page took 0.034917 seconds and 5 git commands to generate.