Changeset 1790


Ignore:
Timestamp:
11/13/06 18:24:03 (14 years ago)
Author:
chris
Message:

browser:
1) fixed indicator to work if given proper data...
works fine now if OptionsWindow gui is disabled.
2) fixed cachemanager to give proper data
3) optionswindow is interfering somehow with the
cache, unsure at this point what the problem is,
but when I enable the gui the cache fails to clear
backward cache entries. Made default options window
on close operation hide instead of dispose so it
doesn't keep reseting cache, but still needs work.

Location:
trunk/loci/plugins/browser
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/plugins/browser/CacheIndicator.java

    r1760 r1790  
    3030public class CacheIndicator extends JComponent { 
    3131 
    32   private static final int COMPONENT_HEIGHT = 3; 
     32  private static final int COMPONENT_HEIGHT = 5; 
    3333 
    3434  protected int [] cache,loadList; 
    3535  protected int cacheLength; 
    36   double ratio; 
     36  protected double ratio; 
     37  protected JScrollBar scroll; 
     38   
    3739 
    38   public CacheIndicator() { 
     40  public CacheIndicator(JScrollBar scroll) { 
     41    this.scroll = scroll; 
    3942    setBackground(Color.white); 
    4043    cache = null; 
     
    4750    loadList = someLoadList; 
    4851    cacheLength = length; 
     52    int setRatio = translate(0); 
    4953    repaint(); 
    5054  } 
    5155 
    5256  public void paint(Graphics g) { 
     57    g.setColor(Color.white); 
     58    g.fillRect(0,0,getWidth()-1,COMPONENT_HEIGHT - 1); 
    5359    g.setColor(Color.black); 
    54     g.drawRect(0,0,getWidth(),COMPONENT_HEIGHT); 
     60    g.drawRect(0,0,getWidth()-1,COMPONENT_HEIGHT - 1); 
     61//    System.out.println("Ratio = " + ratio); 
    5562    if(ratio < 1) { 
    5663    } 
     
    6168      for(int i = 0;i<loadList.length;i++) { 
    6269        int toLoad = loadList[i]; 
     70 
    6371        if(startLoad == -1) { 
    6472          startLoad = toLoad; 
    6573          prevLoad = toLoad; 
    6674        } 
    67         else if(toLoad == prevLoad + 1 && startLoad != -1) { 
     75        else if(toLoad == prevLoad + 1 && startLoad != -1 && i != loadList.length - 1) { 
    6876          prevLoad = toLoad; 
    6977        } 
    7078        else { 
    71           startLoad = -1; 
     79          prevLoad = prevLoad + 2; 
    7280          int x = translate(startLoad); 
    7381          int wid = translate(prevLoad) - x; 
    74           g.fillRect(x,0,wid,COMPONENT_HEIGHT); 
     82//          System.out.println("Rectangle: x = " + x + "; width = " + wid); 
     83          g.fillRect(x,1,wid,COMPONENT_HEIGHT - 2); 
     84          startLoad = -1; 
    7585        } 
    7686      } 
     87       
    7788      prevLoad = -1; 
    7889      startLoad = -1; 
     
    8495          prevLoad = toLoad; 
    8596        } 
    86         else if(toLoad == prevLoad + 1 && startLoad != -1) { 
     97        else if(toLoad == prevLoad + 1 && startLoad != -1 && i != cache.length - 1) { 
    8798          prevLoad = toLoad; 
    8899        } 
    89100        else { 
    90           startLoad = -1; 
     101          prevLoad = prevLoad + 2; 
    91102          int x = translate(startLoad); 
    92103          int wid = translate(prevLoad) - x; 
    93           g.fillRect(x,0,wid,HEIGHT); 
     104          g.fillRect(x,1,wid,COMPONENT_HEIGHT - 2); 
     105          startLoad = -1; 
    94106        } 
    95107      } 
     
    98110 
    99111  private int translate(int cacheIndex) { 
    100     Integer width = new Integer(getWidth()); 
     112    Integer width = new Integer(scroll.getWidth()); 
    101113    double compSize = width.doubleValue(); 
    102114    if(cacheLength == 0) return -1; 
     
    114126 
    115127  public Dimension getPreferredSize() { 
    116     return new Dimension(0,COMPONENT_HEIGHT); 
     128    return new Dimension(scroll.getWidth(),COMPONENT_HEIGHT); 
    117129  } 
    118130 
  • trunk/loci/plugins/browser/CacheManager.java

    r1761 r1790  
    3030import java.util.Vector; 
    3131import loci.formats.*; 
     32import javax.swing.JScrollBar; 
    3233 
    3334public class CacheManager implements Runnable { 
     
    6465  private ImageProcessor[] cache; 
    6566 
     67  /** The LociDataBrowser associated with this cache.*/ 
     68  private LociDataBrowser db; 
     69 
    6670  /** The IFormatReader that handles conversion of formats.*/ 
    6771  private IFormatReader read; 
     72   
     73  /** The two axes scrollbars in the CustomWindow.*/ 
     74  private JScrollBar zSel, tSel; 
     75   
     76  /** The two indicators of the cache.*/ 
     77  private CacheIndicator zInd, tInd; 
    6878 
    6979  /** Holds the current axes to be cached.*/ 
     
    138148  // -- Constructors -- 
    139149 
    140   public CacheManager(int size, IFormatReader read, String fileName) { 
    141     this(0, size, read, fileName, T_AXIS, CROSS_MODE); 
     150  public CacheManager(int size, LociDataBrowser db, String fileName) { 
     151    this(0, size, db, fileName, T_AXIS, CROSS_MODE); 
    142152  } 
    143153 
    144154  public CacheManager(int back, int forward, 
    145     IFormatReader read, String fileName, int axis, int mode) 
     155    LociDataBrowser db, String fileName, int axis, int mode) 
    146156  { 
    147157    this(0, 0, 0, back, forward, back, forward, back, 
    148       forward, read, fileName, axis, mode, FORWARD_FIRST); 
     158      forward, db, fileName, axis, mode, FORWARD_FIRST); 
    149159  } 
    150160 
     
    180190  public CacheManager(int z, int t, int c, int backZ, int forwardZ, 
    181191    int backT, int forwardT, int backC, int forwardC, 
    182     IFormatReader read, String fileName, int axis, int mode, int strategy) 
     192    LociDataBrowser db, String fileName, int axis, int mode, int strategy) 
    183193  { 
    184194    //Initialize fields 
     
    192202    quit = false; 
    193203    this.fileName = fileName; 
    194     this.read = read; 
     204    this.db = db; 
     205    this.read = db.reader; 
     206    zInd = null; 
     207    tInd = null; 
     208    zSel = null; 
     209    tSel = null; 
    195210    synchronized (read) { 
    196211      try { 
     
    18171832    if (DEBUG) System.out.println("Cache Size after clear: " + getSize()); 
    18181833  } 
     1834   
     1835  protected void setIndicators(int aZ, int aT, int aC) { 
     1836    zInd = db.cw.zIndicator; 
     1837    tInd = db.cw.tIndicator; 
     1838   
     1839    Vector zInCache = new Vector(); 
     1840    Vector tInCache = new Vector(); 
     1841     
     1842    for(int i = 0;i < sizeZ;i++) { 
     1843      int index = -1; 
     1844      try { 
     1845        index = read.getIndex(fileName, i, aC - 1, aT - 1); 
     1846      } 
     1847      catch(Exception exc) {} 
     1848       
     1849      if (index != -1 && cache[index] != null) zInCache.add(new Integer(i)); 
     1850    } 
     1851     
     1852    for(int i = 0;i < sizeT;i++) { 
     1853      int index = -1;  
     1854      try { 
     1855        index = read.getIndex(fileName, aZ - 1, aC - 1, i); 
     1856      } 
     1857      catch(Exception exc) {} 
     1858       
     1859      if (index != -1 && cache[index] != null) tInCache.add(new Integer(i)); 
     1860    } 
     1861     
     1862    int[] loadCopy = new int[loadList.length]; 
     1863    System.arraycopy(loadList, 0, loadCopy, 0, loadList.length); 
     1864    Arrays.sort(loadCopy); 
     1865     
     1866    Vector zLoad = new Vector(); 
     1867    Vector tLoad = new Vector(); 
     1868     
     1869    for(int i = 0;i < loadCopy.length;i++) { 
     1870      int[] coords = null; 
     1871      try { 
     1872        coords = read.getZCTCoords(fileName, loadCopy[i]); 
     1873      } 
     1874      catch(Exception exc) {} 
     1875      if (coords != null) { 
     1876        int myZ = coords[0]; 
     1877        int myC = coords[1]; 
     1878        int myT = coords[2]; 
     1879        if (myC == aC - 1 && myT == aT - 1) zLoad.add(new Integer(myZ)); 
     1880        if (myC == aC - 1 && myZ == aZ - 1) tLoad.add(new Integer(myT)); 
     1881      } 
     1882    } 
     1883     
     1884    int[] zC = makeInt(zInCache.toArray()); 
     1885    int[] tC = makeInt(tInCache.toArray()); 
     1886    int[] zL = makeInt(zLoad.toArray()); 
     1887    int[] tL = makeInt(tLoad.toArray()); 
     1888     
     1889    if(DEBUG) { 
     1890      System.out.println(zInCache); 
     1891      System.out.println(tInCache); 
     1892      System.out.println(zLoad); 
     1893      System.out.println(tLoad); 
     1894    } 
     1895     
     1896    Arrays.sort(zL); 
     1897    Arrays.sort(tL); 
     1898     
     1899    zInd.setIndicator(zC, zL, sizeZ); 
     1900    tInd.setIndicator(tC, tL, sizeT); 
     1901  } 
     1902   
     1903  private static int [] makeInt(Object[] array) { 
     1904    int [] result  = new int[array.length]; 
     1905    for(int i = 0;i<result.length;i++) { 
     1906      result[i] = ((Integer) array[i]).intValue(); 
     1907    } 
     1908    return result; 
     1909  } 
    18191910 
    18201911  // -- Runnable API methods -- 
     
    18331924        cache[loadList[i]] = imp; 
    18341925      } 
     1926       
     1927      if(db.cw != null) { 
     1928        int aC = 1; 
     1929        zSel = db.cw.zSliceSel; 
     1930        tSel = db.cw.tSliceSel; 
     1931        if (sizeC != 0) aC = ((Integer)db.cw.channelSpin.getValue()).intValue(); 
     1932        setIndicators(zSel.getValue(), tSel.getValue(), aC); 
     1933      } 
    18351934    } 
    18361935  } 
  • trunk/loci/plugins/browser/CustomWindow.java

    r1758 r1790  
    5959 
    6060  protected LociDataBrowser db; 
     61  protected CacheIndicator zIndicator,tIndicator; 
    6162  private OptionsWindow ow; 
    6263  private String zString = Z_STRING; 
     
    7273 
    7374  private JLabel zLabel, tLabel, cLabel; 
    74   private JScrollBar zSliceSel, tSliceSel; 
     75  protected JScrollBar zSliceSel, tSliceSel; 
    7576  private JButton xml; 
    7677  private Timer animationTimer; 
     
    7980  private Panel lowPane; 
    8081  private CellConstraints cc; 
    81   private JSpinner channelSpin; 
     82  protected JSpinner channelSpin; 
    8283  private JCheckBox channelBox; 
    8384  private Color textColor; 
     
    194195    } 
    195196    else c = 1; 
     197 
     198    JPanel zPanel = new JPanel(new BorderLayout()); 
     199    JPanel tPanel = new JPanel(new BorderLayout()); 
     200    zPanel.add(zSliceSel,BorderLayout.CENTER); 
     201    tPanel.add(tSliceSel,BorderLayout.CENTER); 
     202     
     203    if(db.virtual) { 
     204      zIndicator = new CacheIndicator(zSliceSel); 
     205      tIndicator = new CacheIndicator(tSliceSel); 
     206      zPanel.add(zIndicator,BorderLayout.SOUTH); 
     207      tPanel.add(tIndicator,BorderLayout.SOUTH); 
     208    } 
    196209 
    197210    //setup the layout 
     
    207220 
    208221    lowPane.add(zLabel, cc.xy(2,2)); 
    209     lowPane.add(zSliceSel, cc.xyw(4,2,5)); 
     222    lowPane.add(zPanel, cc.xyw(4,2,5)); 
    210223    lowPane.add(channelBox, cc.xy(12,2)); 
    211224    lowPane.add(tLabel, cc.xy(2,4)); 
    212     lowPane.add(tSliceSel, cc.xyw(4,4,5)); 
     225    lowPane.add(tPanel, cc.xyw(4,4,5)); 
    213226    lowPane.add(cLabel, cc.xy(10,4)); 
    214227    lowPane.add(channelSpin, cc.xy(12,4)); 
     
    505518    } 
    506519    else if (cmd.equals("options")) { 
    507       if (ow!=null) ow.dispose(); 
    508       ow = new OptionsWindow(db.hasZ ? db.numZ : 1, 
     520      if (ow == null) ow = new OptionsWindow(db.hasZ ? db.numZ : 1, 
    509521        db.hasT ? db.numT : 1, this); 
    510522      ow.setVisible(true); 
  • trunk/loci/plugins/browser/LociDataBrowser.java

    r1634 r1790  
    5353  /** The file format reader used by the plugin. */ 
    5454  protected IFormatReader reader; 
     55   
     56  /** The CustomWindow used to display data.*/ 
     57  protected CustomWindow cw; 
    5558 
    5659  /** The current file name. */ 
     
    104107    } 
    105108 
    106     new CustomWindow(this, imp, new ImageCanvas(imp)); 
     109    cw = new CustomWindow(this, imp, new ImageCanvas(imp)); 
    107110  } 
    108111 
     
    221224 
    222225            manager = new CacheManager(0, 0, 0, 0, 0, 0, 20, 0, 0, 
    223               reader, id, CacheManager.T_AXIS, 
     226              this, id, CacheManager.T_AXIS, 
    224227              CacheManager.CROSS_MODE, CacheManager.FORWARD_FIRST); 
    225228 
  • trunk/loci/plugins/browser/OptionsWindow.java

    r1761 r1790  
    309309 
    310310    //useful frame method that handles closing of window 
    311     setDefaultCloseOperation(DISPOSE_ON_CLOSE); 
     311    setDefaultCloseOperation(HIDE_ON_CLOSE); 
    312312    //put frame in the right place, with the right size, and make visible 
    313313    setLocation(100, 100); 
     
    358358 
    359359  public void actionPerformed(ActionEvent e) { 
     360///* 
    360361    if(update) { 
    361362      Object source = e.getSource(); 
     
    470471      } 
    471472    } 
     473//*/ 
    472474  } 
    473475 
    474476  public void itemStateChanged(ItemEvent e) { 
     477///* 
    475478    if(update) { 
    476479      Object source = e.getItemSelectable(); 
     
    511514      manager.setAxis(finalState); 
    512515    } 
     516//*/ 
    513517  } 
    514518 
     
    516520 
    517521  public void stateChanged(ChangeEvent e) { 
     522///* 
    518523    if(update) { 
    519524      if (e.getSource() == fps) { 
     
    532537      } 
    533538    } 
     539//*/ 
    534540  } 
    535541} 
Note: See TracChangeset for help on using the changeset viewer.