From 7883e5b0e8bc87b194d549bb1ffa210187d204c6 Mon Sep 17 00:00:00 2001 From: Mathieu Bastian Date: Tue, 8 Mar 2022 22:52:16 +0100 Subject: [PATCH] Add max size preference to address #1518 --- .../visualization/apiimpl/VizConfig.java | 4 ++ .../opengl/CompatibilityEngine.java | 9 +++++ .../visualization/options/OpenGLPanel.java | 38 ++++++++++++++++++- .../visualization/options/Bundle.properties | 1 + 4 files changed, 51 insertions(+), 1 deletion(-) diff --git a/modules/VisualizationImpl/src/main/java/org/gephi/visualization/apiimpl/VizConfig.java b/modules/VisualizationImpl/src/main/java/org/gephi/visualization/apiimpl/VizConfig.java index 171e9dbc7..2266cac51 100644 --- a/modules/VisualizationImpl/src/main/java/org/gephi/visualization/apiimpl/VizConfig.java +++ b/modules/VisualizationImpl/src/main/java/org/gephi/visualization/apiimpl/VizConfig.java @@ -418,6 +418,10 @@ public class VizConfig { return octreeWidth; } + public void setOctreeWidth(int octreeWidth) { + this.octreeWidth = octreeWidth; + } + public boolean isRectangleSelection() { return rectangleSelection; } diff --git a/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java b/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java index 04e749b20..3cb7c0546 100644 --- a/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java +++ b/modules/VisualizationImpl/src/main/java/org/gephi/visualization/opengl/CompatibilityEngine.java @@ -84,6 +84,14 @@ public class CompatibilityEngine extends AbstractEngine { scheduler = (CompatibilityScheduler) VizController.getInstance().getScheduler(); vizEventManager = VizController.getInstance().getVizEventManager(); + initOctree(); + } + + private synchronized void initOctree() { + if (octree != null) { + octree.clear(); + } + //Init octree = new Octree(vizConfig.getOctreeDepth(), vizConfig.getOctreeWidth()); octree.initArchitecture(); @@ -133,6 +141,7 @@ public class CompatibilityEngine extends AbstractEngine { if (reinit) { VizController.getInstance().refreshWorkspace(); dataBridge.reset(); + initOctree(); graphDrawable.initConfig(gl); graphDrawable.setCameraLocation(vizController.getVizModel().getCameraPosition()); graphDrawable.setCameraTarget(vizController.getVizModel().getCameraTarget()); diff --git a/modules/VisualizationImpl/src/main/java/org/gephi/visualization/options/OpenGLPanel.java b/modules/VisualizationImpl/src/main/java/org/gephi/visualization/options/OpenGLPanel.java index 9f0e880b4..0228449d3 100644 --- a/modules/VisualizationImpl/src/main/java/org/gephi/visualization/options/OpenGLPanel.java +++ b/modules/VisualizationImpl/src/main/java/org/gephi/visualization/options/OpenGLPanel.java @@ -44,6 +44,10 @@ package org.gephi.visualization.options; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.text.NumberFormat; +import java.text.ParseException; +import java.util.Locale; +import javax.swing.text.NumberFormatter; import org.gephi.visualization.VizController; import org.gephi.visualization.apiimpl.VizConfig; import org.gephi.visualization.opengl.GraphicalConfiguration; @@ -60,9 +64,11 @@ final class OpenGLPanel extends javax.swing.JPanel { private org.jdesktop.swingx.JXTitledSeparator jXTitledSeparator1; private javax.swing.JLabel labelAntialiasing; private javax.swing.JLabel labelShow; + private javax.swing.JLabel labelOctreeWidth; private javax.swing.JTextArea openInfoText; private javax.swing.JPanel openglInfoPanel; private javax.swing.JButton resetButton; + private javax.swing.JFormattedTextField octreeWidthTextField; OpenGLPanel(OpenGLOptionsPanelController controller) { this.controller = controller; @@ -94,11 +100,21 @@ final class OpenGLPanel extends javax.swing.JPanel { labelAntialiasing = new javax.swing.JLabel(); antialisaingCombobox = new javax.swing.JComboBox(); labelShow = new javax.swing.JLabel(); + labelOctreeWidth = new javax.swing.JLabel(); fpsCheckbox = new javax.swing.JCheckBox(); resetButton = new javax.swing.JButton(); openglInfoPanel = new javax.swing.JPanel(); openInfoText = new javax.swing.JTextArea(); + NumberFormat format = NumberFormat.getInstance(Locale.ENGLISH); + NumberFormatter formatter = new NumberFormatter(format); + formatter.setValueClass(Integer.class); + formatter.setAllowsInvalid(false); + octreeWidthTextField = new javax.swing.JFormattedTextField(formatter); + + org.openide.awt.Mnemonics.setLocalizedText(labelOctreeWidth, + org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.labelOctreeWidth.text")); // NOI18N + jXTitledSeparator1.setTitle( org.openide.util.NbBundle.getMessage(OpenGLPanel.class, "OpenGLPanel.jXTitledSeparator1.title")); // NOI18N @@ -152,10 +168,15 @@ final class OpenGLPanel extends javax.swing.JPanel { .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addGap(10, 10, 10) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(labelOctreeWidth, javax.swing.GroupLayout.PREFERRED_SIZE, 52, + javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelShow, javax.swing.GroupLayout.PREFERRED_SIZE, 52, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(labelAntialiasing)) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addGap(20, 20, 20) + .addComponent(octreeWidthTextField)) .addGroup(layout.createSequentialGroup() .addGap(20, 20, 20) .addComponent(fpsCheckbox)) @@ -186,7 +207,12 @@ final class OpenGLPanel extends javax.swing.JPanel { .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(labelShow, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(fpsCheckbox)))) + .addComponent(fpsCheckbox)) + .addGap(18, 18, 18) + .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(labelOctreeWidth, javax.swing.GroupLayout.DEFAULT_SIZE, + javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(octreeWidthTextField)))) .addGap(18, 18, Short.MAX_VALUE) .addComponent(resetButton) .addContainerGap()) @@ -209,6 +235,8 @@ final class OpenGLPanel extends javax.swing.JPanel { .setSelectedIndex(antiAliasing == 0 ? 0 : Math.round((float) (Math.log(antiAliasing) / Math.log(2)))); fpsCheckbox.setSelected( NbPreferences.forModule(VizConfig.class).getBoolean(VizConfig.SHOW_FPS, VizConfig.DEFAULT_SHOW_FPS)); + octreeWidthTextField.setText(String.valueOf( + NbPreferences.forModule(VizConfig.class).getInt(VizConfig.OCTREE_WIDTH, VizConfig.DEFAULT_OCTREE_WIDTH))); //OpenGLInfo GraphicalConfiguration gc = VizController.getInstance().getDrawable().getGraphicalConfiguration(); @@ -220,6 +248,14 @@ final class OpenGLPanel extends javax.swing.JPanel { void store() { NbPreferences.forModule(VizConfig.class).putInt(VizConfig.ANTIALIASING, antiAliasing); NbPreferences.forModule(VizConfig.class).putBoolean(VizConfig.SHOW_FPS, fpsCheckbox.isSelected()); + try { + int width = NumberFormat.getInstance(Locale.ENGLISH).parse(octreeWidthTextField.getText()).intValue(); + NbPreferences.forModule(VizConfig.class) + .putInt(VizConfig.OCTREE_WIDTH, width); + VizController.getInstance().getVizConfig().setOctreeWidth(width); + } catch (ParseException e) { + e.printStackTrace(); + } VizController.getInstance().getEngine().reinit(); } diff --git a/modules/VisualizationImpl/src/main/resources/org/gephi/visualization/options/Bundle.properties b/modules/VisualizationImpl/src/main/resources/org/gephi/visualization/options/Bundle.properties index 70cc0107f..14bd31985 100644 --- a/modules/VisualizationImpl/src/main/resources/org/gephi/visualization/options/Bundle.properties +++ b/modules/VisualizationImpl/src/main/resources/org/gephi/visualization/options/Bundle.properties @@ -27,4 +27,5 @@ OpenGLPanel.labelShow.text=Show: OpenGLPanel.labelAntialiasing.text=Antialiasing: OpenGLPanel.fpsCheckbox.text=FPS (Frames Per Second) OpenGLPanel.resetButton.text=Reset Default +OpenGLPanel.labelOctreeWidth.text=Max size DefaultPanel.resetButton.text=Reset defaults -- GitLab