watermark option

This commit is contained in:
nora 2020-11-20 20:24:14 +01:00
parent c970867916
commit 17f732f04b
5 changed files with 85 additions and 29 deletions

View file

@ -3,24 +3,29 @@ import java.util.ArrayList;
public class UMLClass { public class UMLClass {
private final String name; private final String name;
private final String fullName;
private final String packageString; private final String packageString;
private final ArrayList<UMLField> fields = new ArrayList<>(); private final ArrayList<UMLField> fields = new ArrayList<>();
private final ArrayList<UMLMethod> methods = new ArrayList<>(); private final ArrayList<UMLMethod> methods = new ArrayList<>();
public UMLClass(String classDiagram, String packageString) { private UMLManager manager;
public UMLClass(String classDiagram, String packageString, UMLManager manager) {
this.manager = manager;
this.packageString = packageString; this.packageString = packageString;
String[] lines = classDiagram.split("\n"); String[] lines = classDiagram.split("\n");
String[] linesBeheaded = new String[lines.length-1]; String[] linesBeheaded = new String[lines.length - 1];
this.fullName = lines[0];
this.name = lines[0].split(" ")[0]; this.name = lines[0].split(" ")[0];
System.arraycopy(lines, 1, linesBeheaded, 0, linesBeheaded.length); System.arraycopy(lines, 1, linesBeheaded, 0, linesBeheaded.length);
for (String line : linesBeheaded) { for (String line : linesBeheaded) {
if(line != null) { if (line != null) {
if (line.matches(Regex.METHOD_FIND_REGEX)) { //MATCHES METHOD if (line.matches(Regex.METHOD_FIND_REGEX)) { //MATCHES METHOD
methods.add(new UMLMethod(line, name)); methods.add(new UMLMethod(line, name));
} else if (line.matches(Regex.FIELD_FIND_REGEX)) { //MATCHES FIELD } else if (line.matches(Regex.FIELD_FIND_REGEX)) { //MATCHES FIELD
@ -33,23 +38,32 @@ public class UMLClass {
@Override @Override
public String toString() { public String toString() {
StringBuilder s = new StringBuilder(); StringBuilder s = new StringBuilder();
if(!packageString.equals("")){
if(manager.isShowWatermark()) {
s.append("//TODO AUTO-GENERATED METHODS\n\n");
}
if (!packageString.equals("")) {
s.append("package ").append(packageString).append(";\n\n"); s.append("package ").append(packageString).append(";\n\n");
} }
s.append("public class ").append(name).append(" {\n\n"); s.append("public class ").append(fullName).append(" {\n\n");
for (UMLField field : fields){ if (fields.size() > 0) {
s.append(field.toString()); for (UMLField field : fields) {
s.append(field.toString());
}
s.append("\n");
} }
s.append("\n"); if (methods.size() > 0) {
for (UMLMethod method : methods) {
s.append(method.toString());
}
for (UMLMethod method : methods){ s.append("}");
s.append(method.toString());
} }
s.append("\n}");
return s.toString(); return s.toString();
} }

View file

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="UMLClassView"> <form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="UMLClassView">
<grid id="27dc6" binding="panel1" default-binding="true" layout-manager="GridLayoutManager" row-count="2" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1"> <grid id="27dc6" binding="panel1" default-binding="true" layout-manager="GridLayoutManager" row-count="4" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="3" left="3" bottom="3" right="3"/> <margin top="3" left="3" bottom="3" right="3"/>
<constraints> <constraints>
<xy x="20" y="20" width="500" height="400"/> <xy x="20" y="20" width="500" height="400"/>
@ -58,6 +58,11 @@
<text value="Package Destination Path"/> <text value="Package Destination Path"/>
</properties> </properties>
</component> </component>
<vspacer id="1a17d">
<constraints>
<grid row="3" column="0" row-span="1" col-span="2" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
<component id="96709" class="javax.swing.JTextField" binding="packagePathField"> <component id="96709" class="javax.swing.JTextField" binding="packagePathField">
<constraints> <constraints>
<grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false"> <grid row="1" column="1" row-span="1" col-span="1" vsize-policy="0" hsize-policy="6" anchor="8" fill="1" indent="0" use-parent-layout="false">
@ -66,11 +71,6 @@
</constraints> </constraints>
<properties/> <properties/>
</component> </component>
<vspacer id="1a17d">
<constraints>
<grid row="3" column="0" row-span="1" col-span="2" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
</children> </children>
</grid> </grid>
<grid id="425fa" layout-manager="GridLayoutManager" row-count="2" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1"> <grid id="425fa" layout-manager="GridLayoutManager" row-count="2" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
@ -103,9 +103,26 @@
</grid> </grid>
</children> </children>
</tabbedpane> </tabbedpane>
<vspacer id="6f6a3"> <component id="fa538" class="javax.swing.JLabel">
<constraints> <constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/> <grid row="1" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Settings:"/>
</properties>
</component>
<component id="8f883" class="javax.swing.JCheckBox" binding="watermarkBox">
<constraints>
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="3" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<selected value="true"/>
<text value="Add Watermark"/>
</properties>
</component>
<vspacer id="5f3c8">
<constraints>
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints> </constraints>
</vspacer> </vspacer>
</children> </children>

View file

@ -3,6 +3,8 @@ import java.awt.datatransfer.DataFlavor;
import java.awt.dnd.DnDConstants; import java.awt.dnd.DnDConstants;
import java.awt.dnd.DropTarget; import java.awt.dnd.DropTarget;
import java.awt.dnd.DropTargetDropEvent; import java.awt.dnd.DropTargetDropEvent;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter; import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent; import java.awt.event.KeyEvent;
import java.io.File; import java.io.File;
@ -15,6 +17,7 @@ public class UMLClassView {
private JTextField pathField; private JTextField pathField;
private JButton convertFileButton; private JButton convertFileButton;
private JTextField packagePathField; private JTextField packagePathField;
private JCheckBox watermarkBox;
private UMLManager manager; private UMLManager manager;
@ -24,15 +27,11 @@ public class UMLClassView {
inputArea.addKeyListener(new KeyAdapter() { inputArea.addKeyListener(new KeyAdapter() {
@Override @Override
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
String text = inputArea.getText(); refreshTextArea();
UMLClass umlClass = new UMLClass(text, "");
outputArea.setText(umlClass.toString());
} }
@Override @Override
public void keyReleased(KeyEvent e) { public void keyReleased(KeyEvent e) {
String text = inputArea.getText(); refreshTextArea();
UMLClass umlClass = new UMLClass(text, "");
outputArea.setText(umlClass.toString());
} }
}); });
@ -62,6 +61,18 @@ public class UMLClassView {
} }
} }
}); });
watermarkBox.addActionListener(e -> {
manager.setShowWatermark(watermarkBox.isSelected());
refreshTextArea();
});
}
private void refreshTextArea(){
String text = inputArea.getText();
UMLClass umlClass = new UMLClass(text, "", manager);
outputArea.setText(umlClass.toString());
} }
public JPanel getPanel1() { public JPanel getPanel1() {
@ -71,4 +82,8 @@ public class UMLClassView {
public void setManager(UMLManager manager) { public void setManager(UMLManager manager) {
this.manager = manager; this.manager = manager;
} }
public boolean isWatermarkSelected(){
return watermarkBox.isSelected();
}
} }

View file

@ -5,10 +5,12 @@ import java.util.ArrayList;
public class UMLManager { public class UMLManager {
UMLClassView view; private UMLClassView view;
private boolean showWatermark;
public UMLManager(UMLClassView view) { public UMLManager(UMLClassView view) {
this.view = view; this.view = view;
this.showWatermark = view.isWatermarkSelected();
view.setManager(this); view.setManager(this);
} }
@ -20,7 +22,7 @@ public class UMLManager {
ArrayList<UMLClass> classes = new ArrayList<>(); ArrayList<UMLClass> classes = new ArrayList<>();
for (String text : classesText) { for (String text : classesText) {
classes.add(new UMLClass(text, packageString)); classes.add(new UMLClass(text, packageString, this));
} }
classes.forEach(e -> System.out.println(e.toString())); classes.forEach(e -> System.out.println(e.toString()));
@ -38,4 +40,12 @@ public class UMLManager {
} }
} }
} }
public boolean isShowWatermark() {
return showWatermark;
}
public void setShowWatermark(boolean showWatermark) {
this.showWatermark = showWatermark;
}
} }

View file

@ -50,7 +50,7 @@ public class UMLMethod {
@Override @Override
public String toString() { public String toString() {
StringBuilder returnString = new StringBuilder(); StringBuilder returnString = new StringBuilder();
returnString.append("\n ").append(encapsulation).append(returnType).append(name).append(" ("); returnString.append(" ").append(encapsulation).append(returnType).append(name).append(" (");
for (int i = 0; i < argsNames.size(); i++) { for (int i = 0; i < argsNames.size(); i++) {
returnString.append(argsTypes.get(i)).append(" ").append(argsNames.get(i)); returnString.append(argsTypes.get(i)).append(" ").append(argsNames.get(i));