Revision 2b559c4e
Added by Patrick Plitzner almost 7 years ago
eu.etaxonomy.taxeditor.editor/fragment.e4xmi | ||
---|---|---|
54 | 54 |
<children xsi:type="menu:HandledMenuItem" xmi:id="_wg0-oDulEeeOtqC_3qh40A" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.commandlabel54" label="%command.label.54" iconURI="platform:/plugin/eu.etaxonomy.taxeditor.editor/icons/deep-delete-16x16-32.png" command="_fKT-wDulEeeOtqC_3qh40A"/> |
55 | 55 |
</menus> |
56 | 56 |
</elements> |
57 |
<elements xsi:type="basic:PartDescriptor" xmi:id="_R7vxEECaEeeL5JDzMOYK6g" elementId="eu.etaxonomy.taxeditor.editor.workingSet.FeatureTreeBuilderViewPart" label="Character Editor" closeable="true" dirtyable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.workingSet.FeatureTreeBuilderViewPart"/>
|
|
57 |
<elements xsi:type="basic:PartDescriptor" xmi:id="_R7vxEECaEeeL5JDzMOYK6g" elementId="eu.etaxonomy.taxeditor.editor.workingSet.CharacterEditor" label="Character Editor" closeable="true" dirtyable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.editor/eu.etaxonomy.taxeditor.editor.workingSet.CharacterEditor"/>
|
|
58 | 58 |
</fragments> |
59 | 59 |
<fragments xsi:type="fragment:StringModelFragment" xmi:id="__mwtMDVpEee_b7RlBzTDRw" featurename="commands" parentElementId="xpath:/"> |
60 | 60 |
<elements xsi:type="commands:Command" xmi:id="_BjF3ADVqEee_b7RlBzTDRw" elementId="eu.etaxonomy.taxeditor.editor.command.specimeneditor.create_field_unit" commandName="%command.commandname.1"/> |
... | ... | |
74 | 74 |
</fragments> |
75 | 75 |
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_pZmusEalEeeXMc6kSYO7Xg" featurename="children" parentElementId="eu.etaxonomy.taxeditor.menu.showView"> |
76 | 76 |
<elements xsi:type="menu:HandledMenuItem" xmi:id="_tvph4EalEeeXMc6kSYO7Xg" elementId="eu.etaxonomy.taxeditor.editor.handledmenuitem.featuretreeeditor" label="Character Editor" command="_WPjpoDSnEeek0dKsFNy--Q"> |
77 |
<parameters xmi:id="_wJkmoEalEeeXMc6kSYO7Xg" elementId="eu.etaxonomy.taxeditor.editor.parameter.0" name="eu.etaxonomy.taxeditor.workbench.commandparameter.partName" value="eu.etaxonomy.taxeditor.editor.workingSet.FeatureTreeBuilderViewPart"/>
|
|
77 |
<parameters xmi:id="_wJkmoEalEeeXMc6kSYO7Xg" elementId="eu.etaxonomy.taxeditor.editor.parameter.0" name="eu.etaxonomy.taxeditor.workbench.commandparameter.partName" value="eu.etaxonomy.taxeditor.editor.workingSet.CharacterEditor"/>
|
|
78 | 78 |
</elements> |
79 | 79 |
</fragments> |
80 | 80 |
</fragment:ModelFragments> |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/CharacterEditor.java | ||
---|---|---|
1 |
// $Id$ |
|
2 |
/** |
|
3 |
* Copyright (C) 2017 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 |
package eu.etaxonomy.taxeditor.editor.workingSet; |
|
11 |
|
|
12 |
import java.util.Collections; |
|
13 |
import java.util.UUID; |
|
14 |
|
|
15 |
import javax.annotation.PostConstruct; |
|
16 |
import javax.annotation.PreDestroy; |
|
17 |
import javax.inject.Named; |
|
18 |
|
|
19 |
import org.eclipse.e4.ui.di.Focus; |
|
20 |
import org.eclipse.e4.ui.services.IServiceConstants; |
|
21 |
import org.eclipse.jface.viewers.ISelection; |
|
22 |
import org.eclipse.jface.viewers.TreeSelection; |
|
23 |
import org.eclipse.jface.viewers.TreeViewer; |
|
24 |
import org.eclipse.swt.SWT; |
|
25 |
import org.eclipse.swt.custom.SashForm; |
|
26 |
import org.eclipse.swt.dnd.DND; |
|
27 |
import org.eclipse.swt.dnd.Transfer; |
|
28 |
import org.eclipse.swt.events.SelectionAdapter; |
|
29 |
import org.eclipse.swt.events.SelectionEvent; |
|
30 |
import org.eclipse.swt.layout.GridData; |
|
31 |
import org.eclipse.swt.layout.GridLayout; |
|
32 |
import org.eclipse.swt.widgets.Button; |
|
33 |
import org.eclipse.swt.widgets.Composite; |
|
34 |
import org.eclipse.swt.widgets.Display; |
|
35 |
import org.eclipse.swt.widgets.Label; |
|
36 |
import org.eclipse.swt.widgets.Shell; |
|
37 |
import org.eclipse.swt.widgets.Tree; |
|
38 |
import org.eclipse.ui.forms.widgets.FormToolkit; |
|
39 |
|
|
40 |
import eu.etaxonomy.cdm.api.service.IFeatureTreeService; |
|
41 |
import eu.etaxonomy.cdm.model.description.Character; |
|
42 |
import eu.etaxonomy.cdm.model.description.FeatureNode; |
|
43 |
import eu.etaxonomy.cdm.model.description.FeatureTree; |
|
44 |
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer; |
|
45 |
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider; |
|
46 |
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider; |
|
47 |
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor; |
|
48 |
import eu.etaxonomy.taxeditor.model.MessagingUtils; |
|
49 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
|
50 |
|
|
51 |
/** |
|
52 |
* @author pplitzner |
|
53 |
* @date 24.05.2017 |
|
54 |
* |
|
55 |
*/ |
|
56 |
public class CharacterEditor { |
|
57 |
|
|
58 |
|
|
59 |
private TreeViewer treeViewerCharacters; |
|
60 |
private TreeViewer treeViewerProperties; |
|
61 |
private TreeViewer treeViewerStructures; |
|
62 |
private FeatureTreeEditor editor; |
|
63 |
private final FormToolkit formToolkit = new FormToolkit(Display.getDefault()); |
|
64 |
private Button btnAddCharacter; |
|
65 |
|
|
66 |
public CharacterEditor() { |
|
67 |
} |
|
68 |
|
|
69 |
/** |
|
70 |
* Create contents of the view part. |
|
71 |
*/ |
|
72 |
@PostConstruct |
|
73 |
public void createControls(Composite parent, @Named(IServiceConstants.ACTIVE_SHELL)Shell shell) { |
|
74 |
parent.setLayout(new GridLayout(1, false)); |
|
75 |
|
|
76 |
SashForm sashForm = new SashForm(parent, SWT.NONE); |
|
77 |
sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); |
|
78 |
formToolkit.adapt(sashForm); |
|
79 |
formToolkit.paintBordersFor(sashForm); |
|
80 |
|
|
81 |
Composite composite = new Composite(sashForm, SWT.NONE); |
|
82 |
formToolkit.adapt(composite); |
|
83 |
formToolkit.paintBordersFor(composite); |
|
84 |
composite.setLayout(new GridLayout(1, false)); |
|
85 |
|
|
86 |
Label lblNewLabel = new Label(composite, SWT.NONE); |
|
87 |
lblNewLabel.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); |
|
88 |
formToolkit.adapt(lblNewLabel, true, true); |
|
89 |
lblNewLabel.setText("Structures"); |
|
90 |
|
|
91 |
treeViewerStructures = new TreeViewer(composite, SWT.BORDER); |
|
92 |
Tree tree = treeViewerStructures.getTree(); |
|
93 |
tree.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); |
|
94 |
|
|
95 |
Composite composite_1 = new Composite(sashForm, SWT.NONE); |
|
96 |
formToolkit.adapt(composite_1); |
|
97 |
formToolkit.paintBordersFor(composite_1); |
|
98 |
composite_1.setLayout(new GridLayout(1, false)); |
|
99 |
|
|
100 |
Label lblNewLabel_1 = new Label(composite_1, SWT.NONE); |
|
101 |
lblNewLabel_1.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1)); |
|
102 |
formToolkit.adapt(lblNewLabel_1, true, true); |
|
103 |
lblNewLabel_1.setText("Properties"); |
|
104 |
|
|
105 |
treeViewerProperties = new TreeViewer(composite_1, SWT.BORDER); |
|
106 |
Tree tree_1 = treeViewerProperties.getTree(); |
|
107 |
tree_1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); |
|
108 |
|
|
109 |
Composite composite_2 = new Composite(sashForm, SWT.NONE); |
|
110 |
formToolkit.adapt(composite_2); |
|
111 |
formToolkit.paintBordersFor(composite_2); |
|
112 |
composite_2.setLayout(new GridLayout(1, false)); |
|
113 |
|
|
114 |
btnAddCharacter = new Button(composite_2, SWT.NONE); |
|
115 |
btnAddCharacter.setText(">>"); |
|
116 |
btnAddCharacter.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, true, true, 1, 1)); |
|
117 |
formToolkit.adapt(btnAddCharacter, true, true); |
|
118 |
|
|
119 |
|
|
120 |
Composite composite_3 = new Composite(sashForm, SWT.NONE); |
|
121 |
formToolkit.adapt(composite_3); |
|
122 |
formToolkit.paintBordersFor(composite_3); |
|
123 |
composite_3.setLayout(new GridLayout(1, false)); |
|
124 |
|
|
125 |
editor = new FeatureTreeEditor(shell); |
|
126 |
editor.createControl(composite_3, shell); |
|
127 |
|
|
128 |
// treeViewerCharacters = new TreeViewer(sashForm, SWT.BORDER); |
|
129 |
sashForm.setWeights(new int[] {3, 3, 1, 3}); |
|
130 |
|
|
131 |
init(); |
|
132 |
} |
|
133 |
|
|
134 |
private void init(){ |
|
135 |
int dndOperations = DND.DROP_COPY | DND.DROP_MOVE; |
|
136 |
Transfer[] transfers = new Transfer[] { FeatureNodeTransfer.getInstance() }; |
|
137 |
|
|
138 |
FeatureTree structureFeatureTree = CdmStore.getService(IFeatureTreeService.class).load(UUID.fromString("3a953dd1-2b5f-482f-9a33-664ee7ef6c68")); |
|
139 |
treeViewerStructures.setContentProvider(new FeatureTreeContentProvider()); |
|
140 |
treeViewerStructures.setLabelProvider(new FeatureTreeLabelProvider()); |
|
141 |
treeViewerStructures.setInput(structureFeatureTree); |
|
142 |
|
|
143 |
FeatureTree propertiesFeatureTree = CdmStore.getService(IFeatureTreeService.class).load(UUID.fromString("e283bbf5-bda3-449d-98de-3601ac8a8bbd")); |
|
144 |
treeViewerProperties.setContentProvider(new FeatureTreeContentProvider()); |
|
145 |
treeViewerProperties.setLabelProvider(new FeatureTreeLabelProvider()); |
|
146 |
treeViewerProperties.addDragSupport(dndOperations, transfers, new CharacterDragListener(treeViewerStructures, treeViewerProperties)); |
|
147 |
treeViewerProperties.setInput(propertiesFeatureTree); |
|
148 |
|
|
149 |
btnAddCharacter.addSelectionListener(new SelectionAdapter() { |
|
150 |
/** |
|
151 |
* {@inheritDoc} |
|
152 |
*/ |
|
153 |
@Override |
|
154 |
public void widgetSelected(SelectionEvent e) { |
|
155 |
ISelection structureTreeSelection = treeViewerStructures.getSelection(); |
|
156 |
ISelection propertyTreeSelection = treeViewerProperties.getSelection(); |
|
157 |
if(structureTreeSelection==null || propertyTreeSelection==null || editor.getSelectedFeatureTree()==null){ |
|
158 |
MessagingUtils.warningDialog("Cannot perform action", CharacterEditor.this, |
|
159 |
"You have to select a structure, a property and a feature tree to perform this action."); |
|
160 |
return; |
|
161 |
} |
|
162 |
FeatureNode structureNode = (FeatureNode) ((TreeSelection)structureTreeSelection).getFirstElement(); |
|
163 |
FeatureNode propertyNode = (FeatureNode) ((TreeSelection)propertyTreeSelection).getFirstElement(); |
|
164 |
String label = structureNode.getFeature().toString()+" "+propertyNode.getFeature().toString(); |
|
165 |
Character character = Character.NewInstance(structureNode, propertyNode, null, label, label); |
|
166 |
//TODO session handling |
|
167 |
// CdmStore.getService(ITermService.class).save(character); |
|
168 |
editor.addFeatures(Collections.singleton(character)); |
|
169 |
} |
|
170 |
}); |
|
171 |
|
|
172 |
// treeViewerCharacters.setContentProvider(new FeatureTreeContentProvider()); |
|
173 |
// treeViewerCharacters.setLabelProvider(new FeatureTreeLabelProvider()); |
|
174 |
// treeViewerCharacters.addDropSupport(dndOperations, transfers, new CharacterDropAdapter(treeViewerCharacters)); |
|
175 |
} |
|
176 |
|
|
177 |
@PreDestroy |
|
178 |
public void dispose() { |
|
179 |
} |
|
180 |
|
|
181 |
@Focus |
|
182 |
public void setFocus() { |
|
183 |
} |
|
184 |
|
|
185 |
public TreeViewer getTreeViewerCharacters() { |
|
186 |
return treeViewerCharacters; |
|
187 |
} |
|
188 |
public TreeViewer getTreeViewerProperties() { |
|
189 |
return treeViewerProperties; |
|
190 |
} |
|
191 |
public TreeViewer getTreeViewerStructures() { |
|
192 |
return treeViewerStructures; |
|
193 |
} |
|
194 |
} |
eu.etaxonomy.taxeditor.editor/src/main/java/eu/etaxonomy/taxeditor/editor/workingSet/FeatureTreeBuilderViewPart.java | ||
---|---|---|
1 |
// $Id$ |
|
2 |
/** |
|
3 |
* Copyright (C) 2017 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 |
package eu.etaxonomy.taxeditor.editor.workingSet; |
|
11 |
|
|
12 |
import java.util.UUID; |
|
13 |
|
|
14 |
import javax.annotation.PostConstruct; |
|
15 |
import javax.annotation.PreDestroy; |
|
16 |
import javax.inject.Named; |
|
17 |
|
|
18 |
import org.eclipse.e4.ui.di.Focus; |
|
19 |
import org.eclipse.e4.ui.services.IServiceConstants; |
|
20 |
import org.eclipse.jface.viewers.TreeViewer; |
|
21 |
import org.eclipse.swt.SWT; |
|
22 |
import org.eclipse.swt.custom.SashForm; |
|
23 |
import org.eclipse.swt.dnd.DND; |
|
24 |
import org.eclipse.swt.dnd.Transfer; |
|
25 |
import org.eclipse.swt.layout.GridData; |
|
26 |
import org.eclipse.swt.layout.GridLayout; |
|
27 |
import org.eclipse.swt.widgets.Composite; |
|
28 |
import org.eclipse.swt.widgets.Display; |
|
29 |
import org.eclipse.swt.widgets.Shell; |
|
30 |
import org.eclipse.ui.forms.widgets.FormToolkit; |
|
31 |
|
|
32 |
import eu.etaxonomy.cdm.api.service.IFeatureTreeService; |
|
33 |
import eu.etaxonomy.cdm.model.description.FeatureTree; |
|
34 |
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer; |
|
35 |
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider; |
|
36 |
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider; |
|
37 |
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor; |
|
38 |
import eu.etaxonomy.taxeditor.store.CdmStore; |
|
39 |
|
|
40 |
/** |
|
41 |
* @author pplitzner |
|
42 |
* @date 24.05.2017 |
|
43 |
* |
|
44 |
*/ |
|
45 |
public class FeatureTreeBuilderViewPart { |
|
46 |
|
|
47 |
|
|
48 |
private TreeViewer treeViewerCharacters; |
|
49 |
private TreeViewer treeViewerProperties; |
|
50 |
private TreeViewer treeViewerStructures; |
|
51 |
private FeatureTreeEditor editor; |
|
52 |
private final FormToolkit formToolkit = new FormToolkit(Display.getDefault()); |
|
53 |
|
|
54 |
public FeatureTreeBuilderViewPart() { |
|
55 |
} |
|
56 |
|
|
57 |
/** |
|
58 |
* Create contents of the view part. |
|
59 |
*/ |
|
60 |
@PostConstruct |
|
61 |
public void createControls(Composite parent, @Named(IServiceConstants.ACTIVE_SHELL)Shell shell) { |
|
62 |
parent.setLayout(new GridLayout(1, false)); |
|
63 |
|
|
64 |
SashForm sashForm = new SashForm(parent, SWT.NONE); |
|
65 |
sashForm.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1)); |
|
66 |
formToolkit.adapt(sashForm); |
|
67 |
formToolkit.paintBordersFor(sashForm); |
|
68 |
|
|
69 |
treeViewerStructures = new TreeViewer(sashForm, SWT.BORDER); |
|
70 |
|
|
71 |
treeViewerProperties = new TreeViewer(sashForm, SWT.BORDER); |
|
72 |
|
|
73 |
// editor = new FeatureTreeEditor(shell); |
|
74 |
// editor.createControl(sashForm, shell); |
|
75 |
treeViewerCharacters = new TreeViewer(sashForm, SWT.BORDER); |
|
76 |
sashForm.setWeights(new int[] {1, 1, 1}); |
|
77 |
|
|
78 |
init(); |
|
79 |
} |
|
80 |
|
|
81 |
private void init(){ |
|
82 |
int dndOperations = DND.DROP_COPY | DND.DROP_MOVE; |
|
83 |
Transfer[] transfers = new Transfer[] { FeatureNodeTransfer.getInstance() }; |
|
84 |
|
|
85 |
FeatureTree structureFeatureTree = CdmStore.getService(IFeatureTreeService.class).load(UUID.fromString("546e9c1e-d186-4e3b-838d-7e44586d1b39")); |
|
86 |
treeViewerStructures.setContentProvider(new FeatureTreeContentProvider()); |
|
87 |
treeViewerStructures.setLabelProvider(new FeatureTreeLabelProvider()); |
|
88 |
treeViewerStructures.setInput(structureFeatureTree); |
|
89 |
|
|
90 |
FeatureTree propertiesFeatureTree = CdmStore.getService(IFeatureTreeService.class).load(UUID.fromString("07543f00-1572-4ba8-b633-4fdb83fb32dd")); |
|
91 |
treeViewerProperties.setContentProvider(new FeatureTreeContentProvider()); |
|
92 |
treeViewerProperties.setLabelProvider(new FeatureTreeLabelProvider()); |
|
93 |
treeViewerProperties.addDragSupport(dndOperations, transfers, new CharacterDragListener(treeViewerStructures, treeViewerProperties)); |
|
94 |
treeViewerProperties.setInput(propertiesFeatureTree); |
|
95 |
|
|
96 |
treeViewerCharacters.setContentProvider(new FeatureTreeContentProvider()); |
|
97 |
treeViewerCharacters.setLabelProvider(new FeatureTreeLabelProvider()); |
|
98 |
treeViewerCharacters.addDropSupport(dndOperations, transfers, new CharacterDropAdapter(treeViewerCharacters)); |
|
99 |
} |
|
100 |
|
|
101 |
@PreDestroy |
|
102 |
public void dispose() { |
|
103 |
} |
|
104 |
|
|
105 |
@Focus |
|
106 |
public void setFocus() { |
|
107 |
} |
|
108 |
|
|
109 |
public TreeViewer getTreeViewerCharacters() { |
|
110 |
return treeViewerCharacters; |
|
111 |
} |
|
112 |
public TreeViewer getTreeViewerProperties() { |
|
113 |
return treeViewerProperties; |
|
114 |
} |
|
115 |
public TreeViewer getTreeViewerStructures() { |
|
116 |
return treeViewerStructures; |
|
117 |
} |
|
118 |
|
|
119 |
} |
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditor.java | ||
---|---|---|
195 | 195 |
text_title.addModifyListener(this); |
196 | 196 |
} |
197 | 197 |
|
198 |
public FeatureTree getSelectedFeatureTree(){ |
|
199 |
return this.featureTree; |
|
200 |
} |
|
201 |
|
|
198 | 202 |
/** {@inheritDoc} */ |
199 | 203 |
@Override |
200 | 204 |
public void modifyText(ModifyEvent e) { |
... | ... | |
229 | 233 |
setDirty(false); |
230 | 234 |
} |
231 | 235 |
|
236 |
/** |
|
237 |
* @param additionalFeatures |
|
238 |
*/ |
|
239 |
public void addFeatures(Collection<Feature> additionalFeatures) { |
|
240 |
IStructuredSelection selection = (IStructuredSelection) viewer.getSelection(); |
|
241 |
FeatureNode parent = (FeatureNode) (selection.getFirstElement() != null ? selection.getFirstElement() |
|
242 |
: ((FeatureTree) viewer.getInput()).getRoot()); |
|
243 |
for (Feature feature : additionalFeatures) { |
|
244 |
FeatureNode child = FeatureNode.NewInstance(feature); |
|
245 |
//TODO session handling |
|
246 |
// CdmStore.getService(IFeatureNodeService.class).merge(child, true); |
|
247 |
|
|
248 |
parent.addChild(child); |
|
249 |
} |
|
250 |
//TODO session handling |
|
251 |
// setDirty(true); |
|
252 |
viewer.refresh(); |
|
253 |
} |
|
254 |
|
|
232 | 255 |
private class AddButtonListener extends SelectionAdapter { |
233 | 256 |
@Override |
234 | 257 |
public void widgetSelected(SelectionEvent e) { |
... | ... | |
236 | 259 |
featureTree); |
237 | 260 |
WizardDialog dialog = new WizardDialog(shell, wizard); |
238 | 261 |
|
239 |
if (dialog.open() == IStatus.OK) { |
|
240 |
IStructuredSelection selection = (IStructuredSelection) viewer |
|
241 |
.getSelection(); |
|
242 |
FeatureNode parent = (FeatureNode) (selection.getFirstElement() != null ? selection |
|
243 |
.getFirstElement() : ((FeatureTree) viewer.getInput()) |
|
244 |
.getRoot()); |
|
245 |
Collection<Feature> additionalFeatures = wizard |
|
246 |
.getAdditionalFeatures(); |
|
247 |
for (Feature feature : additionalFeatures) { |
|
248 |
FeatureNode child = FeatureNode.NewInstance(feature); |
|
249 |
CdmStore.getService(IFeatureNodeService.class).merge(child, true); |
|
250 |
|
|
251 |
parent.addChild(child); |
|
252 |
} |
|
253 |
setDirty(true); |
|
254 |
viewer.refresh(); |
|
255 |
} |
|
256 |
} |
|
262 |
if (dialog.open() == IStatus.OK) { |
|
263 |
Collection<Feature> additionalFeatures = wizard.getAdditionalFeatures(); |
|
264 |
addFeatures(additionalFeatures); |
|
265 |
} |
|
266 |
} |
|
257 | 267 |
|
258 | 268 |
} |
259 | 269 |
|
Also available in: Unified diff
Integrate FeatureTreeEditor into CharacterEditor