From dbd25dbf4eed648f1e3a94cf9bec99f9148ba85d Mon Sep 17 00:00:00 2001 From: Radek Davidek Date: Tue, 20 Jan 2026 18:11:01 +0100 Subject: [PATCH] refactor --- .../cz/kamma/kfmanager/config/AppConfig.java | 12 +++++++++++ .../cz/kamma/kfmanager/model/FileItem.java | 4 ++-- .../cz/kamma/kfmanager/ui/FileEditor.java | 18 ++++++----------- .../cz/kamma/kfmanager/ui/FilePanelTab.java | 20 +++---------------- .../kamma/kfmanager/ui/PropertiesDialog.java | 11 +++------- 5 files changed, 26 insertions(+), 39 deletions(-) diff --git a/src/main/java/cz/kamma/kfmanager/config/AppConfig.java b/src/main/java/cz/kamma/kfmanager/config/AppConfig.java index 596e18d..80d4511 100644 --- a/src/main/java/cz/kamma/kfmanager/config/AppConfig.java +++ b/src/main/java/cz/kamma/kfmanager/config/AppConfig.java @@ -189,6 +189,7 @@ public class AppConfig { } public void saveLeftPanelTabs(java.util.List paths, java.util.List viewModes, java.util.List focusedItems, int selectedIndex) { + int old = getLeftPanelTabCount(); properties.setProperty("leftPanel.tabs.count", String.valueOf(paths.size())); for (int i = 0; i < paths.size(); i++) { properties.setProperty("leftPanel.tab." + i + ".path", paths.get(i)); @@ -199,6 +200,11 @@ public class AppConfig { properties.remove("leftPanel.tab." + i + ".focusedItem"); } } + for (int i = paths.size(); i < old; i++) { + properties.remove("leftPanel.tab." + i + ".path"); + properties.remove("leftPanel.tab." + i + ".viewMode"); + properties.remove("leftPanel.tab." + i + ".focusedItem"); + } properties.setProperty("leftPanel.selectedIndex", String.valueOf(selectedIndex)); } @@ -223,6 +229,7 @@ public class AppConfig { } public void saveRightPanelTabs(java.util.List paths, java.util.List viewModes, java.util.List focusedItems, int selectedIndex) { + int oldCount = getRightPanelTabCount(); properties.setProperty("rightPanel.tabs.count", String.valueOf(paths.size())); for (int i = 0; i < paths.size(); i++) { properties.setProperty("rightPanel.tab." + i + ".path", paths.get(i)); @@ -233,6 +240,11 @@ public class AppConfig { properties.remove("rightPanel.tab." + i + ".focusedItem"); } } + for (int i = paths.size(); i < oldCount; i++) { + properties.remove("rightPanel.tab." + i + ".path"); + properties.remove("rightPanel.tab." + i + ".viewMode"); + properties.remove("rightPanel.tab." + i + ".focusedItem"); + } properties.setProperty("rightPanel.selectedIndex", String.valueOf(selectedIndex)); } diff --git a/src/main/java/cz/kamma/kfmanager/model/FileItem.java b/src/main/java/cz/kamma/kfmanager/model/FileItem.java index b136657..a51025d 100644 --- a/src/main/java/cz/kamma/kfmanager/model/FileItem.java +++ b/src/main/java/cz/kamma/kfmanager/model/FileItem.java @@ -103,9 +103,9 @@ public class FileItem { } /** - * Format file size into a human-readable string + * Format file size into a human-readable string */ - private String formatSize(long size) { + public static String formatSize(long size) { if (size < 1024) { return size + " B"; } else if (size < 1024 * 1024) { diff --git a/src/main/java/cz/kamma/kfmanager/ui/FileEditor.java b/src/main/java/cz/kamma/kfmanager/ui/FileEditor.java index a526ae3..32a503d 100644 --- a/src/main/java/cz/kamma/kfmanager/ui/FileEditor.java +++ b/src/main/java/cz/kamma/kfmanager/ui/FileEditor.java @@ -1,6 +1,7 @@ package cz.kamma.kfmanager.ui; import cz.kamma.kfmanager.config.AppConfig; +import cz.kamma.kfmanager.model.FileItem; import javax.swing.*; import java.awt.*; @@ -917,11 +918,11 @@ public class FileEditor extends JDialog { label.setHorizontalAlignment(JLabel.CENTER); scrollPane.setViewportView(label); - String statusText = String.format("Obraz: %d x %d px", imgW, imgH); - if (scaled) statusText += " (zmenšeno)"; + String statusText = String.format("Image: %d x %d px", imgW, imgH); + if (scaled) statusText += " (scaled)"; statusPosLabel.setText(statusText); - String labelText = String.format("Velikost: %s", formatSize(file.length())); + String labelText = String.format("Size: %s", FileItem.formatSize(file.length())); if (imageFiles.size() > 1) { labelText += String.format(" [%d / %d]", currentImageIndex + 1, imageFiles.size()); } @@ -936,10 +937,10 @@ public class FileEditor extends JDialog { if (hexControlPanel != null) hexControlPanel.setVisible(false); } } else { - textArea.setText("Chyba: Nepodařilo se načíst obrázek."); + textArea.setText("Error: Image could not be loaded."); } } catch (Exception e) { - textArea.setText("Chyba při načítání obrázku: " + e.getMessage()); + textArea.setText("Error loading image: " + e.getMessage()); } } @@ -974,13 +975,6 @@ public class FileEditor extends JDialog { setLocationRelativeTo(getOwner()); } - private String formatSize(long size) { - if (size < 1024) return size + " B"; - int exp = (int) (Math.log(size) / Math.log(1024)); - String pre = "KMGTPE".charAt(exp-1) + ""; - return String.format("%.1f %sB", size / Math.pow(1024, exp), pre); - } - private void initImageList() { File parent = file.getParentFile(); if (parent != null && parent.isDirectory()) { diff --git a/src/main/java/cz/kamma/kfmanager/ui/FilePanelTab.java b/src/main/java/cz/kamma/kfmanager/ui/FilePanelTab.java index b3af15f..bc91a1e 100644 --- a/src/main/java/cz/kamma/kfmanager/ui/FilePanelTab.java +++ b/src/main/java/cz/kamma/kfmanager/ui/FilePanelTab.java @@ -1770,7 +1770,6 @@ public class FilePanelTab extends JPanel { } // Mark all matching items - int matchCount = 0; for (FileItem item : tableModel.items) { if (item.getName().equals("..")) { continue; // Skip parent directory @@ -1778,7 +1777,6 @@ public class FilePanelTab extends JPanel { if (compiledPattern.matcher(item.getName()).matches()) { item.setMarked(true); - matchCount++; } } @@ -2271,7 +2269,7 @@ public class FilePanelTab extends JPanel { if (markedCount > 0) { statusLabel.setText(String.format(" Selected: %d files, %d directories (%s)", - fileCount, dirCount, formatSize(totalSize))); + fileCount, dirCount, FileItem.formatSize(totalSize))); } else { int selectedRow = fileTable.getSelectedRow(); if (selectedRow >= 0) { @@ -2291,7 +2289,7 @@ public class FilePanelTab extends JPanel { } else { statusLabel.setText(String.format(" %s | %s | %s", item.getName(), - formatSize(item.getSize()), + FileItem.formatSize(item.getSize()), item.getFormattedDate())); } } else { @@ -2628,19 +2626,7 @@ public class FilePanelTab extends JPanel { if (fileTable.getTableHeader() != null) fileTable.getTableHeader().repaint(); }); } - - private String formatSize(long size) { - if (size < 1024) { - return size + " B"; - } else if (size < 1024 * 1024) { - return String.format("%.1f KB", size / 1024.0); - } else if (size < 1024 * 1024 * 1024) { - return String.format("%.1f MB", size / (1024.0 * 1024.0)); - } else { - return String.format("%.1f GB", size / (1024.0 * 1024.0 * 1024.0)); - } - } - + // Getters public JTable getFileTable() { return fileTable; diff --git a/src/main/java/cz/kamma/kfmanager/ui/PropertiesDialog.java b/src/main/java/cz/kamma/kfmanager/ui/PropertiesDialog.java index 6d935a0..7c60377 100644 --- a/src/main/java/cz/kamma/kfmanager/ui/PropertiesDialog.java +++ b/src/main/java/cz/kamma/kfmanager/ui/PropertiesDialog.java @@ -1,5 +1,7 @@ package cz.kamma.kfmanager.ui; +import cz.kamma.kfmanager.model.FileItem; + import javax.swing.*; import javax.swing.border.EmptyBorder; import java.awt.*; @@ -72,7 +74,7 @@ public class PropertiesDialog extends JDialog { addInfoRow(panel, gbc, row++, "Name:", file.getName()); addInfoRow(panel, gbc, row++, "Path:", file.getAbsolutePath()); - String sizeStr = file.isDirectory() ? "Directory" : formatSize(file.length()); + String sizeStr = file.isDirectory() ? "Directory" : FileItem.formatSize(file.length()); addInfoRow(panel, gbc, row++, "Size:", sizeStr); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @@ -340,11 +342,4 @@ public class PropertiesDialog extends JDialog { textField.setOpaque(false); panel.add(textField, gbc); } - - private String formatSize(long bytes) { - if (bytes < 1024) return bytes + " B"; - int exp = (int) (Math.log(bytes) / Math.log(1024)); - char pre = "KMGTPE".charAt(exp - 1); - return String.format("%.1f %cB (%d bytes)", bytes / Math.pow(1024, exp), pre, bytes); - } }