Project

General

Profile

« Previous | Next » 

Revision 0c52f39c

Added by Niels Hoffmann over 12 years ago

Fixing background color logic as it was kind of broken

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/AbstractCdmDetailElement.java
1 1
// $Id$
2 2
/**
3
* Copyright (C) 2007 EDIT
4
* European Distributed Institute of Taxonomy 
5
* http://www.e-taxonomy.eu
6
* 
7
* The contents of this file are subject to the Mozilla Public License Version 1.1
8
* See LICENSE.TXT at the top of this package for the full license terms.
9
*/
3
 * Copyright (C) 2007 EDIT
4
 * European Distributed Institute of Taxonomy 
5
 * http://www.e-taxonomy.eu
6
 * 
7
 * The contents of this file are subject to the Mozilla Public License Version 1.1
8
 * See LICENSE.TXT at the top of this package for the full license terms.
9
 */
10 10

  
11 11
package eu.etaxonomy.taxeditor.ui.section;
12 12

  
......
31 31
import eu.etaxonomy.taxeditor.ui.forms.ISelectable;
32 32

  
33 33
/**
34
 * <p>Abstract AbstractCdmDetailElement class.</p>
35
 *
34
 * <p>
35
 * Abstract AbstractCdmDetailElement class.
36
 * </p>
37
 * 
36 38
 * @author n.hoffmann
37 39
 * @created Feb 26, 2010
38 40
 * @version 1.0
39 41
 */
