diff --git a/src/main/java/cz/kamma/kfmanager/config/AppConfig.java b/src/main/java/cz/kamma/kfmanager/config/AppConfig.java index 15e4492..6f4f0fc 100644 --- a/src/main/java/cz/kamma/kfmanager/config/AppConfig.java +++ b/src/main/java/cz/kamma/kfmanager/config/AppConfig.java @@ -451,6 +451,14 @@ public class AppConfig { return Integer.parseInt(properties.getProperty("global.font.style", String.valueOf(Font.PLAIN))); } + public boolean isEditorLineWrap() { + return Boolean.parseBoolean(properties.getProperty("editor.lineWrap", "true")); + } + + public void setEditorLineWrap(boolean wrap) { + properties.setProperty("editor.lineWrap", String.valueOf(wrap)); + } + public void setGlobalFontStyle(int style) { properties.setProperty("global.font.style", String.valueOf(style)); } diff --git a/src/main/java/cz/kamma/kfmanager/ui/FileEditor.java b/src/main/java/cz/kamma/kfmanager/ui/FileEditor.java index 8ad71e1..97d5b38 100644 --- a/src/main/java/cz/kamma/kfmanager/ui/FileEditor.java +++ b/src/main/java/cz/kamma/kfmanager/ui/FileEditor.java @@ -393,14 +393,20 @@ public class FileEditor extends JFrame { initSearchPanel(); northPanel.add(searchPanel); - // Menu bar - createMenuBar(); - // Text area (editable or read-only) textArea = new JTextArea(); textArea.setFont(config.getEditorFont()); textArea.setTabSize(4); textArea.setEditable(!readOnly); + + if (config.isEditorLineWrap()) { + textArea.setLineWrap(true); + textArea.setWrapStyleWord(true); + textArea.setColumns(120); + } + + // Menu bar + createMenuBar(); // Undo/Redo support undoManager = new javax.swing.undo.UndoManager(); @@ -664,6 +670,25 @@ public class FileEditor extends JFrame { private void createViewMenu(JMenuBar menuBar) { JMenu viewMenu = new JMenu("View"); + + JCheckBoxMenuItem wrapItem = new JCheckBoxMenuItem("Wrap"); + wrapItem.setState(textArea.getLineWrap()); + wrapItem.addActionListener(e -> { + boolean wrap = wrapItem.getState(); + textArea.setLineWrap(wrap); + textArea.setWrapStyleWord(wrap); + if (wrap) { + textArea.setColumns(120); + } + if (config != null) { + config.setEditorLineWrap(wrap); + config.saveConfig(); + } + textArea.revalidate(); + }); + viewMenu.add(wrapItem); + viewMenu.addSeparator(); + JCheckBoxMenuItem hexItem = new JCheckBoxMenuItem("Hex view"); hexItem.setState(hexMode); hexItem.addActionListener(e -> {