check for nulls

This commit is contained in:
Denis Molony 2016-07-22 15:29:37 +10:00
parent 474603617c
commit 4baf2ea51e

View File

@ -30,7 +30,7 @@ class DiskLayoutSelection implements Iterable<DiskAddress>
if ((!extend && !append) || highlights.size () == 0) if ((!extend && !append) || highlights.size () == 0)
{ {
highlights.clear (); highlights.clear ();
highlights.add (da); addHighlight (da);
return; return;
} }
@ -49,7 +49,7 @@ class DiskLayoutSelection implements Iterable<DiskAddress>
*/ */
if (append) if (append)
{ {
highlights.add (da); addHighlight (da);
Collections.sort (highlights); Collections.sort (highlights);
return; return;
} }
@ -93,33 +93,39 @@ class DiskLayoutSelection implements Iterable<DiskAddress>
int block = first.getBlock () - 1; int block = first.getBlock () - 1;
if (block < 0) if (block < 0)
block = totalBlocks - 1; block = totalBlocks - 1;
highlights.add (disk.getDiskAddress (block)); addHighlight (disk.getDiskAddress (block));
break; break;
case KeyEvent.VK_RIGHT: case KeyEvent.VK_RIGHT:
block = last.getBlock () + 1; block = last.getBlock () + 1;
if (block >= totalBlocks) if (block >= totalBlocks)
block = 0; block = 0;
highlights.add (disk.getDiskAddress (block)); addHighlight (disk.getDiskAddress (block));
break; break;
case KeyEvent.VK_UP: case KeyEvent.VK_UP:
block = first.getBlock () - rowSize; block = first.getBlock () - rowSize;
if (block < 0) if (block < 0)
block += totalBlocks; block += totalBlocks;
highlights.add (disk.getDiskAddress (block)); addHighlight (disk.getDiskAddress (block));
break; break;
case KeyEvent.VK_DOWN: case KeyEvent.VK_DOWN:
block = last.getBlock () + rowSize; block = last.getBlock () + rowSize;
if (block >= totalBlocks) if (block >= totalBlocks)
block -= totalBlocks; block -= totalBlocks;
highlights.add (disk.getDiskAddress (block)); addHighlight (disk.getDiskAddress (block));
break; break;
} }
Collections.sort (highlights); Collections.sort (highlights);
} }
private void addHighlight (DiskAddress da)
{
assert da != null;
highlights.add (da);
}
@Override @Override
public Iterator<DiskAddress> iterator () public Iterator<DiskAddress> iterator ()
{ {
@ -135,16 +141,19 @@ class DiskLayoutSelection implements Iterable<DiskAddress>
public boolean isSelected (DiskAddress da) public boolean isSelected (DiskAddress da)
{ {
for (DiskAddress selection : highlights) for (DiskAddress selection : highlights)
if (da.matches (selection)) if (selection != null && da.matches (selection))
return true; return true;
return false; return false;
} }
public void setSelection (List<DiskAddress> list) public void setSelection (List<DiskAddress> list)
{ {
// for some reason list sometimes contains nulls
highlights.clear (); highlights.clear ();
if (list != null) if (list != null)
highlights.addAll (list); for (DiskAddress da : list)
if (da != null)
highlights.add (da);
} }
private boolean checkContiguous () private boolean checkContiguous ()
@ -172,7 +181,7 @@ class DiskLayoutSelection implements Iterable<DiskAddress>
} }
for (int i = lo; i <= hi; i++) for (int i = lo; i <= hi; i++)
highlights.add (disk.getDiskAddress (i)); addHighlight (disk.getDiskAddress (i));
} }
private void adjustHighlights (Disk disk, DiskAddress da) private void adjustHighlights (Disk disk, DiskAddress da)
@ -186,6 +195,6 @@ class DiskLayoutSelection implements Iterable<DiskAddress>
} }
// just treat it like a ctrl-click (hack!!) // just treat it like a ctrl-click (hack!!)
highlights.add (da); addHighlight (da);
} }
} }