import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
+import java.util.Iterator;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.inject.Inject;
-import javax.inject.Named;
-import org.eclipse.e4.core.di.annotations.Optional;
import org.eclipse.e4.ui.di.Focus;
import org.eclipse.e4.ui.di.Persist;
import org.eclipse.e4.ui.model.application.ui.MDirtyable;
-import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.forms.widgets.FormToolkit;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
+import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.description.Character;
import eu.etaxonomy.cdm.model.description.FeatureNode;
import eu.etaxonomy.cdm.model.description.FeatureTree;
"You have to select a structure, a property and a feature tree to perform this action.");
return;
}
- //get selected structure and property
- FeatureNode structureNode = (FeatureNode) ((TreeSelection)structureTreeSelection).getFirstElement();
- FeatureNode propertyNode = (FeatureNode) ((TreeSelection)propertyTreeSelection).getFirstElement();
- //create new Character
- String label = structureNode.getFeature().toString()+" "+propertyNode.getFeature().toString();
- Character character = Character.NewInstance(structureNode, propertyNode, null, label, label);
-
- //add new Character to feature tree
- FeatureNode parent = ((FeatureTree) characterTreeEditorComposite.getViewer().getInput()).getRoot();
- CdmStore.getService(IFeatureNodeService.class).addChildFeaturNode(parent.getUuid(), character.getUuid());
+ //get selected structures and properties
+ Iterator<FeatureNode> structureIterator = ((TreeSelection)structureTreeSelection).iterator();
+
+ //create all combinations of structures and properties
+ while(structureIterator.hasNext()){
+ FeatureNode structureNode = structureIterator.next();
+ Iterator<FeatureNode> propertiesIterator = ((TreeSelection)propertyTreeSelection).iterator();
+ while(propertiesIterator.hasNext()){
+ FeatureNode propertyNode = propertiesIterator.next();
+ //create new Character
+ String label = structureNode.getFeature().generateTitle()+" "+propertyNode.getFeature().generateTitle();
+ Character character = Character.NewInstance(structureNode, propertyNode, "", label, label);
+ character = HibernateProxyHelper.deproxy(CdmStore.getService(ITermService.class).merge(character), Character.class);
+
+ //add new Character to feature tree
+ FeatureNode parent = ((FeatureTree) characterTreeEditorComposite.getViewer().getInput()).getRoot();
+ CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(parent.getUuid(), character.getUuid());
+ }
+ }
setDirty(true);
characterTreeEditorComposite.getViewer().refresh();