diff --git a/src/UMLClass.java b/src/UMLClass.java index 19f177c..2ca4057 100644 --- a/src/UMLClass.java +++ b/src/UMLClass.java @@ -36,7 +36,7 @@ public class UMLClass { for (String line : linesBeheaded) { if (line != null) { if (line.matches(Regex.METHOD_FIND_REGEX.pattern())) { //MATCHES METHOD - methods.add(new UMLMethod(line, name)); + methods.add(new UMLMethod(line, name, manager)); } else if (line.matches(Regex.FIELD_FIND_REGEX.pattern())) { //MATCHES FIELD fields.add(new UMLField(line)); } diff --git a/src/UMLClassView.form b/src/UMLClassView.form index d96be48..601550b 100644 --- a/src/UMLClassView.form +++ b/src/UMLClassView.form @@ -1,6 +1,6 @@
- + @@ -123,7 +123,7 @@ - + @@ -134,6 +134,14 @@ + + + + + + + + diff --git a/src/UMLClassView.java b/src/UMLClassView.java index 61e907f..d259642 100644 --- a/src/UMLClassView.java +++ b/src/UMLClassView.java @@ -19,6 +19,7 @@ public class UMLClassView { private JTextField packagePathField; private JCheckBox watermarkBox; private JCheckBox generateGetSetButton; + private JCheckBox autoFillConstructor; private UMLManager manager; @@ -78,6 +79,13 @@ public class UMLClassView { refreshTextArea(); } }); + autoFillConstructor.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + manager.setAutoGenerateConstructor(autoFillConstructor.isSelected()); + refreshTextArea(); + } + }); } private void refreshTextArea(){ @@ -101,4 +109,8 @@ public class UMLClassView { public boolean isGetSetAutoSelected() { return generateGetSetButton.isSelected(); } + + public boolean isAutoConstructorSelected() { + return autoFillConstructor.isSelected(); + } } diff --git a/src/UMLManager.java b/src/UMLManager.java index 8248454..d3d17e9 100644 --- a/src/UMLManager.java +++ b/src/UMLManager.java @@ -11,11 +11,13 @@ public class UMLManager { private UMLClassView view; private boolean showWatermark; private boolean getSetAuto; + private boolean autoFillConstructor; public UMLManager(UMLClassView view) { this.view = view; this.showWatermark = view.isWatermarkSelected(); this.getSetAuto = view.isGetSetAutoSelected(); + this.autoFillConstructor = view.isAutoConstructorSelected(); view.setManager(this); } @@ -66,4 +68,12 @@ public class UMLManager { public boolean isGetSetAuto() { return getSetAuto; } + + public boolean isAutoFillConstructor(){ + return autoFillConstructor; + } + + public void setAutoGenerateConstructor(boolean selected) { + autoFillConstructor = selected; + } } diff --git a/src/UMLMethod.java b/src/UMLMethod.java index 53ffade..9084d37 100644 --- a/src/UMLMethod.java +++ b/src/UMLMethod.java @@ -12,6 +12,10 @@ public class UMLMethod { private final ArrayList argsNames = new ArrayList<>(); private final ArrayList argsTypes = new ArrayList<>(); + private boolean isConstructor; + + private UMLManager manager; + private String methodBody = ""; /** @@ -20,7 +24,9 @@ public class UMLMethod { * @param line The line in the UML diagram * @param className The name of the class */ - public UMLMethod(String line, String className) { + public UMLMethod(String line, String className, UMLManager manager) { + + this.manager = manager; //First, format it nicely @@ -36,8 +42,11 @@ public class UMLMethod { this.name = parts[2]; + if(className.equals(name)){ + isConstructor = true; + } - if (parts[1].equals("") && !className.equals(name)) { + if (parts[1].equals("") && !isConstructor) { this.returnType = "void "; } else { this.returnType = parts[1] + " "; @@ -82,6 +91,13 @@ public class UMLMethod { } returnString.append(") {\n "); + + if(isConstructor && manager.isAutoFillConstructor()){ + for (String argsName : argsNames) { + addBodyLine("this." + argsName + " = " + argsName + ";"); + } + } + returnString.append(methodBody); returnString.append("\n }\n");