(ImagePlus imp)
| 157 | } |
| 158 | |
| 159 | void addScrollbars(ImagePlus imp) { |
| 160 | ImageStack s = imp.getStack(); |
| 161 | int stackSize = s.getSize(); |
| 162 | int sliderHeight = 0; |
| 163 | nSlices = stackSize; |
| 164 | hyperStack = imp.getOpenAsHyperStack(); |
| 165 | //imp.setOpenAsHyperStack(false); |
| 166 | int[] dim = imp.getDimensions(); |
| 167 | int nDimensions = 2+(dim[2]>1?1:0)+(dim[3]>1?1:0)+(dim[4]>1?1:0); |
| 168 | if (nDimensions<=3 && dim[2]!=nSlices) |
| 169 | hyperStack = false; |
| 170 | if (hyperStack) { |
| 171 | nChannels = dim[2]; |
| 172 | nSlices = dim[3]; |
| 173 | nFrames = dim[4]; |
| 174 | } |
| 175 | if (nSlices==stackSize) hyperStack = false; |
| 176 | if (nChannels*nSlices*nFrames!=stackSize) hyperStack = false; |
| 177 | if (cSelector!=null||zSelector!=null||tSelector!=null) |
| 178 | removeScrollbars(); |
| 179 | ImageJ ij = IJ.getInstance(); |
| 180 | //IJ.log("StackWindow: "+hyperStack+" "+nChannels+" "+nSlices+" "+nFrames+" "+imp); |
| 181 | if (nChannels>1) { |
| 182 | cSelector = new ScrollbarWithLabel(this, 1, 1, 1, nChannels+1, 'c'); |
| 183 | add(cSelector); |
| 184 | sliderHeight += cSelector.getPreferredSize().height + ImageWindow.VGAP; |
| 185 | if (ij!=null) cSelector.addKeyListener(ij); |
| 186 | cSelector.addAdjustmentListener(this); |
| 187 | cSelector.setFocusable(false); // prevents scroll bar from blinking on Windows |
| 188 | cSelector.setUnitIncrement(1); |
| 189 | cSelector.setBlockIncrement(1); |
| 190 | } |
| 191 | if (nSlices>1) { |
| 192 | char label = nChannels>1||nFrames>1?'z':'t'; |
| 193 | if (stackSize==dim[2] && imp.isComposite()) label = 'c'; |
| 194 | zSelector = new ScrollbarWithLabel(this, 1, 1, 1, nSlices+1, label); |
| 195 | if (label=='t') animationSelector = zSelector; |
| 196 | add(zSelector); |
| 197 | sliderHeight += zSelector.getPreferredSize().height + ImageWindow.VGAP; |
| 198 | if (ij!=null) zSelector.addKeyListener(ij); |
| 199 | zSelector.addAdjustmentListener(this); |
| 200 | zSelector.setFocusable(false); |
| 201 | int blockIncrement = nSlices/10; |
| 202 | if (blockIncrement<1) blockIncrement = 1; |
| 203 | zSelector.setUnitIncrement(1); |
| 204 | zSelector.setBlockIncrement(blockIncrement); |
| 205 | sliceSelector = zSelector.bar; |
| 206 | } |
| 207 | if (nFrames>1) { |
| 208 | animationSelector = tSelector = new ScrollbarWithLabel(this, 1, 1, 1, nFrames+1, 't'); |
| 209 | add(tSelector); |
| 210 | sliderHeight += tSelector.getPreferredSize().height + ImageWindow.VGAP; |
| 211 | if (ij!=null) tSelector.addKeyListener(ij); |
| 212 | tSelector.addAdjustmentListener(this); |
| 213 | tSelector.setFocusable(false); |
| 214 | int blockIncrement = nFrames/10; |
| 215 | if (blockIncrement<1) blockIncrement = 1; |
| 216 | tSelector.setUnitIncrement(1); |
no test coverage detected