public void unselectGeoCell(GeoCell cell) { GeoBlock block = cell.getBlock(); GeoBlockEntry entry = getEntry(block); FastArrayList <GeoCell> selected = entry.getValue(); if (selected != null && selected.remove(cell)) { if (selected.isEmpty()) { setStateOf(block.getCells(), SelectionState.NORMAL); entry.remove(); updateGUI(null); } else { cell.setSelectionState(SelectionState.HIGHLIGHTED); updateGUI(selected.getLastUnsafe()); } } }
private void selectGeoCellMultiLayer(GeoCell cell, bool fullBlock, bool append) { GeoBlock block = cell.getBlock(); GeoBlockEntry entry = getEntry(block); GeoCell[] cells = block.getCells(); GLSelectionBox selectionBox = GLDisplay.getInstance().getSelectionBox(); FastArrayList <GeoCell> selected = entry.getValue(); // if (append) { if (selected != null) { if (fullBlock) { if (selectionBox.isInfHeight()) { if (selected.size() == cells.Length) { setStateOf(cells, SelectionState.NORMAL); entry.remove(); } else { selected.clear(); selected.addAll(cells); setStateOf(cells, SelectionState.SELECTED); } } else { _temp.clear(); selectionBox.getAllCellsInside(cell, cells, _temp); // if (selected.containsAll(_temp)) { if (selected.size() == _temp.size()) { setStateOf(cells, SelectionState.NORMAL); entry.remove(); } else { setStateOf(_temp, SelectionState.NORMAL); selected.removeAll(_temp); } } else { setStateOf(_temp, SelectionState.SELECTED); selected.addAllIfAbsent(_temp); } } } else { if (selected.remove(cell)) { if (selected.isEmpty()) { setStateOf(cells, SelectionState.NORMAL); entry.remove(); } else { cell.setSelectionState(SelectionState.HIGHLIGHTED); } } else { selected.addLast(cell); cell.setSelectionState(SelectionState.SELECTED); } } } else { if (fullBlock) { if (selectionBox.isInfHeight()) { selected = new FastArrayList <GeoCell>(cells); } else { selected = new FastArrayList <GeoCell>(); selectionBox.getAllCellsInside(cell, cells, selected); if (!selected.isEmpty()) { setStateOf(cells, SelectionState.HIGHLIGHTED); } } } else { selected = new FastArrayList <GeoCell>(8); selected.addLastUnsafe(cell); setStateOf(cells, SelectionState.HIGHLIGHTED); } // if (!selected.isEmpty()) { setStateOf(selected, SelectionState.SELECTED); entry.setKey(block); entry.setValue(selected); entry.addBefore(getTail()); } } } else { unselectAll(); // if (fullBlock) { if (selectionBox.isInfHeight()) { selected = new FastArrayList <GeoCell>(cells); } else { selected = new FastArrayList <GeoCell>(); selectionBox.getAllCellsInside(cell, cells, selected); } } else { selected = new FastArrayList <GeoCell>(8); selected.addLastUnsafe(cell); setStateOf(cells, SelectionState.HIGHLIGHTED); } // if (!selected.isEmpty()) { setStateOf(selected, SelectionState.SELECTED); entry.setKey(block); entry.setValue(selected); entry.addBefore(getTail()); } } }
private void selectGeoCellComplex(GeoCell cell, bool fullBlock, bool append) { GeoBlock block = cell.getBlock(); GeoBlockEntry entry = getEntry(block); GeoCell[] cells = block.getCells(); FastArrayList <GeoCell> selected = entry.getValue(); // if (append) { if (selected != null) { if (selected.size() == cells.Length) { if (fullBlock) { setStateOf(cells, SelectionState.NORMAL); entry.remove(); } else { if (selected.remove(cell)) { cell.setSelectionState(SelectionState.HIGHLIGHTED); } } } else { if (fullBlock) { selected.clear(); selected.addAll(cells); setStateOf(cells, SelectionState.SELECTED); } else { if (selected.remove(cell)) { if (selected.isEmpty()) { setStateOf(cells, SelectionState.NORMAL); entry.remove(); } else { cell.setSelectionState(SelectionState.HIGHLIGHTED); } } else { selected.addLast(cell); cell.setSelectionState(SelectionState.SELECTED); } } } } else { if (fullBlock) { selected = new FastArrayList <GeoCell>(cells); } else { selected = new FastArrayList <GeoCell>(8); selected.addLastUnsafe(cell); setStateOf(cells, SelectionState.HIGHLIGHTED); } // setStateOf(selected, SelectionState.SELECTED); entry.setKey(block); entry.setValue(selected); entry.addBefore(getTail()); } } else { unselectAll(); // if (fullBlock) { selected = new FastArrayList <GeoCell>(cells); } else { selected = new FastArrayList <GeoCell>(8); selected.addLastUnsafe(cell); setStateOf(cells, SelectionState.HIGHLIGHTED); } // setStateOf(selected, SelectionState.SELECTED); entry.setKey(block); entry.setValue(selected); entry.addBefore(getTail()); } }