Skip to content

Commit efe1fa0

Browse files
committed
Merge Origin develop
2 parents 02b4ffd + ad0a724 commit efe1fa0

File tree

4 files changed

+67
-16
lines changed

4 files changed

+67
-16
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
*.class
2+
/bin/

src/actions/ConstructLineSegmentAction.java

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package actions;
22

3+
import java.awt.Component;
34
import java.util.ArrayList;
45

56
import paintcomponents.LineSegment;
@@ -20,12 +21,32 @@ public boolean canPerformAction() {
2021
//only two points can be selected
2122
if(items.size() != 2) return false;
2223
//selected component must be of type point
24+
2325
for (PaintComponent paintComponent : items) {
2426
if(!(paintComponent instanceof SimplePoint)){
2527
return false;
2628
}
2729
}
28-
//TODO If line segment already exists, do not add again!!!
30+
31+
//check if line segment already exist
32+
// if exists, then it will not form a new line segment
33+
ArrayList<PaintComponent> components = panel.getPaintComponents();
34+
LineSegment line = null;
35+
36+
//get all paintComponents
37+
for(PaintComponent paintComponent : components) {
38+
if( paintComponent instanceof LineSegment ) {
39+
line = (LineSegment) paintComponent;
40+
//check front point and to point similarities
41+
if(items.get(0) == line.getFromPoint() &&
42+
items.get(1) == line.getToPoint())
43+
return false;
44+
if(items.get(1) == line.getFromPoint() &&
45+
items.get(0) == line.getToPoint())
46+
return false;
47+
}
48+
}
49+
2950
//TODO Do not allow adding two line segments connecting the same point
3051
return true;
3152

src/actions/menu/ActionsMenuBar.java

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,26 @@ public ActionsMenuBar(PaintPanel panel){
2929

3030
private void addAction(PaintAction action) {
3131
String[] strings = action.locationString().split("/");
32-
JMenu insertionMenu = null;
32+
Object insertionMenu = this;
3333
//look for existing j menus
34-
for (int i = 0; i < getMenuCount();i++) {
35-
JMenu menu = getMenu(i);
36-
if(menu.getText().equals(strings[0])){
37-
insertionMenu = menu;
38-
break;
34+
for( int k = 0; k < strings.length-1; k++) {
35+
for (int i = 0; i < menuCount( insertionMenu );i++) {
36+
JMenuItem menu = obtainMenu(insertionMenu, i);
37+
if(menu.getText().equals(strings[k])){
38+
insertionMenu = menu;
39+
break;
40+
}
3941
}
42+
//create a new if not found
43+
JMenu toInsert = new JMenu(strings[k]);
44+
insertMenu( insertionMenu, toInsert );
45+
insertionMenu = toInsert;
4046
}
41-
//create a new if not found
42-
if(insertionMenu == null){
43-
insertionMenu = new JMenu(strings[0]);
44-
this.add(insertionMenu);
45-
}
46-
4747
//assume 2 level depth
4848
//TODO Change here
4949
PaintActionMenuItem item = new PaintActionMenuItem(action);
5050
item.setEnabled(action.canPerformAction());
51-
item.setText(strings[1]);
51+
item.setText(strings[strings.length-1]);
5252
item.addActionListener(new ActionListener() {
5353

5454
@Override
@@ -58,8 +58,33 @@ public void actionPerformed(ActionEvent e) {
5858
}
5959
});
6060

61-
insertionMenu.add(item);
62-
61+
insertMenu( insertionMenu, item );
62+
}
63+
private int menuCount( Object a ) {
64+
if( a instanceof JMenu) {
65+
return ((JMenu) a).getItemCount();
66+
}
67+
if( a instanceof JMenuBar) {
68+
return ((JMenuBar) a).getMenuCount();
69+
}
70+
return -1;
71+
}
72+
private JMenuItem obtainMenu( Object a, int index ) {
73+
if( a instanceof JMenu) {
74+
return ((JMenu) a).getItem(index);
75+
}
76+
if( a instanceof JMenuBar) {
77+
return ((JMenuBar) a).getMenu(index);
78+
}
79+
return null;
80+
}
81+
private void insertMenu( Object a, JMenuItem toInsert ) {
82+
if( a instanceof JMenu) {
83+
((JMenu) a).add(toInsert);
84+
}
85+
if( a instanceof JMenuBar) {
86+
((JMenuBar) a).add(toInsert);
87+
}
6388
}
6489

6590
@Override

src/ui/PaintPanel.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,10 @@ public void addPaintComponent(PaintComponent comp) {
177177
components.add(comp);
178178

179179
}
180+
181+
public ArrayList<PaintComponent> getPaintComponents() {
182+
return components;
183+
}
180184

181185
/**
182186
* Returns the topmost component under a given point

0 commit comments

Comments
 (0)