Skip to content
Snippets Groups Projects
Commit b81f24b0 authored by Tobias Pietzsch's avatar Tobias Pietzsch
Browse files

Revise BoxSelectionPanel to work with Box interface instead of ModifiableInterval

parent b487b5af
Branches
Tags
No related merge requests found
...@@ -46,6 +46,7 @@ import javax.swing.KeyStroke; ...@@ -46,6 +46,7 @@ import javax.swing.KeyStroke;
import javax.swing.WindowConstants; import javax.swing.WindowConstants;
import bdv.tools.boundingbox.BoundingBoxOverlay.BoundingBoxOverlaySource; import bdv.tools.boundingbox.BoundingBoxOverlay.BoundingBoxOverlaySource;
import bdv.tools.boundingbox.BoxSelectionPanel.Box;
import bdv.tools.brightness.RealARGBColorConverterSetup; import bdv.tools.brightness.RealARGBColorConverterSetup;
import bdv.tools.brightness.SetupAssignments; import bdv.tools.brightness.SetupAssignments;
import bdv.tools.transformation.TransformedSource; import bdv.tools.transformation.TransformedSource;
...@@ -151,15 +152,23 @@ public class BoundingBoxDialog extends JDialog ...@@ -151,15 +152,23 @@ public class BoundingBoxDialog extends JDialog
} ); } );
// create a JPanel with sliders to modify the bounding box interval (boxRealRandomAccessible.getInterval()) // create a JPanel with sliders to modify the bounding box interval (boxRealRandomAccessible.getInterval())
boxSelectionPanel = new BoxSelectionPanel( interval, rangeInterval ); boxSelectionPanel = new BoxSelectionPanel(
boxSelectionPanel.addSelectionUpdateListener( new BoxSelectionPanel.SelectionUpdateListener() // listen for updates on the bbox to trigger repainting new Box()
{ {
@Override @Override
public void selectionUpdated() public void setInterval( final Interval i )
{ {
viewer.requestRepaint(); interval.set( i );
} viewer.requestRepaint();
} ); }
@Override
public Interval getInterval()
{
return interval;
}
},
rangeInterval );
// when dialog is made visible, add bbox source // when dialog is made visible, add bbox source
// when dialog is hidden, remove bbox source // when dialog is hidden, remove bbox source
......
...@@ -29,24 +29,23 @@ ...@@ -29,24 +29,23 @@
*/ */
package bdv.tools.boundingbox; package bdv.tools.boundingbox;
import java.util.ArrayList;
import javax.swing.BorderFactory; import javax.swing.BorderFactory;
import javax.swing.BoxLayout; import javax.swing.BoxLayout;
import javax.swing.JPanel; import javax.swing.JPanel;
import bdv.tools.brightness.SliderPanel; import bdv.tools.brightness.SliderPanel;
import bdv.util.BoundedInterval; import bdv.util.BoundedInterval;
import bdv.util.ModifiableInterval;
import net.imglib2.FinalInterval; import net.imglib2.FinalInterval;
import net.imglib2.Interval; import net.imglib2.Interval;
// a JPanel containing X,Y,Z min/max sliders for adjusting an interval // a JPanel containing X,Y,Z min/max sliders for adjusting an interval
public class BoxSelectionPanel extends JPanel public class BoxSelectionPanel extends JPanel
{ {
public static interface SelectionUpdateListener public interface Box
{ {
public void selectionUpdated(); Interval getInterval();
void setInterval( Interval interval );
} }
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
...@@ -57,20 +56,19 @@ public class BoxSelectionPanel extends JPanel ...@@ -57,20 +56,19 @@ public class BoxSelectionPanel extends JPanel
private final SliderPanel[] maxSliderPanels; private final SliderPanel[] maxSliderPanels;
private final ModifiableInterval selection; private final Box selection;
private final ArrayList< SelectionUpdateListener > listeners;
private int cols; private int cols;
public BoxSelectionPanel( final ModifiableInterval selection, final Interval rangeInterval ) private final int n;
public BoxSelectionPanel( final Box selection, final Interval rangeInterval )
{ {
final int n = selection.numDimensions(); n = selection.getInterval().numDimensions();
this.selection = selection; this.selection = selection;
ranges = new BoundedInterval[ n ]; ranges = new BoundedInterval[ n ];
minSliderPanels = new SliderPanel[ n ]; minSliderPanels = new SliderPanel[ n ];
maxSliderPanels = new SliderPanel[ n ]; maxSliderPanels = new SliderPanel[ n ];
listeners = new ArrayList<>();
cols = 2; cols = 2;
for ( int d = 0; d < n; ++d ) for ( int d = 0; d < n; ++d )
...@@ -84,8 +82,9 @@ public class BoxSelectionPanel extends JPanel ...@@ -84,8 +82,9 @@ public class BoxSelectionPanel extends JPanel
{ {
final int rangeMin = ( int ) rangeInterval.min( d ); final int rangeMin = ( int ) rangeInterval.min( d );
final int rangeMax = ( int ) rangeInterval.max( d ); final int rangeMax = ( int ) rangeInterval.max( d );
final int initialMin = Math.max( ( int ) selection.min( d ), rangeMin ); final Interval interval = selection.getInterval();
final int initialMax = Math.min( ( int ) selection.max( d ), rangeMax ); final int initialMin = Math.max( ( int ) interval.min( d ), rangeMin );
final int initialMax = Math.min( ( int ) interval.max( d ), rangeMax );
final BoundedInterval range = new BoundedInterval( rangeMin, rangeMax, initialMin, initialMax, 0 ) final BoundedInterval range = new BoundedInterval( rangeMin, rangeMax, initialMin, initialMax, 0 )
{ {
@Override @Override
...@@ -114,8 +113,6 @@ public class BoxSelectionPanel extends JPanel ...@@ -114,8 +113,6 @@ public class BoxSelectionPanel extends JPanel
public void setBoundsInterval( final Interval interval ) public void setBoundsInterval( final Interval interval )
{ {
final int n = selection.numDimensions();
final int oldCols = cols; final int oldCols = cols;
for ( int d = 0; d < n; ++d ) for ( int d = 0; d < n; ++d )
{ {
...@@ -139,14 +136,8 @@ public class BoxSelectionPanel extends JPanel ...@@ -139,14 +136,8 @@ public class BoxSelectionPanel extends JPanel
} }
} }
public void addSelectionUpdateListener( final SelectionUpdateListener l )
{
listeners.add( l );
}
public void updateSelection() public void updateSelection()
{ {
final int n = selection.numDimensions();
final long[] min = new long[ n ]; final long[] min = new long[ n ];
final long[] max = new long[ n ]; final long[] max = new long[ n ];
for ( int d = 0; d < n; ++d ) for ( int d = 0; d < n; ++d )
...@@ -154,14 +145,11 @@ public class BoxSelectionPanel extends JPanel ...@@ -154,14 +145,11 @@ public class BoxSelectionPanel extends JPanel
min[ d ] = ranges[ d ].getMinBoundedValue().getCurrentValue(); min[ d ] = ranges[ d ].getMinBoundedValue().getCurrentValue();
max[ d ] = ranges[ d ].getMaxBoundedValue().getCurrentValue(); max[ d ] = ranges[ d ].getMaxBoundedValue().getCurrentValue();
} }
selection.set( new FinalInterval( min, max ) ); selection.setInterval( new FinalInterval( min, max ) );
for ( final SelectionUpdateListener l : listeners )
l.selectionUpdated();
} }
public void updateSliders( final Interval interval ) public void updateSliders( final Interval interval )
{ {
final int n = selection.numDimensions();
if ( interval.numDimensions() != n ) if ( interval.numDimensions() != n )
throw new IllegalArgumentException(); throw new IllegalArgumentException();
final long[] min = new long[ n ]; final long[] min = new long[ n ];
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment