Skip to content

Commit d79691f

Browse files
committed
Add typesystem
1 parent 6d27fb5 commit d79691f

16 files changed

Lines changed: 135 additions & 37 deletions

TODOList.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
1. File Save/Close Operations
22
2. Edit Undo/Redo Operations
3-
3. More usable SelectTools
4-
4. Remove Functinoality
5-
5. Zooming and Scrolling and Moving Function
3+
//3. More usable SelectTools
4+
//4. Remove Functinoality
5+
//5. Zooming and Scrolling and Moving Function
66
6. Data Point Connection Types
77
7. Available Class Search
88
8. Auto-Update Display Box Affected by Recent Changes

src/actions/ConstructDataLineSegmentAction.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,8 @@ public void performAction() {
4949
.getSelectedComponents();
5050
DataFromPoint fromPoint = (DataFromPoint) comps.get(0);
5151
DataToPoint toPoint = (DataToPoint) comps.get(1);
52-
if (!fromPoint.getExpectedType().equals(toPoint.getExpectedType())) {
52+
//if (!fromPoint.getExpectedType().equals(toPoint.getExpectedType())) {
53+
if(!toPoint.getExpectedType().canBeAssignedFrom(fromPoint.getExpectedType())){
5354
int result = JOptionPane.showConfirmDialog(panel,
5455
"The source type is " + fromPoint.getExpectedType()
5556
+ ", the destination type is "

src/paintcomponents/data/DataDisplayPaintComponent.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import org.w3c.dom.Element;
77

88
import paintcomponents.NoConnectingLineSegmentException;
9+
import typesystem.JavaType;
910
import ui.PaintPanel;
1011

1112
/**
@@ -19,7 +20,7 @@ public class DataDisplayPaintComponent extends DataTextIOPaintComponent {
1920

2021
public DataDisplayPaintComponent(String displayingText, int x, int y) {
2122
super(displayingText, x, y);
22-
addToPoint(0, String.class.getName());
23+
addToPoint(0, new JavaType(String.class));
2324
}
2425

2526
/**
@@ -50,7 +51,7 @@ public void saveToElement(Element rootElement, Document doc) {
5051
public DataDisplayPaintComponent(Element rootElement, PaintPanel panel) {
5152
super(rootElement, panel);
5253
//we only need to do the same thing as our designated constructor
53-
addToPoint(0, String.class.getName());
54+
addToPoint(0, new JavaType(String.class));
5455
//we have to link the points
5556
linkPoints(rootElement);
5657

src/paintcomponents/data/DataFromPoint.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import org.w3c.dom.Element;
55

66
import paintcomponents.SimplePoint;
7+
import typesystem.Type;
78
import ui.PaintPanel;
89

910
/**
@@ -17,7 +18,7 @@ public class DataFromPoint extends SimplePoint {
1718

1819
private DataLineSegment lineSegment;
1920
private DataFromPointDataProvider provider;
20-
private String expectedType;
21+
private Type expectedType;
2122

2223
/**
2324
* @return the lineSegment
@@ -34,7 +35,7 @@ public void setLineSegment(DataLineSegment lineSegment) {
3435
this.lineSegment = lineSegment;
3536
}
3637

37-
public DataFromPoint(int x, int y, String expectedType) {
38+
public DataFromPoint(int x, int y, Type expectedType) {
3839
super(x, y);
3940
this.expectedType = expectedType;
4041
}
@@ -65,11 +66,11 @@ public void setProvider(DataFromPointDataProvider provider) {
6566
this.provider = provider;
6667
}
6768

68-
public String getExpectedType() {
69+
public Type getExpectedType() {
6970
return expectedType;
7071
}
7172

72-
public void setExpectedType(String expectedType) {
73+
public void setExpectedType(Type expectedType) {
7374
this.expectedType = expectedType;
7475
}
7576

src/paintcomponents/data/DataInputTextfieldPaintComponent.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.w3c.dom.Document;
44
import org.w3c.dom.Element;
55

6+
import typesystem.JavaType;
67
import ui.PaintPanel;
78

89
/**
@@ -18,7 +19,7 @@ public class DataInputTextfieldPaintComponent extends DataTextIOPaintComponent
1819
public DataInputTextfieldPaintComponent(String displayingText, int x,
1920
int y) {
2021
super(displayingText, x, y);
21-
addFromPoint(this, 0, String.class.getName());
22+
addFromPoint(this, 0, new JavaType(String.class));
2223
}
2324

2425
public void inputData(String s) {
@@ -46,7 +47,7 @@ public void saveToElement(Element rootElement, Document doc) {
4647
public DataInputTextfieldPaintComponent(Element rootElement, PaintPanel panel) {
4748
super(rootElement, panel);
4849
//do the same thing as the designated constructor
49-
addFromPoint(this, 0, String.class.getName());
50+
addFromPoint(this, 0, new JavaType(String.class));
5051
//link the points
5152
linkPoints(rootElement);
5253
}

src/paintcomponents/data/DataTextIOPaintComponent.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010

1111
import file.PanelIO;
1212
import painttools.tools.SelectTool;
13+
import typesystem.Type;
1314
import ui.PaintPanel;
1415

1516
/**
@@ -83,7 +84,7 @@ public DataTextIOPaintComponent(String displayingText, int x, int y) {
8384
* @param yShift
8485
* the row number of placing the data from point
8586
*/
86-
public void addFromPoint(DataFromPointDataProvider provider, int yShift, String expectedType) {
87+
public void addFromPoint(DataFromPointDataProvider provider, int yShift, Type expectedType) {
8788
DataFromPoint fromPoint = new DataFromPoint(getX(), getY(), expectedType);
8889
fromPoint.setProvider(provider);
8990
fromPoints.add(new DataFromPointInfo(fromPoint, yShift));
@@ -97,7 +98,7 @@ public void addFromPoint(DataFromPointDataProvider provider, int yShift, String
9798
* the row number
9899
* @return the added toPoint
99100
*/
100-
public void addToPoint(int yShift, String expectedType) {
101+
public void addToPoint(int yShift, Type expectedType) {
101102
DataToPoint toPoint = new DataToPoint(getX(), getY(), expectedType);
102103
toPoints.add(new DataToPointInfo(toPoint, yShift));
103104

src/paintcomponents/data/DataToPoint.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77

88
import paintcomponents.NoConnectingLineSegmentException;
99
import paintcomponents.SimplePoint;
10+
import typesystem.Type;
1011
import ui.PaintPanel;
1112

1213
/**
@@ -19,7 +20,7 @@ public class DataToPoint extends SimplePoint {
1920

2021

2122
DataLineSegment lineSegment;
22-
private String expectedType;
23+
private Type expectedType;
2324

2425
/**
2526
* @return the lineSegment
@@ -35,7 +36,7 @@ public void setLineSegment(DataLineSegment lineSegment) {
3536
this.lineSegment = lineSegment;
3637
}
3738

38-
public DataToPoint(int x, int y, String expectedType) {
39+
public DataToPoint(int x, int y, Type expectedType) {
3940
super(x, y);
4041
this.expectedType = expectedType;
4142
}
@@ -58,11 +59,11 @@ public Object fetchData() throws NoConnectingLineSegmentException, NoSuchElement
5859

5960
}
6061

61-
public String getExpectedType() {
62+
public Type getExpectedType() {
6263
return expectedType;
6364
}
6465

65-
public void setExpectedType(String expectedType) {
66+
public void setExpectedType(Type expectedType) {
6667
this.expectedType = expectedType;
6768
}
6869

src/paintcomponents/haskell/HaskellExpressionPaintComponent.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import paintcomponents.data.DataFromPointProviderCannotProvideDataException;
1313
import paintcomponents.data.DataTextIOPaintComponent;
1414
import paintcomponents.data.DataToPoint;
15+
import typesystem.HaskellType;
1516
import ui.PaintPanel;
1617

1718
public class HaskellExpressionPaintComponent extends DataTextIOPaintComponent implements DataFromPointDataProvider {
@@ -53,7 +54,7 @@ private void init() {
5354
for (int i = 0; i < typeParser.getArguments().size(); i++) {
5455
builder.append("arg" + i + " :: " + typeParser.getArguments().get(i)
5556
+ "\n");
56-
addToPoint(i + 2, typeParser.getArguments().get(i));
57+
addToPoint(i + 2, new HaskellType(typeParser.getArguments().get(i)));
5758

5859
}
5960
// return value

src/paintcomponents/haskell/HaskellTypeParser.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,15 @@
77

88
import javax.swing.LookAndFeel;
99

10+
import typesystem.HaskellType;
11+
1012
public class HaskellTypeParser {
1113

1214
private HashMap<String, ArrayList<String>> associatedTypeClasses;
1315
// (Eq a, Ord a, Eq t) => will become [<a,[Eq, Ord]>, <t,[Eq]>]
1416
private ArrayList<String> arguments;
15-
private String returnType;
16-
private String displayingExprType;
17+
private HaskellType returnType;
18+
private HaskellType displayingExprType;
1719

1820
/**
1921
* @return the associatedTypeClasses
@@ -32,14 +34,14 @@ public ArrayList<String> getArguments() {
3234
/**
3335
* @return the returnType
3436
*/
35-
public String getReturnType() {
37+
public HaskellType getReturnType() {
3638
return returnType;
3739
}
3840

3941
/**
4042
* @return the displayingExprType
4143
*/
42-
public String getDisplayingExprType() {
44+
public HaskellType getDisplayingExprType() {
4345
return displayingExprType;
4446
}
4547

@@ -93,7 +95,7 @@ public boolean parseType(){
9395
equalArrowIndex = doubleColonIndex;
9496
}
9597
parseArguments(type.substring(equalArrowIndex + 2).trim());
96-
this.displayingExprType = type.substring(doubleColonIndex + 2).trim();
98+
this.displayingExprType = new HaskellType(type.substring(doubleColonIndex + 2).trim());
9799
return true;
98100
}
99101

@@ -104,7 +106,7 @@ private void parseArguments(String argStr) {
104106
String arg = arguments[i];
105107
this.arguments.add(arg);
106108
}
107-
this.returnType = arguments[arguments.length - 1];
109+
this.returnType = new HaskellType( arguments[arguments.length - 1]);
108110

109111
}
110112

src/paintcomponents/java/lazy/ClassConstructorPaintComponent.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import org.w3c.dom.DOMException;
1212
import org.w3c.dom.Document;
1313
import org.w3c.dom.Element;
14-
import org.w3c.dom.NodeList;
1514

1615
import paintcomponents.NoConnectingLineSegmentException;
1716
import paintcomponents.data.DataFromPoint;
@@ -20,6 +19,7 @@
2019
import paintcomponents.data.DataFromPointProviderCannotProvideDataException;
2120
import paintcomponents.data.DataTextIOPaintComponent;
2221
import paintcomponents.data.DataToPoint;
22+
import typesystem.JavaType;
2323
import ui.PaintPanel;
2424

2525
public class ClassConstructorPaintComponent extends DataTextIOPaintComponent
@@ -39,12 +39,12 @@ private void init() {
3939
// parameters take place from line 1 to length
4040
Class[] paramTypes = displayingConstructor.getParameterTypes();
4141
for (int i = 0; i < paramTypes.length; i++) {
42-
addToPoint(i + 1, paramTypes[i].getName());
42+
addToPoint(i + 1, new JavaType(paramTypes[i]));
4343
}
4444

4545
// constructed instance take line length+1
4646
addFromPoint(this, paramTypes.length + 1,
47-
this.displayingConstructor.getDeclaringClass().getName());
47+
new JavaType(this.displayingConstructor.getDeclaringClass()));
4848

4949
// prepare String
5050
StringBuilder s = new StringBuilder();

0 commit comments

Comments
 (0)