Project

General

Profile

« Previous | Next » 

Revision 21e756e0

Added by Niels Hoffmann over 12 years ago

Changes in details view get propagated to editor. Fixed a bug in MultilanguageTextElement implementation

View differences:

eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/KeyEditor.java
11 11
package eu.etaxonomy.taxeditor.editor.key;
12 12

  
13 13
import org.eclipse.core.runtime.IProgressMonitor;
14
import org.eclipse.ui.IEditorPart;
14 15
import org.eclipse.ui.PartInitException;
15 16
import org.eclipse.ui.forms.editor.FormEditor;
16 17

  
......
111 112
	@Override
112 113
	public void changed(Object element) {
113 114
		editorDirtyStateChanged();
115
		IEditorPart activeEditor = getActiveEditor();
116
		if (activeEditor instanceof PolytomousKeyListEditor) {
117
			((PolytomousKeyListEditor) activeEditor).changed(element);
118
		}
114 119
	}
115 120

  
116 121
	/*
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/key/polytomous/PolytomousKeyListEditor.java
10 10

  
11 11
package eu.etaxonomy.taxeditor.editor.key.polytomous;
12 12

  
13
import java.util.List;
14

  
13 15
import org.eclipse.core.runtime.IProgressMonitor;
14 16
import org.eclipse.jface.viewers.StructuredSelection;
15 17
import org.eclipse.jface.viewers.TableViewer;
......
35 37
import eu.etaxonomy.cdm.model.taxon.Taxon;
36 38
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
37 39
import eu.etaxonomy.taxeditor.editor.EditorUtil;
38
import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
40
import eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider;
39 41

  
40 42
/**
41 43
 * @author n.hoffmann
......
43 45
 * @version 1.0
44 46
 */
