-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCompositionLine.java
More file actions
66 lines (51 loc) · 2.46 KB
/
CompositionLine.java
File metadata and controls
66 lines (51 loc) · 2.46 KB
1
2
3
4
5
6
7
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
public class CompositionLine extends MainButton {
public CompositionLine(String button_name, GUI m) {
super(button_name, m);
// TODO Auto-generated constructor stub
}
public void CanvasPressEvent(int x, int y, MainObject obj) {
System.out.println("Press!");
MainObject.connection_port nearest_port = obj.get_nearest_port(x, y);
ObjectCompositionLine ass_line = new ObjectCompositionLine(obj, nearest_port);
//滑鼠還在拖曳時,先加進temp_line,等release時再加進ass_line
// main_GUI.canvas_area.line.add(ass_line);
main_GUI.canvas_area.temp_line = ass_line;
}
public void CanvasEnterEvent(int x, int y, MainObject obj) {
System.out.println("Enter!");
System.out.println("CanvasMoveEvent X:"+x+" Y:"+y);
//當滑鼠按住拖曳時,進入其他物件
if(main_GUI.canvas_area.pressed_obj!=null && main_GUI.canvas_area.pressed_obj != obj) {
System.out.println("滑鼠按住拖曳時,進入其他物件");
main_GUI.canvas_area.entered_obj = obj;
System.out.println("Enter another oject and create line");
//給他終點就可以產生線段了
main_GUI.canvas_area.temp_line.end_obj = obj;
main_GUI.canvas_area.temp_line.end_port = obj.get_nearest_port(x, y);
}else if(main_GUI.canvas_area.pressed_obj!=null && main_GUI.canvas_area.pressed_obj == obj && main_GUI.canvas_area.temp_line.end_obj != null){
// 進入原本的物件,association線段將不會建立
//把終點拿掉,他就不會畫線段了
main_GUI.canvas_area.temp_line.end_obj = null;
main_GUI.canvas_area.temp_line.end_port = null;
}
}
public void CanvasReleaseEvent(int x, int y , MainObject obj) {
//當按住滑鼠拖曳,且mouse release的時候進入其他物件,則畫線
if(main_GUI.canvas_area.pressed_obj!=null && main_GUI.canvas_area.entered_obj!=null) {
main_GUI.canvas_area.line.add(main_GUI.canvas_area.temp_line);
}
main_GUI.canvas_area.temp_line = null;
main_GUI.canvas_area.entered_obj = null;
main_GUI.canvas_area.pressed_obj = null;
}
public void CanvasExitEvent(int x, int y , MainObject obj) {
//當按住滑鼠拖曳 離開某物件,且這個物件不是當初press的那一個
if(main_GUI.canvas_area.pressed_obj!=null && obj != main_GUI.canvas_area.pressed_obj) {
//歸零
main_GUI.canvas_area.entered_obj = null;
//把終點拿掉,他就不會畫線段了
main_GUI.canvas_area.temp_line.end_obj = null;
main_GUI.canvas_area.temp_line.end_port = null;
}
}
}