1 |
|
/******************************************************************************* |
2 |
|
* Copyright (c) 2009 Martin O. J. Schmitz. |
3 |
|
* |
4 |
|
* This file is part of the SCHMITZM library - a collection of utility |
5 |
|
* classes based on Java 1.6, focussing (not only) on Java Swing |
6 |
|
* and the Geotools library. |
7 |
|
* |
8 |
|
* The SCHMITZM project is hosted at: |
9 |
|
* http://wald.intevation.org/projects/schmitzm/ |
10 |
|
* |
11 |
|
* This program is free software; you can redistribute it and/or |
12 |
|
* modify it under the terms of the GNU Lesser General Public License |
13 |
|
* as published by the Free Software Foundation; either version 3 |
14 |
|
* of the License, or (at your option) any later version. |
15 |
|
* |
16 |
|
* This program is distributed in the hope that it will be useful, |
17 |
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
18 |
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
19 |
|
* GNU General Public License for more details. |
20 |
|
* |
21 |
|
* You should have received a copy of the GNU Lesser General Public License (license.txt) |
22 |
|
* along with this program; if not, write to the Free Software |
23 |
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
24 |
|
* or try this link: http://www.gnu.org/licenses/lgpl.html |
25 |
|
* |
26 |
|
* Contributors: |
27 |
|
* Martin O. J. Schmitz - initial API and implementation |
28 |
|
* Stefan A. Krüger - additional utility classes |
29 |
|
******************************************************************************/ |
30 |
/** |
/** |
31 |
Copyright 2008 Stefan Alfons Krüger |
Copyright 2008 Stefan Alfons Krüger |
32 |
|
|
55 |
import org.geotools.feature.Feature; |
import org.geotools.feature.Feature; |
56 |
|
|
57 |
import schmitzm.swing.event.PropertyChangeEmitter; |
import schmitzm.swing.event.PropertyChangeEmitter; |
58 |
import skrueger.geotools.StyledMapInterface; |
import skrueger.geotools.StyledLayerInterface; |
59 |
|
|
60 |
/** |
/** |
61 |
* This manager holds a set of objects which are <i>selected</i> for a {@link StyledMapInterface}. |
* This manager holds a set of objects which are <i>selected</i> for a {@link StyledLayerInterface}. |
62 |
* Several components can connect to this model to keep their selection synchronized. |
* Several components can connect to this model to keep their selection synchronized. |
63 |
* @see #addSelectionListener(java.beans.PropertyChangeListener) |
* @see #addSelectionListener(java.beans.PropertyChangeListener) |
64 |
* @see StyledLayerSelectionModelSynchronizer |
* @see StyledLayerSelectionModelSynchronizer |
79 |
protected final HashSet<E> selectionObjects; |
protected final HashSet<E> selectionObjects; |
80 |
|
|
81 |
/** Holds the styled map whose selection is managed by this class. */ |
/** Holds the styled map whose selection is managed by this class. */ |
82 |
protected final StyledMapInterface<?> styledMap; |
protected final StyledLayerInterface<?> styledLayer; |
83 |
|
|
84 |
|
|
85 |
/** Indicates whether a selection change is a part of multiple |
/** Indicates whether a selection change is a part of multiple |
90 |
|
|
91 |
/** |
/** |
92 |
* Creates a new selection model. |
* Creates a new selection model. |
93 |
* @param styledMap styled map the selection is controlled of |
* @param styledLayer styled layer the selection is controlled of |
94 |
*/ |
*/ |
95 |
public StyledLayerSelectionModel(StyledMapInterface<?> styledMap) { |
public StyledLayerSelectionModel(StyledLayerInterface<?> styledLayer) { |
96 |
this.selectionObjects = new HashSet<E>(); |
this.selectionObjects = new HashSet<E>(); |
97 |
this.styledMap = styledMap; |
this.styledLayer = styledLayer; |
98 |
} |
} |
99 |
|
|
100 |
/** |
/** |
137 |
|
|
138 |
|
|
139 |
/** |
/** |
140 |
* Returns whether the current selection changes are a part of multiple |
* Returns whether the current selection change is a part of multiple |
141 |
* changes. If {@code true} {@link #refreshSelection()} has no effect |
* changes. If {@code true} {@link #refreshSelection()} has no effect |
142 |
* and no {@link StyledLayerSelectionEvent} is fired until |
* and no {@link StyledLayerSelectionEvent} is fired until |
143 |
* {@link #setValueIsAdjusting(boolean) setValueIsAdjusting(false)} |
* {@link #setValueIsAdjusting(boolean) setValueIsAdjusting(false)} |
148 |
} |
} |
149 |
|
|
150 |
/** |
/** |
151 |
* Sets whether the following selection changes are a part of multiple |
* Sets whether the following selection changes are part of multiple |
152 |
* changes. If {@code true} {@link #refreshSelection()} has no effect |
* changes. If {@code true} {@link #refreshSelection()} has no effect |
153 |
* and no {@link StyledLayerSelectionEvent} event is fired. |
* and no {@link StyledLayerSelectionEvent} event is fired. |
154 |
* If the value is set from {@code true} to {@code false} an automatic |
* If the value is set from {@code true} to {@code false} an automatic |