Commit | Line | Data |
---|---|---|
73005152 | 1 | /********************************************************************** |
c8422608 | 2 | * Copyright (c) 2005, 2012 IBM Corporation, Ericsson |
73005152 BH |
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 | |
c8422608 AM |
7 | * |
8 | * Contributors: | |
9 | * IBM - Initial API and implementation | |
10 | * Bernd Hufmann - Updated for TMF | |
73005152 | 11 | **********************************************************************/ |
c8422608 | 12 | |
73005152 BH |
13 | package org.eclipse.linuxtools.tmf.ui.views.uml2sd.core; |
14 | ||
15 | import org.eclipse.linuxtools.tmf.ui.views.uml2sd.drawings.IGC; | |
df0b8ff4 | 16 | import org.eclipse.linuxtools.tmf.ui.views.uml2sd.preferences.ISDPreferences; |
3145ec83 | 17 | import org.eclipse.linuxtools.tmf.ui.views.uml2sd.preferences.SDViewPref; |
73005152 BH |
18 | |
19 | /** | |
df0b8ff4 BH |
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> | |
c8422608 | 25 | * |
df0b8ff4 | 26 | * @version 1.0 |
73005152 | 27 | * @author sveyrier |
73005152 BH |
28 | */ |
29 | public class Stop extends GraphNode { | |
30 | ||
df0b8ff4 BH |
31 | // ------------------------------------------------------------------------ |
32 | // Constants | |
33 | // ------------------------------------------------------------------------ | |
73005152 BH |
34 | /** |
35 | * The graphNode ID | |
36 | */ | |
37 | public static final String STOP = "STOP"; //$NON-NLS-1$ | |
c8422608 | 38 | |
df0b8ff4 BH |
39 | // ------------------------------------------------------------------------ |
40 | // Attributes | |
41 | // ------------------------------------------------------------------------ | |
42 | /** | |
43 | * The owning lifeline on which the stop appears | |
44 | */ | |
eb63f5ff | 45 | protected Lifeline fLifeline = null; |
73005152 BH |
46 | /** |
47 | * This basically represents the time when the stop occurs on the owning Lifeline | |
c8422608 | 48 | * |
73005152 BH |
49 | * @see Lifeline Lifeline for more event occurence details |
50 | */ | |
eb63f5ff | 51 | protected int fEventOccurrence = 0; |
73005152 | 52 | |
df0b8ff4 BH |
53 | // ------------------------------------------------------------------------ |
54 | // Methods | |
55 | // ------------------------------------------------------------------------ | |
56 | ||
57 | /* | |
58 | * (non-Javadoc) | |
59 | * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.core.GraphNode#getX() | |
60 | */ | |
73005152 BH |
61 | @Override |
62 | public int getX() { | |
eb63f5ff | 63 | if (fLifeline == null) { |
73005152 | 64 | return 0; |
df0b8ff4 | 65 | } |
eb63f5ff | 66 | return fLifeline.getX() + Metrics.getLifelineWidth() / 2 - Metrics.STOP_WIDTH / 2; |
73005152 BH |
67 | } |
68 | ||
df0b8ff4 BH |
69 | /* |
70 | * (non-Javadoc) | |
71 | * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.core.GraphNode#getY() | |
72 | */ | |
73005152 BH |
73 | @Override |
74 | public int getY() { | |
eb63f5ff | 75 | if (fLifeline == null) { |
73005152 | 76 | return 0; |
df0b8ff4 | 77 | } |
eb63f5ff | 78 | return fLifeline.getY() + fLifeline.getHeight() + (Metrics.getMessageFontHeigth() + Metrics.getMessagesSpacing()) * fEventOccurrence - Metrics.STOP_WIDTH / 2; |
73005152 BH |
79 | } |
80 | ||
df0b8ff4 BH |
81 | /* |
82 | * (non-Javadoc) | |
83 | * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.core.GraphNode#getWidth() | |
84 | */ | |
73005152 BH |
85 | @Override |
86 | public int getWidth() { | |
eb63f5ff | 87 | if (fLifeline == null) { |
73005152 | 88 | return 0; |
df0b8ff4 | 89 | } |
73005152 BH |
90 | return Metrics.STOP_WIDTH; |
91 | } | |
92 | ||
df0b8ff4 BH |
93 | /* |
94 | * (non-Javadoc) | |
95 | * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.core.GraphNode#getHeight() | |
96 | */ | |
73005152 BH |
97 | @Override |
98 | public int getHeight() { | |
eb63f5ff | 99 | if (fLifeline == null) { |
73005152 | 100 | return 0; |
df0b8ff4 | 101 | } |
73005152 BH |
102 | return Metrics.STOP_WIDTH; |
103 | } | |
104 | ||
105 | /** | |
106 | * Set the lifeline on which the stop must be draw | |
c8422608 | 107 | * |
73005152 BH |
108 | * @param theLifeline The the stop owing lifeline |
109 | */ | |
110 | public void setLifeline(Lifeline theLifeline) { | |
eb63f5ff | 111 | fLifeline = theLifeline; |
73005152 BH |
112 | } |
113 | ||
114 | /** | |
115 | * Set the event occurrence when this stop appears | |
c8422608 | 116 | * |
73005152 BH |
117 | * @param occurrence the eventOccurence to assign to the stop |
118 | */ | |
119 | public void setEventOccurrence(int occurrence) { | |
eb63f5ff | 120 | fEventOccurrence = occurrence; |
73005152 BH |
121 | } |
122 | ||
df0b8ff4 BH |
123 | /* |
124 | * (non-Javadoc) | |
125 | * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.core.GraphNode#draw(org.eclipse.linuxtools.tmf.ui.views.uml2sd.drawings.IGC) | |
126 | */ | |
73005152 BH |
127 | @Override |
128 | public void draw(IGC context) { | |
3145ec83 BH |
129 | |
130 | ISDPreferences pref = SDViewPref.getInstance(); | |
131 | ||
73005152 | 132 | // Set the appropriate color depending if the graph node if selected or not |
eb63f5ff | 133 | if (fLifeline.isSelected()) { |
3145ec83 | 134 | context.setForeground(pref.getBackGroundColorSelection()); |
73005152 BH |
135 | context.setLineWidth(Metrics.SELECTION_LINE_WIDTH); |
136 | int lastWidth = context.getLineWidth(); | |
137 | context.setLineWidth(9); | |
138 | // Draw a cross on the lifeline | |
139 | context.drawLine(getX(), getY(), getX() + getWidth(), getY() + getHeight()); | |
140 | context.drawLine(getX() + getWidth(), getY(), getX(), getY() + getHeight()); | |
141 | // restore the context | |
142 | context.setLineWidth(lastWidth); | |
3145ec83 BH |
143 | context.setBackground(pref.getBackGroundColorSelection()); |
144 | context.setForeground(pref.getForeGroundColorSelection()); | |
73005152 | 145 | } else { |
3145ec83 BH |
146 | context.setBackground(pref.getBackGroundColor(ISDPreferences.PREF_LIFELINE)); |
147 | context.setForeground(pref.getForeGroundColor(ISDPreferences.PREF_LIFELINE)); | |
73005152 BH |
148 | } |
149 | int lastWidth = context.getLineWidth(); | |
150 | context.setLineWidth(3); | |
151 | // Draw a cross on the lifeline | |
152 | context.drawLine(getX(), getY(), getX() + getWidth(), getY() + getHeight()); | |
153 | context.drawLine(getX() + getWidth(), getY(), getX(), getY() + getHeight()); | |
154 | // restore the context | |
155 | context.setLineWidth(lastWidth); | |
156 | } | |
157 | ||
158 | /* | |
159 | * (non-Javadoc) | |
160 | * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.core.GraphNode#getArrayId() | |
161 | */ | |
162 | @Override | |
163 | public String getArrayId() { | |
164 | return STOP; | |
165 | } | |
166 | ||
167 | /* | |
168 | * (non-Javadoc) | |
169 | * @see org.eclipse.linuxtools.tmf.ui.views.uml2sd.core.GraphNode#contains(int, int) | |
170 | */ | |
171 | @Override | |
172 | public boolean contains(int x, int y) { | |
73005152 BH |
173 | return false; |
174 | } | |
175 | } |