45 47
public class PolytomousKeyListEditor extends EditorPart implements
46
		IConversationEnabled {
48
		IConversationEnabled, IDirtyMarkableSelectionProvider {
47 49

  
48 50
	private class LinkListener extends MouseAdapter {
49 51
		/*
......
101 103

  
102 104
	public static final String ID = "eu.etaxonomy.taxeditor.editor.key.polytomous.list";
103 105

  
104
	private CdmFormFactory formFactory;
105
	private Composite container;
106

  
107 106
	private TableViewer viewer;
108 107

  
109 108
	/*
......
162 161
			throws PartInitException {
163 162
		setSite(site);
164 163
		setInput(input);
165
		formFactory = new CdmFormFactory(site.getShell().getDisplay());
166 164
	}
167 165

  
168 166
	/*
......
247 245
		setPartName("Test");
248 246
	}
249 247

  
248
	/*
249
	 * (non-Javadoc)
250
	 * 
251
	 * @see
252
	 * eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#changed(
253
	 * java.lang.Object)
254
	 */
255
	@Override
256
	public void changed(Object element) {
257
		viewer.update(element, null);
258

  
259
		if (element instanceof PolytomousKeyNode) {
260
			List<PolytomousKeyNode> children = ((PolytomousKeyNode) element)
261
					.getParent().getChildren();
262
			for (PolytomousKeyNode child : children) {
263
				viewer.update(child, null);
264
			}
265
		}
266

  
267
	}
268

  
250 269
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/KeyStatementElement.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.forms;
12 12

  
13
import org.eclipse.jface.util.PropertyChangeEvent;
14

  
13 15
import eu.etaxonomy.cdm.model.description.KeyStatement;
14 16

  
15 17
/**
......
26 28
	 * @param formElement
27 29
	 */
28 30
	public KeyStatementElement(CdmFormFactory formFactory,
29
			ICdmFormElement formElement, String labelString, KeyStatement keyStatement, int textHeight, int style) {
31
			ICdmFormElement formElement, String labelString,
32
			KeyStatement keyStatement, int textHeight, int style) {
30 33
		super(formFactory, formElement, labelString, null, textHeight, style);
31
		this.keyStatement = keyStatement;
32
		
33
		if(keyStatement != null){
34
			setMultilanguageText(keyStatement.getLabel());
35
		}
34
		setKeyStatement(keyStatement);
36 35
	}
37 36

  
38 37
	/**
39
	 * @param keyStatement the keyStatement to set
38
	 * @param keyStatement
39
	 *            the keyStatement to set
40 40
	 */
41 41
	public void setKeyStatement(KeyStatement keyStatement) {
42 42
		this.keyStatement = keyStatement;
43
		if (keyStatement != null) {
44
			setMultilanguageText(keyStatement.getLabel());
45
		}
43 46
	}
44 47

  
45 48
	/**
......
49 52
		return keyStatement;
50 53
	}
51 54

  
55
	/*
56
	 * (non-Javadoc)
57
	 * 
58
	 * @see
59
	 * eu.etaxonomy.taxeditor.ui.forms.MultilanguageTextElement#propertyChange
60
	 * (org.eclipse.jface.util.PropertyChangeEvent)
61
	 */
62
	@Override
63
	public void propertyChange(PropertyChangeEvent event) {
64
		if (event == null) {
65
			return;
66
		}
67
		if (keyStatement == null) {
68
			Object eventSource = event.getSource();
69
			if (eventSource == element_languageString) {
70
				setKeyStatement(KeyStatement.NewInstance());
71
			}
72
		}
73
		super.propertyChange(event);
74
	}
75

  
52 76
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/forms/MultilanguageTextElement.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.forms;
12 12

  
......
34 34
import eu.etaxonomy.taxeditor.ui.translation.TranslationWizard;
35 35

  
36 36
/**
37
 * <p>MultilanguageTextElement class.</p>
38
 *
37
 * <p>
38
 * MultilanguageTextElement class.
39
 * </p>
40
 * 
39 41
 * @author n.hoffmann
40 42
 * @created Sep 29, 2010
41 43
 * @version 1.0
42 44
 */
43
public class MultilanguageTextElement extends AbstractCdmFormElement implements SelectionListener{
45
public class MultilanguageTextElement extends AbstractCdmFormElement implements
46
		SelectionListener {
44 47

  
45 48
	private class OpenTranslationWizard extends SelectionAdapter {
46
		private Map<Language, LanguageString> multilanguageText;
49
		private final Map<Language, LanguageString> multilanguageText;
47 50

  
48
		public OpenTranslationWizard(Map<Language, LanguageString> multilanguageText){
51
		public OpenTranslationWizard(
52
				Map<Language, LanguageString> multilanguageText) {
49 53
			super();
50 54
			this.multilanguageText = multilanguageText;
51 55
		}
52
		
53
		/* (non-Javadoc)
54
		 * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
56

  
57
		/*
58
		 * (non-Javadoc)
59
		 * 
60
		 * @see
61
		 * org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse
62
		 * .swt.events.SelectionEvent)
55 63
		 */
56 64
		@Override
57 65
		public void widgetSelected(SelectionEvent e) {
58 66
			TranslationWizard wizard = new TranslationWizard(multilanguageText);
59
			WizardDialog dialog = new WizardDialog(getLayoutComposite().getShell(), wizard);
60
			
61
			if (dialog.open() == IStatus.OK){
67
			WizardDialog dialog = new WizardDialog(getLayoutComposite()
68
					.getShell(), wizard);
69

  
70
			if (dialog.open() == IStatus.OK) {
62 71
				combo_language.setTerms(getLanguages());
63 72
				updateControls();
64 73
			}
65
			
74

  
66 75
		}
67 76
	}
68
	
69
	
70
	private EmptyComboElement<Language> combo_language;
71
	
72
	private LanguageStringWithLabelElement element_languageString;
73 77

  
74
	private Button button;
78
	private EmptyComboElement<Language> combo_language;
75 79

  
80
	protected LanguageStringWithLabelElement element_languageString;
76 81

  
82
	private Button button;
77 83

  
78 84
	private Map<Language, LanguageString> multilanguageText;
79
	
85

  
80 86
	/**
81
	 * <p>Constructor for MultilanguageTextElement.</p>
82
	 *
83
	 * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory} object.
84
	 * @param formElement a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement} object.
85
	 * @param labelString a {@link java.lang.String} object.
86
	 * @param multilanguageText a {@link java.util.Map} object.
87
	 * @param textHeight a {@link java.lang.Integer} object.
88
	 * @param style a int.
87
	 * <p>
88
	 * Constructor for MultilanguageTextElement.
89
	 * </p>
90
	 * 
91
	 * @param formFactory
92
	 *            a {@link eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory}
93
	 *            object.
94
	 * @param formElement
95
	 *            a {@link eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement}
96
	 *            object.
97
	 * @param labelString
98
	 *            a {@link java.lang.String} object.
99
	 * @param multilanguageText
100
	 *            a {@link java.util.Map} object.
101
	 * @param textHeight
102
	 *            a {@link java.lang.Integer} object.
103
	 * @param style
104
	 *            a int.
89 105
	 */
90 106
	public MultilanguageTextElement(CdmFormFactory formFactory,
91
			ICdmFormElement formElement, String labelString, Map<Language, LanguageString> multilanguageText, Integer textHeight, int style) {
107
			ICdmFormElement formElement, String labelString,
108
			Map<Language, LanguageString> multilanguageText,
109
			Integer textHeight, int style) {
92 110
		super(formFactory, formElement);
93
				
111

  
94 112
		formFactory.addPropertyChangeListener(this);
95
		
96
		element_languageString = formFactory.createLanguageStringWithLabelElement(formElement, labelString, null, textHeight, style);
97
						
113

  
114
		element_languageString = formFactory
115
				.createLanguageStringWithLabelElement(formElement, labelString,
116
						null, textHeight, style);
117

  
98 118
		if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
99 119
			combo_language = (EmptyComboElement<Language>) formFactory
100 120
					.createTermComboElement(TermComboType.EMPTY, formElement,
......
110 130
		}
111 131
		setMultilanguageText(multilanguageText);
112 132
	}
113
	
114
	/* (non-Javadoc)
133

  
134
	/*
135
	 * (non-Javadoc)
136
	 * 
115 137
	 * @see eu.etaxonomy.taxeditor.forms.ISelectable#setSelected(boolean)
116 138
	 */
117 139
	/** {@inheritDoc} */
118 140
	@Override
119 141
	public void setSelected(boolean selected) {
120
		// 
142
		//
121 143
	}
122
	
123
	private List<Language> getLanguages(){
124
		
125
		ArrayList<Language> languageList = new ArrayList<Language>(getMultilanguageText().keySet());
126
		
144

  
145
	private List<Language> getLanguages() {
146

  
147
		ArrayList<Language> languageList = new ArrayList<Language>(
148
				getMultilanguageText().keySet());
149

  
127 150
		// TODO sort
128
		
151

  
129 152
		return languageList;
130 153
	}
131 154

  
132
	/* (non-Javadoc)
133
	 * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
155
	/*
156
	 * (non-Javadoc)
157
	 * 
158
	 * @see
159
	 * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
160
	 * .events.SelectionEvent)
134 161
	 */
135 162
	/** {@inheritDoc} */
136 163
	@Override
137 164
	public void widgetSelected(SelectionEvent e) {
138 165
		Language selectedLanguage = combo_language.getSelection();
139
		if(selectedLanguage != null){
140
			LanguageString selectedLanguageString = getMultilanguageText().get(selectedLanguage);
141
	
166
		if (selectedLanguage != null) {
167
			LanguageString selectedLanguageString = getMultilanguageText().get(
168
					selectedLanguage);
169

  
142 170
			element_languageString.setLanguageString(selectedLanguageString);
143 171
		}
144 172
	}
145 173

  
146
	/* (non-Javadoc)
147
	 * @see org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse.swt.events.SelectionEvent)
174
	/*
175
	 * (non-Javadoc)
176
	 * 
177
	 * @see
178
	 * org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse
179
	 * .swt.events.SelectionEvent)
148 180
	 */
149 181
	/** {@inheritDoc} */
150 182
	@Override
151
	public void widgetDefaultSelected(SelectionEvent e) {}
183
	public void widgetDefaultSelected(SelectionEvent e) {
184
	}
152 185

  
153 186
	/**
154
	 * <p>Setter for the field <code>multilanguageText</code>.</p>
155
	 *
156
	 * @param multilanguageText the multilanguageText to set
187
	 * <p>
188
	 * Setter for the field <code>multilanguageText</code>.
189
	 * </p>
190
	 * 
191
	 * @param multilanguageText
192
	 *            the multilanguageText to set
157 193
	 */
158
	public void setMultilanguageText(Map<Language, LanguageString> multilanguageText) {
194
	public void setMultilanguageText(
195
			Map<Language, LanguageString> multilanguageText) {
159 196
		this.multilanguageText = multilanguageText;
160
		
161
		if(multilanguageText != null){
162
			if(multilanguageText.isEmpty()){
163
				multilanguageText.put(CdmStore.getDefaultLanguage(), LanguageString.NewInstance("", CdmStore.getDefaultLanguage()));
197

  
198
		if (multilanguageText != null) {
199
			if (multilanguageText.isEmpty()) {
200
				multilanguageText.put(
201
						CdmStore.getDefaultLanguage(),
202
						LanguageString.NewInstance("",
203
								CdmStore.getDefaultLanguage()));
164 204
			}
165 205
			if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
166 206
				combo_language.setTerms(getLanguages());
167 207
			}
168 208
			updateControls();
169
		}		
209
		}
170 210
	}
171 211

  
172 212
	/**
173 213
	 * 
174 214
	 */
175 215
	private void updateControls() {
176
		LanguageString preferredLanguageString = MultilanguageTextHelper.getPreferredLanguageString(getMultilanguageText(), Arrays.asList(new Language[]{CdmStore.getDefaultLanguage()}));
177
			
216
		LanguageString preferredLanguageString = MultilanguageTextHelper
217
				.getPreferredLanguageString(getMultilanguageText(),
218
						Arrays.asList(new Language[] { CdmStore
219
								.getDefaultLanguage() }));
220

  
178 221
		element_languageString.setLanguageString(preferredLanguageString);
179 222
		if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
180 223
			combo_language.setSelection(preferredLanguageString.getLanguage());
......
182 225
	}
183 226

  
184 227
	/**
185
	 * <p>Getter for the field <code>multilanguageText</code>.</p>
186
	 *
228
	 * <p>
229
	 * Getter for the field <code>multilanguageText</code>.
230
	 * </p>
231
	 * 
187 232
	 * @return the multilanguageText
188 233
	 */
189 234
	public Map<Language, LanguageString> getMultilanguageText() {
190 235
		return multilanguageText;
191 236
	}
192
	
193
	/* (non-Javadoc)
194
	 * @see eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
237

  
238
	/*
239
	 * (non-Javadoc)
240
	 * 
241
	 * @see
242
	 * eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org
243
	 * .eclipse.jface.util.PropertyChangeEvent)
195 244
	 */
196 245
	/** {@inheritDoc} */
197 246
	@Override
198 247
	public void propertyChange(PropertyChangeEvent event) {
199
		if(event == null){
248
		if (event == null) {
200 249
			return;
201 250
		}
202 251
		Object eventSource = event.getSource();
203
		if(eventSource == element_languageString){
204
			LanguageString languageString = ((LanguageStringWithLabelElement) eventSource).getLanguageString();
252
		if (eventSource == element_languageString) {
253
			LanguageString languageString = ((LanguageStringWithLabelElement) eventSource)
254
					.getLanguageString();
205 255
			multilanguageText.put(languageString.getLanguage(), languageString);
256
			firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
206 257
		}
207 258
	}
208 259
}
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/ui/section/key/PolytomousKeyNodeDetailElement.java
6 6
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
7 7
import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory;
8 8
import eu.etaxonomy.taxeditor.ui.forms.CdmFormFactory.SelectionType;
9
import eu.etaxonomy.taxeditor.ui.forms.CdmPropertyChangeEvent;
9 10
import eu.etaxonomy.taxeditor.ui.forms.ICdmFormElement;
10 11
import eu.etaxonomy.taxeditor.ui.forms.KeyStatementElement;
11 12
import eu.etaxonomy.taxeditor.ui.forms.NumberWithLabelElement;
......
50 51
		}
51 52

  
52 53
		if (entity.getParent() != null) {
54
			PolytomousKeyNode parent = entity.getParent();
55

  
53 56
			element_question = formFactory.createKeyStatementElement(
54
					formElement, "Question", entity.getParent().getQuestion(),
55
					50, style);
57
					formElement, "Question", parent.getQuestion(), 50, style);
56 58
		}
57 59

  
58 60
		element_statement = formFactory.createKeyStatementElement(formElement,
......
99 101
	@Override
100 102
	public void handleEvent(Object eventSource) {
101 103
		if (eventSource == element_question) {
102
			getEntity().setQuestion(element_question.getKeyStatement());
104
			getEntity().getParent().setQuestion(
105
					element_question.getKeyStatement());
103 106
		} else if (eventSource == element_statement) {
104 107
			getEntity().setStatement(element_statement.getKeyStatement());
105 108
		} else if (eventSource == selection_feature) {
......
111 114
		} else if (eventSource == selection_otherNode) {
112 115
			getEntity().setOtherNode(selection_otherNode.getEntity());
113 116
		}
117

  
118
		firePropertyChangeEvent(new CdmPropertyChangeEvent(this, null));
114 119
	}
115 120
}

Also available in: Unified diff