1 /* Copyright (C) 2005-2011 Fabio Riccardi */ 2 3 package com.lightcrafts.ui.browser.view; 4 5 import com.lightcrafts.ui.browser.model.ImageDatum; 6 7 import java.util.*; 8 9 /** 10 * A browser selection model for the LightZone Basic mode, which disallows 11 * selection of more than a single image at a time. 12 */ 13 class SingleImageBrowserSelectionModel extends ImageBrowserSelectionModel { 14 15 private ImageDatum selected; 16 private AbstractImageBrowser browser; 17 SingleImageBrowserSelectionModel(AbstractImageBrowser browser)18 SingleImageBrowserSelectionModel(AbstractImageBrowser browser) { 19 super(browser); 20 this.browser = browser; 21 } 22 setLeadSelected(ImageDatum datum)23 void setLeadSelected(ImageDatum datum) { 24 if (selected != datum) { 25 selected = datum; 26 browser.notifySelectionChanged(); 27 browser.repaint(); 28 } 29 } 30 addSelected(ImageDatum datum)31 void addSelected(ImageDatum datum) { 32 if (selected == null) { 33 setLeadSelected(datum); 34 } 35 } 36 addSelected(Collection<ImageDatum> datums)37 void addSelected(Collection<ImageDatum> datums) { 38 if (datums.size() == 1) { 39 setLeadSelected(datums.iterator().next()); 40 } 41 } 42 setSelected(List<ImageDatum> datums)43 void setSelected(List<ImageDatum> datums) { 44 if (datums.size() == 1) { 45 setLeadSelected(datums.get(0)); 46 } 47 } 48 removeSelected(ImageDatum datum)49 void removeSelected(ImageDatum datum) { 50 if (selected == datum) { 51 setLeadSelected(null); 52 } 53 } 54 clearSelected()55 void clearSelected() { 56 if (selected != null) { 57 browser.repaint(selected); 58 selected = null; 59 browser.notifySelectionChanged(); 60 } 61 } 62 getLeadSelected()63 ImageDatum getLeadSelected() { 64 return selected; 65 } 66 getSelected()67 List<ImageDatum> getSelected() { 68 if (selected != null) { 69 return Collections.singletonList(selected); 70 } 71 return Collections.emptyList(); 72 } 73 isSelected(ImageDatum datum)74 boolean isSelected(ImageDatum datum) { 75 return selected == datum; 76 } 77 isLeadSelected(ImageDatum datum)78 boolean isLeadSelected(ImageDatum datum) { 79 return selected == datum; 80 } 81 } 82