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