40 42
public abstract class AbstractCdmDetailElement<T> extends
41
		AbstractCdmFormElement implements IEntityElement<T>, ISelectable, IEnableableFormElement, IConversationEnabled{
42
	
43
		AbstractCdmFormElement implements IEntityElement<T>,
44
		IEnableableFormElement, IConversationEnabled, ISelectable {
45

  
43 46
	private T entity;
44
		
47

  
45 48
	private boolean enabled;
46 49

  
47 50
	private boolean irrelevant;
48
		
51

  
49 52
	/**
50
	 * <p>Constructor for AbstractCdmDetailElement.</p>
51
	 *
52
	 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory} object.
53
	 * @param formElement a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement} object.
54
	 * @param <T> a T object.
53
	 * <p>
54
	 * Constructor for AbstractCdmDetailElement.
55
	 * </p>
56
	 * 
57
	 * @param formFactory
58
	 *            a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory}
59
	 *            object.
60
	 * @param formElement
61
	 *            a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement}
62
	 *            object.
63
	 * @param <T>
64
	 *            a T object.
55 65
	 */
56 66
	public AbstractCdmDetailElement(CdmFormFactory formFactory,
57 67
			ICdmFormElement formElement) {
......
59 69
		// register as property change listener
60 70
		formFactory.addPropertyChangeListener(this);
61 71
	}
62
	
72

  
63 73
	/**
64 74
	 * Sets the entity and updates controls
65
	 *
66
	 * @param entity a T object.
75
	 * 
76
	 * @param entity
77
	 *            a T object.
67 78
	 */
68
	public void setEntity(T entity){
79
	public void setEntity(T entity) {
69 80
		this.entity = entity;
70 81
		updateContent();
71 82
	}
72
	
83

  
73 84
	/*
74 85
	 * (non-Javadoc)
86
	 * 
75 87
	 * @see eu.etaxonomy.taxeditor.forms.IEntityElement#getEntity()
76 88
	 */
77 89
	/**
78
	 * <p>Getter for the field <code>entity</code>.</p>
79
	 *
90
	 * <p>
91
	 * Getter for the field <code>entity</code>.
92
	 * </p>
93
	 * 
80 94
	 * @return a T object.
81 95
	 */
82 96
	public T getEntity() {
83 97
		return entity;
84 98
	}
85
	
99

  
86 100
	/**
87 101
	 * Updates all widgets to display the latest data
88 102
	 */
89
	protected void updateContent(){
90
		removeElements();	
103
	protected void updateContent() {
104
		removeElements();
91 105
		createControls(this, entity, SWT.WRAP);
92 106
		getLayoutComposite().layout();
93 107
	}
94
	
108

  
95 109
	/*
96 110
	 * (non-Javadoc)
97
	 * @see eu.etaxonomy.taxeditor.forms.ISelectableComposite#setSelected(boolean)
111
	 * 
112
	 * @see
113
	 * eu.etaxonomy.taxeditor.forms.ISelectableComposite#setSelected(boolean)
98 114
	 */
99 115
	/** {@inheritDoc} */
100 116
	public void setSelected(boolean selected) {
101 117
		Composite section = getLayoutComposite().getParent();
102
		section.setBackground(getColor(selected));
118
		section.setBackground(selected ? SELECTED : getPersistentBackground());
103 119
	}
104
	
120

  
105 121
	/**
106
	 * Sets all field to the given enablement state except the objects in collection except
107
	 *
122
	 * Sets all field to the given enablement state except the objects in
123
	 * collection except
124
	 * 
108 125
	 * @see eu.etaxonomy.taxeditor.ui.forms.IEnableableFormElement#setEnabled(boolean)
109
	 * @param enabled a boolean.
110
	 * @param except a {@link java.util.Collection} object.
126
	 * @param enabled
127
	 *            a boolean.
128
	 * @param except
129
	 *            a {@link java.util.Collection} object.
111 130
	 */
112 131
	public void setEnabled(boolean enabled, Collection<Object> except) {
113
		for(ICdmFormElement element : getElements()){
114
			if(element instanceof IEnableableFormElement){
132
		for (ICdmFormElement element : getElements()) {
133
			if (element instanceof IEnableableFormElement) {
115 134
				IEnableableFormElement enableableElement = (IEnableableFormElement) element;
116
				if(except != null && except.contains(enableableElement)){
117
//					enableableElement.setEnabled(enabled);
118
				}else{
135
				if (except != null && except.contains(enableableElement)) {
136
					// enableableElement.setEnabled(enabled);
137
				} else {
119 138
					enableableElement.setEnabled(enabled);
120 139
				}
121 140
			}
122 141
		}
123 142
	}
124
	
143

  
125 144
	/**
126
	 * <p>Setter for the field <code>irrelevant</code>.</p>
127
	 *
128
	 * @param irrelevant a boolean.
129
	 * @param except a {@link java.util.Collection} object.
145
	 * <p>
146
	 * Setter for the field <code>irrelevant</code>.
147
	 * </p>
148
	 * 
149
	 * @param irrelevant
150
	 *            a boolean.
151
	 * @param except
152
	 *            a {@link java.util.Collection} object.
130 153
	 */
131
	public void setIrrelevant(boolean irrelevant, Collection<Object> except){
132
		//logger.warn("Setting " + this.getClass().getSimpleName() + " to irrelevant state: " + irrelevant);
133
		for(ICdmFormElement element : getElements()){
134
			if(element instanceof IEnableableFormElement){
154
	public void setIrrelevant(boolean irrelevant, Collection<Object> except) {
155
		// logger.warn("Setting " + this.getClass().getSimpleName() +
156
		// " to irrelevant state: " + irrelevant);
157
		for (ICdmFormElement element : getElements()) {
158
			if (element instanceof IEnableableFormElement) {
135 159
				IEnableableFormElement relevantElement = (IEnableableFormElement) element;
136
				if(except != null && except.contains(relevantElement)){
160
				if (except != null && except.contains(relevantElement)) {
137 161
					// do nothing
138
					//logger.warn("not setting elements irrelevance: " + relevantElement.getClass().getSimpleName() + " in :" + this.getClass().getSimpleName());
139
				}else{
162
					// logger.warn("not setting elements irrelevance: " +
163
					// relevantElement.getClass().getSimpleName() + " in :" +
164
					// this.getClass().getSimpleName());
165
				} else {
140 166
					relevantElement.setIrrelevant(irrelevant);
141 167
				}
142 168
			}
143 169
		}
144 170
	}
145
	
171

  
146 172
	/** {@inheritDoc} */
147 173
	public void setEnabled(boolean enabled) {
148 174
		this.enabled = enabled;
......
154 180
		this.irrelevant = irrelevant;
155 181
		setIrrelevant(irrelevant, null);
156 182
	}
157
	
183

  
158 184
	/**
159 185
	 * Create all content elements
160
	 *
161
	 * @param formElement a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement} object.
162
	 * @param entity a T object.
163
	 * @param style a int.
186
	 * 
187
	 * @param formElement
188
	 *            a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement}
189
	 *            object.
190
	 * @param entity
191
	 *            a T object.
192
	 * @param style
193
	 *            a int.
164 194
	 */
165
	protected abstract void createControls(ICdmFormElement formElement, T entity, int style);
166
	
195
	protected abstract void createControls(ICdmFormElement formElement,
196
			T entity, int style);
197

  
167 198
	/** {@inheritDoc} */
168 199
	@Override
169 200
	public void propertyChange(PropertyChangeEvent event) {
170
		if(event == null){
201
		if (event == null) {
171 202
			return;
172 203
		}
173
		
204

  
174 205
		handleTitleCacheRelevantChange(event);
175
		
206

  
176 207
		Object eventSource = event.getSource();
177
		
178
		if(eventSource instanceof ICdmFormElement){
208

  
209
		if (eventSource instanceof ICdmFormElement) {
179 210
			ICdmFormElement eventElement = (ICdmFormElement) eventSource;
180
			ICdmFormElement eventElementContainer = eventElement.getParentElement();
181
			
182
			if (eventElementContainer == this){
183
				if(event instanceof CdmPropertyChangeEvent){
184
					if(((CdmPropertyChangeEvent) event).hasException()){
211
			ICdmFormElement eventElementContainer = eventElement
212
					.getParentElement();
213

  
214
			if (eventElementContainer == this) {
215
				if (event instanceof CdmPropertyChangeEvent) {
216
					if (((CdmPropertyChangeEvent) event).hasException()) {
185 217
						handleException((CdmPropertyChangeEvent) event);
186 218
						return;
187 219
					}
......
197 229
	}
198 230

  
199 231
	protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
200
		boolean isRelevant = getEntity() instanceof TaxonNameBase || getEntity() instanceof TaxonBase;
201
		isRelevant &= this instanceof AbstractIdentifiableEntityDetailElement; 
202
		
203
		if(isRelevant){
204
			((AbstractIdentifiableEntityDetailElement) this).updateToggleableCacheField();
232
		boolean isRelevant = getEntity() instanceof TaxonNameBase
233
				|| getEntity() instanceof TaxonBase;
234
		isRelevant &= this instanceof AbstractIdentifiableEntityDetailElement;
235

  
236
		if (isRelevant) {
237
			((AbstractIdentifiableEntityDetailElement) this)
238
					.updateToggleableCacheField();
205 239
			updateParentSection();
206 240
		}
207 241
	}
208
	
209
	private void updateParentSection(){
210
		if(getParentElement() instanceof AbstractCdmDetailSection){
242

  
243
	private void updateParentSection() {
244
		if (getParentElement() instanceof AbstractCdmDetailSection) {
211 245
			((AbstractCdmDetailSection) getParentElement()).updateTitle();
212 246
		}
213 247
	}
214 248

  
215 249
	/**
216
	 * Gets called when the source of the event is a child widget of this widget.
217
	 *
218
	 * @param eventSource a {@link java.lang.Object} object.
250
	 * Gets called when the source of the event is a child widget of this
251
	 * widget.
252
	 * 
253
	 * @param eventSource
254
	 *            a {@link java.lang.Object} object.
219 255
	 */
220 256
	public abstract void handleEvent(Object eventSource);
221
	
257

  
222 258
	/**
223
	 * <p>handleException</p>
224
	 *
225
	 * @param event a {@link eu.etaxonomy.taxeditor.ui.forms.CdmPropertyChangeEvent} object.
259
	 * <p>
260
	 * handleException
261
	 * </p>
262
	 * 
263
	 * @param event
264
	 *            a
265
	 *            {@link eu.etaxonomy.taxeditor.ui.forms.CdmPropertyChangeEvent}
266
	 *            object.
226 267
	 */
227
	public void handleException(CdmPropertyChangeEvent event){
228
		//override this in subclasses if you want to deal with the error
268
	public void handleException(CdmPropertyChangeEvent event) {
269
		// override this in subclasses if you want to deal with the error
229 270
		StoreUtil.error(event.getSource().getClass(), event.getException());
230 271
	}
231 272

  
232 273
	/**
233
	 * <p>isIrrelevant</p>
234
	 *
274
	 * <p>
275
	 * isIrrelevant
276
	 * </p>
277
	 * 
235 278
	 * @return a boolean.
236 279
	 */
237 280
	public boolean isIrrelevant() {
238 281
		return irrelevant;
239 282
	}
240
	
283

  
241 284
	/**
242
	 * <p>getConversationHolder</p>
243
	 *
244
	 * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
285
	 * <p>
286
	 * getConversationHolder
287
	 * </p>
288
	 * 
289
	 * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
290
	 *         object.
245 291
	 */
246 292
	public ConversationHolder getConversationHolder() {
247
		if(getParentElement() instanceof IConversationEnabled){
248
			return ((IConversationEnabled) getParentElement()).getConversationHolder();
293
		if (getParentElement() instanceof IConversationEnabled) {
294
			return ((IConversationEnabled) getParentElement())
295
					.getConversationHolder();
249 296
		}
250
		throw new IllegalArgumentException("Parent element should be IConversationEnabled");
297
		throw new IllegalArgumentException(
298
				"Parent element should be IConversationEnabled");
251 299
	}
252
	
300

  
253 301
	/** {@inheritDoc} */
254
	public void update(CdmDataChangeMap changeEvents) {}
302
	public void update(CdmDataChangeMap changeEvents) {
303
	}
255 304
}

Also available in: Unified diff