d0ff801648949de67bcc9dbd41ca6c5496540856
[deliverable/tracecompass.git] / org.eclipse.tracecompass.tmf.ui / src / org / eclipse / tracecompass / tmf / ui / views / uml2sd / core / Stop.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.core;
14
15 import org.eclipse.tracecompass.tmf.ui.views.uml2sd.drawings.IGC;
16 import org.eclipse.tracecompass.tmf.ui.views.uml2sd.preferences.ISDPreferences;
17 import org.eclipse.tracecompass.tmf.ui.views.uml2sd.preferences.SDViewPref;
18
19 /**
20 * <p>
21 * It is the UML2 stop graphical representation in the sequence diagram viewer.
22 * This draw a cross on the lifeline. The stop y coordinate depend on the event occurrence when it appears.
23 * A stop is never drawn it is assigned to a lifeline.
24 * </p>
25 *
26 * @version 1.0
27 * @author sveyrier
28 */
29 public class Stop extends GraphNode {
30
31 // ------------------------------------------------------------------------
32 // Constants
33 // ------------------------------------------------------------------------
34 /**
35 * The graphNode ID
36 */
37 public static final String STOP = "STOP"; //$NON-NLS-1$
38
39 // ------------------------------------------------------------------------
40 // Attributes
41 // ------------------------------------------------------------------------
42 /**
43 * The owning lifeline on which the stop appears
44 */
45 private Lifeline fLifeline = null;
46 /**
47 * This basically represents the time when the stop occurs on the owning Lifeline
48 *
49 * @see Lifeline Lifeline for more event occurence details
50 */
51 private int fEventOccurrence = 0;
52
53 // ------------------------------------------------------------------------
54 // Methods
55 // ------------------------------------------------------------------------
56
57 @Override
58 public int getX() {
59 if (fLifeline == null) {
60 return 0;
61 }
62 return fLifeline.getX() + Metrics.getLifelineWidth() / 2 - Metrics.STOP_WIDTH / 2;
63 }
64
65 @Override
66 public int getY() {
67 if (fLifeline == null) {
68 return 0;
69 }
70 return fLifeline.getY() + fLifeline.getHeight() + (Metrics.getMessageFontHeigth() + Metrics.getMessagesSpacing()) * fEventOccurrence - Metrics.STOP_WIDTH / 2;
71 }
72
73 @Override
74 public int getWidth() {
75 if (fLifeline == null) {
76 return 0;
77 }
78 return Metrics.STOP_WIDTH;
79 }
80
81 @Override
82 public int getHeight() {
83 if (fLifeline == null) {
84 return 0;
85 }
86 return Metrics.STOP_WIDTH;
87 }
88
89 /**
90 * Set the lifeline on which the stop must be draw
91 *
92 * @param theLifeline The the stop owing lifeline
93 */
94 public void setLifeline(Lifeline theLifeline) {
95 fLifeline = theLifeline;
96 }
97
98 /**
99 * Get the lifeline on which the stop must be draw
100 *
101 * @return the the stop owing lifeline
102 */
103 public Lifeline getLifeline() {
104 return fLifeline;
105 }
106
107 /**
108 * Get the event occurrence when this stop appears
109 *
110 * @return the eventOccurence to assign to the stop
111 */
112 public int getEventOccurrence() {
113 return fEventOccurrence;
114 }
115
116 /**
117 * Set the event occurrence when this stop appears
118 *
119 * @param occurrence the eventOccurence to assign to the stop
120 */
121 public void setEventOccurrence(int occurrence) {
122 fEventOccurrence = occurrence;
123 }
124
125 @Override
126 public void draw(IGC context) {
127
128 ISDPreferences pref = SDViewPref.getInstance();
129
130 // Set the appropriate color depending if the graph node if selected or not
131 if (fLifeline.isSelected()) {
132 context.setForeground(pref.getBackGroundColorSelection());
133 context.setLineWidth(Metrics.SELECTION_LINE_WIDTH);
134 int lastWidth = context.getLineWidth();
135 context.setLineWidth(9);
136 // Draw a cross on the lifeline
137 context.drawLine(getX(), getY(), getX() + getWidth(), getY() + getHeight());
138 context.drawLine(getX() + getWidth(), getY(), getX(), getY() + getHeight());
139 // restore the context
140 context.setLineWidth(lastWidth);
141 context.setBackground(pref.getBackGroundColorSelection());
142 context.setForeground(pref.getForeGroundColorSelection());
143 } else {
144 context.setBackground(pref.getBackGroundColor(ISDPreferences.PREF_LIFELINE));
145 context.setForeground(pref.getForeGroundColor(ISDPreferences.PREF_LIFELINE));
146 }
147 int lastWidth = context.getLineWidth();
148 context.setLineWidth(3);
149 // Draw a cross on the lifeline
150 context.drawLine(getX(), getY(), getX() + getWidth(), getY() + getHeight());
151 context.drawLine(getX() + getWidth(), getY(), getX(), getY() + getHeight());
152 // restore the context
153 context.setLineWidth(lastWidth);
154 }
155
156 @Override
157 public String getArrayId() {
158 return STOP;
159 }
160
161 @Override
162 public boolean contains(int x, int y) {
163 return false;
164 }
165 }
This page took 0.053082 seconds and 4 git commands to generate.