From fa2ff425f33200a8d0b43ebe4c26ab26e12e4ab9 Mon Sep 17 00:00:00 2001 From: Daniel Augustin Date: Mon, 25 Oct 2021 13:20:15 +0200 Subject: [PATCH 1/3] Migrate to new BlueJ Extension API --- libs/bluejext2.jar | Bin 0 -> 73284 bytes pom.xml | 2 +- .../bluej_adapters/BlueJExtension.java | 4 +- .../menu/BlueJMenuGenerator.java | 42 +++++++----------- .../source_control/SourceControl.java | 32 ++++++------- 5 files changed, 31 insertions(+), 49 deletions(-) create mode 100644 libs/bluejext2.jar diff --git a/libs/bluejext2.jar b/libs/bluejext2.jar new file mode 100644 index 0000000000000000000000000000000000000000..29826a76eeb9954a1ca37c3359b275dba7878004 GIT binary patch literal 73284 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 literal 0 HcmV?d00001 diff --git a/pom.xml b/pom.xml index e698c34..2f43980 100644 --- a/pom.xml +++ b/pom.xml @@ -49,7 +49,7 @@ bluejext system 1.0 - ${basedir}\libs\bluejext.jar + ${basedir}\libs\bluejext2.jar diff --git a/src/main/java/class_diagram_editor/bluej_adapters/BlueJExtension.java b/src/main/java/class_diagram_editor/bluej_adapters/BlueJExtension.java index da93400..21b45b4 100644 --- a/src/main/java/class_diagram_editor/bluej_adapters/BlueJExtension.java +++ b/src/main/java/class_diagram_editor/bluej_adapters/BlueJExtension.java @@ -1,7 +1,7 @@ package class_diagram_editor.bluej_adapters; -import bluej.extensions.BlueJ; -import bluej.extensions.Extension; +import bluej.extensions2.BlueJ; +import bluej.extensions2.Extension; import class_diagram_editor.ClassEditorApplication; import class_diagram_editor.bluej_adapters.menu.BlueJMenuGenerator; import class_diagram_editor.bluej_adapters.source_control.PrintCodeSourceControl; diff --git a/src/main/java/class_diagram_editor/bluej_adapters/menu/BlueJMenuGenerator.java b/src/main/java/class_diagram_editor/bluej_adapters/menu/BlueJMenuGenerator.java index 62ced61..1bcd926 100644 --- a/src/main/java/class_diagram_editor/bluej_adapters/menu/BlueJMenuGenerator.java +++ b/src/main/java/class_diagram_editor/bluej_adapters/menu/BlueJMenuGenerator.java @@ -1,16 +1,12 @@ package class_diagram_editor.bluej_adapters.menu; -import bluej.extensions.BPackage; -import bluej.extensions.BProject; -import bluej.extensions.MenuGenerator; -import bluej.extensions.ProjectNotOpenException; +import bluej.extensions2.BPackage; +import bluej.extensions2.BProject; +import bluej.extensions2.MenuGenerator; +import bluej.extensions2.ProjectNotOpenException; import class_diagram_editor.ClassEditorApplication; import class_diagram_editor.bluej_adapters.source_control.SourceControl; -import class_diagram_editor.bluej_adapters.source_control.SourceCodeControl; - -import javax.swing.AbstractAction; -import javax.swing.JMenuItem; -import java.awt.event.ActionEvent; +import javafx.scene.control.MenuItem; /** * Adds extra JMenu entries which belong to the {@link class_diagram_editor.bluej_adapters.BlueJExtension extension}. @@ -18,30 +14,22 @@ public class BlueJMenuGenerator extends MenuGenerator { @Override - public JMenuItem getToolsMenuItem(BPackage bp) { + public MenuItem getToolsMenuItem(BPackage bp) { try { BProject project = bp.getProject(); - return new JMenuItem(new OpenClassEditorAction(project.getName(), new SourceControl(project))); - } catch (ProjectNotOpenException e) { - return null; - } - } + MenuItem menuItem = new MenuItem("Klasseneditor öffnen"); - private static class OpenClassEditorAction extends AbstractAction { - private final SourceCodeControl sourceCodeControl; - private final String projectTitle; + final String projectName = project.getName(); + final SourceControl sourceControl = new SourceControl(project); - public OpenClassEditorAction(String projectTitle, SourceCodeControl sourceCodeControl) { - this.sourceCodeControl = sourceCodeControl; - this.projectTitle = projectTitle; + menuItem.setOnAction(event -> { + new ClassEditorApplication(projectName, sourceControl).run(); + }); - putValue(AbstractAction.NAME, "Klasseneditor öffnen"); - } - - @Override - public void actionPerformed(ActionEvent e) { - new ClassEditorApplication(projectTitle, sourceCodeControl).run(); + return menuItem; + } catch (ProjectNotOpenException e) { + return null; } } } diff --git a/src/main/java/class_diagram_editor/bluej_adapters/source_control/SourceControl.java b/src/main/java/class_diagram_editor/bluej_adapters/source_control/SourceControl.java index 06a8e0e..3b37f09 100644 --- a/src/main/java/class_diagram_editor/bluej_adapters/source_control/SourceControl.java +++ b/src/main/java/class_diagram_editor/bluej_adapters/source_control/SourceControl.java @@ -1,14 +1,9 @@ package class_diagram_editor.bluej_adapters.source_control; -import bluej.extensions.BClass; -import bluej.extensions.BPackage; -import bluej.extensions.BProject; -import bluej.extensions.ClassNotFoundException; -import bluej.extensions.MissingJavaFileException; -import bluej.extensions.PackageNotFoundException; -import bluej.extensions.ProjectNotOpenException; -import bluej.extensions.editor.Editor; -import bluej.extensions.editor.TextLocation; +import bluej.extensions2.*; +import bluej.extensions2.ClassNotFoundException; +import bluej.extensions2.editor.JavaEditor; +import bluej.extensions2.editor.TextLocation; import class_diagram_editor.code_generation.ClassDiagramGenerator; import class_diagram_editor.code_generation.CodeElement; import class_diagram_editor.code_generation.JavaCodeGenerator; @@ -17,7 +12,6 @@ import java.io.File; import java.io.IOException; -import java.nio.file.CopyOption; import java.nio.file.Files; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; @@ -60,7 +54,7 @@ public void generateCode(ClassDiagram classDiagram, GenerationType generationTyp while (iterator.hasNext()) { CodeElement codeElement = iterator.next(); - Editor editor = createFile(bpackage, codeElement); + JavaEditor editor = createFile(bpackage, codeElement); if (editor != null) { generateElement(editor, codeElement); @@ -81,7 +75,7 @@ public ClassDiagram generateDiagram() { BPackage bpackage = project.getPackages()[0]; for (BClass bClass : bpackage.getClasses()) { - final Editor editor = bClass.getEditor(); + final JavaEditor editor = bClass.getJavaEditor(); final String elementContent = editor.getText(START_LOCATION, getEndLocation(editor)); @@ -122,8 +116,8 @@ private void createBackup(File directory) { } } - private Editor createFile(BPackage bPackage, CodeElement codeElement) { - Editor editor = null; + private JavaEditor createFile(BPackage bPackage, CodeElement codeElement) { + JavaEditor editor = null; try { File javaFile = new File(bPackage.getDir(), codeElement.getLastGeneratedName() + JAVA_FILE_EXTENSION); @@ -134,10 +128,10 @@ private Editor createFile(BPackage bPackage, CodeElement codeElement) { } if (javaFile.exists() && !elementRenamed) { - editor = bPackage.getBClass(codeElement.getName()).getEditor(); + editor = bPackage.getBClass(codeElement.getName()).getJavaEditor(); } else { if (javaFile.createNewFile() || javaFile.exists()) { - editor = bPackage.newClass(codeElement.getName()).getEditor(); + editor = bPackage.newClass(codeElement.getName()).getJavaEditor(); } } } catch (ProjectNotOpenException | PackageNotFoundException | MissingJavaFileException @@ -149,7 +143,7 @@ private Editor createFile(BPackage bPackage, CodeElement codeElement) { } private File renameOldClassWithNew(BPackage bPackage, File javaFile, CodeElement codeElement) - throws ProjectNotOpenException, PackageNotFoundException, ClassNotFoundException, IOException { + throws ProjectNotOpenException, PackageNotFoundException, IOException, ClassNotFoundException { File newJavaFile = new File(bPackage.getDir(), codeElement.getName() + JAVA_FILE_EXTENSION); if (javaFile.exists()) { @@ -170,7 +164,7 @@ private File renameOldClassWithNew(BPackage bPackage, File javaFile, CodeElement return newJavaFile; } - private void generateElement(Editor editor, CodeElement codeElement) { + private void generateElement(JavaEditor editor, CodeElement codeElement) { editor.setReadOnly(true); final TextLocation endLocation = getEndLocation(editor); @@ -187,7 +181,7 @@ private void generateElement(Editor editor, CodeElement codeElement) { editor.setReadOnly(false); } - private TextLocation getEndLocation(Editor editor) { + private TextLocation getEndLocation(JavaEditor editor) { // line index is zero indexed int lastLine = editor.getLineCount() - 1; int lastColumn = editor.getLineLength(lastLine); From a6d11ab6597799def239a241cc0d519cae182eb3 Mon Sep 17 00:00:00 2001 From: Daniel Augustin Date: Mon, 25 Oct 2021 13:20:29 +0200 Subject: [PATCH 2/3] Fix parsing exception for empty projects --- .../class_diagram_editor/code_generation/CodeRepository.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/class_diagram_editor/code_generation/CodeRepository.java b/src/main/java/class_diagram_editor/code_generation/CodeRepository.java index 9268a88..759335a 100644 --- a/src/main/java/class_diagram_editor/code_generation/CodeRepository.java +++ b/src/main/java/class_diagram_editor/code_generation/CodeRepository.java @@ -45,6 +45,10 @@ public CodeRepository() { } private void initialize(String elementName, String sourceCode) { + if (sourceCode.isEmpty()) { + return; + } + try { JavaProjectBuilder builder = new JavaProjectBuilder(); From b060377fd475da436fbc4e1e5fe3c7e69bf6ae23 Mon Sep 17 00:00:00 2001 From: Daniel Augustin Date: Mon, 25 Oct 2021 13:20:41 +0200 Subject: [PATCH 3/3] Update version --- .gitignore | 1 + pom.xml | 2 +- .../class_diagram_editor/bluej_adapters/BlueJExtension.java | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index 31dcba4..fa8f9d7 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ # Package Files # *.jar +!bluejext2.jar *.war *.ear diff --git a/pom.xml b/pom.xml index 2f43980..2030ddb 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ klasseneditor klasseneditor - 0.0.1 + 2.0.0 UTF-8 diff --git a/src/main/java/class_diagram_editor/bluej_adapters/BlueJExtension.java b/src/main/java/class_diagram_editor/bluej_adapters/BlueJExtension.java index 21b45b4..59f32fe 100644 --- a/src/main/java/class_diagram_editor/bluej_adapters/BlueJExtension.java +++ b/src/main/java/class_diagram_editor/bluej_adapters/BlueJExtension.java @@ -16,7 +16,7 @@ public class BlueJExtension extends Extension { private static final String NAME = "Klasseneditor"; - private static final String VERSION = "0.0.1"; + private static final String VERSION = "2.0.0"; /** * Main method for starting the application directly @@ -55,7 +55,7 @@ public String getName() { } /** - * @return the version of the extension. TODO: update version on release + * @return the version of the extension. */ public String getVersion() { return VERSION;