import pipe.actions.gui.PipeApplicationModel; import pipe.controllers.application.PipeApplicationController; import pipe.views.PipeApplicationBuilder; import pipe.views.PipeApplicationView; import javax.swing.*; import java.lang.reflect.InvocationTargetException; public final class Pipe { protected static PipeApplicationView applicationView; private Pipe(String version) { PipeApplicationModel applicationModel = new PipeApplicationModel(version); PipeApplicationController applicationController = new PipeApplicationController(applicationModel); PipeApplicationBuilder builder = new PipeApplicationBuilder(); applicationView = builder.build(applicationController, applicationModel); applicationController.createEmptyPetriNet(); } public static void main(String[] args) { Runnable runnable = pipeRunnable(); SwingUtilities.invokeLater(runnable); } protected static Runnable pipeRunnable() { return new Runnable() { @Override public void run() { new Pipe("v5.0.2"); } }; } protected static void runPipeForTesting() throws InterruptedException, InvocationTargetException { SwingUtilities.invokeAndWait(pipeRunnable()); } }