Skip to content

Commit 0721af8

Browse files
committed
Add three actions, AddDataDisplayBoxAction, ConstructDataLienSegmentAction, UpdateDataDisplayBoxAction, update the ActionMenuBar
1 parent 31ddb7c commit 0721af8

File tree

4 files changed

+137
-0
lines changed

4 files changed

+137
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package actions;
2+
3+
import paintcomponents.DataDisplayPaintComponent;
4+
import ui.PaintPanel;
5+
6+
public class AddDataDisplayBoxAction extends PaintAction {
7+
8+
public AddDataDisplayBoxAction(PaintPanel panel) {
9+
super(panel);
10+
}
11+
12+
@Override
13+
public boolean canPerformAction() {
14+
return true;
15+
}
16+
17+
@Override
18+
public void performAction() {
19+
DataDisplayPaintComponent comp = new DataDisplayPaintComponent("Data Display", panel.getWidth() /2, panel.getHeight()/2);
20+
panel.addPaintComponent(comp);
21+
panel.repaint();
22+
}
23+
24+
@Override
25+
public String locationString() {
26+
return "Add/Data Display";
27+
}
28+
29+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package actions;
2+
3+
import java.util.ArrayList;
4+
5+
import paintcomponents.DataFromPoint;
6+
import paintcomponents.DataLineSegment;
7+
import paintcomponents.DataToPoint;
8+
import paintcomponents.PaintComponent;
9+
import ui.PaintPanel;
10+
11+
public class ConstructDataLineSegmentAction extends ConstructLineSegmentAction {
12+
13+
public ConstructDataLineSegmentAction(PaintPanel panel) {
14+
super(panel);
15+
// TODO Auto-generated constructor stub
16+
}
17+
18+
@Override
19+
public boolean canPerformAction() {
20+
if( super.canPerformAction() == false) return false;
21+
//we must connect from a DataFromPoint to DataToPoint
22+
//assume ConstructLineSegment is doing correctly, there is two corrently selected points
23+
ArrayList<PaintComponent> comps = this.panel.getSelectTool().getSelectedComponents();
24+
//TODO IMPORTANT Generic Argument is erased, may cause unexpected behavior when types dont match in the future
25+
if(comps.get(0) instanceof DataFromPoint<?> && comps.get(1) instanceof DataToPoint<?>){
26+
//allow connection only when no segment has no existing connections to the data
27+
if(((DataToPoint<?>)comps.get(1)).getLineSegment() == null){
28+
return true;
29+
}
30+
}
31+
return false;
32+
}
33+
34+
@Override
35+
public void performAction() {
36+
37+
ArrayList<PaintComponent> comps = this.panel.getSelectTool().getSelectedComponents();
38+
@SuppressWarnings("rawtypes")
39+
DataLineSegment<?> seg = new DataLineSegment((DataFromPoint<?>)comps.get(0), (DataToPoint<?>)comps.get(1));
40+
addLineSegment(seg);
41+
}
42+
43+
@Override
44+
public String locationString() {
45+
// TODO Auto-generated method stub
46+
return "Data/Construct/Line Segment";
47+
}
48+
49+
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package actions;
2+
3+
import java.util.NoSuchElementException;
4+
5+
import javax.swing.JOptionPane;
6+
7+
import paintcomponents.DataDisplayPaintComponent;
8+
import paintcomponents.DataFromPointNoDataProviderException;
9+
import paintcomponents.DataFromPointProviderCannotProvideDataException;
10+
import paintcomponents.NoConnectingLineSegmentException;
11+
import ui.PaintPanel;
12+
13+
public class UpdateDataDisplayBoxAction extends PaintAction {
14+
15+
public UpdateDataDisplayBoxAction(PaintPanel panel) {
16+
super(panel);
17+
}
18+
19+
@Override
20+
public boolean canPerformAction() {
21+
if(panel.getSelectTool().getSelectedComponents().size() == 1){
22+
if(panel.getSelectTool().getSelectedComponents().get(0) instanceof DataDisplayPaintComponent){
23+
return true;
24+
}
25+
}
26+
return false;
27+
}
28+
29+
@Override
30+
public void performAction() {
31+
DataDisplayPaintComponent comp = (DataDisplayPaintComponent) panel.getSelectTool().getSelectedComponents().get(0) ;
32+
try {
33+
comp.updateDisplayText();
34+
panel.repaint();
35+
} catch (NoSuchElementException | NoConnectingLineSegmentException
36+
| DataFromPointNoDataProviderException
37+
| DataFromPointProviderCannotProvideDataException e) {
38+
e.printStackTrace();
39+
JOptionPane.showMessageDialog(panel, e.toString());
40+
}
41+
42+
}
43+
44+
@Override
45+
public String locationString() {
46+
return "Data/Display Box/Update";
47+
}
48+
49+
}

src/actions/menu/ActionsMenuBar.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@
99

1010
import painttools.tools.SelectionToolListener;
1111
import ui.PaintPanel;
12+
import actions.AddDataDisplayBoxAction;
1213
import actions.AddDataInputBoxAction;
1314
import actions.AddTextBoxAction;
15+
import actions.ConstructDataLineSegmentAction;
1416
import actions.ConstructLineSegmentAction;
1517
import actions.GeneratePolygonSourceJava;
1618
import actions.InputDataForDataInputBoxAction;
1719
import actions.PaintAction;
20+
import actions.UpdateDataDisplayBoxAction;
1821

1922
public class ActionsMenuBar extends JMenuBar implements SelectionToolListener{
2023

@@ -24,6 +27,13 @@ public ActionsMenuBar(PaintPanel panel){
2427
addAction(new AddTextBoxAction(panel));
2528
addAction(new AddDataInputBoxAction(panel));
2629
addAction(new InputDataForDataInputBoxAction(panel));
30+
31+
//data display
32+
addAction(new AddDataDisplayBoxAction(panel));
33+
addAction(new UpdateDataDisplayBoxAction(panel));
34+
35+
//data segments
36+
addAction(new ConstructDataLineSegmentAction(panel));
2737

2838
}
2939

0 commit comments

Comments
 (0)