package at.bestsolution.efxclipse.tooling.pde.e4.project.media.tpl.decoration;
import at.bestsolution.efxclipse.tooling.rrobot.model.task.CompilationUnit;
import at.bestsolution.efxclipse.tooling.rrobot.model.task.DynamicFile;
import at.bestsolution.efxclipse.tooling.rrobot.model.task.Generator;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.Map;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtend2.lib.StringConcatenation;
@SuppressWarnings("all")
public class DecorationControllerTpl implements Generator<DynamicFile> {
public InputStream generate(final DynamicFile file, final Map<String,Object> data) {
EObject _eContainer = file.eContainer();
final CompilationUnit cu = ((CompilationUnit) _eContainer);
String _packagename = cu.getPackagename();
CharSequence _generate = this.generate(_packagename);
String _string = _generate.toString();
byte[] _bytes = _string.getBytes();
ByteArrayInputStream _byteArrayInputStream = new ByteArrayInputStream(_bytes);
return _byteArrayInputStream;
}
public CharSequence generate(final String packageName) {
StringConcatenation _builder = new StringConcatenation();
_builder.append("package ");
_builder.append(packageName, "");
_builder.append(";");
_builder.newLineIfNotEmpty();
_builder.append("import java.net.URL;");
_builder.newLine();
_builder.append("import java.util.ResourceBundle;");
_builder.newLine();
_builder.newLine();
_builder.append("import javafx.application.Platform;");
_builder.newLine();
_builder.append("import javafx.event.ActionEvent;");
_builder.newLine();
_builder.append("import javafx.event.EventHandler;");
_builder.newLine();
_builder.append("import javafx.fxml.FXML;");
_builder.newLine();
_builder.append("import javafx.fxml.Initializable;");
_builder.newLine();
_builder.append("import javafx.geometry.Rectangle2D;");
_builder.newLine();
_builder.append("import javafx.scene.control.ToolBar;");
_builder.newLine();
_builder.append("import javafx.scene.input.MouseEvent;");
_builder.newLine();
_builder.append("import javafx.stage.Screen;");
_builder.newLine();
_builder.append("import javafx.stage.Stage;");
_builder.newLine();
_builder.newLine();
_builder.append("public class DecorationController implements Initializable {");
_builder.newLine();
_builder.append("\t");
_builder.append("private double mouseDragOffsetX = 0;");
_builder.newLine();
_builder.append("\t");
_builder.append("private double mouseDragOffsetY = 0;");
_builder.newLine();
_builder.newLine();
_builder.append("\t");
_builder.append("@FXML");
_builder.newLine();
_builder.append("\t");
_builder.append("private ToolBar decorationArea;");
_builder.newLine();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("private Rectangle2D backupWindowBounds;");
_builder.newLine();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("public DecorationController() {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("System.err.println(\"Creating controller ....\");");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.newLine();
_builder.append("\t");
_builder.append("public void initialize(URL location, ResourceBundle resources) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("decorationArea.setOnMousePressed(new EventHandler<MouseEvent>() {");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("public void handle(MouseEvent event) {");
_builder.newLine();
_builder.append("\t\t\t\t");
_builder.append("mouseDragOffsetX = event.getSceneX();");
_builder.newLine();
_builder.append("\t\t\t\t");
_builder.append("mouseDragOffsetY = event.getSceneY();");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t\t");
_builder.append("});");
_builder.newLine();
_builder.append("\t\t");
_builder.append("decorationArea.setOnMouseDragged(new EventHandler<MouseEvent>() {");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("public void handle(MouseEvent event) {");
_builder.newLine();
_builder.append("\t\t\t\t");
_builder.append("Stage w = getStage();");
_builder.newLine();
_builder.append("\t\t\t\t");
_builder.append("w.setX(event.getScreenX() - mouseDragOffsetX);");
_builder.newLine();
_builder.append("\t\t\t\t");
_builder.append("w.setY(event.getScreenY() - mouseDragOffsetY);");
_builder.newLine();
_builder.append("\t\t\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t\t");
_builder.append("});");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("@FXML");
_builder.newLine();
_builder.append("\t");
_builder.append("public void handleClose(ActionEvent event) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("Platform.exit();");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("@FXML");
_builder.newLine();
_builder.append("\t");
_builder.append("public void handleMin(ActionEvent event) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("getStage().setIconified(true);");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("@FXML");
_builder.newLine();
_builder.append("\t");
_builder.append("public void handleMax(ActionEvent event) {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("Stage stage = getStage();");
_builder.newLine();
_builder.append("\t\t");
_builder.append("final double stageY = stage.getY();");
_builder.newLine();
_builder.append(" ");
_builder.append("final Screen screen = Screen.getScreensForRectangle(stage.getX(), stageY, 1, 1).get(0);");
_builder.newLine();
_builder.append(" ");
_builder.append("Rectangle2D bounds = screen.getVisualBounds();");
_builder.newLine();
_builder.append(" ");
_builder.append("if (bounds.getMinX() == stage.getX() && bounds.getMinY() == stageY &&");
_builder.newLine();
_builder.append(" ");
_builder.append("bounds.getWidth() == stage.getWidth() && bounds.getHeight() == stage.getHeight()) {");
_builder.newLine();
_builder.append(" ");
_builder.append("if (backupWindowBounds != null) {");
_builder.newLine();
_builder.append(" ");
_builder.append("stage.setX(backupWindowBounds.getMinX());");
_builder.newLine();
_builder.append(" ");
_builder.append("stage.setY(backupWindowBounds.getMinY());");
_builder.newLine();
_builder.append(" ");
_builder.append("stage.setWidth(backupWindowBounds.getWidth());");
_builder.newLine();
_builder.append(" ");
_builder.append("stage.setHeight(backupWindowBounds.getHeight());");
_builder.newLine();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.append(" ");
_builder.append("} else {");
_builder.newLine();
_builder.append(" ");
_builder.append("backupWindowBounds = new Rectangle2D(stage.getX(), stage.getY(), stage.getWidth(), stage.getHeight());");
_builder.newLine();
_builder.append(" ");
_builder.append("final double newStageY = screen.getVisualBounds().getMinY();");
_builder.newLine();
_builder.append(" ");
_builder.append("stage.setX(screen.getVisualBounds().getMinX());");
_builder.newLine();
_builder.append(" ");
_builder.append("stage.setY(newStageY);");
_builder.newLine();
_builder.append(" ");
_builder.append("stage.setWidth(screen.getVisualBounds().getWidth());");
_builder.newLine();
_builder.append(" ");
_builder.append("stage.setHeight(screen.getVisualBounds().getHeight());");
_builder.newLine();
_builder.append(" ");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("\t");
_builder.newLine();
_builder.append("\t");
_builder.append("Stage getStage() {");
_builder.newLine();
_builder.append("\t\t");
_builder.append("return (Stage) decorationArea.getScene().getWindow();");
_builder.newLine();
_builder.append("\t");
_builder.append("}");
_builder.newLine();
_builder.append("}");
_builder.newLine();
return _builder;
}
}