From b0773f6a395e826a2c3547bb7b41deb379356cf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Mon, 21 Mar 2016 18:26:38 +0100 Subject: [PATCH 1/3] start find --- .../zestwriter/view/MenuController.java | 36 +++++++++++++++++++ .../zestedesavoir/zestwriter/view/Root.fxml | 20 +++++++++++ 2 files changed, 56 insertions(+) diff --git a/src/com/zestedesavoir/zestwriter/view/MenuController.java b/src/com/zestedesavoir/zestwriter/view/MenuController.java index 2b51a4f1e..c25ea1021 100644 --- a/src/com/zestedesavoir/zestwriter/view/MenuController.java +++ b/src/com/zestedesavoir/zestwriter/view/MenuController.java @@ -31,6 +31,8 @@ import com.zestedesavoir.zestwriter.utils.Corrector; import com.zestedesavoir.zestwriter.utils.ZdsHttp; import com.zestedesavoir.zestwriter.utils.readability.Readability; +import java.util.logging.Level; +import java.util.logging.Logger; import javafx.application.Platform; import javafx.beans.value.ChangeListener; @@ -43,8 +45,10 @@ import javafx.concurrent.Worker.State; import javafx.event.ActionEvent; import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; import javafx.geometry.Insets; import javafx.scene.Node; +import javafx.scene.Scene; import javafx.scene.control.Alert; import javafx.scene.control.Alert.AlertType; import javafx.scene.control.Button; @@ -69,6 +73,7 @@ import javafx.scene.web.WebEngine; import javafx.scene.web.WebView; import javafx.stage.DirectoryChooser; +import javafx.stage.Stage; import javafx.util.Pair; public class MenuController { @@ -840,6 +845,37 @@ private void HandleSwitchWorkspaceAction(ActionEvent event) throws IOException { alert.showAndWait(); } + @FXML + private void HandleSimpleFind(ActionEvent event){ + try { + FXMLLoader loader = new FXMLLoader(); + loader.setLocation(getClass().getResource("Finder.fxml")); + Stage stage = new Stage(); + stage.setTitle("Rechercher"); + FinderController controller = loader.getController(); + Scene scene = new Scene(loader.load(), 450, 450); + stage.setScene(scene); + stage.setResizable(false); + stage.setAlwaysOnTop(true); + stage.show(); + + int i = 1+1; + } catch (IOException ex) { + Logger.getLogger(MenuController.class.getName()).log(Level.SEVERE, null, ex); + } + } + @FXML + private void HandleGlobalFind(ActionEvent event){ + + } + @FXML + private void HandleSimpleReplace(ActionEvent event){ + + } + @FXML + private void HandleGlobalReplace(ActionEvent event){ + + } private void HandleGoogleAction(Dialog parent) { Dialog> dialog = new Dialog<>(); dialog.setTitle("Authentification via Google"); diff --git a/src/com/zestedesavoir/zestwriter/view/Root.fxml b/src/com/zestedesavoir/zestwriter/view/Root.fxml index a945f97a7..e79220c0e 100644 --- a/src/com/zestedesavoir/zestwriter/view/Root.fxml +++ b/src/com/zestedesavoir/zestwriter/view/Root.fxml @@ -64,6 +64,26 @@ + + + + + + + + + + + + + + + + + + + + From be027d8366fad0200843cf3dd670461e5a1ad3d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Wed, 30 Mar 2016 21:44:54 +0200 Subject: [PATCH 2/3] searching --- build.gradle | 3 +- .../zestedesavoir/zestwriter/view/Editor.fxml | 11 ++- .../zestwriter/view/MenuController.java | 39 +++++--- .../zestwriter/view/dialogs/FindDialog.java | 99 +++++++++++++++++++ 4 files changed, 131 insertions(+), 21 deletions(-) create mode 100644 src/com/zestedesavoir/zestwriter/view/dialogs/FindDialog.java diff --git a/build.gradle b/build.gradle index 261dc3a1a..d29163bb8 100644 --- a/build.gradle +++ b/build.gradle @@ -88,7 +88,8 @@ dependencies { 'org.slf4j:slf4j-api:1.7.12', 'org.slf4j:slf4j-log4j12:1.7.12', 'de.jensd:fontawesomefx:8.9', - 'org.zeroturnaround:zt-zip:1.9' + 'org.zeroturnaround:zt-zip:1.9', + 'org.fxmisc.richtext:richtextfx:0.6.10' } task wrapper(type: Wrapper) { diff --git a/src/com/zestedesavoir/zestwriter/view/Editor.fxml b/src/com/zestedesavoir/zestwriter/view/Editor.fxml index 3d590a14a..7093498cb 100644 --- a/src/com/zestedesavoir/zestwriter/view/Editor.fxml +++ b/src/com/zestedesavoir/zestwriter/view/Editor.fxml @@ -11,8 +11,9 @@ + - + @@ -141,11 +142,11 @@
- + --> +
diff --git a/src/com/zestedesavoir/zestwriter/view/MenuController.java b/src/com/zestedesavoir/zestwriter/view/MenuController.java index c25ea1021..bac33a40f 100644 --- a/src/com/zestedesavoir/zestwriter/view/MenuController.java +++ b/src/com/zestedesavoir/zestwriter/view/MenuController.java @@ -31,8 +31,10 @@ import com.zestedesavoir.zestwriter.utils.Corrector; import com.zestedesavoir.zestwriter.utils.ZdsHttp; import com.zestedesavoir.zestwriter.utils.readability.Readability; +import com.zestedesavoir.zestwriter.view.dialogs.FindDialog; import java.util.logging.Level; -import java.util.logging.Logger; + +import org.fxmisc.richtext.CodeArea; import javafx.application.Platform; import javafx.beans.value.ChangeListener; @@ -62,10 +64,13 @@ import javafx.scene.control.PasswordField; import javafx.scene.control.ProgressBar; import javafx.scene.control.ScrollPane; +import javafx.scene.control.SplitPane; +import javafx.scene.control.Tab; import javafx.scene.control.TextArea; import javafx.scene.control.TextField; import javafx.scene.control.TreeItem; import javafx.scene.image.ImageView; +import javafx.scene.layout.BorderPane; import javafx.scene.layout.GridPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; @@ -847,21 +852,25 @@ private void HandleSwitchWorkspaceAction(ActionEvent event) throws IOException { @FXML private void HandleSimpleFind(ActionEvent event){ - try { - FXMLLoader loader = new FXMLLoader(); - loader.setLocation(getClass().getResource("Finder.fxml")); - Stage stage = new Stage(); - stage.setTitle("Rechercher"); - FinderController controller = loader.getController(); - Scene scene = new Scene(loader.load(), 450, 450); - stage.setScene(scene); - stage.setResizable(false); - stage.setAlwaysOnTop(true); - stage.show(); + // TODO: create a method somewhere more apropriate + String currentFileText = ""; + Tab currentTab = null; + for(Entry entry: mainApp.getExtracts().entrySet()){ + if(entry.getValue().isSelected()){ + currentFileText = entry.getKey().getMdText().get(); + currentTab = entry.getValue(); + } + } + if(currentTab == null){ + return; + } + FindDialog dialog = new FindDialog(currentFileText); + dialog.show(); + SplitPane editorPane = (SplitPane)currentTab.getContent(); + BorderPane editorNode = (BorderPane) editorPane.getItems().get(0); + CodeArea editorAera = (CodeArea) editorNode.getCenter(); + for(Integer coords : dialog.getResult()){ - int i = 1+1; - } catch (IOException ex) { - Logger.getLogger(MenuController.class.getName()).log(Level.SEVERE, null, ex); } } @FXML diff --git a/src/com/zestedesavoir/zestwriter/view/dialogs/FindDialog.java b/src/com/zestedesavoir/zestwriter/view/dialogs/FindDialog.java new file mode 100644 index 000000000..57a044c8f --- /dev/null +++ b/src/com/zestedesavoir/zestwriter/view/dialogs/FindDialog.java @@ -0,0 +1,99 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package com.zestedesavoir.zestwriter.view.dialogs; + +import com.sun.javafx.scene.control.skin.resources.ControlResources; +import java.util.LinkedList; +import java.util.List; +import javafx.application.Platform; +import javafx.geometry.Pos; +import javafx.scene.control.ButtonBar; +import javafx.scene.control.ButtonType; +import javafx.scene.control.Dialog; +import javafx.scene.control.DialogPane; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.scene.layout.GridPane; +import javafx.scene.layout.Priority; +import javafx.scene.layout.Region; + + +/** + * + * Get a Line of line/colon entry + */ +public class FindDialog extends Dialog>{ + private final GridPane grid; + private final Label label; + private final TextField textField; + private String searchedText; + + public FindDialog(String currentText){ + super(); + searchedText = currentText; + final DialogPane dialogPane = getDialogPane(); + this.setTitle("Terme à rechercher"); + this.setHeaderText(null); + this.setContentText("Recherchez"); + // -- textfield + this.textField = new TextField(""); + this.textField.setMaxWidth(Double.MAX_VALUE); + GridPane.setHgrow(textField, Priority.ALWAYS); + GridPane.setFillWidth(textField, true); + + // -- label + label = new Label(dialogPane.getContentText()); + label.setPrefWidth(Region.USE_COMPUTED_SIZE); + label.textProperty().bind(dialogPane.contentTextProperty()); + + + this.grid = new GridPane(); + this.grid.setHgap(10); + this.grid.setMaxWidth(Double.MAX_VALUE); + this.grid.setAlignment(Pos.CENTER_LEFT); + + dialogPane.contentTextProperty().addListener(o -> updateGrid()); + + setTitle(ControlResources.getString("Dialog.confirm.title")); + dialogPane.setHeaderText(ControlResources.getString("Dialog.confirm.header")); + dialogPane.getStyleClass().add("text-input-dialog"); + dialogPane.getButtonTypes().addAll(ButtonType.OK, ButtonType.CANCEL); + + updateGrid(); + + setResultConverter((dialogButton) -> { + ButtonBar.ButtonData data = dialogButton == null ? null : dialogButton.getButtonData(); + return data == ButtonBar.ButtonData.OK_DONE ? findWordsInFile() : null; + }); + + } + public String getPatern(){ + return textField.getText(); + } + private List findWordsInFile(){ + int lineNumber = 1; + List results = new LinkedList<>(); + String pattern = textField.getText().toLowerCase(); + + int col = searchedText.indexOf(pattern); + while(col != -1){ + results.add(col); + col = searchedText.indexOf(pattern, col + 1); + } + + return results; + } + private void updateGrid() { + grid.getChildren().clear(); + + grid.add(label, 0, 0); + grid.add(textField, 1, 0); + getDialogPane().setContent(grid); + + Platform.runLater(() -> textField.requestFocus()); + } + +} From 86ff5600dbac811010b6648076a77c4ac8e45aa4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Fri, 1 Apr 2016 07:58:52 +0200 Subject: [PATCH 3/3] met les recherches dans un sous-menu --- .../zestedesavoir/zestwriter/view/Root.fxml | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/src/com/zestedesavoir/zestwriter/view/Root.fxml b/src/com/zestedesavoir/zestwriter/view/Root.fxml index e79220c0e..ad6f74d8d 100644 --- a/src/com/zestedesavoir/zestwriter/view/Root.fxml +++ b/src/com/zestedesavoir/zestwriter/view/Root.fxml @@ -64,26 +64,30 @@
- - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +