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

Merge branch 'dynboochep' into maxkleinhenz (does not compile)

# Conflicts:
#	src/main/java/bdv/viewer/ViewerPanel.java
parents 0932bd66 d84c1fc7
No related branches found
No related tags found
No related merge requests found
...@@ -45,6 +45,7 @@ import java.awt.Dimension; ...@@ -45,6 +45,7 @@ import java.awt.Dimension;
import java.awt.Font; import java.awt.Font;
import java.awt.Graphics; import java.awt.Graphics;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.LayoutManager;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.awt.event.ComponentAdapter; import java.awt.event.ComponentAdapter;
...@@ -72,6 +73,7 @@ import javax.swing.JPanel; ...@@ -72,6 +73,7 @@ import javax.swing.JPanel;
import javax.swing.JSlider; import javax.swing.JSlider;
import javax.swing.Timer; import javax.swing.Timer;
import javax.swing.border.EmptyBorder; import javax.swing.border.EmptyBorder;
import javax.swing.SwingConstants;
import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener; import javax.swing.event.ChangeListener;
...@@ -170,7 +172,7 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis ...@@ -170,7 +172,7 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis
*/ */
protected final InteractiveDisplayCanvasComponent< AffineTransform3D > display; protected final InteractiveDisplayCanvasComponent< AffineTransform3D > display;
protected final JSlider sliderTime; protected final TimeSlider sliderTime;
/** /**
* A {@link ThreadGroup} for (only) the threads used by this * A {@link ThreadGroup} for (only) the threads used by this
...@@ -427,10 +429,10 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis ...@@ -427,10 +429,10 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis
sliderPanel.add( timeKeyframePanel ); sliderPanel.add( timeKeyframePanel );
timeKeyframePanel.setLayout( new BoxLayout( timeKeyframePanel, BoxLayout.Y_AXIS ) ); timeKeyframePanel.setLayout( new BoxLayout( timeKeyframePanel, BoxLayout.Y_AXIS ) );
sliderTime = new JSlider( 0, numTimepoints - 1, 0 );
// sliderTime.setMinimumSize( new Dimension( 36, 26 ) ); sliderTime = new DefaultTimeSlider();
// sliderTime.setMaximumSize( new Dimension( 32767, 26 ) ); sliderTime.updateNumTimepoints( 0, numTimepoints );
sliderTime.setSnapToTicks( true ); sliderTime.addTimePointListener( this::setTimepoint );
timeKeyframePanel.add( sliderTime ); timeKeyframePanel.add( sliderTime );
...@@ -439,16 +441,6 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis ...@@ -439,16 +441,6 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis
keyframePanel.setPreferredSize( new Dimension( 36, 26 ) ); keyframePanel.setPreferredSize( new Dimension( 36, 26 ) );
timeKeyframePanel.add( keyframePanel ); timeKeyframePanel.add( keyframePanel );
sliderTime.addChangeListener( new ChangeListener()
{
@Override
public void stateChanged( final ChangeEvent e )
{
if ( e.getSource().equals( sliderTime ) )
setTimepoint( sliderTime.getValue() );
}
} );
add( display, BorderLayout.CENTER ); add( display, BorderLayout.CENTER );
if ( numTimepoints > 1 ) if ( numTimepoints > 1 )
add( sliderPanel, BorderLayout.SOUTH ); add( sliderPanel, BorderLayout.SOUTH );
...@@ -886,12 +878,10 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis ...@@ -886,12 +878,10 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis
*/ */
public synchronized void setTimepoint( final int timepoint ) public synchronized void setTimepoint( final int timepoint )
{ {
if ( state.getCurrentTimepoint() != timepoint ) if ( state.getCurrentTimepoint() != timepoint && timepoint >= 0 && timepoint < state.getNumTimepoints() )
{ {
state.setCurrentTimepoint( timepoint ); state.setCurrentTimepoint( timepoint );
sliderTime.setValue( timepoint ); sliderTime.setTimepoint( timepoint );
for ( final TimePointListener l : timePointListeners )
l.timePointChanged( timepoint );
requestRepaint(); requestRepaint();
} }
} }
...@@ -902,7 +892,7 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis ...@@ -902,7 +892,7 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis
public synchronized void nextTimePoint() public synchronized void nextTimePoint()
{ {
if ( state.getNumTimepoints() > 1 ) if ( state.getNumTimepoints() > 1 )
sliderTime.setValue( sliderTime.getValue() + 1 ); setTimepoint( state.getCurrentTimepoint() + 1 );
} }
/** /**
...@@ -911,7 +901,7 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis ...@@ -911,7 +901,7 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis
public synchronized void previousTimePoint() public synchronized void previousTimePoint()
{ {
if ( state.getNumTimepoints() > 1 ) if ( state.getNumTimepoints() > 1 )
sliderTime.setValue( sliderTime.getValue() - 1 ); setTimepoint( state.getCurrentTimepoint() - 1 );
} }
/** /**
...@@ -952,7 +942,7 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis ...@@ -952,7 +942,7 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis
for ( final TimePointListener l : timePointListeners ) for ( final TimePointListener l : timePointListeners )
l.timePointChanged( timepoint ); l.timePointChanged( timepoint );
} }
sliderTime.setModel( new DefaultBoundedRangeModel( state.getCurrentTimepoint(), 0, 0, numTimepoints - 1 ) ); sliderTime.updateNumTimepoints( state.getCurrentTimepoint(), numTimepoints );
revalidate(); revalidate();
requestRepaint(); requestRepaint();
} }
...@@ -1348,4 +1338,78 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis ...@@ -1348,4 +1338,78 @@ public class ViewerPanel extends JPanel implements OverlayRenderer, TransformLis
return t; return t;
} }
} }
// TODO: move to separate file, add to ViewerOptions
public static abstract class TimeSlider extends JPanel
{
public TimeSlider( final LayoutManager layout, final boolean isDoubleBuffered )
{
super( layout, isDoubleBuffered );
}
public TimeSlider( final LayoutManager layout )
{
super( layout );
}
public TimeSlider( final boolean isDoubleBuffered )
{
super( isDoubleBuffered );
}
public TimeSlider()
{
super();
}
public abstract void updateNumTimepoints( int currentTimepoint, int numTimepoints );
public abstract void setTimepoint( int timepoint );
public abstract void addTimePointListener( TimePointListener listener );
}
// TODO: move to separate file
public static class DefaultTimeSlider extends TimeSlider
{
private final CopyOnWriteArrayList< TimePointListener > listeners;
private final JSlider slider;
public DefaultTimeSlider()
{
super( new BorderLayout() );
listeners = new CopyOnWriteArrayList<>();
slider = new JSlider( SwingConstants.HORIZONTAL );
slider.addChangeListener( new ChangeListener()
{
@Override
public void stateChanged( final ChangeEvent e )
{
for ( final TimePointListener l : listeners )
l.timePointChanged( slider.getValue() );
}
} );
slider.setSnapToTicks( true );
add( slider, BorderLayout.CENTER );
}
@Override
public void updateNumTimepoints( final int currentTimepoint, final int numTimepoints )
{
slider.setModel( new DefaultBoundedRangeModel( currentTimepoint, 0, 0, numTimepoints - 1 ) );
}
@Override
public void setTimepoint( final int timepoint )
{
slider.setValue( timepoint );
}
@Override
public synchronized void addTimePointListener( final TimePointListener listener )
{
listeners.add( listener );
}
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment