Skip to content
Snippets Groups Projects
Verified Commit f16dd78b authored by tristan.muller's avatar tristan.muller Committed by philippe.verley_ird.fr
Browse files

Add a lock sloder gap checkbox for each filter UI element.

parent cfb4a946
No related branches found
No related tags found
No related merge requests found
......@@ -153,7 +153,6 @@
<Component class="javax.swing.JSlider" name="jSliderMin">
<Properties>
<Property name="majorTickSpacing" type="int" value="25"/>
<Property name="maximum" type="int" value="1000"/>
<Property name="minorTickSpacing" type="int" value="5"/>
<Property name="toolTipText" type="java.lang.String" value="Change the minimum value of this filtered property"/>
<Property name="value" type="int" value="0"/>
......@@ -200,9 +199,8 @@
</Component>
<Component class="javax.swing.JSlider" name="jSliderMax">
<Properties>
<Property name="maximum" type="int" value="1000"/>
<Property name="toolTipText" type="java.lang.String" value="Change the maximum value of this filtered property"/>
<Property name="value" type="int" value="1000"/>
<Property name="value" type="int" value="100"/>
<Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
<Color id="Curseur en forme de main"/>
</Property>
......@@ -230,6 +228,33 @@
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanelLock">
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout">
<Property name="alignment" type="int" value="0"/>
</Layout>
<SubComponents>
<Component class="javax.swing.JLabel" name="jLabelLock">
<Properties>
<Property name="icon" type="javax.swing.Icon" editor="org.netbeans.modules.form.editors2.IconEditor">
<Image iconType="3" name="/icons/mail-reply-sender.png"/>
</Property>
</Properties>
</Component>
<Component class="javax.swing.JCheckBox" name="jCheckBoxLock">
<Properties>
<Property name="text" type="java.lang.String" value="Lock sliders gap"/>
<Property name="toolTipText" type="java.lang.String" value="Choose if the NaN values of this filtered property will be hiden or not."/>
<Property name="cursor" type="java.awt.Cursor" editor="org.netbeans.modules.form.editors2.CursorEditor">
<Color id="Curseur en forme de main"/>
</Property>
</Properties>
<Events>
<EventHandler event="actionPerformed" listener="java.awt.event.ActionListener" parameters="java.awt.event.ActionEvent" handler="jCheckBoxLockActionPerformed"/>
</Events>
</Component>
</SubComponents>
</Container>
<Container class="javax.swing.JPanel" name="jPanelNaN">
<Layout class="org.netbeans.modules.form.compat2.layouts.DesignFlowLayout">
......
......@@ -38,6 +38,7 @@ public class JVoxelFilter extends javax.swing.JPanel {
private float maxValue;
private Stack<JVoxelFilterListener> listeners;
private boolean lockMinAndMax;
private int minAndMaxGap = 100;
/** Creates new form JVoxelFilter */
public JVoxelFilter() {
......@@ -83,7 +84,7 @@ public class JVoxelFilter extends javax.swing.JPanel {
if (jSliderMin.getValue() > 0) {
jLabelModified.setVisible(true);
jButtonReset.setEnabled(true);
} else if (jSliderMax.getValue() < 1000) {
} else if (jSliderMax.getValue() < 100) {
jLabelModified.setVisible(true);
jButtonReset.setEnabled(true);
} else if (jCheckBoxNaN.isSelected()) {
......@@ -95,8 +96,8 @@ public class JVoxelFilter extends javax.swing.JPanel {
}
/* Call "onChange" function of each listener */
float min = minValue + (maxValue - minValue) * (float) jSliderMin.getValue() / 1000;
float max = minValue + (maxValue - minValue) * (float) jSliderMax.getValue() / 1000;
float min = minValue + (maxValue - minValue) * (float) jSliderMin.getValue() / 100;
float max = minValue + (maxValue - minValue) * (float) jSliderMax.getValue() / 100;
final boolean NaN = jCheckBoxNaN.isSelected();
for (JVoxelFilterListener listener : listeners) {
......@@ -105,10 +106,10 @@ public class JVoxelFilter extends javax.swing.JPanel {
}
public final void reset() {
if (jSliderMin.getValue() != 0 || jSliderMax.getValue() != 1000 || jCheckBoxNaN.isSelected()) {
if (jSliderMin.getValue() != 0 || jSliderMax.getValue() != 100 || jCheckBoxNaN.isSelected()) {
/* Reset the min & max sliders */
jSliderMin.setValue(0);
jSliderMax.setValue(1000);
jSliderMax.setValue(100);
jCheckBoxNaN.setSelected(false);
/* Update this filtered property */
......@@ -140,6 +141,9 @@ public class JVoxelFilter extends javax.swing.JPanel {
jLabelMax = new javax.swing.JLabel();
jSliderMax = new javax.swing.JSlider();
jFormattedTextFieldMax = new javax.swing.JFormattedTextField();
jPanelLock = new javax.swing.JPanel();
jLabelLock = new javax.swing.JLabel();
jCheckBoxLock = new javax.swing.JCheckBox();
jPanelNaN = new javax.swing.JPanel();
jLabelNaN = new javax.swing.JLabel();
jCheckBoxNaN = new javax.swing.JCheckBox();
......@@ -205,7 +209,6 @@ public class JVoxelFilter extends javax.swing.JPanel {
jPanelMin.add(jLabelMin);
jSliderMin.setMajorTickSpacing(25);
jSliderMin.setMaximum(1000);
jSliderMin.setMinorTickSpacing(5);
jSliderMin.setToolTipText("Change the minimum value of this filtered property");
jSliderMin.setValue(0);
......@@ -240,9 +243,8 @@ public class JVoxelFilter extends javax.swing.JPanel {
jLabelMax.setText("Max");
jPanelMax.add(jLabelMax);
jSliderMax.setMaximum(1000);
jSliderMax.setToolTipText("Change the maximum value of this filtered property");
jSliderMax.setValue(1000);
jSliderMax.setValue(100);
jSliderMax.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
jSliderMax.setPreferredSize(new java.awt.Dimension(250, 21));
jSliderMax.addChangeListener(new javax.swing.event.ChangeListener() {
......@@ -268,6 +270,23 @@ public class JVoxelFilter extends javax.swing.JPanel {
jPanelBody.add(jPanelMax);
jPanelLock.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jLabelLock.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/mail-reply-sender.png"))); // NOI18N
jPanelLock.add(jLabelLock);
jCheckBoxLock.setText("Lock sliders gap");
jCheckBoxLock.setToolTipText("Choose if the NaN values of this filtered property will be hiden or not.");
jCheckBoxLock.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
jCheckBoxLock.addActionListener(new java.awt.event.ActionListener() {
public void actionPerformed(java.awt.event.ActionEvent evt) {
jCheckBoxLockActionPerformed(evt);
}
});
jPanelLock.add(jCheckBoxLock);
jPanelBody.add(jPanelLock);
jPanelNaN.setLayout(new java.awt.FlowLayout(java.awt.FlowLayout.LEFT));
jLabelNaN.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/mail-reply-sender.png"))); // NOI18N
......@@ -295,7 +314,7 @@ public class JVoxelFilter extends javax.swing.JPanel {
/* Resize this panel */
if (jPanelBody.isVisible()) {
jButtonRetract.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/go-bottom.png")));
setPreferredSize(new Dimension(410, 150));
setPreferredSize(new Dimension(410, 200));
} else {
jButtonRetract.setIcon(new javax.swing.ImageIcon(getClass().getResource("/icons/go-previous-rtl.png")));
setPreferredSize(new Dimension(410, 44));
......@@ -308,25 +327,33 @@ public class JVoxelFilter extends javax.swing.JPanel {
private void jSliderMinStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSliderMinStateChanged
/* Display the value of the slider in the text field */
final float sliderV = (float) jSliderMin.getValue() / 1000;
final float sliderV = (float) jSliderMin.getValue() / 100;
final float value = minValue + (maxValue - minValue) * sliderV;
jFormattedTextFieldMin.setText(Float.toString(value));
if (lockMinAndMax) {
jSliderMax.setValue(jSliderMin.getValue());
jSliderMax.setValue(jSliderMin.getValue() + minAndMaxGap);
if ((jSliderMax.getValue() - jSliderMin.getValue()) < minAndMaxGap) {
jSliderMin.setValue(jSliderMax.getValue() - minAndMaxGap);
}
}
}//GEN-LAST:event_jSliderMinStateChanged
private void jSliderMaxStateChanged(javax.swing.event.ChangeEvent evt) {//GEN-FIRST:event_jSliderMaxStateChanged
/* Display the value of the slider in the text field */
final float sliderV = (float) jSliderMax.getValue() / 1000;
final float sliderV = (float) jSliderMax.getValue() / 100;
final float value = minValue + (maxValue - minValue) * sliderV;
jFormattedTextFieldMax.setText(Float.toString(value));
if (lockMinAndMax) {
jSliderMin.setValue(jSliderMax.getValue());
jSliderMin.setValue(jSliderMax.getValue() - minAndMaxGap);
if ((jSliderMax.getValue() - jSliderMin.getValue()) < minAndMaxGap) {
jSliderMax.setValue(jSliderMin.getValue() + minAndMaxGap);
}
}
}//GEN-LAST:event_jSliderMaxStateChanged
......@@ -363,13 +390,20 @@ public class JVoxelFilter extends javax.swing.JPanel {
updateProperty();
}//GEN-LAST:event_jCheckBoxNaNActionPerformed
private void jCheckBoxLockActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCheckBoxLockActionPerformed
lockMinAndMax = jCheckBoxLock.isSelected();
minAndMaxGap = jSliderMax.getValue() - jSliderMin.getValue();
}//GEN-LAST:event_jCheckBoxLockActionPerformed
// Variables declaration - do not modify//GEN-BEGIN:variables
private javax.swing.JButton jButtonReset;
private javax.swing.JButton jButtonRetract;
private javax.swing.JCheckBox jCheckBoxLock;
private javax.swing.JCheckBox jCheckBoxNaN;
private javax.swing.JFormattedTextField jFormattedTextFieldMax;
private javax.swing.JFormattedTextField jFormattedTextFieldMin;
private javax.swing.JLabel jLabelLock;
private javax.swing.JLabel jLabelMax;
private javax.swing.JLabel jLabelMin;
private javax.swing.JLabel jLabelModified;
......@@ -377,6 +411,7 @@ public class JVoxelFilter extends javax.swing.JPanel {
private javax.swing.JLabel jLabelTitle;
private javax.swing.JPanel jPanelBody;
private javax.swing.JPanel jPanelHeader;
private javax.swing.JPanel jPanelLock;
private javax.swing.JPanel jPanelMax;
private javax.swing.JPanel jPanelMin;
private javax.swing.JPanel jPanelNaN;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment