Newer
Older
package org.etsi.mts.tdl.graphical.sirius.part;
import java.util.List;
import org.eclipse.draw2d.CompoundBorder;
import org.eclipse.draw2d.LineBorder;
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import org.eclipse.draw2d.MarginBorder;
import org.eclipse.draw2d.PositionConstants;
import org.eclipse.gef.DragTracker;
import org.eclipse.gef.EditPart;
import org.eclipse.gef.GraphicalEditPart;
import org.eclipse.gef.Request;
import org.eclipse.gmf.runtime.diagram.ui.editparts.DiagramEditPart;
import org.eclipse.gmf.runtime.diagram.ui.editparts.IGraphicalEditPart;
import org.eclipse.gmf.runtime.gef.ui.figures.NodeFigure;
import org.eclipse.gmf.runtime.notation.View;
import org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramListEditPart;
import org.eclipse.sirius.diagram.ui.edit.api.part.IDiagramNameEditPart;
import org.eclipse.sirius.diagram.ui.tools.api.figure.OneLineMarginBorder;
import org.etsi.mts.tdl.graphical.sirius.EditPartConfiguration;
import org.etsi.mts.tdl.graphical.sirius.figure.TwoLineMarginBorder;
public class NodeListWithHeaderEditPart extends AbstractDiagramListEditPart {
public NodeListWithHeaderEditPart(View view) {
super(view);
}
@Override
protected void addDropShadow(NodeFigure figure, IFigure shape) {}
protected boolean removeBorders() {
return true;
}
@Override
protected void refreshVisuals() {
super.refreshVisuals();
if (removeBorders())
Util.disableOutlines(getPrimaryShape());
}
@Override
public void refresh() {
super.refresh();
replaceBorders();
}
@Override
protected List getModelChildren() {
return Util.getModelChildren(getModel());
}
@Override
protected void addChildVisual(EditPart childEditPart, int index) {
super.addChildVisual(childEditPart, index);
if (childEditPart instanceof GraphicalEditPart)
replaceBorder((GraphicalEditPart) childEditPart, index);
}
private void replaceBorders() {
int index = 0;
for (Object childEditPart: getChildren()) {
if (childEditPart instanceof GraphicalEditPart) {
replaceBorder((GraphicalEditPart) childEditPart, index);
index++;
}
}
}
protected boolean needsBottomSeparator(GraphicalEditPart editPart) {
return EditPartConfiguration.needsBottomSeparator((IGraphicalEditPart) editPart);
}
private void replaceBorder(GraphicalEditPart childEditPart, int index) {
IFigure f = childEditPart.getFigure();
String mappingName = Util.getMappingId((IGraphicalEditPart)childEditPart);
if (mappingName.equals("gateTypeGateType")) {
CompoundBorder marginLineBorder = new CompoundBorder(new MarginBorder(3), new LineBorder(1));
CompoundBorder border = new CompoundBorder(new LineBorder(1), marginLineBorder);
f.setBorder(border);
} else if (childEditPart instanceof IDiagramNameEditPart)
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
f.setBorder(new MarginBorder(index == 0 ? 5 : 0, 5, index == 0 ? 0 : 5, 5));
else if (!needsBottomSeparator(childEditPart))
f.setBorder(null);
else if (EditPartConfiguration.needsTopSeparator((IGraphicalEditPart) childEditPart)) {
f.setBorder(null);
TwoLineMarginBorder border = new TwoLineMarginBorder(PositionConstants.TOP, PositionConstants.BOTTOM);
border.setMargin(0, 0, 5, 0);
f.getParent().setBorder(border);
} else {
OneLineMarginBorder border = new OneLineMarginBorder(PositionConstants.BOTTOM);
border.setMargin(0, 0, 5, 0);
f.setBorder(border);
}
}
public DragTracker getDragTracker(Request request) {
DragTracker dt = getCustomDragTracker(request);
if (dt != null)
return dt;
return super.getDragTracker(request);
}
protected DragTracker getCustomDragTracker(Request request) {
EditPart p = getParent();
while (!(p.getParent() instanceof DiagramEditPart))
p = p.getParent();
return p.getDragTracker(request);
}
}