Example usage for org.apache.poi.xslf.usermodel SlideLayout BLANK

List of usage examples for org.apache.poi.xslf.usermodel SlideLayout BLANK

Introduction

In this page you can find the example usage for org.apache.poi.xslf.usermodel SlideLayout BLANK.

Prototype

SlideLayout BLANK

To view the source code for org.apache.poi.xslf.usermodel SlideLayout BLANK.

Click Source Link

Document

Blank

Usage

From source file:djpresentationMaker.forms.frmMainController.java

@Override
public void initialize(URL url, ResourceBundle rb) {
    sql.setDatabase(clsHelper.getPath() + File.separatorChar + lang.getValue("database.key"));
    sql.open();//from w  w w. j  a  v a  2s.co  m
    accMain.setExpandedPane(tpnlSongAndSongbook);
    clsControlHelper.reloadTable(sql, tblSongbook, true);
    clsHelper.listRoots(tvPictures);
    Image img = new Image(
            DJPresentationMaker.class.getResourceAsStream("style" + File.separatorChar + "songbook.png"));
    cmdNewSongBook.setGraphic(new ImageView(img));
    img = new Image(DJPresentationMaker.class.getResourceAsStream("style" + File.separatorChar + "song.png"));
    cmdNewSong.setGraphic(new ImageView(img));
    clsControlHelper.reloadTable(sql, tblSongSongbook);
    clsControlHelper.loadEffects(sql, cmbMainEffect);
    clsControlHelper.resetObjects(true, false, txtMainSlideTitle, txtSongTitle, txtSongInterpret, txtSongAlbum,
            txtSongPartTitle, cmdSongPartAdd, txtMainSlideContent, txtSongPartContent);

    ctxMainSongbookDelete.setOnAction(event -> {
        sql.deleteRow("songbooks", "id=" + tblSongbook.getSelectionModel().getSelectedItem().getID());
        clsControlHelper.reloadTable(sql, tblSongbook, true);
    });

    menExtrasToViewer.setOnAction(event -> clsHelper.openFXML("forms/frmSongViewer.fxml",
            clsLang.getLangBundle(), "SongViewer", "style" + File.separatorChar + "logo_128.png"));

    ctxMainSongbookChange.setOnAction(event -> {
        DataTable dt = sql.getRows("songbooks",
                Arrays.asList("id", "title", "originalTitle", "publisher", "isbn", "release", "path",
                        "description"),
                "id='" + tblSongbook.getSelectionModel().getSelectedItem().getID() + "'");
        for (int i = 0; i <= dt.columnsCount() - 1; i++) {
            txtSongbookCover.setText(dt.get(0, "path").toString());
            txtSongbookTitle.setText(dt.get(0, "title").toString());
            txtSongbookOriginalTitle.setText(dt.get(0, "originalTitle").toString());
            txtSongbookPublisher.setText(dt.get(0, "publisher").toString());
            txtSongbookISBN.setText(dt.get(0, "isbn").toString());
            dpSongbookRelease.setValue(LocalDate.parse(dt.get(0, "release").toString()));
            txtSongbookDescription.setText(dt.get(0, "description").toString());
            songbookChange = true;
            if (txtSongbookCover.getText().contains("http://")) {
                ivSongbookCover.setImage(new Image(txtSongbookCover.getText()));
            } else {
                ivSongbookCover.setImage(new Image("file:///" + txtSongbookCover.getText()));
            }
            tpnlMain.getSelectionModel().select(pnlSongBook);
            songbookID = Integer.parseInt(dt.get(0, "id").toString());
            cmdSongbookSubmit.setText("ndern");
        }
    });

    ctxSongChange.setOnAction(event -> {
        if (!tblSongSong.getSelectionModel().isEmpty()) {
            clsControlHelper.resetObjects(false, false, txtSongAlbum, txtSongInterpret, txtSongTitle);
            clsControlHelper.resetObjects(true, false, txtSongPartContent, txtSongPartTitle, lvSongPartOrder,
                    lvSongParts, cmdSongPartAdd, cmdSongPartAddToOrder, cmdSongPartRemoveFromOrder);
            clsControlHelper.resetButtons(false, true, lang.getValue("change.key"), cmdSongSubmit);
        }
    });

    ctxSongpartChange.setOnAction(event -> {
        if (!lvSongParts.getSelectionModel().isEmpty()) {
            String title = lvSongParts.getSelectionModel().getSelectedItem();
            String song_id = tblSongSong.getSelectionModel().getSelectedItems().get(0).getID();
            DataTable dt = sql.getRows("songparts", Arrays.asList("title", "content"),
                    "title='" + title + "' AND song_id=" + song_id);
            txtSongPartTitle.setText(dt.get(0, "title").toString().replace("_", "'"));
            txtSongPartContent.setText(dt.get(0, "content").toString().replace("_", "'"));
            cmdSongPartAdd.setText(lang.getValue("change.key"));
        }
    });

    ctxSongDelete.setOnAction(event -> {
        sql.deleteRow("songs", "id=" + tblSongSong.getSelectionModel().getSelectedItems().get(0).getID());
        clsControlHelper.getSongsFromSongbook(sql, tblSongSongbook, tblSongSong, true);
    });

    ctxSongpartDelete.setOnAction(event -> {
        String id = tblSongSong.getSelectionModel().getSelectedItems().get(0).getID();
        sql.deleteRow("songparts", "title='" + lvSongParts.getSelectionModel().getSelectedItem() + "'");
        Map<Integer, String> list = clsControlHelper.listSongPartsAndInfo(sql, tblSongSong, txtSongTitle,
                txtSongAlbum, txtSongInterpret);
        lvSongParts.getItems().clear();
        for (String item : list.values()) {
            lvSongParts.getItems().add(item);
        }
        clsControlHelper.getOrderedParts(sql, id, lvSongPartOrder);
    });

    menProgramSettings.setOnAction(event -> clsHelper.openFXML("forms/frmSettings.fxml",
            clsLang.getLangBundle(), lang.getValue("settings.key"), "style/logo_128.png"));

    cmdNewSongBook.setOnAction(event -> {
        if (tpnlMain.getSelectionModel().getSelectedItem().equals(pnlSongBook)) {
            tpnlMain.getSelectionModel().select(pnlMain);
            clearTab(2);
        } else {
            tpnlMain.getSelectionModel().select(pnlSongBook);
            songbookChange = false;
            clsControlHelper.reloadTable(sql, tblSongbook, true);
        }
    });

    cmdNewSong.setOnAction(event -> {
        if (tpnlMain.getSelectionModel().getSelectedItem().equals(pnlSong)) {
            tpnlMain.getSelectionModel().select(pnlMain);
            clearTab(3);
            clsControlHelper.resetObjects(true, false, cmdSongPartAdd, txtSongTitle, txtSongInterpret,
                    txtSongAlbum, txtSongPartTitle, txtSongPartContent);
            clsControlHelper.reloadTable(sql, tblSongSongbook);
        } else {
            tpnlMain.getSelectionModel().select(pnlSong);
            clsControlHelper.reloadTable(sql, tblSongbook, true);
        }
    });

    cmdSongbookFind.setOnAction(event -> {
        clsXISBN service = new clsXISBN(txtSongbookISBN.getText());
        txtSongbookPublisher.setText(service.getPublisher());
        txtSongbookTitle.setText(service.getTitle());
        if (!service.getYear().equals("")) {
            dpSongbookRelease.setValue(LocalDate.parse(service.getYear() + "-01-01"));
        }
        txtSongbookDescription.setText(service.getEdition());
        currentIMGPath = "http://covers.librarything.com/devkey/b07988b337d9fecafa139c0203e87b29/medium/isbn/"
                + txtSongbookISBN.getText();
        txtSongbookCover.setText(currentIMGPath);
        ivSongbookCover.setImage(new Image(currentIMGPath));
    });

    cmdSongbookReset.setOnAction(event -> clearTab(2));

    cmdSongbookCover.setOnAction(event -> {
        if (!txtSongbookCover.getText().equals("") && new File(txtSongbookCover.getText()).exists()
                && !currentIMGPath.equals(txtSongbookCover.getText())) {
            currentIMGPath = txtSongbookCover.getText();
        } else if (txtSongbookCover.getText().equals("")) {
            FileChooser fileChooser = new FileChooser();
            FileChooser.ExtensionFilter extFilterJPG = new FileChooser.ExtensionFilter("JPG files (*.jpg)",
                    "*.JPG");
            FileChooser.ExtensionFilter extFilterPNG = new FileChooser.ExtensionFilter("PNG files (*.png)",
                    "*.PNG");
            fileChooser.getExtensionFilters().addAll(extFilterJPG, extFilterPNG);
            File file = fileChooser.showOpenDialog(null);
            currentIMGPath = file.getPath();
            txtSongbookCover.setText(currentIMGPath);
        }
        ivSongbookCover.setImage(new Image("file:///" + currentIMGPath));
    });

    ctxSongs.setOnShowing(event -> {
        if (!tblSongbook.getSelectionModel().isEmpty()) {
            if (tblSongbook.getSelectionModel().getSelectedItem().getID().equals("999999")) {
                ctxMainSongChange.setDisable(false);
                ctxMainSongDelete.setDisable(false);
            } else {
                ctxMainSongChange.setDisable(true);
                ctxMainSongDelete.setDisable(true);
            }
        }
    });

    ctxMainSongChange.setOnAction(event -> {
        try {
            if (!tblSong.getSelectionModel().isEmpty()) {
                frmUserdefinedController controller = new frmUserdefinedController(
                        tblSong.getSelectionModel().getSelectedItem().getName());
                FXMLLoader loader = new FXMLLoader(
                        DJPresentationMaker.class.getResource("forms/frmUserdefined.fxml"));
                loader.setController(controller);
                loader.setResources(clsLang.getLangBundle());
                Parent root = loader.load();
                Scene scene = new Scene(root);
                Stage stage = new Stage();
                stage.setScene(scene);
                stage.setTitle(lang.getValue("frmMain.userdefined.key"));
                stage.getIcons()
                        .add(new Image(DJPresentationMaker.class.getResourceAsStream("style/logo_128.png")));
                stage.showAndWait();
            }
        } catch (Exception ex) {
            clsHelper.printException(ex);
        }
    });

    ctxMainSongDelete.setOnAction(event -> {
        try {
            if (!tblSong.getSelectionModel().isEmpty()) {
                sql.deleteRow("userdefined",
                        "TITLE='" + tblSong.getSelectionModel().getSelectedItem().getName() + "'");
            }
        } catch (Exception ex) {
            clsHelper.printException(ex);
        }
    });

    cmdSongbookSubmit.setOnAction(event -> {
        songbook book = new songbook(txtSongbookTitle.getText(), txtSongbookPublisher.getText());
        book.setOriginalTitle(txtSongbookOriginalTitle.getText());
        book.setISBN(txtSongbookISBN.getText());
        book.setPath(txtSongbookCover.getText());
        book.setDescription(txtSongbookDescription.getText());
        book.setRelease(dpSongbookRelease.getValue());
        if (book.DataSetIsOkay()) {
            if (book.DataSetDontExist(sql) || songbookChange) {
                List<String> columns = Arrays.asList("title", "originalTitle", "publisher", "isbn", "release",
                        "path", "description");
                List<String> values = book.returnSongBook();
                if (!songbookChange) {
                    sql.addRow("songbooks", columns, values);
                } else {
                    sql.updateRow("songbooks", columns, values, "id='" + songbookID + "'");
                }
                songbookChange = false;
                clearTab(2);
                clsControlHelper.reloadTable(sql, tblSongbook, true);
                clsControlHelper.reloadTable(sql, tblSongSongbook);
                tpnlMain.getSelectionModel().select(pnlMain);
            } else {
                clsHelper.createAlert(Alert.AlertType.WARNING, lang.getValue("datasetExists.header.key"),
                        lang.getValue("datasetExists.line.key"), "");
            }
        } else {
            clsHelper.createAlert(Alert.AlertType.WARNING, lang.getValue("datasetIncompatible.header.key"),
                    lang.getValue("datasetIncompatible.line.key"), "");
        }
        cmdSongbookSubmit.setText(lang.getValue("finish.key"));
    });

    tblSongbook.setOnMouseClicked(
            event -> clsControlHelper.getSongsFromSongbook(sql, tblSongbook, tblSong, false));
    tblSongSongbook.setOnMouseClicked(event -> {
        clsControlHelper.getSongsFromSongbook(sql, tblSongSongbook, tblSongSong, true);
        cmdSongPartAdd.setDisable(true);
    });

    tblSongSong.setOnMouseClicked(event1 -> {
        if (!tblSongSong.getSelectionModel().isEmpty()) {
            String id = tblSongSong.getSelectionModel().getSelectedItems().get(0).getID();
            Map<Integer, String> values = clsControlHelper.listSongPartsAndInfo(sql, tblSongSong, txtSongTitle,
                    txtSongAlbum, txtSongInterpret);
            if (!id.equals("0")) {
                lvSongParts.getItems().clear();
                for (String item : values.values()) {
                    lvSongParts.getItems().add(item);
                }
                clsControlHelper.getOrderedParts(sql, id, lvSongPartOrder);
                clsControlHelper.resetObjects(true, false, txtSongInterpret, txtSongAlbum, txtSongTitle);
                clsControlHelper.resetObjects(false, false, cmdSongPartAdd, txtSongPartTitle,
                        txtSongPartContent, lvSongPartOrder, lvSongParts, cmdSongPartAddToOrder,
                        cmdSongPartRemoveFromOrder);
                clsControlHelper.resetButtons(false, true, lang.getValue("add.key"), cmdSongSubmit);
            } else {
                clsControlHelper.resetObjects(false, true, lvSongParts, lvSongPartOrder, txtSongPartTitle,
                        txtSongPartContent, txtSongTitle, txtSongInterpret, txtSongAlbum, cmdSongPartAdd);
            }
        } else {
            cmdSongPartAdd.setDisable(true);
        }
    });

    tvPictures.setOnMouseClicked(event -> {
        if (!tvPictures.getSelectionModel().isEmpty()) {
            currentPicsPath = ((TreeItem) tvPictures.getSelectionModel().getSelectedItem()).getValue()
                    .toString();
            currentPicsPath = clsHelper.getPath(((TreeItem) tvPictures.getSelectionModel().getSelectedItem()),
                    currentPicsPath);
            clsHelper.listFileSystem(currentPicsPath,
                    ((TreeItem) tvPictures.getSelectionModel().getSelectedItem()));
        }
    });

    cmdSongPartAdd.setOnMouseClicked(event -> {
        if (!cmdSongPartAdd.getText().equals(lang.getValue("change.key"))) {
            for (String item : lvSongParts.getItems()) {
                if (item.equals(txtSongPartTitle.getText())) {
                    clsHelper.createAlert(Alert.AlertType.WARNING,
                            lang.getValue("frmMain.SongPartExists.Title.key"),
                            lang.getValue("frmMain.SongPartExists.Content1.key") + " "
                                    + txtSongPartTitle.getText() + " "
                                    + lang.getValue("frmMain.SongPartExists.Content2.key"),
                            "");
                    return;
                }
            }
            if (lvSongParts.getItems().isEmpty()) {
                if (txtSongAlbum.getText().equals("") && txtSongTitle.getText().equals("")
                        && txtSongInterpret.getText().equals("")) {
                    clsHelper.createAlert(Alert.AlertType.ERROR, lang.getValue("generalInformation.header.key"),
                            lang.getValue("generalInformation.line.key"), "");
                } else {
                    if (!tblSongSong.getSelectionModel().getSelectedItem().getID().equals("0")) {
                        ObservableList list = tblSongSong.getItems();
                        for (int i = 0; i <= list.size() - 1; i++) {
                            if (((SongModel) list.get(i)).getName().equals(txtSongTitle.getText())) {
                                addSongPart();
                                return;
                            }
                        }
                    }
                    String songbook_id = tblSongSongbook.getSelectionModel().getSelectedItem().getID();
                    long song_id = sql.addRowGetID("songs",
                            Arrays.asList("title", "interpret", "album", "songbook_id"),
                            Arrays.asList("'" + txtSongTitle.getText() + "'",
                                    "'" + txtSongInterpret.getText() + "'", "'" + txtSongAlbum.getText() + "'",
                                    songbook_id));
                    sql.addRow("songparts", Arrays.asList("title", "content", "song_id"),
                            Arrays.asList("'" + txtSongPartTitle.getText().replace("'", "_") + "'",
                                    "'" + txtSongPartContent.getText().replace("'", "_") + "'",
                                    String.valueOf(song_id)));
                    clsControlHelper.getSongsFromSongbook(sql, tblSongSongbook, tblSongSong, true);
                    for (int i = 0; i <= tblSongSong.getItems().size() - 1; i++) {
                        if (tblSongSong.getItems().get(i).getName().equals(txtSongTitle.getText())) {
                            tblSongSong.getSelectionModel().select(i);
                        }
                    }
                    String strSong_id = tblSongSong.getSelectionModel().getSelectedItems().get(0).getID();
                    Map<Integer, String> list = clsControlHelper.listSongPartsAndInfo(sql, tblSongSong,
                            txtSongTitle, txtSongAlbum, txtSongInterpret);
                    lvSongParts.getItems().clear();
                    for (String item : list.values()) {
                        lvSongParts.getItems().add(item);
                    }
                    clsControlHelper.getOrderedParts(sql, strSong_id, lvSongPartOrder);
                }
            } else {
                addSongPart();
            }
        } else {
            String song_id = tblSongSong.getSelectionModel().getSelectedItem().getID();
            String title = lvSongParts.getSelectionModel().getSelectedItem();
            sql.updateRow("songparts", Arrays.asList("title", "content"),
                    Arrays.asList("'" + txtSongPartTitle.getText().replace("'", "_") + "'",
                            "'" + txtSongPartContent.getText().replace("'", "_") + "'"),
                    "title='" + title + "' AND song_id=" + song_id);
            cmdSongPartAdd.setText(lang.getValue("add.key"));
            String strSong_id = tblSongSong.getSelectionModel().getSelectedItems().get(0).getID();
            Map<Integer, String> list = clsControlHelper.listSongPartsAndInfo(sql, tblSongSong, txtSongTitle,
                    txtSongAlbum, txtSongInterpret);
            lvSongParts.getItems().clear();
            for (String item : list.values()) {
                lvSongParts.getItems().add(item);
            }
            clsControlHelper.getOrderedParts(sql, strSong_id, lvSongPartOrder);
        }
        txtSongPartContent.setText("");
        txtSongPartTitle.setText("");
    });

    cmdSongSubmit.setOnMouseClicked(event -> {
        if (!tblSongSong.getSelectionModel().isEmpty()) {
            if (!cmdSongSubmit.getText().equals(lang.getValue("change.key"))) {
                String song_id = tblSongSong.getSelectionModel().getSelectedItem().getID();
                sql.deleteRow("position", "song_id=" + song_id);
                for (int i = 1; i <= lvSongPartOrder.getItems().size(); i++) {
                    String songpart_id = sql
                            .getRows("songparts", Collections.singletonList("id"), "title='"
                                    + lvSongPartOrder.getItems().get(i - 1) + "' AND song_id=" + song_id)
                            .get(0, "id").toString();
                    sql.addRow("position", Arrays.asList("song_id", "songpart_id", "position"),
                            Arrays.asList(song_id, songpart_id, String.valueOf(i)));
                }
                Map<Integer, String> list = clsControlHelper.listSongPartsAndInfo(sql, tblSongSong,
                        txtSongTitle, txtSongAlbum, txtSongInterpret);
                lvSongParts.getItems().clear();
                for (String item : list.values()) {
                    lvSongParts.getItems().add(item);
                }
                clsControlHelper.getOrderedParts(sql, song_id, lvSongPartOrder);
                txtSongPartContent.setText("");
                txtSongPartTitle.setText("");
                tpnlMain.getSelectionModel().select(pnlMain);
            } else {
                String song_id = tblSongSong.getSelectionModel().getSelectedItem().getID();
                sql.updateRow("songs", Arrays.asList("title", "album", "interpret"),
                        Arrays.asList("'" + txtSongTitle.getText() + "'", "'" + txtSongAlbum.getText() + "'",
                                "'" + txtSongInterpret.getText() + "'"),
                        "id=" + song_id);
                cmdSongSubmit.setText(lang.getValue("finish.key"));
                Map<Integer, String> list = clsControlHelper.listSongPartsAndInfo(sql, tblSongSong,
                        txtSongTitle, txtSongAlbum, txtSongInterpret);
                lvSongParts.getItems().clear();
                for (String item : list.values()) {
                    lvSongParts.getItems().add(item);
                }
                clsControlHelper.getOrderedParts(sql, song_id, lvSongPartOrder);
                txtSongPartContent.setText("");
                txtSongPartTitle.setText("");
                tpnlMain.getSelectionModel().select(pnlMain);
                txtSongPartContent.setDisable(false);
                txtSongPartTitle.setDisable(false);
                lvSongPartOrder.setDisable(false);
                lvSongParts.setDisable(false);
                cmdSongPartAdd.setDisable(false);
                cmdSongPartAddToOrder.setDisable(false);
                cmdSongPartRemoveFromOrder.setDisable(false);
            }
            clearTab(3);
            clearTab(1);
            clsControlHelper.reloadTable(sql, tblSongbook, true);
            clsControlHelper.reloadTable(sql, tblSongSongbook);
        }
    });

    cmdSongPartAddToOrder.setOnMouseClicked(event -> {
        if (!lvSongParts.getSelectionModel().isEmpty()) {
            lvSongPartOrder.getItems().add(lvSongParts.getSelectionModel().getSelectedItem());
        }
    });

    cmdSongPartRemoveFromOrder.setOnMouseClicked(event -> {
        if (!lvSongPartOrder.getSelectionModel().isEmpty()) {
            lvSongPartOrder.getItems().remove(lvSongPartOrder.getSelectionModel().getSelectedIndex());
        }
    });

    ctxMainSongAdd.setOnAction(event -> {
        if (!tblSong.getSelectionModel().isEmpty()) {
            String songbook_id = tblSongbook.getSelectionModel().getSelectedItem().getID();
            String song_id = tblSong.getSelectionModel().getSelectedItem().getID();
            String name = tblSong.getSelectionModel().getSelectedItem().getName();
            clsControlHelper.listSlides(sql, tblMainSlides, name, song_id, songbook_id);
        }
    });

    tblMainSlides.setOnMouseClicked(event -> {
        if (!tblMainSlides.getSelectionModel().isEmpty()) {
            if (!tblMainSlides.getSelectionModel().getSelectedItem().getSongBookID().equals("999999")) {
                String songbook_id = tblSongbook.getSelectionModel().getSelectedItem().getID();
                SlideModel slide = tblMainSlides.getSelectionModel().getSelectedItem();
                String id = sql
                        .getRows("songs", Collections.singletonList("id"),
                                "songbook_id=" + songbook_id + " AND title='" + slide.getSongTitle() + "'")
                        .get(0, "id").toString();
                DataTable dt = sql.getRows("songparts", Arrays.asList("title", "content"),
                        "song_id=" + id + " AND title='" + slide.getSongPart() + "'");
                txtMainSlideTitle.setText(dt.get(0, "title").toString());
                txtMainSlideContent.setText(dt.get(0, "content").toString());
                if (currentPicsPath != null) {
                    ObservableList<SlideModel> model = tblMainSlides.getItems();
                    List<String> ls = new ArrayList<>();
                    String item = "";
                    for (SlideModel s : model) {
                        if (!item.equals(s.getSongTitle())) {
                            item = s.getSongTitle();
                            ls.add(s.getSongTitle());
                        }
                    }
                    SlideModel selected = tblMainSlides.getSelectionModel().getSelectedItem();
                    ls.stream().filter(strItem -> strItem.equals(selected.getSongTitle())).forEach(strItem -> {
                        int index = ls.indexOf(strItem);
                        List<String> existingPath = new ArrayList<>();
                        for (String current : new File(currentPicsPath).list()) {
                            if (current.endsWith("jpg") || current.endsWith("JPG") || current.endsWith("png")) {
                                existingPath.add(current);
                            }
                        }
                        ivMainSlide.setImage(
                                new Image("file:///" + currentPicsPath + "\\" + existingPath.get(index)));
                    });
                }
                cmdMainUserdefined.setDisable(false);
            }
        }
    });

    cmdMainExport.setOnAction(event -> {
        try {
            if (!txtMainTitle.getText().equals("")) {
                anchpnlMain.setCursor(Cursor.WAIT);
                pbMain.setProgress(0.0);
                if (clsSettings.getMSOffice()) {
                    clsPowerPoint ppt;
                    if (cmbMainEffect.getSelectionModel().isEmpty()) {
                        ppt = new clsPowerPoint(clsSettings.getPathToExport() + File.separatorChar
                                + txtMainTitle.getText() + ".pptx");
                    } else {
                        ppt = new clsPowerPoint(
                                clsSettings.getPathToExport() + File.separatorChar + txtMainTitle.getText()
                                        + ".pptx",
                                sql.getFile("pptFiles", "CONTENT",
                                        clsSettings.getPathToExport() + File.separatorChar
                                                + txtMainTitle.getText() + ".pptx",
                                        "effect='" + cmbMainEffect.getSelectionModel().getSelectedItem()
                                                + "'"));
                    }
                    pbMain.setProgress(0.1);
                    List<Integer> picIDs = new ArrayList<>();
                    if (currentPicsPath != null) {
                        if (new File(currentPicsPath).exists()) {
                            for (String path : new File(currentPicsPath).list()) {
                                if (path.endsWith("jpg") || path.endsWith("JPG") || path.endsWith("png")) {
                                    picIDs.add(ppt.addImage(currentPicsPath + File.separatorChar + path));
                                }
                            }
                        }
                    }
                    String currentSong = "";
                    int counter = 0;
                    pbMain.setProgress(0.2);
                    double sum = tblMainSlides.getItems().size() / 0.8;
                    ObservableList<SlideModel> model = tblMainSlides.getItems();
                    for (SlideModel item : model) {
                        if (!item.getSongBookID().equals("999999")) {
                            String song_id = sql
                                    .getRows("songs", Collections.singletonList("id"), "songbook_id="
                                            + item.getSongBookID() + " AND title='" + item.getSongTitle() + "'")
                                    .get(0, "id").toString();
                            DataTable dt = sql.getRows("songparts", Arrays.asList("title", "content"),
                                    "song_id=" + song_id + " and title='" + item.getSongPart() + "'");
                            ppt.createNewSlide(SlideLayout.BLANK);
                            if (!currentSong.equals(item.getSongTitle())) {
                                currentSong = item.getSongTitle();
                                counter++;
                            }
                            if (currentPicsPath != null) {
                                try {
                                    ppt.addBackgroundImage(counter - 1);
                                } catch (Exception ex) {
                                    System.out.println(ex.toString());
                                }
                            }
                            ppt.addPlaceholder(item.getSongTitle().replace("_", "'"), Placeholder.TITLE, false,
                                    TextAlign.CENTER);
                            ppt.addPlaceholder(dt.get(0, "content").toString().replace("_", "'"),
                                    Placeholder.CONTENT, false, TextAlign.CENTER);
                            pbMain.setProgress(pbMain.getProgress() + sum);
                        } else {
                            DataTable dt = sql.getRows("userdefined",
                                    Arrays.asList("PH_TITLE", "PH_CONTENT", "PH_POSITION", "MEDIA"),
                                    "TITLE='" + item.getSongTitle() + "'");
                            ppt.createNewSlide(SlideLayout.BLANK);
                            for (int i = 0; i <= dt.rowsCount() - 1; i++) {
                                switch (dt.get(i, "PH_POSITION").toString()) {
                                case "0":
                                    ppt.addPlaceholder(dt.get(i, "PH_CONTENT").toString(), Placeholder.TITLE);
                                    break;
                                case "1":
                                    ppt.addPlaceholder(dt.get(i, "PH_CONTENT").toString(), Placeholder.BODY);
                                    break;
                                case "2":
                                    ppt.addPlaceholder(dt.get(i, "PH_CONTENT").toString(), Placeholder.CONTENT);
                                    break;
                                case "3":
                                    ppt.addPlaceholder(dt.get(i, "PH_CONTENT").toString(), 80, 200,
                                            (ppt.getWidth() / 2) - 120, ppt.getHeight() - 280);
                                    break;
                                case "4":
                                    ppt.addPlaceholder(dt.get(i, "PH_CONTENT").toString(),
                                            (ppt.getWidth() / 2) + 40, 200, (ppt.getWidth() / 2) - 120,
                                            ppt.getHeight() - 280);
                                    break;
                                case "5":
                                    ppt.addBackgroundImage(ppt.addImage(sql.getFile("userdefined", "MEDIA",
                                            "TITLE='" + item.getSongTitle() + "' AND PH_TITLE='"
                                                    + dt.get(i, "PH_TITLE").toString() + "'")));
                                    break;
                                case "6":
                                    ppt.addPlaceholder(
                                            ppt.addImage(sql.getFile("userdefined", "MEDIA",
                                                    "TITLE='" + item.getSongTitle() + "' AND PH_TITLE='"
                                                            + dt.get(i, "PH_TITLE").toString() + "'")),
                                            80, 200, ppt.getWidth() - 160, ppt.getHeight() - 280);
                                    break;
                                default:
                                    System.out.println("Not supported yet!");
                                }
                            }
                        }
                    }
                    ppt.save();
                }
                if (clsSettings.getOpenDocument()) {
                    try {
                        clsODP.Effect effect = null;
                        switch (cmbMainEffect.getSelectionModel().getSelectedIndex()) {
                        case 0:
                            effect = clsODP.Effect.Aufloesen;
                            break;
                        case 1:
                            effect = clsODP.Effect.Karofoermig;
                            break;
                        case 2:
                            effect = clsODP.Effect.Kreisfoermig;
                            break;
                        case 3:
                            effect = clsODP.Effect.Nach_links_aufdecken;
                            break;
                        case 4:
                            effect = clsODP.Effect.Von_links_rollen;
                            break;
                        case 5:
                            effect = clsODP.Effect.Ueber_schwarz_blenden;
                            break;
                        default:
                            effect = clsODP.Effect.Von_unten_rollen;
                        }
                        InputStream in = sql.getFile("templates", "CONTENT", "template.fodp",
                                "FileName='template.fodp'");
                        in.close();
                        clsODP odp = new clsODP("template.fodp", clsSettings.getPathToExport()
                                + File.separatorChar + txtMainTitle.getText().replace(" ", "_") + ".odp");
                        List<String> picIDs = new ArrayList<>();
                        if (currentPicsPath != null) {
                            if (new File(currentPicsPath).exists()) {
                                for (String path : new File(currentPicsPath).list()) {
                                    if (path.endsWith("jpg") || path.endsWith("JPG") || path.endsWith("png")) {
                                        picIDs.add(odp.addImage(currentPicsPath + File.separatorChar + path,
                                                path));
                                    }
                                }
                            }
                        }
                        String currentSong = "";
                        int counter = 0;
                        pbMain.setProgress(0.2);
                        double sum = tblMainSlides.getItems().size() / 0.8;
                        ObservableList<SlideModel> model = tblMainSlides.getItems();
                        int i = 1;
                        for (SlideModel item : model) {
                            if (!item.getSongBookID().equals("999999")) {
                                if (!currentSong.equals(item.getSongTitle())) {
                                    currentSong = item.getSongTitle();
                                    counter++;
                                }
                                String song_id = sql.getRows("songs", Collections.singletonList("id"),
                                        "songbook_id=" + item.getSongBookID() + " AND title='"
                                                + item.getSongTitle() + "'")
                                        .get(0, "id").toString();
                                DataTable dt = sql.getRows("songparts", Arrays.asList("title", "content"),
                                        "song_id=" + song_id + " and title='" + item.getSongPart() + "'");
                                if (currentPicsPath != null) {
                                    try {
                                        if (picIDs.size() == 0) {
                                            odp.addSlide(i, i, effect, item.getSongTitle().replace("_", "'"),
                                                    dt.get(0, "content").toString().replace("_", "'"));
                                        } else {
                                            odp.addSlide(i, i, effect, item.getSongTitle().replace("_", "'"),
                                                    dt.get(0, "content").toString().replace("_", "'"),
                                                    picIDs.get(counter));
                                        }
                                    } catch (Exception ex) {
                                        System.out.println(ex.toString());
                                    }
                                } else {
                                    odp.addSlide(i, i, clsODP.Effect.Aufloesen,
                                            item.getSongTitle().replace("_", "'"),
                                            dt.get(0, "content").toString().replace("_", "'"));
                                }
                                pbMain.setProgress(pbMain.getProgress() + sum);
                                i++;
                            } else {
                                DataTable dt = sql.getRows("userdefined",
                                        Arrays.asList("PH_TITLE", "PH_CONTENT", "PH_POSITION", "MEDIA"),
                                        "TITLE='" + item.getSongTitle() + "'");
                                String title = "", image = "";
                                List<String> content = new ArrayList<>();
                                for (int j = 0; j <= dt.rowsCount() - 1; j++) {
                                    switch (dt.get(j, "PH_POSITION").toString()) {
                                    case "0":
                                        title = odp.buildHeader(dt.get(j, "PH_CONTENT").toString());
                                        break;
                                    case "1":
                                        content.add(odp.buildcentralText(dt.get(j, "PH_CONTENT").toString(),
                                                25.199, 3.506, 1.4, 5.751));
                                        break;
                                    case "2":
                                        content.add(odp.buildcentralText(dt.get(j, "PH_CONTENT").toString(),
                                                25.199, 12.179, 1.4, 4.914));
                                        break;
                                    case "3":
                                        content.add(odp.buildcentralText(dt.get(j, "PH_CONTENT").toString(),
                                                12.599, 12.179, 1.4, 4.914));
                                        break;
                                    case "4":
                                        content.add(odp.buildcentralText(dt.get(j, "PH_CONTENT").toString(),
                                                12.599, 12.179, 14, 4.914));
                                        break;
                                    case "5":
                                        image = odp.addImage(
                                                sql.getFile("userdefined", "MEDIA",
                                                        "TITLE='" + item.getSongTitle() + "' AND PH_TITLE='"
                                                                + dt.get(j, "PH_TITLE").toString() + "'"),
                                                String.valueOf(new Date().getTime()));
                                        break;
                                    default:
                                        System.out.println("Not supported yet!");
                                    }
                                }
                                if (image.equals("")) {
                                    odp.addSlide(i, i, effect, !title.equals(""), title, content);
                                } else {
                                    odp.addSlide(i, i, effect, !title.equals(""), title, content, image);
                                }
                            }
                        }
                        odp.isLast();
                    } catch (Exception ex) {
                        clsHelper.printException(ex);
                    }
                }
                tblMainSlides.getColumns().clear();
                txtMainTitle.setText("");
                cmbMainEffect.getSelectionModel().select(null);
                tblSong.getItems().clear();
                tblSongbook.getSelectionModel().clearSelection();
                clearTab(1);
                clsControlHelper.reloadTable(sql, tblSongbook, true);
                anchpnlMain.setCursor(Cursor.DEFAULT);
                pbMain.setProgress(1);
            } else {
                clsHelper.createAlert(Alert.AlertType.WARNING, lang.getValue("frmMain.NoTitle.Title.key"),
                        lang.getValue("frmMain.NoTitle.Content.key"), "");
            }
        } catch (Exception ex) {
            clsHelper.printException(ex);
        } finally {
            anchpnlMain.setCursor(Cursor.DEFAULT);
        }
    });

    tblSong.setOnMouseClicked(event -> {
        if (!tblSong.getSelectionModel().isEmpty()) {
            menExtrasExportAsWord.setDisable(false);
            menExtrasExportAsODT.setDisable(false);
        }
    });

    menExtrasExportAsWord.setOnAction(event -> {
        clsXML xml = new clsXML(new File(clsHelper.getPath() + File.separatorChar + "config.xml"));
        clsWord doc = new clsWord(xml.getElementValue("PathToExport").replace(";", "") + File.separatorChar
                + tblSong.getSelectionModel().getSelectedItem().getName().replace(" ", "_") + ".doc");
        doc.addHeader(tblSong.getSelectionModel().getSelectedItem().getName().replace("_", "'"));
        ObservableList<SlideModel> model = tblMainSlides.getItems();
        List<String> paragraph = new ArrayList<>();
        String interpret = "";
        for (SlideModel item : model) {
            if (tblSong.getSelectionModel().getSelectedItem().getName().equals(item.getSongTitle())) {
                DataTable dt = sql.getRows("songs", Arrays.asList("id", "interpret"),
                        "songbook_id=" + item.getSongBookID() + " AND title='" + item.getSongTitle() + "'");
                DataTable dt2 = sql.getRows("songparts", Arrays.asList("title", "content"),
                        "song_id=" + dt.get(0, "id").toString() + " and title='" + item.getSongPart() + "'");
                paragraph.add(dt2.get(0, "content").toString().replace("_", "'"));
                interpret = dt.get(0, "interpret").toString();
            }
        }
        doc.addSubTitle(interpret);
        for (String par : paragraph) {
            doc.addContent(par, ParagraphAlignment.CENTER);
        }
        doc.save();
    });

    menExtrasExportAsODT.setOnAction(event1 -> {
        try {
            FileInputStream in = sql.getFile("templates", "Content",
                    clsSettings.getPathToExport() + File.separatorChar
                            + tblSong.getSelectionModel().getSelectedItem().getName().replace(" ", "_")
                            + ".odt",
                    "FileName='template.fodt'");
            Reader r = new InputStreamReader(in, "UTF8");
            StringBuilder builder = new StringBuilder();
            final int[] ch = new int[1];
            while ((ch[0] = r.read()) != -1) {
                builder.append((char) ch[0]);
            }
            in.close();
            String doccontent = builder.toString().replace("###Titel###",
                    tblSong.getSelectionModel().getSelectedItem().getName().replace("_", "'"));
            String part = "", interpret = "";
            ObservableList<SlideModel> model = tblMainSlides.getItems();
            for (SlideModel item : model) {
                if (tblSong.getSelectionModel().getSelectedItem().getName().equals(item.getSongTitle())) {
                    DataTable song = sql.getRows("songs", Arrays.asList("id", "interpret"),
                            "songbook_id=" + item.getSongBookID() + " AND title='" + item.getSongTitle() + "'");
                    interpret = song.get(0, "interpret").toString();
                    DataTable dt = sql.getRows("songparts", Arrays.asList("title", "content"), "song_id="
                            + song.get(0, "id").toString() + " and title='" + item.getSongPart() + "'");
                    for (String line : dt.get(0, "content").toString().split("\n")) {
                        part += "<text:p text:style-name=\"P2\">" + line + "</text:p>\n";
                    }
                    part += "<text:p text:style-name=\"P1\"/>\n";
                }
            }
            doccontent = doccontent.replace("###Content###", part);
            doccontent = doccontent.replace("###SubTitle###", interpret);
            Writer out = new BufferedWriter(new OutputStreamWriter(
                    new FileOutputStream(clsSettings.getPathToExport() + File.separatorChar
                            + tblSong.getSelectionModel().getSelectedItem().getName().replace(" ", "_")
                            + ".odt"),
                    "UTF8"));
            out.append(doccontent);
            out.flush();
            out.close();
        } catch (Exception ex) {
            clsHelper.printException(ex);
        }
    });

    ctxSongOpenLyrics.setOnAction(event -> {
        if (!txtSongTitle.getText().equals("") && !txtSongInterpret.getText().equals("")) {
            clsLyricWiki lyric = new clsLyricWiki(txtSongInterpret.getText().replace(" ", "%20"),
                    txtSongTitle.getText().replace(" ", "%20"));
            try {
                String ur = new URI(lyric.getURL()).toString();
                if (!ur.equals("")) {
                    Desktop.getDesktop().browse(new URI(lyric.getURL()));
                } else {
                    clsHelper.createAlert(Alert.AlertType.INFORMATION,
                            lang.getValue("frmMain.NothingFount.title.key"),
                            lang.getValue("frmMain.NothingFount.content.key"), "");
                }
            } catch (URISyntaxException | IOException e) {
                clsHelper.printException(e);
            }
        }
    });

    ctxMainSongRemove.setOnAction(event -> {
        if (!tblSong.getSelectionModel().isEmpty()) {
            SongModel song = tblSong.getSelectionModel().getSelectedItem();
            SongbookModel book = tblSongbook.getSelectionModel().getSelectedItem();
            ObservableList<SlideModel> slides = tblMainSlides.getItems();
            for (int i = 0; i <= slides.size() - 1; i++) {
                if (song.getName().equals(slides.get(i).getSongTitle())
                        && book.getID().equals(slides.get(i).getSongBookID())) {
                    slides.remove(i);
                }
            }
            tblMainSlides.getItems().clear();
            tblMainSlides.setItems(slides);
        }
    });

    cmdMainUserdefined.setOnAction(event -> {
        try {
            frmUserdefinedController controller = new frmUserdefinedController();
            FXMLLoader loader = new FXMLLoader(
                    DJPresentationMaker.class.getResource("forms/frmUserdefined.fxml"));
            loader.setController(controller);
            loader.setResources(clsLang.getLangBundle());
            Parent root = loader.load();
            Scene scene = new Scene(root);
            Stage stage = new Stage();
            stage.setScene(scene);
            stage.setTitle(lang.getValue("frmMain.userdefined.key"));
            stage.getIcons()
                    .add(new Image(DJPresentationMaker.class.getResourceAsStream("style/logo_128.png")));
            stage.showAndWait();
            clsControlHelper.reloadTable(sql, tblSongbook, true);
        } catch (Exception ex) {
            clsHelper.printException(ex);
        }
    });
}