max lines
This commit is contained in:
parent
f4cb0c4b1f
commit
5855c0ea7f
@ -1010,4 +1010,12 @@ public class AppConfig {
|
||||
public void setDividerPosition(double position) {
|
||||
properties.setProperty("mainPanel.dividerPosition", String.valueOf(position));
|
||||
}
|
||||
|
||||
public int getMaxCompareLines() {
|
||||
return Integer.parseInt(properties.getProperty("compare.maxLines", "10000"));
|
||||
}
|
||||
|
||||
public void setMaxCompareLines(int lines) {
|
||||
properties.setProperty("compare.maxLines", String.valueOf(lines));
|
||||
}
|
||||
}
|
||||
|
||||
@ -305,7 +305,8 @@ public class FileComparisonDialog extends JFrame {
|
||||
if (lines1.isEmpty() || lines2.isEmpty()) return;
|
||||
|
||||
// Skip alignment for very large files to avoid O(N^2) memory/time issues
|
||||
if (lines1.size() > 2000 || lines2.size() > 2000) return;
|
||||
int maxLines = config.getMaxCompareLines();
|
||||
if (lines1.size() > maxLines || lines2.size() > maxLines) return;
|
||||
|
||||
int n = lines1.size();
|
||||
int m = lines2.size();
|
||||
|
||||
@ -76,6 +76,7 @@ public class SettingsDialog extends JDialog {
|
||||
private final String originalExternalEditorPath;
|
||||
private final int originalToolbarButtonSize;
|
||||
private final int originalToolbarIconSize;
|
||||
private final int originalMaxCompareLines;
|
||||
private final java.util.List<cz.kamma.kfmanager.config.AppConfig.OpenWithEntry> originalOpenWithEntries;
|
||||
|
||||
// Appearance controls
|
||||
@ -110,6 +111,7 @@ public class SettingsDialog extends JDialog {
|
||||
this.originalExternalEditorPath = config.getExternalEditorPath();
|
||||
this.originalToolbarButtonSize = config.getToolbarButtonSize();
|
||||
this.originalToolbarIconSize = config.getToolbarIconSize();
|
||||
this.originalMaxCompareLines = config.getMaxCompareLines();
|
||||
this.originalOpenWithEntries = new java.util.ArrayList<>(config.getOpenWithEntries());
|
||||
|
||||
setDefaultCloseOperation(DISPOSE_ON_CLOSE);
|
||||
@ -264,6 +266,8 @@ public class SettingsDialog extends JDialog {
|
||||
try {
|
||||
JSpinner ari = (JSpinner) behaviorHolder.getClientProperty("autoRefreshInterval");
|
||||
if (ari != null) config.setAutoRefreshInterval((Integer) ari.getValue());
|
||||
JSpinner mcl = (JSpinner) behaviorHolder.getClientProperty("maxCompareLines");
|
||||
if (mcl != null) config.setMaxCompareLines((Integer) mcl.getValue());
|
||||
} catch (Exception ignore) {}
|
||||
}
|
||||
|
||||
@ -288,6 +292,7 @@ public class SettingsDialog extends JDialog {
|
||||
config.setExternalEditorPath(originalExternalEditorPath);
|
||||
config.setToolbarButtonSize(originalToolbarButtonSize);
|
||||
config.setToolbarIconSize(originalToolbarIconSize);
|
||||
config.setMaxCompareLines(originalMaxCompareLines);
|
||||
config.setOpenWithEntries(originalOpenWithEntries);
|
||||
|
||||
// Notify UI to revert changes
|
||||
@ -624,8 +629,17 @@ public class SettingsDialog extends JDialog {
|
||||
gbc.gridx = 1; gbc.gridy = row++; gbc.weightx = 1.0;
|
||||
grid.add(refreshInt, gbc);
|
||||
|
||||
// Max lines for file comparison
|
||||
gbc.gridx = 0; gbc.gridy = row; gbc.weightx = 0.0;
|
||||
grid.add(new JLabel("Max lines for smart comparison:"), gbc);
|
||||
|
||||
JSpinner maxLines = new JSpinner(new SpinnerNumberModel(config.getMaxCompareLines(), 100, 100000, 100));
|
||||
gbc.gridx = 1; gbc.gridy = row++; gbc.weightx = 1.0;
|
||||
grid.add(maxLines, gbc);
|
||||
|
||||
p.add(grid, BorderLayout.NORTH);
|
||||
p.putClientProperty("autoRefreshInterval", refreshInt);
|
||||
p.putClientProperty("maxCompareLines", maxLines);
|
||||
panels.put("Behavior", p);
|
||||
return p;
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user