Copyright header update, 2015 edition
[deliverable/tracecompass.git] / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / tracecompass / tmf / ui / views / uml2sd / handlers / MoveToMessage.java
1 /**********************************************************************
2 * Copyright (c) 2005, 2014 IBM Corporation, Ericsson
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the Eclipse Public License v1.0
5 * which accompanies this distribution, and is available at
6 * http://www.eclipse.org/legal/epl-v10.html
7 *
8 * Contributors:
9 * IBM - Initial API and implementation
10 * Bernd Hufmann - Updated for TMF
11 **********************************************************************/
12
13 package org.eclipse.tracecompass.tmf.ui.views.uml2sd.handlers;
14
15 import java.util.Iterator;
16
17 import org.eclipse.jface.viewers.ISelection;
18 import org.eclipse.jface.viewers.ISelectionProvider;
19 import org.eclipse.jface.viewers.StructuredSelection;
20 import org.eclipse.tracecompass.internal.tmf.ui.Activator;
21 import org.eclipse.tracecompass.internal.tmf.ui.ITmfImageConstants;
22 import org.eclipse.tracecompass.tmf.ui.views.uml2sd.SDView;
23 import org.eclipse.tracecompass.tmf.ui.views.uml2sd.SDWidget;
24 import org.eclipse.tracecompass.tmf.ui.views.uml2sd.core.BaseMessage;
25 import org.eclipse.tracecompass.tmf.ui.views.uml2sd.core.GraphNode;
26 import org.eclipse.tracecompass.tmf.ui.views.uml2sd.core.SyncMessage;
27 import org.eclipse.tracecompass.tmf.ui.views.uml2sd.core.SyncMessageReturn;
28
29 /**
30 * Action Class implementation to move to selected message
31 *
32 * @version 1.0
33 * @author sveyrier
34 *
35 */
36 public class MoveToMessage extends BaseSDAction {
37
38 // ------------------------------------------------------------------------
39 // Constants
40 // ------------------------------------------------------------------------
41 /**
42 * The action ID.
43 */
44 public static final String ID = "org.eclipse.linuxtools.tmf.ui.views.uml2sd.handlers.GoToMessage"; //$NON-NLS-1$
45
46 // ------------------------------------------------------------------------
47 // Constructors
48 // ------------------------------------------------------------------------
49 /**
50 * Default Constructor
51 */
52 public MoveToMessage() {
53 this(null);
54 }
55
56 /**
57 * Constructor
58 *
59 * @param view a sequence diagram view reference
60 */
61 public MoveToMessage(SDView view) {
62 super(view);
63 setId(ID);
64 setActionDefinitionId(ID);
65 setImageDescriptor(Activator.getDefault().getImageDescripterFromPath(ITmfImageConstants.IMG_UI_SEARCH_MATCH));
66 }
67
68 // ------------------------------------------------------------------------
69 // Methods
70 // ------------------------------------------------------------------------
71
72 @Override
73 public void run() {
74 if (getView() == null) {
75 return;
76 }
77
78 SDWidget sdWidget = getView().getSDWidget();
79
80 if (sdWidget == null) {
81 return;
82 }
83
84 ISelectionProvider selProvider = sdWidget.getSelectionProvider();
85 ISelection sel = selProvider.getSelection();
86 Object selectedNode = null;
87 Iterator<Object> it = ((StructuredSelection) sel).iterator();
88 while (it.hasNext()) {
89 Object node = it.next();
90 if (node instanceof BaseMessage) {
91 selectedNode = node;
92 }
93 }
94
95 if (selectedNode == null) {
96 return;
97 }
98
99 if (selectedNode instanceof SyncMessageReturn) {
100 GraphNode node = ((SyncMessageReturn) selectedNode).getMessage();
101 sdWidget.clearSelection();
102 sdWidget.addSelection(node);
103 sdWidget.ensureVisible(node);
104 sdWidget.redraw();
105 } else if (selectedNode instanceof SyncMessage) {
106 GraphNode node = ((SyncMessage) selectedNode).getMessageReturn();
107 sdWidget.clearSelection();
108 sdWidget.addSelection(node);
109 sdWidget.ensureVisible(node);
110 sdWidget.redraw();
111 }
112 }
113 }
This page took 0.069433 seconds and 5 git commands to generate.