@Override public int getSize() { return overlayInfoList.getOverlayInfoCount(); }
public List<Overlay> selectedOverlays() { ArrayList<Overlay> overlays = new ArrayList<>(); for (int i = 0; i < getOverlayInfoCount(); i++) { OverlayInfo info = getOverlayInfo(i); if (info.isSelected()) overlays.add(info.getOverlay()); } return overlays; } }
public int[] selectedIndices() { int selCount = 0; for (int i = 0; i < getOverlayInfoCount(); i++) { if (getOverlayInfo(i).isSelected()) selCount++; } int[] selectedIndices = new int[selCount]; int index = 0; for (int i = 0; i < getOverlayInfoCount(); i++) { if (getOverlayInfo(i).isSelected()) selectedIndices[index++] = i; } return selectedIndices; }
public void deselectAll() { for (int i = 0; i < getOverlayInfoCount(); i++) { getOverlayInfo(i).setSelected(false); } }
private void delete() { if (overlayService.getOverlayInfo().getOverlayInfoCount() == 0) return; List<Overlay> overlaysToDelete = new LinkedList<>(); final int[] selectedIndices = overlayService.getOverlayInfo().selectedIndices(); if (selectedIndices.length == 0) { final int result = JOptionPane.showConfirmDialog( this, "Delete all overlays?", "Delete All", JOptionPane.YES_NO_OPTION); if (result != JOptionPane.YES_OPTION) return; for (int i = 0; i < overlayService.getOverlayInfo().getOverlayInfoCount(); i++) { overlaysToDelete.add(overlayService.getOverlayInfo().getOverlayInfo(i).getOverlay()); } } else { for (int i = 0; i < selectedIndices.length; i++) { int index = selectedIndices[i]; overlaysToDelete.add(overlayService.getOverlayInfo().getOverlayInfo(index).getOverlay()); } } for (Overlay overlay : overlaysToDelete) { // NB - removeOverlay() can indirectly change our infoList contents. // Thus we first collect overlays from the infoList and then delete // them all afterwards to avoid interactions. overlayService.removeOverlay(overlay); } }
private void populateOverlayList() { // Populate the list with all overlays for (final Overlay overlay : overlayService.getOverlays()) { boolean found = false; int totOverlays = overlayService.getOverlayInfo().getOverlayInfoCount(); for (int i = 0; i < totOverlays; i++) { OverlayInfo info = overlayService.getOverlayInfo().getOverlayInfo(i); if (overlay == info.getOverlay()) { found = true; break; } } if (!found) { OverlayInfo info = new OverlayInfo(overlay); overlayService.getOverlayInfo().addOverlayInfo(info); } } jlist.updateUI(); }