-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCompositeGroup.java
More file actions
78 lines (57 loc) · 2.04 KB
/
CompositeGroup.java
File metadata and controls
78 lines (57 loc) · 2.04 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
67
68
69
70
71
72
73
74
75
76
77
78
import java.util.ArrayList;
public class CompositeGroup {
GUI main_GUI;
public int group_id;
public ArrayList<MainObject> plain_obj; // 存放一般的物件(例如: Class, Use Case...)
public ArrayList<CompositeGroup> sub_group; // 存放Group底下的Group
public CompositeGroup parent = null; //上層的Group(父Group)
public CompositeGroup(int group_id, GUI m) {
this.main_GUI = m;
this.group_id = group_id;
this.plain_obj = new ArrayList<MainObject>();
this.sub_group = new ArrayList<CompositeGroup>();
}
public void add_plain_obj(MainObject obj){
obj.group_belong = this;
this.plain_obj.add(obj);
}
public void add_sub_group(CompositeGroup group_belong){
// 往上找出他的祖宗十八代,並且把最上層的root group加進這個新Group底下
CompositeGroup root_group = this.get_root_group(group_belong);
// 這個血統的Group已經加過了
if(root_group == this){
return;
}
root_group.parent = this;
this.sub_group.add(root_group);
}
public static CompositeGroup get_root_group(CompositeGroup group){
if (group==null || group.parent == null) {
return group;
}
return get_root_group(group.parent);
}
public void select_all_object_relative(CompositeGroup obj_group_belong){
System.out.println("select_all_object_relative: ");
// 把這個Group的Plain Object也Select起來
for (MainObject obj : obj_group_belong.plain_obj) {
// 如果selected_object裡面沒有加過這個物件
if(!this.main_GUI.selected_object.contains(obj)){
this.main_GUI.selected_object.add(obj);
}
}
// 往下檢查所有的sub Group,把裡面的Plain Object也Select起來
for (CompositeGroup sub_group : obj_group_belong.sub_group) {
select_all_object_relative(sub_group);
}
}
//解構掉這個Group(傳進來的obj_group會是root group)
public static void decomposite_latest_group(CompositeGroup obj_group){
for (MainObject obj : obj_group.plain_obj) {
obj.group_belong = null;
}
for (CompositeGroup group : obj_group.sub_group) {
group.parent = null;
}
}
}