Bundle-ManifestVersion: 2
Bundle-Name: Application
Bundle-SymbolicName: eu.etaxonomy.taxeditor.application;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Bundle-Activator: eu.etaxonomy.taxeditor.TaxonomicEditorPlugin
Bundle-Vendor: EDIT
Bundle-Localization: OSGI-INF/l10n/plugin
<children xsi:type="menu:HandledMenuItem" xmi:id="_35iN8B7PEeeC-JvycL9ysA" elementId="org.eclipse.ui.main.menu.window.preferences" label="%command.label.12" command="_l9kXoB7PEeeC-JvycL9ysA"/>
</children>
<children xsi:type="menu:Menu" xmi:id="_KDFiMB6tEeePLJ5to5QrXQ" elementId="org.eclipse.ui.main.menu.admin" label="%menu.label.4">
+ <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_QAx6wD8_EemTy7SLZkowuQ" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_RsV7EB-IEeeIA_2gwq7JKg" elementId="org.eclipse.ui.main.menu.admin.dbpreferences" label="%command.label.23" command="_JXXNIB-IEeeIA_2gwq7JKg">
<visibleWhen xsi:type="ui:CoreExpression" xmi:id="_ckfJUB-IEeeIA_2gwq7JKg" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
</children>
- <children xsi:type="menu:HandledMenuItem" xmi:id="_VgPDcB-IEeeIA_2gwq7JKg" elementId="org.eclipse.ui.main.menu.admin.dbrepair" label="%command.label.24" command="_LuEl0B-IEeeIA_2gwq7JKg">
- <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_06_ZIB-TEeeIA_2gwq7JKg" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
- </children>
<children xsi:type="menu:HandledMenuItem" xmi:id="_E80JgCaQEeeO2YpaECSmsg" elementId="org.eclipse.ui.main.menu.admin.import_preferences" label="Import Preferences"/>
+ <children xsi:type="menu:Menu" xmi:id="_ah5VoD8qEempU5gGjh-zOg" elementId="eu.etaxonomy.taxeditor.application.menu.RepairFunctionality" label="%command.label.24">
+ <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_0iYE4D8-EemTy7SLZkowuQ" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
+ </children>
</children>
<children xsi:type="menu:Menu" xmi:id="_MG8QUB6tEeePLJ5to5QrXQ" elementId="org.eclipse.ui.main.menu.help" label="%menu.label.2">
<children xsi:type="menu:HandledMenuItem" xmi:id="_6vgg4B6gEeePLJ5to5QrXQ" elementId="id.commandlabel16" label="%command.label.16" command="_ye6jsB6gEeePLJ5to5QrXQ"/>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_vvQmIB4JEeehWtOSgLepjA" featurename="handlers" parentElementId="xpath:/">
<elements xsi:type="commands:Handler" xmi:id="_haDmcB6eEeePLJ5to5QrXQ" elementId="eu.etaxonomy.taxeditor.OpenExternalAboutPlatformHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.application/eu.etaxonomy.taxeditor.OpenExternalAboutPlatformHandler" command="_V9LTcB6eEeePLJ5to5QrXQ"/>
<elements xsi:type="commands:Handler" xmi:id="_3wxe4B6gEeePLJ5to5QrXQ" elementId="eu.etaxonomy.taxeditor.OpenExternalParserHelpHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.application/eu.etaxonomy.taxeditor.OpenExternalParserHelpHandler" command="_ye6jsB6gEeePLJ5to5QrXQ"/>
- <elements xsi:type="commands:Handler" xmi:id="_cwy_oB-LEeeIA_2gwq7JKg" elementId="eu.etaxonomy.taxeditor.handler.OpenDatabaseRepairWizardHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.handler.OpenDatabaseRepairWizardHandler" command="_LuEl0B-IEeeIA_2gwq7JKg"/>
<elements xsi:type="commands:Handler" xmi:id="_pZ84gB-LEeeIA_2gwq7JKg" elementId="eu.etaxonomy.taxeditor.handler.OpenDatabasePreferencesWizardHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.handler.OpenDatabasePreferencesWizardHandler" command="_JXXNIB-IEeeIA_2gwq7JKg"/>
<elements xsi:type="commands:Handler" xmi:id="_fAnCkCaQEeeO2YpaECSmsg" elementId="eu.etaxonomy.taxeditor.handler.OpenImportPreferenceHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/target.classes.eu.etaxonomy.taxeditor.handler.OpenImportPreferenceHandler" command="_q1JAkCaQEeeO2YpaECSmsg"/>
</fragments>
<elements xsi:type="commands:Command" xmi:id="_l9kXoB7PEeeC-JvycL9ysA" elementId="org.eclipse.ui.window.preferences" commandName="%command.label.12"/>
<elements xsi:type="commands:Command" xmi:id="_hooiQB7QEeeC-JvycL9ysA" elementId="org.eclipse.ui.newWizard" commandName="%command.label.21"/>
<elements xsi:type="commands:Command" xmi:id="_JXXNIB-IEeeIA_2gwq7JKg" elementId="eu.etaxonomy.taxeditor.application.DatabaseSettings" commandName="%command.label.23"/>
- <elements xsi:type="commands:Command" xmi:id="_LuEl0B-IEeeIA_2gwq7JKg" elementId="eu.etaxonomy.taxeditor.application.DatabaseRepairFunctionality" commandName="%command.label.24"/>
<elements xsi:type="commands:Command" xmi:id="_q1JAkCaQEeeO2YpaECSmsg" elementId="eu.etaxonomy.taxeditor.application.ImportSettings" commandName="%command.label.25"/>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_nOhPoB9zEeeIA_2gwq7JKg" featurename="trimContributions" parentElementId="xpath:/">
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
Bundle-ManifestVersion: 2
Bundle-Name: Bulkeditor Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.bulkeditor;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Bundle-Activator: eu.etaxonomy.taxeditor.bulkeditor.internal.TaxeditorBulkeditorPlugin
Bundle-Vendor: EDIT
Export-Package: eu.etaxonomy.taxeditor.annotatedlineeditor,
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
import java.io.FileOutputStream;
import java.io.IOException;
+import java.util.List;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.bulkeditor.BulkEditorQuery;
import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
+import eu.etaxonomy.taxeditor.bulkeditor.input.GroupEditorInput;
+import eu.etaxonomy.taxeditor.bulkeditor.input.TaxonEditorInput;
import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
import eu.etaxonomy.taxeditor.model.IPartContentHasMedia;
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
getEditorInput().addSaveCandidate(changedTaxon);
input.replaceInModel(changedTaxon);
}
+ }else if(element instanceof Group){
+ Group oldGroup = ((GroupEditorInput)input).getEntityFromModel((Group)element);
+ ((GroupEditorInput)input).getSaveUserCandidates().addAll(oldGroup.getMembers());
+ getEditorInput().addSaveCandidate((Group)element);
+ input.replaceInModel((CdmBase) element);
}else{
getEditorInput().addSaveCandidate((CdmBase)element);
input.replaceInModel((CdmBase) element);
return null;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void update() {
+ input.performSearch(lastQuery, getSelection());
+ }
+
+ @Override
+ public void addOperation(AbstractPostOperation operation) {
+ // operations not yet used for bulk editor
+ }
+
+ @Inject
+ @Optional
+ private void updateView(@UIEventTopic(WorkbenchEventConstants.REFRESH_NAME_EDITOR) List<CdmBase> cdmBases) {
+ if (getEditorInput() instanceof TaxonEditorInput){
+ for (CdmBase cdmBase: cdmBases){
+ if (getEditorInput().getModel().contains(cdmBase)){
+ input.performSearch(lastQuery, getSelection());
+ break;
+ }
+ }
+ }
+ }
+
+ @Inject
+ @Optional
+ private void updatefromDelete(@UIEventTopic(WorkbenchEventConstants.REMOVE_USER) User user) {
+ if (input instanceof GroupEditorInput){
+ ((GroupEditorInput)input).getSaveUserCandidates().add(user);
+ }
+ }
+
}
List<Object> selectedObjects = new ArrayList<>();
for (Range range : selectedRowPositions) {
for(int i=range.start;i<range.end;i++){
- selectedObjects.add(bodyDataProvider.getRowObject(i));
+ if (i>=0){
+ selectedObjects.add(bodyDataProvider.getRowObject(i));
+ }
}
}
return new StructuredSelection(selectedObjects);
for (Object object : objects) {
if(object instanceof CdmBase && bulkEditor.getEditorInput().getModel().contains(object)){
+ object = bulkEditor.getEditorInput().getModel().get(bulkEditor.getEditorInput().getModel().indexOf(object));
bodyLayer.getSelectionLayer().selectRow(0, bodyDataProvider.indexOfRowObject((CdmBase) object), false, false);
}
}
RowSelectionEvent rowSelectionEvent = (RowSelectionEvent) event;
int[] fullySelectedRowPositions = rowSelectionEvent.getSelectionLayer().getFullySelectedRowPositions();
if(fullySelectedRowPositions.length==1){
- Object rowObject = bulkEditor.getBodyDataProvider().getRowObject(fullySelectedRowPositions[0]);
- bulkEditor.getSelService().setSelection(new StructuredSelection(rowObject));
+ if (fullySelectedRowPositions[0]>=0){
+ Object rowObject = bulkEditor.getBodyDataProvider().getRowObject(fullySelectedRowPositions[0]);
+ bulkEditor.getSelService().setSelection(new StructuredSelection(rowObject));
+ }
return;
}
}
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
import eu.etaxonomy.cdm.model.common.MarkerType;
+import eu.etaxonomy.cdm.persistence.dto.MergeResult;
import eu.etaxonomy.cdm.strategy.merge.IMergable;
import eu.etaxonomy.cdm.strategy.merge.MergeException;
import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
}
}
if (!saveCandidates.isEmpty()){
- CdmStore.getService(saveCandidates.iterator().next()).merge(new ArrayList<>(saveCandidates), true);
+ List<MergeResult<T>> results = CdmStore.getService(saveCandidates.iterator().next()).merge(new ArrayList<>(saveCandidates), true);
+ for (MergeResult<T> result: results){
+ if (result.getMergedEntity() != null){
+ T entitiy = result.getMergedEntity();
+ }
+
+ }
}
if(resetMerge){
//merge entities
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import java.util.UUID;
import eu.etaxonomy.cdm.api.service.IGroupService;
+import eu.etaxonomy.cdm.api.service.IUserService;
import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.persistence.query.OrderHint;
import eu.etaxonomy.cdm.persistence.query.OrderHint.SortOrder;
import eu.etaxonomy.taxeditor.annotatedlineeditor.IEntityCreator;
public static final String ID = "bulkeditor.input.group";
private static GroupEditorInput instance;
+ private Set<User> saveUserCandidates = new HashSet<>();
+
public static GroupEditorInput getInstance() {
if(instance == null){
return new GroupNameComparator();
}
+ @Override
+ public void saveModel(boolean resetMerge){
+ super.saveModel(resetMerge);
+ if (!saveUserCandidates.isEmpty()){
+ CdmStore.getService(IUserService.class).merge(new ArrayList<>(saveUserCandidates), true);
+ }
+ saveUserCandidates.clear();
+ }
+
+ public Group getEntityFromModel(Group group){
+ return this.getModel().get(this.getModel().indexOf(group));
+ }
+
+ public Set<User> getSaveUserCandidates() {
+ return saveUserCandidates;
+ }
+
+ public void setSaveUserCandidates(Set<User> saveUserCandidates) {
+ this.saveUserCandidates = saveUserCandidates;
+ }
+
+
}
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.EventBase;
import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry exported="true" kind="lib" path="lib/docx4j-6.0.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-math3-3.6.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.swtchart_0.10.0.v20160212.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/redmine-java-api-3.1.0.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src/main/resources"/>
<classpathentry kind="src" path="src/main/java"/>
- <classpathentry exported="true" kind="lib" path="lib/activation-1.1.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/apache-log4j-extras-1.2.17.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/aspectjrt-1.8.8.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/aspectjweaver-1.8.8.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-xml-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-commons-5.5.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-ext-5.5.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-io-5.5.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-5.5.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-5.5.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-print-5.5.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-5.5.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-cache-5.5.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-services-5.5.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-test-5.5.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/com.springsource.org.aopalliance-1.0.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/com.springsource.org.apache.commons.logging-1.1.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.9.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-codec-1.10.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-collections-3.2.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-csv-1.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-dbcp-1.4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-io-2.4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-lang-2.6.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-lang3-3.3.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-logging-1.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-pool-1.5.4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/dbunit-2.4.9.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/dom4j-1.6.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/dozer-5.3.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/dtd-parser-1.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/ehcache-core-2.6.11.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/ezmorph-1.0.6.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/google-api-translate-java-0.92.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/h2-1.4.190.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/h2mig_pagestore_addon.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hamcrest-core-1.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-c3p0-5.0.7.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-cglib-repack-2.1_3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-commons-annotations-5.0.1.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-core-5.0.7.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-ehcache-5.0.7.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-entitymanager-5.0.7.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-envers-5.0.7.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-jpa-2.1-api-1.0.0.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-search-4.2.0.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-search-analyzers-4.2.0.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-search-engine-5.5.2.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-search-orm-5.5.2.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-validator-5.2.2.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-validator-cdi-5.2.2.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hsqldb-2.3.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/httpclient-4.5.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/httpclient-cache-4.2.6.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/httpcore-4.4.4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/httpmime-4.5.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/icu4j-2.6.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/identificationKeyAPI-1.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/itextpdf-5.5.8.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jackson-annotations-2.6.5.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jackson-core-2.6.5.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jboss-logging-3.3.0.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jdom-1.1.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jdom2-2.0.6.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/joda-time-2.9.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/log4j-1.2.17.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lsid-client-1.1.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/sanselan-0.97-incubator.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-aop-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-aspects-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-beans-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-context-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-context-support-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-core-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-expression-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-jdbc-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-modules-cache-0.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-orm-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-oxm-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-plugin-core-1.2.0.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-plugin-metadata-1.2.0.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-security-config-4.0.3.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-security-core-4.0.3.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-security-web-4.0.3.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-test-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-tx-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-web-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-webmvc-4.2.4.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/springfox-core-2.3.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/springfox-schema-2.3.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/springfox-spi-2.3.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/springfox-spring-web-2.3.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/springfox-swagger-common-2.3.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/springfox-swagger2-2.3.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/standard-1.1.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/tools.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/txw2-2.2.11.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/usertype.jodatime-2.0.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/usertype.spi-2.0.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/validation-api-1.1.0.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/wsdl4j-1.6.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xalan-2.7.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xercesImpl-2.11.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xml-apis-1.0.b2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xml-apis-ext-1.3.04.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xml-resolver-1.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xmlbeans-2.6.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xmlgraphics-commons-1.5.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xmlpull-1.1.3.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xmlunit-1.6.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xom-1.2.5.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xpp3_min-1.1.4c.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xpp3-1.1.4c.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xsom-20140925.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xstream-1.4.8.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/yjp-controller-api-redist-9.0.8.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-security-oauth2-2.0.11.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/opencsv-2.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jdbc4-2.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/junit-4.12.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jackson-databind-2.6.5.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jackson-core-asl-1.8.8.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jackson-mapper-asl-1.8.8.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jakarta-regexp-1.4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jandex-2.0.0.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/javassist-3.20.0-GA.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/javax.el-2.2.6.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/javax.el-api-2.2.5.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/javax.servlet-api-3.1.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jaxb-api-2.2.12.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jaxb-core-2.2.11.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jaxb-jxc-2.2.11.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jaxb-runtime-2.2.11.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jaxb-xjc-2.2.11.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jaxb1-impl-2.2-EA.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jaxen-1.1.4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jaxen-1.1.6.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jboss-transaction-api_1.1_spec-1.0.0.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jcl-over-slf4j-1.7.6.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jena-arq-2.13.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jena-core-2.13.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jena-iri-1.1.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jena-tdb-1.1.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/json-20090211.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/json-lib-2.4-jdk15.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jsonld-java-0.5.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jsr250-api-1.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jta-1.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jtds-1.3.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/junit-benchmarks-0.7.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-dom-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-anim-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-awt-util-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-bridge-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-css-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-ext-1.8.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-extension-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-gvt-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-js-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-parser-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-script-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-svg-dom-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-svggen-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-transcoder-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-util-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/c3p0-0.9.5.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.7.13.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/slf4j-log4j12-1.7.13.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/slf4j-nop-1.7.13.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/antlr-2.7.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/aopalliance-1.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/avro-1.6.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cglib-3.2.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cglib-nodep-3.2.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/classmate-1.3.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/codemodel-2.2.11.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/concurrent-1.3.4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/easymock-2.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/easymockclassextension-2.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/FastInfoset-1.2.13.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/fop-1.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/guava-19.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/libthrift-0.9.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lsid-server-1.1.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/mapstruct-1.0.0.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/mchange-commons-java-0.2.11.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/mysql-connector-java-5.1.38.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/objenesis-1.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/odfdom-0.8.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/odfdom-java-0.8.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/ognl-2.6.9.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/paranamer-2.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/poi-3.13.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-3.13.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-schemas-3.13.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/postgresql-9.4-1206-jdbc4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/relaxngDatatype-20020414.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/rngom-2.2.11.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/Saxon-HE-9.7.0-2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/servlet-api-2.5.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/snappy-java-1.0.4.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/solr-analysis-extras-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/solr-core-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/solr-solrj-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-core-3.4.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-database-3.4.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-dbmaintainer-3.4.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-dbunit-3.4.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-easymock-3.4.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-inject-3.4.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-mock-3.4.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-orm-3.4.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-spring-3.4.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-core-5.4.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/istack-commons-runtime-2.21.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/istack-commons-tools-2.21.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-queryparser-5.4.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-analyzers-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-analyzers-common-5.4.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-sandbox-5.4.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-suggest-5.4.1.jar"/>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Bundle-ManifestVersion: 2
Bundle-Name: CDM Library Dependencies Plugin
Bundle-SymbolicName: eu.etaxonomy.taxeditor.cdmlib;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Eclipse-BundleShape: dir
Export-Package: com.google.api,
com.google.api.detect,
eu.etaxonomy.cdm.model,
eu.etaxonomy.cdm.model.agent,
eu.etaxonomy.cdm.model.common,
- eu.etaxonomy.cdm.model.common.init,
eu.etaxonomy.cdm.model.description,
eu.etaxonomy.cdm.model.location,
eu.etaxonomy.cdm.model.media,
eu.etaxonomy.cdm.model.occurrence,
eu.etaxonomy.cdm.model.reference,
eu.etaxonomy.cdm.model.taxon,
+ eu.etaxonomy.cdm.model.term,
+ eu.etaxonomy.cdm.model.term.init,
eu.etaxonomy.cdm.model.validation,
eu.etaxonomy.cdm.model.view,
eu.etaxonomy.cdm.model.view.context,
eu.etaxonomy.cdm.persistence.dao.hibernate.occurrence,
eu.etaxonomy.cdm.persistence.dao.hibernate.reference,
eu.etaxonomy.cdm.persistence.dao.hibernate.taxon,
+ eu.etaxonomy.cdm.persistence.dao.hibernate.term,
eu.etaxonomy.cdm.persistence.dao.hibernate.view,
eu.etaxonomy.cdm.persistence.dao.media,
eu.etaxonomy.cdm.persistence.dao.name,
eu.etaxonomy.cdm.persistence.dao.occurrence,
eu.etaxonomy.cdm.persistence.dao.reference,
eu.etaxonomy.cdm.persistence.dao.taxon,
+ eu.etaxonomy.cdm.persistence.dao.term,
eu.etaxonomy.cdm.persistence.dao.validation,
eu.etaxonomy.cdm.persistence.dto,
eu.etaxonomy.cdm.persistence.fetch,
org.hibernate.engine.spi,
org.hibernate.engine.transaction.spi,
org.hibernate.envers.query.criteria,
+ org.hibernate.envers.tools,
org.hibernate.internal,
org.hibernate.internal.util,
org.hibernate.internal.util.collections,
lib/aspectjrt-1.8.8.jar,
lib/aspectjweaver-1.8.8.jar,
lib/batik-xml-1.7.jar,
- lib/cdmlib-commons-5.5.1.jar,
- lib/cdmlib-ext-5.5.1.jar,
- lib/cdmlib-io-5.5.1.jar,
- lib/cdmlib-model-5.5.1.jar,
- lib/cdmlib-persistence-5.5.1.jar,
- lib/cdmlib-print-5.5.1.jar,
- lib/cdmlib-remote-5.5.1.jar,
- lib/cdmlib-cache-5.5.1.jar,
- lib/cdmlib-services-5.5.1.jar,
- lib/cdmlib-test-5.5.1.jar,
+ lib/cdmlib-commons-5.6.0.jar,
+ lib/cdmlib-ext-5.6.0.jar,
+ lib/cdmlib-io-5.6.0.jar,
+ lib/cdmlib-model-5.6.0.jar,
+ lib/cdmlib-persistence-5.6.0.jar,
+ lib/cdmlib-print-5.6.0.jar,
+ lib/cdmlib-remote-5.6.0.jar,
+ lib/cdmlib-cache-5.6.0.jar,
+ lib/cdmlib-services-5.6.0.jar,
+ lib/cdmlib-test-5.6.0.jar,
lib/com.springsource.org.aopalliance-1.0.0.jar,
lib/com.springsource.org.apache.commons.logging-1.1.1.jar,
lib/commons-beanutils-1.9.2.jar,
lib/lsid-server-1.1.2.jar,
lib/mapstruct-1.0.0.Final.jar,
lib/mchange-commons-java-0.2.11.jar,
- lib/mysql-connector-java-5.1.38.jar,
lib/objenesis-1.2.jar,
lib/odfdom-0.8.jar,
lib/odfdom-java-0.8.7.jar,
lib/redmine-java-api-3.1.0.jar,
lib/org.swtchart_0.10.0.v20160212.jar,
lib/commons-math3-3.6.1.jar,
- lib/docx4j-6.0.1.jar
+ lib/docx4j-6.0.1.jar,
+ lib/mysql-connector-java-8.0.15.jar
Import-Package: eu.etaxonomy.cdm.api.application
bin.includes = META-INF/,\
.,\
- resources/cdm.map.ser,\
lib/activation-1.1.1.jar,\
lib/apache-log4j-extras-1.2.17.jar,\
lib/aspectjrt-1.8.8.jar,\
lib/aspectjweaver-1.8.8.jar,\
lib/batik-xml-1.7.jar,\
- lib/cdmlib-commons-5.5.1.jar,\
- lib/cdmlib-ext-5.5.1.jar,\
- lib/cdmlib-io-5.5.1.jar,\
- lib/cdmlib-model-5.5.1.jar,\
- lib/cdmlib-persistence-5.5.1.jar,\
- lib/cdmlib-print-5.5.1.jar,\
- lib/cdmlib-remote-5.5.1.jar,\
- lib/cdmlib-services-5.5.1.jar,\
- lib/cdmlib-test-5.5.1.jar,\
+ lib/cdmlib-commons-5.6.0.jar,\
+ lib/cdmlib-ext-5.6.0.jar,\
+ lib/cdmlib-io-5.6.0.jar,\
+ lib/cdmlib-model-5.6.0.jar,\
+ lib/cdmlib-persistence-5.6.0.jar,\
+ lib/cdmlib-print-5.6.0.jar,\
+ lib/cdmlib-remote-5.6.0.jar,\
+ lib/cdmlib-services-5.6.0.jar,\
+ lib/cdmlib-test-5.6.0.jar,\
lib/com.springsource.org.aopalliance-1.0.0.jar,\
lib/com.springsource.org.apache.commons.logging-1.1.1.jar,\
lib/commons-beanutils-1.9.2.jar,\
lib/lsid-server-1.1.2.jar,\
lib/mapstruct-1.0.0.Final.jar,\
lib/mchange-commons-java-0.2.11.jar,\
- lib/mysql-connector-java-5.1.38.jar,\
lib/objenesis-1.2.jar,\
lib/odfdom-0.8.jar,\
lib/odfdom-java-0.8.7.jar,\
lib/lucene-analyzers-common-5.4.1.jar,\
lib/lucene-sandbox-5.4.1.jar,\
lib/lucene-suggest-5.4.1.jar,\
- lib/cdmlib-cache-5.5.1.jar,\
+ lib/cdmlib-cache-5.6.0.jar,\
lib/redmine-java-api-3.1.0.jar,\
lib/org.swtchart_0.10.0.v20160212.jar,\
lib/commons-math3-3.6.1.jar,\
- lib/docx4j-6.0.1.jar
+ lib/docx4j-6.0.1.jar,\
+ lib/mysql-connector-java-8.0.15.jar
jars.compile.order = .
output.. = bin/
<parent>\r
<groupId>eu.etaxonomy</groupId>\r
<artifactId>taxeditor-parent</artifactId>\r
- <version>5.5.1</version>\r
+ <version>5.6.0</version>\r
</parent>\r
<modelVersion>4.0.0</modelVersion>\r
<artifactId>eu.etaxonomy.taxeditor.cdmlib</artifactId>\r
import eu.etaxonomy.cdm.cache.CacheLoader;
import eu.etaxonomy.cdm.cache.CdmEntityCacheKey;
import eu.etaxonomy.cdm.cache.CdmTransientEntityCacher;
-import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.config.ConfigFileUtil;
import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermBase;
import eu.etaxonomy.taxeditor.service.TermServiceRequestExecutor;
import eu.etaxonomy.taxeditor.session.CdmEntitySession;
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
EhCacheConfiguration cacheConfig = new EhCacheConfiguration();
DiskStoreConfiguration diskStoreConfiguration = new DiskStoreConfiguration();
- File ehcacheFolder = CdmUtils.getCdmHomeSubDir("taxeditor-ehcache");
+ File ehcacheFolder;
+ try {
+ ehcacheFolder = ConfigFileUtil.getCdmHomeSubDir("taxeditor-ehcache");
+ } catch (Exception e){
+ ehcacheFolder = ConfigFileUtil.getCdmHomeSubDirFallback("taxeditor-ehcache");
+ }
+
// FIXME use subfolder per taxeditor version to allow running multiple installations in parallel
// String taxEditorVersion = ..;
// File ehcacheFolder = new File(ehcacheFolder, taxEditorVersion);
private ICommonService commonService;
public CdmLazyLoader() {
- //classesToIgnore.add("eu.etaxonomy.cdm.model.common.TermVocabulary");
- //classesToIgnore.add("eu.etaxonomy.cdm.model.common.OrderedTermVocabulary");
+ //classesToIgnore.add("eu.etaxonomy.cdm.model.term.TermVocabulary");
+ //classesToIgnore.add("eu.etaxonomy.cdm.model.term.OrderedTermVocabulary");
}
import org.json.JSONException;
import org.json.JSONObject;
-import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.type.TypeReference;
-import com.fasterxml.jackson.databind.JsonMappingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
-import eu.etaxonomy.cdm.common.CdmUtils;
import eu.etaxonomy.cdm.config.CdmSourceException;
+import eu.etaxonomy.cdm.config.ConfigFileUtil;
import eu.etaxonomy.cdm.database.CdmPersistentDataSource;
import eu.etaxonomy.cdm.database.ICdmDataSource;
import eu.etaxonomy.cdm.model.metadata.CdmMetaData;
}
public void updateInfo() throws CDMServerException {
- String url ;
- if (this.isLocalhost()){
- url = "http://localhost:58080/cdmserver/" + "info.jsp";
- }else{
- url = "http://" + server + ":" + String.valueOf(port) + "/" + prefix + "info.jsp";
- }
+ String url = "http://" + server + ":" + String.valueOf(port) + "/" + prefix + "info.jsp";
String responseBody = getResponse(url);
if(responseBody != null) {
try {
public void addInstancesViaHttp() throws CDMServerException {
updateInfo();
- String url;
- if (this.isLocalhost()){
- url = "http://localhost:58080" + "instances.jsp";
- }else{
- url = "http://" + server + ":" + String.valueOf(port) + "/" + prefix + "instances.jsp";
- }
+ String url = "http://" + server + ":" + String.valueOf(port) + "/" + prefix + "instances.jsp";
String responseBody = getResponse(url);
if(responseBody != null) {
try {
public static List<CdmServerInfo> getCdmServers() {
- List<CdmServerInfoConfig> configList = loadFromConfigFile(new File(CdmUtils.PER_USER_CDM_FOLDER, CDM_REMOTE_SERVERS_CONFIG_FILE));
+ List<CdmServerInfoConfig> configList;
+ File file = new File(ConfigFileUtil.perUserCdmFolder(), CDM_REMOTE_SERVERS_CONFIG_FILE);
+ if (file.exists()){
+ configList = loadFromConfigFile(file);
+ }else{
+ configList = loadFromConfigFile(new File(ConfigFileUtil.perUserCdmFolderFallback(), CDM_REMOTE_SERVERS_CONFIG_FILE));
+ }
List<CdmServerInfo> serverInfoList = new ArrayList<CdmServerInfo>(configList.size());
for(CdmServerInfoConfig config : configList) {
serverInfoList.add(new CdmServerInfo(config));
import org.springframework.remoting.support.RemoteInvocationResult;
import eu.etaxonomy.cdm.api.cache.CdmServiceCacher;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
public class TermServiceRequestExecutor extends CdmServiceRequestExecutor {
+++ /dev/null
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
-
-<hibernate-configuration>
- <session-factory>
-
- <property name="connection.release_mode">after_transaction</property>
-
- <property name="hibernate.implicit_naming_strategy">org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl</property>
- <!-- NOTE: if integrated in spring this is handled there (see persistence.xml) -->
-
- <!-- Connection Pooling -->
-<!-- <property name="hibernate.connection.provider_class">org.hibernate.service.jdbc.connections.internal.C3P0ConnectionProvider</property> -->
-<!-- <property name="hibernate.connection.provider_class">org.hibernate.engine.jdbc.connections.internal.DatasourceConnectionProviderImpl</property> -->
- <property name="hibernate.connection.provider_class">eu.etaxonomy.taxeditor.remoting.cache.CdmModelCacherConnectionProvider</property>
-
- <!--
- Configuring the C3P0ConnectionProvider
- ========================================
- see http://www.mchange.com/projects/c3p0/index.html#hibernate-specific
- and also org.springframework.orm.hibernate3.AbstractSessionFactoryBean.setDataSource(DataSource dataSource)
-
- IMPORTANT:
- Because of the constraint (1) the org.hibernate.connection.C3P0ConnectionProvider are not be used
- for the Cdm Library because it requires the dataSource bean in some cases.
-
- (1)
- Do NOT specify the dataSource in the sessionFactory for example in the
- org.springframework.orm.hibernate3.LocalSessionFactoryBean
- !!!==> If *dataSource* is set, this will override corresponding settings in Hibernate properties.!!!
- If this is set, the Hibernate settings should not define a connection provider to
- avoid meaningless double configuration.
- (2)
- Hibernate uses the hibernate.c3p0.max_size property to determine if c3p0
- is beeing used. Therefore the max_size property MUST be set. - maybe not need in hibernate 3.4 +
-
- (3) If you are using Hibernate's C3P0ConnectionProvider you must set the following properties
- in your hibernate configuration, using hibernate-specific configuration keys.
- All other properties must be defined as usual in a c3p0.properties file.
- This is confusing, and will hopefully be simplified some time in the future, but for now...
-
- DOCUMENTATION UPDATE (2015-05-22):
- Hibernate's C3P0ConnectionProvider renames 7 c3p0 configuration properties, which,
- if set in your hibernate configuration, will override any configuration you may have set
- in a c3p0.properties file.
- TODO: are points (2) and (3) still valid? I don't think so! (AK)
-
- hibernate.c3p0.acquire_increment
- hibernate.c3p0.idle_test_period
- hibernate.c3p0.timeout
- hibernate.c3p0.max_size
- hibernate.c3p0.max_statements
- hibernate.c3p0.min_size
- hibernate.c3p0.validate
- -->
- <mapping package="eu.etaxonomy.cdm.model.common"/>
- <!-- Annotation Package -->
- <mapping class="eu.etaxonomy.cdm.model.agent.Address"/>
- <mapping class="eu.etaxonomy.cdm.model.agent.AgentBase"/>
- <mapping class="eu.etaxonomy.cdm.model.agent.Contact"/>
- <mapping class="eu.etaxonomy.cdm.model.agent.Institution"/>
- <mapping class="eu.etaxonomy.cdm.model.agent.InstitutionalMembership"/>
- <mapping class="eu.etaxonomy.cdm.model.agent.Person"/>
- <mapping class="eu.etaxonomy.cdm.model.agent.Team"/>
- <mapping class="eu.etaxonomy.cdm.model.agent.TeamOrPersonBase"/>
- <!-- Common Package -->
- <mapping class="eu.etaxonomy.cdm.model.common.Annotation"/>
- <mapping class="eu.etaxonomy.cdm.model.common.AnnotationType"/>
- <mapping class="eu.etaxonomy.cdm.model.common.Credit"/>
- <mapping class="eu.etaxonomy.cdm.model.common.DefinedTerm"/>
- <mapping class="eu.etaxonomy.cdm.model.common.DefinedTermBase"/>
- <mapping class="eu.etaxonomy.cdm.model.common.Extension"/>
- <mapping class="eu.etaxonomy.cdm.model.common.ExtensionType"/>
- <mapping class="eu.etaxonomy.cdm.model.common.IdentifiableSource"/>
- <mapping class="eu.etaxonomy.cdm.model.common.Identifier"/>
- <mapping class="eu.etaxonomy.cdm.model.common.IntextReference"/>
- <mapping class="eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl"/>
- <mapping class="eu.etaxonomy.cdm.model.common.Group"/>
- <mapping class="eu.etaxonomy.cdm.model.common.Language"/>
- <mapping class="eu.etaxonomy.cdm.model.common.LanguageString"/>
- <mapping class="eu.etaxonomy.cdm.model.common.LSID"/>
- <mapping class="eu.etaxonomy.cdm.model.common.LSIDAuthority"/>
- <mapping class="eu.etaxonomy.cdm.model.common.Marker"/>
- <mapping class="eu.etaxonomy.cdm.model.common.MarkerType"/>
- <mapping class="eu.etaxonomy.cdm.model.common.OrderedTerm"/>
- <mapping class="eu.etaxonomy.cdm.model.common.OrderedTermBase"/>
- <mapping class="eu.etaxonomy.cdm.model.common.OrderedTermVocabulary"/>
- <mapping class="eu.etaxonomy.cdm.model.common.OriginalSourceBase"/>
- <mapping class="eu.etaxonomy.cdm.model.common.RelationshipTermBase"/>
- <mapping class="eu.etaxonomy.cdm.model.common.Representation"/>
- <mapping class="eu.etaxonomy.cdm.model.common.TermVocabulary"/>
- <mapping class="eu.etaxonomy.cdm.model.common.User"/>
- <!-- Description Package -->
- <mapping class="eu.etaxonomy.cdm.model.description.CategoricalData"/>
- <mapping class="eu.etaxonomy.cdm.model.description.CommonTaxonName"/>
- <mapping class="eu.etaxonomy.cdm.model.description.DescriptionBase"/>
- <mapping class="eu.etaxonomy.cdm.model.description.DescriptionElementBase"/>
- <mapping class="eu.etaxonomy.cdm.model.description.DescriptionElementSource"/>
- <mapping class="eu.etaxonomy.cdm.model.description.Distribution"/>
- <mapping class="eu.etaxonomy.cdm.model.description.Feature"/>
- <mapping class="eu.etaxonomy.cdm.model.description.Character"/>
- <mapping class="eu.etaxonomy.cdm.model.description.FeatureNode"/>
- <mapping class="eu.etaxonomy.cdm.model.description.FeatureTree"/>
- <mapping class="eu.etaxonomy.cdm.model.description.KeyStatement"/>
- <mapping class="eu.etaxonomy.cdm.model.description.MediaKey"/>
- <mapping class="eu.etaxonomy.cdm.model.description.IndividualsAssociation"/>
- <mapping class="eu.etaxonomy.cdm.model.description.MeasurementUnit"/>
- <mapping class="eu.etaxonomy.cdm.model.description.MultiAccessKey"/>
- <mapping class="eu.etaxonomy.cdm.model.description.PolytomousKey"/>
- <mapping class="eu.etaxonomy.cdm.model.description.PolytomousKeyNode"/>
- <mapping class="eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm"/>
- <mapping class="eu.etaxonomy.cdm.model.description.QuantitativeData"/>
- <mapping class="eu.etaxonomy.cdm.model.description.SpecimenDescription"/>
- <mapping class="eu.etaxonomy.cdm.model.description.State"/>
- <mapping class="eu.etaxonomy.cdm.model.description.StateData"/>
- <mapping class="eu.etaxonomy.cdm.model.description.StatisticalMeasure"/>
- <mapping class="eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue"/>
- <mapping class="eu.etaxonomy.cdm.model.description.TaxonDescription"/>
- <mapping class="eu.etaxonomy.cdm.model.description.TaxonInteraction"/>
- <mapping class="eu.etaxonomy.cdm.model.description.TaxonNameDescription"/>
- <mapping class="eu.etaxonomy.cdm.model.description.TextData"/>
- <mapping class="eu.etaxonomy.cdm.model.description.TextFormat"/>
- <mapping class="eu.etaxonomy.cdm.model.description.DescriptiveDataSet"/>
- <!-- Location Package -->
- <mapping class="eu.etaxonomy.cdm.model.location.NamedArea"/>
- <mapping class="eu.etaxonomy.cdm.model.location.NamedAreaLevel"/>
- <mapping class="eu.etaxonomy.cdm.model.location.NamedAreaType"/>
- <mapping class="eu.etaxonomy.cdm.model.location.ReferenceSystem"/>
- <mapping class="eu.etaxonomy.cdm.model.location.Point"/>
- <mapping class="eu.etaxonomy.cdm.model.location.Country"/>
- <!-- Media Package -->
- <mapping class="eu.etaxonomy.cdm.model.media.AudioFile"/>
- <mapping class="eu.etaxonomy.cdm.model.media.ImageFile"/>
- <mapping class="eu.etaxonomy.cdm.model.media.Media"/>
- <mapping class="eu.etaxonomy.cdm.model.media.MediaRepresentation"/>
- <mapping class="eu.etaxonomy.cdm.model.media.MediaRepresentationPart"/>
- <mapping class="eu.etaxonomy.cdm.model.media.MovieFile"/>
- <mapping class="eu.etaxonomy.cdm.model.media.Rights"/>
- <mapping class="eu.etaxonomy.cdm.model.media.RightsType"/>
- <!-- Meta Data Package -->
- <mapping class="eu.etaxonomy.cdm.model.metadata.CdmMetaData"/>
- <mapping class="eu.etaxonomy.cdm.model.metadata.CdmPreference"/>
- <!-- Molecular Package -->
- <mapping class="eu.etaxonomy.cdm.model.molecular.PhylogeneticTree"/>
- <mapping class="eu.etaxonomy.cdm.model.molecular.DnaQuality"/>
- <mapping class="eu.etaxonomy.cdm.model.molecular.DnaSample"/>
- <mapping class="eu.etaxonomy.cdm.model.molecular.Amplification"/>
- <mapping class="eu.etaxonomy.cdm.model.molecular.AmplificationResult"/>
- <mapping class="eu.etaxonomy.cdm.model.molecular.Primer"/>
- <mapping class="eu.etaxonomy.cdm.model.molecular.Sequence"/>
- <mapping class="eu.etaxonomy.cdm.model.molecular.SequenceString"/>
- <mapping class="eu.etaxonomy.cdm.model.molecular.SingleRead"/>
- <mapping class="eu.etaxonomy.cdm.model.molecular.SingleReadAlignment"/>
- <mapping class="eu.etaxonomy.cdm.model.molecular.Cloning"/>
- <!-- Name Package -->
- <mapping class="eu.etaxonomy.cdm.model.name.HomotypicalGroup"/>
- <mapping class="eu.etaxonomy.cdm.model.name.HybridRelationship"/>
- <mapping class="eu.etaxonomy.cdm.model.name.HybridRelationshipType"/>
- <mapping class="eu.etaxonomy.cdm.model.name.NameRelationship"/>
- <mapping class="eu.etaxonomy.cdm.model.name.NameRelationshipType"/>
- <mapping class="eu.etaxonomy.cdm.model.name.NameTypeDesignation"/>
- <mapping class="eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus"/>
- <mapping class="eu.etaxonomy.cdm.model.name.NomenclaturalCode"/>
- <mapping class="eu.etaxonomy.cdm.model.name.NomenclaturalStatus"/>
- <mapping class="eu.etaxonomy.cdm.model.name.NomenclaturalStatusType"/>
- <mapping class="eu.etaxonomy.cdm.model.name.Rank"/>
- <mapping class="eu.etaxonomy.cdm.model.name.Registration"/>
- <mapping class="eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation"/>
- <mapping class="eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus"/>
- <mapping class="eu.etaxonomy.cdm.model.name.TaxonName"/>
- <mapping class="eu.etaxonomy.cdm.model.name.TypeDesignationBase"/>
-
- <!-- Occurrence Package -->
- <mapping class="eu.etaxonomy.cdm.model.occurrence.Collection"/>
- <mapping class="eu.etaxonomy.cdm.model.occurrence.DerivationEvent"/>
- <mapping class="eu.etaxonomy.cdm.model.occurrence.DerivationEventType"/>
- <mapping class="eu.etaxonomy.cdm.model.occurrence.DerivedUnit"/>
- <mapping class="eu.etaxonomy.cdm.model.occurrence.MaterialOrMethodEvent"/>
- <mapping class="eu.etaxonomy.cdm.model.occurrence.MediaSpecimen"/>
- <mapping class="eu.etaxonomy.cdm.model.occurrence.DeterminationEvent"/>
- <mapping class="eu.etaxonomy.cdm.model.occurrence.FieldUnit"/>
- <mapping class="eu.etaxonomy.cdm.model.occurrence.GatheringEvent"/>
- <mapping class="eu.etaxonomy.cdm.model.occurrence.PreservationMethod"/>
- <mapping class="eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase"/>
- <!-- Reference Package -->
- <mapping class="eu.etaxonomy.cdm.model.reference.Reference"/>
-
- <!-- Taxon Package -->
- <mapping class="eu.etaxonomy.cdm.model.taxon.Synonym"/>
- <mapping class="eu.etaxonomy.cdm.model.taxon.SynonymType"/>
- <mapping class="eu.etaxonomy.cdm.model.taxon.Taxon"/>
- <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonBase"/>
- <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonNode"/>
- <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation"/>
- <mapping class="eu.etaxonomy.cdm.model.taxon.Classification"/>
- <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonRelationship"/>
- <mapping class="eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType"/>
-
- <!-- Validation Package -->
- <mapping class="eu.etaxonomy.cdm.model.validation.EntityValidation"/>
- <mapping class="eu.etaxonomy.cdm.model.validation.EntityConstraintViolation"/>
-
- <!-- View Package -->
- <mapping class="eu.etaxonomy.cdm.model.view.AuditEvent"/>
-
- <!-- for filling caches -->
- <!-- since hibernate 4 listeners are not handled via hibernate.cfg.xml anymore -->
- <!-- http://stackoverflow.com/questions/8616146/eventlisteners-using-hibernate-4-0-with-spring-3-1-0-release
- https://community.jboss.org/wiki/HibernateCoreMigrationGuide40 -->
-
- </session-factory>
-</hibernate-configuration>
\ No newline at end of file
Bundle-ManifestVersion: 2
Bundle-Name: Editor Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.editor;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Bundle-Activator: eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin
Bundle-Vendor: %Bundle-Vendor.0
Bundle-Localization: OSGI-INF/l10n/plugin
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
package eu.etaxonomy.taxeditor.editor;
import java.util.Collection;
+import java.util.HashSet;
import java.util.UUID;
import org.eclipse.core.commands.ExecutionEvent;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4;
+import eu.etaxonomy.taxeditor.bulkeditor.input.TaxonEditorInput;
import eu.etaxonomy.taxeditor.editor.descriptiveDataSet.DescriptiveDataSetEditor;
import eu.etaxonomy.taxeditor.editor.descriptiveDataSet.matrix.CharacterMatrixPart;
import eu.etaxonomy.taxeditor.editor.e4.TaxonEditorInputE4;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
/**
* Utility for the editor package
editor.setFocus();
}
- public static MPart checkForChanges(UUID taxonUUID, EPartService partService ){
+ public static Collection<MPart> checkForChanges(UUID taxonUUID, EPartService partService ){
Collection<MPart> parts = partService.getParts();
+ Collection<MPart> dirtyParts = new HashSet();
//check if part is already opened
boolean isDirty = false;
for (MPart part : parts) {
&& ((TaxonNameEditorE4) part.getObject()).getTaxon()!=null
&& ((TaxonNameEditorE4) part.getObject()).getTaxon().getUuid().equals(taxonUUID)){
if (part.isDirty()){
- return part;
+ dirtyParts.add(part);
}
break;
+ }else if (taxonUUID == null){
+ if (part.isDirty()){
+ dirtyParts.add(part);
+ }
}
}
- return null;
+ return dirtyParts;
+ }
+
+ public static Collection<IE4SavablePart> checkForTaxonChanges(UUID taxonUUID, EPartService partService ){
+ Collection<MPart> parts = partService.getParts();
+ Collection<IE4SavablePart> dirtyParts = new HashSet<>();
+ //check if part is already opened
+ for (MPart part : parts) {
+ if(part.getObject() instanceof TaxonNameEditorE4
+ && ((TaxonNameEditorE4) part.getObject()).getTaxon()!=null
+ && ((TaxonNameEditorE4) part.getObject()).getTaxon().getUuid().equals(taxonUUID)){
+ if (part.isDirty()){
+ dirtyParts.add((IE4SavablePart) part);
+ }
+
+ break;
+ }else if (taxonUUID == null){
+ if (part.isDirty() && (part.getObject() instanceof TaxonNameEditorE4 || (part.getObject() instanceof BulkEditorE4 && ((BulkEditorE4)part.getObject()).getEditorInput() instanceof TaxonEditorInput))){
+ dirtyParts.add((IE4SavablePart) part);
+ }
+ }
+ }
+ return dirtyParts;
}
/**
}
}
+
}
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.description.Character;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.cdm.model.name.Rank;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.cdm.remote.l10n.TermRepresentation_L10n;
private Text txtDescriptiveDataSet;
private TermUuidComboViewer comboRankMin;
private TermUuidComboViewer comboRankMax;
- private FeatureTreeEditorComposite featureTreeEditorComposite;
+ private FeatureTreeEditorComposite<Character> featureTreeEditorComposite;
private TreeViewer taxonNodeTree;
private List<TermDto> areas = new ArrayList<>();
private Text textAreaText;
btnChooseArea = new Button(composite, SWT.NONE);
btnChooseArea.setImage(ImageResources.getImage(ImageResources.BROWSE_ICON));
- featureTreeEditorComposite = new FeatureTreeEditorComposite(this, SWT.NONE);
+ featureTreeEditorComposite = new FeatureTreeEditorComposite<Character>(this, SWT.NONE);
featureTreeEditorComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2, 1));
}
comboRankMax.setElement(max);
}
- public FeatureTreeEditorComposite getFeatureTreeEditorComposite() {
+ public FeatureTreeEditorComposite<Character> getFeatureTreeEditorComposite() {
return featureTreeEditorComposite;
}
- public FeatureTree getCharacters(){
+ public FeatureTree<Character> getCharacters(){
return featureTreeEditorComposite.getFeatureTree();
}
- public void setCharacters(FeatureTree characters) {
+ public void setCharacters(FeatureTree<Character> characters) {
featureTreeEditorComposite.setSelectedTree(characters);
}
import eu.etaxonomy.cdm.api.service.IDescriptiveDataSetService;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.description.Character;
import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
import eu.etaxonomy.cdm.model.location.NamedArea;
import eu.etaxonomy.cdm.model.name.Rank;
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
composite.getRankMin().addSelectionChangedListener(event->dirty.setDirty(true));
composite.getRankMin().setText("Select min rank...");
composite.getRankMax().addSelectionChangedListener(event->dirty.setDirty(true));
- composite.getRankMin().setText("Select max rank...");
+ composite.getRankMax().setText("Select max rank...");
composite.getBtnRemoveRankMin().addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(org.eclipse.swt.events.SelectionEvent e) {
}
});
- composite.getFeatureTreeEditorComposite().init("Character Tree", null, null, e->selectionService.setSelection(e.getSelection()), this, null);
+ composite.getFeatureTreeEditorComposite().init("Character Tree",
+ TermType.Character,
+ null,
+ null,
+ e->selectionService.setSelection(e.getSelection()),
+ this,
+ null);
//add drag'n'drop support
Transfer[] transfers = new Transfer[] {LocalSelectionTransfer.getTransfer()};
}
}
}
- FeatureTree characters = composite.getCharacters();
+ FeatureTree<Character> characters = composite.getCharacters();
if(characters!=null){
//save characters because they can be modified in this editor
characters.getDistinctFeatures().forEach(character->CdmStore.getService(ITermService.class).merge(character,true));
import org.eclipse.swt.widgets.Display;
import eu.etaxonomy.cdm.model.description.Character;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.featuretree.CharacterTransfer;
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureNodeDragListener;
private TreeViewer structureViewer;
private TreeViewer propertyViewer;
- Collection<Character> characters;
+ private Collection<Character> characters;
private Image image;
private GC gc;
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
import eu.etaxonomy.cdm.model.description.Character;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.featuretree.CharacterTransfer;
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeDropAdapter;
import eu.etaxonomy.taxeditor.store.CdmStore;
//drop on feature tree
target = ((FeatureTree)getViewer().getInput()).getRoot();
}
- characterEditor.getVocabulary().addTerm(character);
- CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(target, character);
+ CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(target.getUuid(), character, characterEditor.getVocabulary().getUuid());
}
}
getViewer().refresh();
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
import eu.etaxonomy.cdm.api.service.ITermService;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
-import eu.etaxonomy.cdm.model.common.VocabularyEnum;
import eu.etaxonomy.cdm.model.description.Character;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.editor.AppModelId;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
public class CharacterEditor implements IFeatureTreeEditor,IConversationEnabled, ISelectionChangedListener,
ModifyListener, IE4ViewerPart, IPartContentHasDetails, IPartContentHasSupplementalData, IDirtyMarkable {
- private FeatureTreeEditorComposite characterTreeEditorComposite;
- private FeatureTreeEditorComposite propertiesTreeEditorComposite;
- private FeatureTreeEditorComposite structuresTreeEditorComposite;
+ private FeatureTreeEditorComposite<Character> characterTreeEditorComposite;
+ private FeatureTreeEditorComposite<DefinedTermBase> propertiesTreeEditorComposite;
+ private FeatureTreeEditorComposite<DefinedTermBase> structuresTreeEditorComposite;
private final FormToolkit formToolkit = new FormToolkit(Display.getDefault());
@Inject
if(vocabulary!=null){
vocabulariesToBeFiltered.add(vocabulary);
}
- vocabulary = TermVocabularySelectionDialog.select("Select vocabulary for characters", btnChooseVoc.getShell(), vocabulariesToBeFiltered, TermType.Feature);
+ vocabulary = TermVocabularySelectionDialog.select("Select vocabulary for characters", btnChooseVoc.getShell(), vocabulariesToBeFiltered, TermType.Character);
if(vocabulary!=null){
txtVocabulary.setText(vocabulary.getLabel());
}
structuresTreeEditorComposite = addFeatureTreeEditor(composite);
- initFeatureTreeComposite(structuresTreeEditorComposite,
+ initFeatureTreeComposite(TermType.Structure, structuresTreeEditorComposite,
new FeatureNodeDragListener(structuresTreeEditorComposite.getViewer()), null, null, null, null);
structuresTreeEditorComposite.getLabel_title().setText(Messages.CharacterEditor_STRUCTURES);
composite_1.setLayout(gl_composite_1);
propertiesTreeEditorComposite = addFeatureTreeEditor(composite_1);
- initFeatureTreeComposite(propertiesTreeEditorComposite,
-
+ initFeatureTreeComposite(TermType.Property, propertiesTreeEditorComposite,
new CharacterDragListener(structuresTreeEditorComposite.getViewer(), propertiesTreeEditorComposite.getViewer()),
null,
new Transfer[] {CharacterTransfer.getInstance()},
return;
}
Collection<Character> characters = createCharacters((TreeSelection)structureTreeSelection, (TreeSelection)propertyTreeSelection);
+ FeatureNode<Character> parent = ((FeatureTree<Character>) characterTreeEditorComposite.getViewer().getInput()).getRoot();
for (Character character : characters) {
//add new Character to feature tree
- FeatureNode parent = ((FeatureTree) characterTreeEditorComposite.getViewer().getInput()).getRoot();
- vocabulary.addTerm(character);
- CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(parent, character);
+ CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(parent.getUuid(), character, vocabulary.getUuid());
}
characterTreeEditorComposite.getViewer().refresh();
}
});
characterTreeEditorComposite = addFeatureTreeEditor(composite_3);
- initFeatureTreeComposite(characterTreeEditorComposite, new FeatureNodeDragListener(characterTreeEditorComposite.getViewer()),
+ initFeatureTreeComposite(TermType.Character, characterTreeEditorComposite, new FeatureNodeDragListener(characterTreeEditorComposite.getViewer()),
new CharacterDropAdapter(this, characterTreeEditorComposite.getViewer(), sync),
new Transfer[] {FeatureNodeTransfer.getInstance(), CharacterTransfer.getInstance()},
}
- private FeatureTreeEditorComposite addFeatureTreeEditor(Composite composite_3) {
- FeatureTreeEditorComposite featureTreeEditorComposite = new FeatureTreeEditorComposite(composite_3, SWT.NONE);
+ private <T extends DefinedTermBase> FeatureTreeEditorComposite<T> addFeatureTreeEditor(Composite composite_3) {
+ FeatureTreeEditorComposite<T> featureTreeEditorComposite = new FeatureTreeEditorComposite<>(composite_3, SWT.NONE);
featureTreeEditorComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
return featureTreeEditorComposite;
}
private void initFeatureTreeComposite(
+ TermType termType,
FeatureTreeEditorComposite featureTreeEditorComposite,
FeatureNodeDragListener featureNodeDragListener,
FeatureTreeDropAdapter featureNodeDropAdapter,
featureNodeDropAdapter,
transfers,
viewerSelectionChangedListener,
- new FeatureTreeChooserListener(featureTreeEditorComposite),
+ new FeatureTreeChooserListener(featureTreeEditorComposite, termType),
modifyListener);
}
public static Collection<Character> createCharacters(TreeSelection structureTreeSelection, TreeSelection propertyTreeSelection){
Set<Character> characters = new HashSet<>();
//get selected structures and properties
- Iterator<FeatureNode> structureIterator = structureTreeSelection.iterator();
+ Iterator<FeatureNode<DefinedTermBase>> structureIterator = structureTreeSelection.iterator();
//create all combinations of structures and properties
while(structureIterator.hasNext()){
- FeatureNode structureNode = structureIterator.next();
- Iterator<FeatureNode> propertiesIterator = propertyTreeSelection.iterator();
+ FeatureNode<DefinedTermBase> structureNode = structureIterator.next();
+ Iterator<FeatureNode<DefinedTermBase>> propertiesIterator = propertyTreeSelection.iterator();
while(propertiesIterator.hasNext()){
- FeatureNode propertyNode = propertiesIterator.next();
- Representation structureRepresentation = structureNode.getFeature().getRepresentation(PreferencesUtil.getGlobalLanguage());
- Representation propertyRepresentation = propertyNode.getFeature().getRepresentation(PreferencesUtil.getGlobalLanguage());
+ FeatureNode<DefinedTermBase> propertyNode = propertiesIterator.next();
+ Representation structureRepresentation = structureNode.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
+ Representation propertyRepresentation = propertyNode.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
String label = null;
String abbrevLabel = null;
if(structureRepresentation.getLabel()!=null && propertyRepresentation.getLabel()!=null){
// commit the conversation and start a new transaction immediately
conversation.commit(true);
- FeatureTree featureTree = characterTreeEditorComposite.getFeatureTree();
+ FeatureTree<Character> featureTree = characterTreeEditorComposite.getFeatureTree();
if(featureTree!=null){
//save characters because they can be modified in this editor
featureTree.getDistinctFeatures().forEach(character->CdmStore.getService(ITermService.class).merge(character,true));
}
@Override
- public List<FeatureTree> getRootEntities() {
- List<FeatureTree> root = new ArrayList<>();
+ public List<FeatureTree<Character>> getRootEntities() {
+ List<FeatureTree<Character>> root = new ArrayList<>();
root.add(characterTreeEditorComposite.getFeatureTree());
return root;
}
return (IStructuredSelection) characterTreeEditorComposite.getViewer().getSelection();
}
- public FeatureTree getCharacterTree(){
+ public FeatureTree<Character> getCharacterTree(){
return characterTreeEditorComposite.getFeatureTree();
}
}
private class FeatureTreeChooserListener extends SelectionAdapter{
- FeatureTreeEditorComposite featureTreeEditorComposite;
+ private FeatureTreeEditorComposite<?> featureTreeEditorComposite;
+ private TermType termType;
- public FeatureTreeChooserListener(FeatureTreeEditorComposite featureTreeEditorComposite) {
+ public FeatureTreeChooserListener(FeatureTreeEditorComposite<?> featureTreeEditorComposite, TermType termType) {
super();
this.featureTreeEditorComposite = featureTreeEditorComposite;
+ this.termType = termType;
}
@Override
public void widgetSelected(SelectionEvent e) {
- FeatureTree tree = FeatureTreeSelectionDialog.select(featureTreeEditorComposite.getDisplay().getActiveShell(), //conversation,
- null);
+ FeatureTree tree = FeatureTreeSelectionDialog.select(featureTreeEditorComposite.getDisplay().getActiveShell(), null, termType);
if(tree!=null){
featureTreeEditorComposite.setSelectedTree(tree);
}
@Override
public void changed(Object element) {
setDirty();
+ characterTreeEditorComposite.getViewer().refresh();
}
@Override
int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
- Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
+ Feature feature = matrix.getIndexToCharacterMap().get(colIndex);
CategoricalDataHistogram histogram = matrix.getFeatureToHistogramMap().get(feature);
Composite tooltip;
//get histogram for column
int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
- Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
+ Feature feature = matrix.getIndexToCharacterMap().get(colIndex);
CategoricalDataHistogram histogram = matrix.getFeatureToHistogramMap().get(feature);
// set chart title
int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
int rowPos = matrix.getNatTable().getRowPositionByY(event.y);
- Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
+ Feature feature = matrix.getIndexToCharacterMap().get(colIndex);
if(matrix.isShowTooltips()
&& rowPos==1
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
import eu.etaxonomy.cdm.model.description.MeasurementUnit;
import eu.etaxonomy.cdm.model.description.State;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.cdm.persistence.dto.SpecimenNodeWrapper;
import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
private NatTable natTable;
- private Map<Integer, Feature> indexToFeatureMap = new HashMap<>();
+ private Map<Integer, Character> indexToCharacterMap = new HashMap<>();
private Map<Feature, List<State>> categoricalFeatureToStateMap = new HashMap<>();
private FreezeLayer freezeLayer;
- private List<Feature> features;
+ private List<Character> characters;
private CharacterMatrixPart part;
natTable.doCommand(new ClientAreaResizeCommand(natTable));
}
- private List<Feature> initFeatureList(FeatureNode node){
- List<Feature> features = new ArrayList<>();
+ private List<Character> initCharacterList(FeatureNode<Character> node){
+ List<Character> characters = new ArrayList<>();
node.getChildNodes().forEach(childNode->
{
- Feature feature = childNode.getFeature();
- if(feature.isInstanceOf(Character.class)){
- features.add(childNode.getFeature());
- }
- features.addAll(initFeatureList(childNode));
+ characters.add(childNode.getTerm());
+ characters.addAll(initCharacterList(childNode));
});
- return features;
+ return characters;
}
public void initDescriptiveDataSet(DescriptiveDataSet descriptiveDataSet){
this.descriptiveDataSet = descriptiveDataSet;
//get features/columns stored in descriptive data set
- FeatureTree tree = descriptiveDataSet.getDescriptiveSystem();
- features = initFeatureList(tree.getRoot());
+ FeatureTree<Character> tree = descriptiveDataSet.getDescriptiveSystem();
+ characters = initCharacterList(tree.getRoot());
//init state data for categorical features
- features.forEach(feature->
+ characters.forEach(character->
{
- if(feature.isSupportsCategoricalData()){
+ if(character.isSupportsCategoricalData()){
List<State> supportedStates = new ArrayList<>();
- feature.getSupportedCategoricalEnumerations().forEach(voc->supportedStates.addAll(voc.getTerms()));
- categoricalFeatureToStateMap.put(feature, supportedStates);
+ character.getSupportedCategoricalEnumerations().forEach(voc->supportedStates.addAll(voc.getTerms()));
+ categoricalFeatureToStateMap.put(character, supportedStates);
}
});
descriptions = new BasicEventList<>();
propertyToLabelMap.put(COLLECTOR_COLUMN, Messages.CharacterMatrix_COLLECTOR_NO);
propertyToLabelMap.put(IDENTIFIER_COLUMN, Messages.CharacterMatrix_IDENTIFIER);
propertyToLabelMap.put(COUNTRY_COLUMN, Messages.CharacterMatrix_COUNTRY);
- for(int i=0;i<features.size();i++){
- Feature feature = features.get(i);
- initLabels(i, feature);
+ for(int i=0;i<characters.size();i++){
+ Character character = characters.get(i);
+ initLabels(i, character);
}
// layer for event handling of GlazedLists and PropertyChanges
//regoster labels with summary prefix for summary layer
ColumnOverrideLabelAccumulator summaryColumnLabelAccumulator =new ColumnOverrideLabelAccumulator(bodyDataLayer);
summaryRowLayer.setConfigLabelAccumulator(summaryColumnLabelAccumulator);
- for(int i=0;i<features.size();i++){
- Feature feature = features.get(i);
+ for(int i=0;i<characters.size();i++){
+ Character character = characters.get(i);
summaryColumnLabelAccumulator.registerColumnOverrides(
i+LEADING_COLUMN_COUNT,
- SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(feature));
+ SummaryRowLayer.DEFAULT_SUMMARY_COLUMN_CONFIG_LABEL_PREFIX+MatrixUtility.getProperty(character));
}
// because the horizontal dependency is the ViewportLayer
// we need to set the composite dependency to false
}
}
- private void initLabels(int index, Feature feature) {
- indexToFeatureMap.put(index+LEADING_COLUMN_COUNT, feature);
+ private void initLabels(int index, Character character) {
+ indexToCharacterMap.put(index+LEADING_COLUMN_COUNT, character);
- String featureLabel = feature.getLabel();
- String property = featureLabel;
+ String label = character.getLabel();
+ String property = character.getUuid().toString();
//show unit for quantitative data
- if(feature.isSupportsQuantitativeData()){
- Set<MeasurementUnit> recommendedMeasurementUnits = feature.getRecommendedMeasurementUnits();
+ if(character.isSupportsQuantitativeData()){
+ Set<MeasurementUnit> recommendedMeasurementUnits = character.getRecommendedMeasurementUnits();
if(recommendedMeasurementUnits.size()>1){
MessagingUtils.warningDialog(Messages.CharacterMatrix_INIT_PROBLEM, CharacterMatrix.class,
- String.format(Messages.CharacterMatrix_INIT_PROBLEM_MESSAGE, feature.getLabel()));
+ String.format(Messages.CharacterMatrix_INIT_PROBLEM_MESSAGE, character.getLabel()));
}
if(recommendedMeasurementUnits.size()==1){
MeasurementUnit unit = recommendedMeasurementUnits.iterator().next();
- featureLabel += " ["+unit.getIdInVocabulary()+"]"; //$NON-NLS-1$ //$NON-NLS-2$
+ label += " ["+unit.getIdInVocabulary()+"]"; //$NON-NLS-1$ //$NON-NLS-2$
}
}
- propertyToLabelMap.put(property, featureLabel);
+ propertyToLabelMap.put(property, label);
}
public void loadDescriptions(DescriptiveDataSet descriptiveDataSet) {
return categoricalFeatureToStateMap.get(feature);
}
- public Map<Integer, Feature> getIndexToFeatureMap() {
- return indexToFeatureMap;
+ public Map<Integer, Character> getIndexToCharacterMap() {
+ return indexToCharacterMap;
}
public LinkedMap<String, String> getPropertyToLabelMap() {
return new File(WorkbenchUtility.getBaseLocation(), CHARACTER_MATRIX_STATE_PROPERTIES);
}
- public List<Feature> getFeatures() {
- return features;
+ public List<Character> getFeatures() {
+ return characters;
}
public Map<Feature, CategoricalDataHistogram> getFeatureToHistogramMap() {
import eu.etaxonomy.cdm.api.service.IDescriptionService;
import eu.etaxonomy.cdm.api.service.IDescriptiveDataSetService;
import eu.etaxonomy.cdm.api.service.dto.RowWrapperDTO;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
public void init(UUID descriptiveDataSetUuid, boolean treeView) {
this.descriptiveDataSet = CdmStore.getService(IDescriptiveDataSetService.class).load(descriptiveDataSetUuid, WS_PROPERTY_PATH);
if(descriptiveDataSet!=null){
- if(descriptiveDataSet.getDescriptiveSystem()==null){
+ if(descriptiveDataSet.getDescriptiveSystem()==null
+ || descriptiveDataSet.getDescriptiveSystem().getTermType()==null
+ || !descriptiveDataSet.getDescriptiveSystem().getTermType().equals(TermType.Character)){
MessagingUtils.informationDialog(Messages.CharacterMatrixPart_COULD_NOT_OPEN, Messages.CharacterMatrixPart_COULD_NOT_OPEN_MESSAGE);
return;
}
int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
- Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
+ Feature feature = matrix.getIndexToCharacterMap().get(colIndex);
QuantitativeDataStatistics dataStatistics = matrix.getFeatureToQuantDataStatisticsMap().get(feature);
Composite tooltip;
//get statistics for column
int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
- Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
+ Feature feature = matrix.getIndexToCharacterMap().get(colIndex);
QuantitativeDataStatistics quantitativeDataStatistics = matrix.getFeatureToQuantDataStatisticsMap().get(feature);
List<DescriptiveStatistics> statistics = quantitativeDataStatistics.getStatistics();
int colPos = matrix.getNatTable().getColumnPositionByX(event.x);
int colIndex = matrix.getNatTable().getColumnIndexByPosition(colPos);
int rowPos = matrix.getNatTable().getRowPositionByY(event.y);
- Feature feature = matrix.getIndexToFeatureMap().get(colIndex);
+ Feature feature = matrix.getIndexToCharacterMap().get(colIndex);
if(matrix.isShowTooltips()
&& rowPos==1
default:
break;
}
- Feature feature = matrix.getIndexToFeatureMap().get(columnIndex);
+ Feature feature = matrix.getIndexToCharacterMap().get(columnIndex);
return rowWrapper.getDataValueForFeature(feature);
} else if(rowObject instanceof TaxonRowWrapperDTO){
TaxonRowWrapperDTO taxonWrapper = (TaxonRowWrapperDTO)rowObject;
if(columnIndex==0){
return taxonWrapper.getDescription();
}
- Feature feature = matrix.getIndexToFeatureMap().get(columnIndex);
+ Feature feature = matrix.getIndexToCharacterMap().get(columnIndex);
return taxonWrapper.getDataValueForFeature(feature);
}
public void setDataValue(Object rowObject, int columnIndex, Object newValue) {
if(rowObject instanceof RowWrapperDTO){
RowWrapperDTO rowWrapper = (RowWrapperDTO)rowObject;
- Feature feature = matrix.getIndexToFeatureMap().get(columnIndex);
+ Feature feature = matrix.getIndexToCharacterMap().get(columnIndex);
rowWrapper.setDataValueForFeature(feature, newValue);
}
}
@Override
public List<?> getValues(int columnIndex, int rowIndex) {
- Feature feature = matrix.getIndexToFeatureMap().get(columnIndex);
+ Feature feature = matrix.getIndexToCharacterMap().get(columnIndex);
List<State> supportedStatesForCategoricalFeature = matrix.getSupportedStatesForCategoricalFeature(feature);
maxVisibleItems = Math.max(3, Math.min(supportedStatesForCategoricalFeature.size()-1, 10));
return supportedStatesForCategoricalFeature;
if(canonicalValue==null){
Object rowWrapper = matrix.getBodyDataProvider().getRowObject(this.getRowIndex());
if(rowWrapper instanceof RowWrapperDTO){
- Feature feature = matrix.getIndexToFeatureMap().get(getColumnIndex());
+ Feature feature = matrix.getIndexToCharacterMap().get(getColumnIndex());
((RowWrapperDTO) rowWrapper).addCategoricalData(feature);
}
}
ICellEditHandler editHandler, ILayerCell cell, IConfigRegistry configRegistry) {
this.initialInput = null;
Object rowObject = matrix.getBodyDataProvider().getRowObject(cell.getRowIndex());
- Feature feature = matrix.getIndexToFeatureMap().get(cell.getColumnIndex());
+ Feature feature = matrix.getIndexToCharacterMap().get(cell.getColumnIndex());
QuantitativeData quantitativeData = null;
if(rowObject instanceof RowWrapperDTO){
if(cell.getDataValue() instanceof QuantitativeData){
import java.util.Set;
import java.util.UUID;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
+import org.eclipse.core.runtime.Status;
import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.ui.ide.undo.WorkspaceUndoUtil;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput;
import eu.etaxonomy.taxeditor.editor.ChooseFromMultipleAcceptedTaxaDialog;
import eu.etaxonomy.taxeditor.editor.ChooseFromMultipleTaxonNodesDialog;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.DataChangeBridge;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
-import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
/**
private List<TaxonName> toSaveNewNames = new ArrayList<>();
- private Set<AbstractPostTaxonOperation> operations = new HashSet<>();
+ private Set<AbstractPostOperation> operations = new HashSet<>();
private TaxonEditorInputDataChangeBehaviourE4 dataChangeBehavior;
return initiallySelectedTaxonBase;
}
- public Set<AbstractPostTaxonOperation> getOperations() {
- return operations;
- }
-
- public void setOperations(Set<AbstractPostTaxonOperation> operations) {
- this.operations = operations;
- }
-
- public void addOperation(AbstractPostTaxonOperation operation) {
+ public void addOperation(AbstractPostOperation operation) {
this.operations.add(operation);
}
}
toDeletes.clear();
for(AbstractPostOperation entry:operations){
- EditorUtil.executeOperation(entry,sync);
+ IStatus status = Status.CANCEL_STATUS;
+ final IAdaptable uiInfoAdapter = WorkspaceUndoUtil
+ .getUIInfoAdapter(AbstractUtility.getShell());
+ String operationlabel = entry.getLabel();
+ try {
+ entry.addContext(IOperationHistory.GLOBAL_UNDO_CONTEXT);
+ status = entry.execute(new NullProgressMonitor(), uiInfoAdapter);
+ } catch (ExecutionException e) {
+
+ MessagingUtils.operationDialog(AbstractUtility.class, e, TaxeditorStorePlugin.PLUGIN_ID, operationlabel, null);
+
+ }
+
+ String statusString = status.equals(Status.OK_STATUS) ? "completed"
+ : "cancelled";
+
+ IPostOperationEnabled postOperationEnabled = entry
+ .getPostOperationEnabled();
+ if (postOperationEnabled != null) {
+ postOperationEnabled.onComplete();
+ }
+
+
+ //AbstractUtility.executeOperation(entry,sync);
}
- operations.clear();
+ operations.clear();
for (Synonym syn: toSaveNewSynonyms){
for (HybridRelationship rel : syn.getName().getHybridChildRelations()){
// if (!rel.getParentName().isPersited()) {
CdmStore.getService(ITaxonNodeService.class).merge(taxonNode, true);
+
}
/**
public static String DescriptionElementDropAdapter_NOT_SUPPORTED;
public static String DescriptionElementDropAdapter_NOT_SUPPORTED_EMPTY_ELEMENT;
public static String DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT;
+ public static String DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT_IN_DESCRIPTION;
public static String DescriptiveViewPart_COLLAPSE_ALL;
public static String DescriptiveViewPart_EXPAND_ALL;
public static String DescriptiveViewPart_FACTUAL_DATA;
public static String ChecklistEditor_REMOVE_DEFAULT_SOURCE_TOOLTIP;
public static String ChecklistEditor_SEARCH_TOOLTIP;
public static String DistributionEditor_defaultSource;
+ public static String FactualDataView_Lable;
+ public static String NameFactsDataView_Lable;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
DescriptionElementDropAdapter_NOT_SUPPORTED=Operation not supported yet
DescriptionElementDropAdapter_NOT_SUPPORTED_EMPTY_ELEMENT=We are unable to drag and drop empty descriptions
DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT=We are currently unable to drag and drop a newly created element. Please save the editor to make this work.
+DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT_IN_DESCRIPTION=Drag and Drop into descriptions containing unsaved factual data is not possible.\nPlease save to continue.
DescriptiveViewPart_COLLAPSE_ALL=Collapse All
DescriptiveViewPart_EXPAND_ALL=Expand All
DescriptiveViewPart_FACTUAL_DATA=Factual Data
CharacterMatrixBottomToolbar_ERROR_ROW_CREATION_TITLE=Errors during row creation
CharacterMatrixBottomToolbar_YES=Yes
CharacterMatrixPart_COULD_NOT_OPEN=Editor could not be opened
-CharacterMatrixPart_COULD_NOT_OPEN_MESSAGE=The descriptive data set has no feature tree selected.
+CharacterMatrixPart_COULD_NOT_OPEN_MESSAGE=The descriptive data set has no character tree selected or the tree contains elements that are not characters.
CharacterMatrixPart_LOADING_MATRIX=Loading matrix...
SwapSynonymAndAcceptedOperation_NOT_IMPLEMENTED=Not yet implemented
SwapSynonymAndAcceptedOperation_SWAP_SYN_ACC_TAXON=Swap Synonym And Accepted Taxon Operation
ChecklistEditor_REMOVE_DEFAULT_SOURCE_TOOLTIP=After removing the default source, newly created distribution will not get a default source.
ChecklistEditor_SEARCH_TOOLTIP=Textfilter for Taxa
DistributionEditor_defaultSource=Default Source:
-ChecklistEditor_REMOVE_DEFAULT_SOURCE=Remove Source
\ No newline at end of file
+ChecklistEditor_REMOVE_DEFAULT_SOURCE=Remove Source
+FactualDataView_Lable=Factual Data
+NameFactsDataView_Lable=Name Facts
\ No newline at end of file
DescriptionElementDropAdapter_NOT_SUPPORTED=Vorgang noch nicht unterstützt
DescriptionElementDropAdapter_NOT_SUPPORTED_EMPTY_ELEMENT=Drag and Drop für leeren Beschreibungen noch nicht unterstützt
DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT=Drag and Drop für neu erstellte Elemente noch nicht unterstützt. Bitte Editor speichern, um den Vorgang auszuführen.
+DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT_IN_DESCRIPTION=Drag and Drop in Beschreibungen, die nicht gespeicherte Fakten enthalten, wird noch nicht unterstützt. \nBitte speichern, um den Vorgang auszuführen.
DescriptiveViewPart_COLLAPSE_ALL=Alles einklappen
DescriptiveViewPart_EXPAND_ALL=Alles ausklappen
DescriptiveViewPart_FACTUAL_DATA=Faktendaten
CharacterMatrixBottomToolbar_ERROR_ROW_CREATION_TITLE=Fehler bei der Erstellung der Zeilen
CharacterMatrixBottomToolbar_YES=Ja
CharacterMatrixPart_COULD_NOT_OPEN=Editor konnte nicht geöffnet werden
-CharacterMatrixPart_COULD_NOT_OPEN_MESSAGE=Das Dataset hat keinen Merkmalsbaum ausgewählt.
+CharacterMatrixPart_COULD_NOT_OPEN_MESSAGE=Das Dataset hat keinen Character-Baum ausgewählt oder enthält Elemente, die keine Character sind.
CharacterMatrixPart_LOADING_MATRIX=Lade Matrix...
SwapSynonymAndAcceptedOperation_NOT_IMPLEMENTED=Noch nicht implementiert
SwapSynonymAndAcceptedOperation_SWAP_SYN_ACC_TAXON=Tausche Synonym und akzeptiertes Taxon
ChecklistEditor_REMOVE_DEFAULT_SOURCE_TOOLTIP=Wenn die Quelle entfernt wurde, wird den neu angelegten Verbreitungen nicht mehr automatisch eine Quelle zugefügt.
ChecklistEditor_SEARCH_TOOLTIP=Textfilter auf Taxa
DistributionEditor_defaultSource= Standard Quelle:
-ChecklistEditor_REMOVE_DEFAULT_SOURCE=Quelle entfernen
\ No newline at end of file
+ChecklistEditor_REMOVE_DEFAULT_SOURCE=Quelle entfernen
+FactualDataView_Lable=Faktendaten
+NameFactsDataView_Lable=Namensfaktendaten
\ No newline at end of file
import org.eclipse.e4.ui.di.Persist;
import org.eclipse.e4.ui.di.UIEventTopic;
import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.MDirtyable;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.services.EMenuService;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
+import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.taxeditor.editor.ISecuredEditor;
import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
import eu.etaxonomy.taxeditor.editor.e4.TaxonEditorInputE4;
+import eu.etaxonomy.taxeditor.editor.internal.TaxeditorEditorPlugin;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
import eu.etaxonomy.taxeditor.editor.name.e4.container.AbstractGroupE4;
import eu.etaxonomy.taxeditor.editor.name.e4.container.AbstractGroupedContainerE4;
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.model.TaxeditorPartService;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.preference.Resources;
import eu.etaxonomy.taxeditor.security.RequiredPermissions;
import eu.etaxonomy.taxeditor.store.CdmStore;
@Inject
private MDirtyable dirty;
+ @Inject
+ private MApplication application;
+
private MPart thisPart;
private TaxonEditorInputE4 input;
return HibernateProxyHelper.deproxy(taxon);
}
+ @Override
+ public void addOperation(AbstractPostOperation operation) {
+ input.addOperation(operation);
+ }
+
public void setDirty() {
managedForm.dirtyStateChanged();
}
}
}
+ @Inject
+ @Optional
+ private void updateView(@UIEventTopic(WorkbenchEventConstants.REFRESH_NAME_EDITOR) List<CdmBase> cdmBases) {
+
+ for (CdmBase cdmBase: cdmBases){
+ if (cdmBase instanceof Taxon || cdmBase instanceof TaxonName){
+ if ((EventUtility.getTaxonEditor() != null && EventUtility.getTaxonEditor().equals(this))
+ || (this.taxon != null && (this.taxon.equals(cdmBase)
+ || (this.taxon.getName() != null && this.taxon.getName().equals(cdmBase))))) {
+ EPartService partService = TaxeditorEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getService(EPartService.class);
+ EModelService modelService = TaxeditorEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getService(EModelService.class);
+ EditorUtil.openTaxonBaseE4(this.getTaxon().getUuid(), modelService, partService, application);
+
+ }
+ }
+ }
+ }
+
@Inject
@Optional
private void updateView(@UIEventTopic(WorkbenchEventConstants.REFRESH_NAME_EDITOR) UUID cdmbaseUuid) {
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void update() {
+ EPartService partService = TaxeditorEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getService(EPartService.class);
+ EModelService modelService = TaxeditorEditorPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getService(EModelService.class);
+ EditorUtil.openTaxonBaseE4(this.getTaxon().getUuid(), modelService, partService, application);
+
+ }
+
}
getNameViewer().getTextWidget().setFont(defaultFont);
getNameViewer().getDocument().set(getEmptyTextPrompt());
- placeCursor();
}
protected void setFocusListener(FocusListener focusListener) {
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
+import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
// relatedTaxon.addTaxonRelation(element, newRelationshipType, null, null);
this.taxonRelationship.setType(newRelationshipType);
monitor.worked(40);
-
+ EventUtility.postEvent(WorkbenchEventConstants.REFRESH_DETAILS, true);
return postExecute(relatedTaxon);
}
import eu.etaxonomy.cdm.api.service.IVocabularyService;
import eu.etaxonomy.cdm.api.service.dto.TaxonDescriptionDTO;
import eu.etaxonomy.cdm.api.service.dto.TaxonDistributionDTO;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.OrderedTermBase;
-import eu.etaxonomy.cdm.model.common.OrderedTermComparator;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermIdInVocabularyComparator;
-import eu.etaxonomy.cdm.model.common.TermLanguageComparator;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.OrderedTermBase;
+import eu.etaxonomy.cdm.model.term.OrderedTermComparator;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermIdInVocabularyComparator;
+import eu.etaxonomy.cdm.model.term.TermLanguageComparator;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.Distribution;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import org.apache.commons.lang.StringUtils;
import org.eclipse.nebula.widgets.nattable.data.convert.DisplayConverter;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.Representation;
import eu.etaxonomy.cdm.model.description.Distribution;
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
import org.apache.commons.lang.StringUtils;
import org.eclipse.nebula.widgets.nattable.edit.editor.IComboBoxDataProvider;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.OrderedTermComparator;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.OrderedTermComparator;
+import eu.etaxonomy.cdm.model.term.Representation;
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import org.apache.commons.lang.StringUtils;
import org.eclipse.nebula.widgets.nattable.data.convert.DisplayConverter;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.Representation;
import eu.etaxonomy.cdm.model.description.Distribution;
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
import eu.etaxonomy.cdm.model.metadata.TermDisplayEnum;
import org.apache.commons.lang.StringUtils;
import org.eclipse.nebula.widgets.nattable.data.convert.DisplayConverter;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.Representation;
import eu.etaxonomy.cdm.model.description.Distribution;
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
import eu.etaxonomy.cdm.model.metadata.TermDisplayEnum;
}
}
+ @Override
+ public void dragFinished(DragSourceEvent event) {
+ super.dragFinished(event);
+ LocalSelectionTransfer.getTransfer().setSelection(null);
+ }
+
@Override
public void dragStart(DragSourceEvent event) {
if(derivateView.isDirty()){
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.SpecimenDescription;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
*/
@Override
public boolean performDrop(Object data) {
- TaxonDescription target = (TaxonDescription) getCurrentTarget();
+ DescriptionBase target = (DescriptionBase) getCurrentTarget();
Object[] droppedElements = (Object[]) data;
Collection<DescriptionElementBase> descriptionElements = new ArrayList<DescriptionElementBase>();
if (descriptionElement.getInDescription().equals(target)) {
return false;
}
+ for (Object element : target.getElements()){
+ if (element instanceof DescriptionElementBase){
+ if( !((DescriptionElementBase)element).isPersited()){
+ MessagingUtils.warningDialog(OPERATION_NOT_SUPPORTED_YET, this, Messages.DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT_IN_DESCRIPTION);
+ return false;
+ }
+
+ }
+ }
+ for (Object element : descriptionElement.getInDescription().getElements()){
+ if (element instanceof DescriptionElementBase){
+ if( !((DescriptionElementBase)element).isPersited()){
+ MessagingUtils.warningDialog(OPERATION_NOT_SUPPORTED_YET, this, Messages.DescriptionElementDropAdapter_NOT_SUPPORTED_NEW_ELEMENT_IN_DESCRIPTION);
+ return false;
+ }
+
+ }
+ }
description = descriptionElement.getInDescription();
description.removeElement(descriptionElement);
target.addElement(descriptionElement);
- if (description.getElements().isEmpty()){
- ((TaxonDescription)description).getTaxon().removeDescription((TaxonDescription)description, false);
+ if (description.getElements().isEmpty() ){
+ if (description instanceof TaxonDescription){
+ ((TaxonDescription)description).getTaxon().removeDescription((TaxonDescription)description, false);
+ }else if (description instanceof TaxonNameDescription){
+ ((TaxonNameDescription)description).getTaxonName().removeDescription((TaxonNameDescription)description);
+ } else if (description instanceof SpecimenDescription){
+ ((SpecimenDescription)description).getDescribedSpecimenOrObservation().removeDescription(description);
+ }
}
descriptionElements.add(descriptionElement);
}
TransferData transferData) {
boolean transferDataIsSupported = DescriptionElementTransfer.getInstance().isSupportedType(
transferData);
- return target instanceof TaxonDescription && transferDataIsSupported;
+ return target instanceof DescriptionBase && transferDataIsSupported;
}
}
import eu.etaxonomy.cdm.model.common.Marker;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.cdm.model.description.IDescribable;
import eu.etaxonomy.cdm.model.description.IndividualsAssociation;
import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.editor.view.descriptive;
+
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.jface.viewers.ViewerFilter;
+
+import eu.etaxonomy.cdm.model.description.DescriptionBase;
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
+
+/**
+ * @author k.luther
+ * @since 09.04.2019
+ *
+ */
+public class NameDescriptionFilter extends ViewerFilter {
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean select(Viewer viewer, Object parentElement, Object element) {
+ if (element instanceof FeatureNodeContainer ){
+ FeatureNodeContainer desc = (FeatureNodeContainer)element;
+ if(!desc.getFeature().equals(Feature.PROTOLOGUE())){
+ return true;
+ }
+ }
+ if (element instanceof DescriptionBase){
+ for (Object desc:((DescriptionBase) element).getElements()){
+ if (desc instanceof DescriptionElementBase){
+ if (!((DescriptionElementBase)desc).getFeature().equals(Feature.PROTOLOGUE())){
+ return true;
+ }
+ }
+ }
+ if (((DescriptionBase) element).getElements().isEmpty()){
+ return true;
+ }
+ }
+ if (element instanceof DescriptionElementBase){
+ if (!((DescriptionElementBase)element).getFeature().equals(Feature.PROTOLOGUE())){
+ return true;
+ }
+ }
+ return false;
+ }
+
+}
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
import javax.annotation.PostConstruct;
import javax.inject.Inject;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Tree;
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.IDescribable;
-import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.taxeditor.bulkeditor.e4.BulkEditorE4;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveContentProvider;
import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveLabelProvider;
import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewerSorter;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.NameDescriptionFilter;
import eu.etaxonomy.taxeditor.editor.view.media.e4.MediaViewPartE4;
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
treeViewer.setContentProvider(provider);
treeViewer.setLabelProvider(new DescriptiveLabelProvider());
treeViewer.setSorter(new DescriptiveViewerSorter());
+ treeViewer.setFilters(new NameDescriptionFilter());
treeViewer.setAutoExpandLevel(2);
Transfer[] transfers = new Transfer[] { DescriptionElementTransfer.getInstance() };
treeViewer.addDragSupport(dndOperations, transfers, new DescriptionElementDragListener(
viewer.addSelectionChangedListener(selectionChangedListener);
DescriptionElementDropAdapter dropListener = new DescriptionElementDropAdapter(viewer);
ContextInjectionFactory.inject(dropListener, context);
+
treeViewer.addDropSupport(dndOperations, transfers,
dropListener);
//create context menu
Object partObject = createPartObject(activePart);
- if (partObject instanceof DetailsPartE4 || partObject instanceof SupplementalDataPartE4
+
+
+ if ((partObject instanceof DetailsPartE4 && !(selection instanceof TaxonName))|| partObject instanceof SupplementalDataPartE4
|| partObject instanceof MediaViewPartE4 || partObject instanceof ConceptViewPartE4) {
// do not show empty page as these views are also used to edit the
// description selected in this view
return;
}
-// if(partObject instanceof ChecklistEditorE4){
-// IWorkbenchPage page = PlatformUI.getWorkbench()
-// .getActiveWorkbenchWindow().getActivePage();
-// page.hideView(page.findView("eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4"));
-// }
- if(partObject instanceof IPartContentHasFactualData){
+
+ if(partObject instanceof IPartContentHasFactualData ){
if (!viewer.getControl().isDisposed()){
viewer.getControl().setEnabled(true);
}
}
if(firstElement instanceof IDescribable<?>
&& partObject instanceof IPartContentHasFactualData
- && !(firstElement instanceof SpecimenOrObservationBase && partObject instanceof BulkEditorE4)
- && !(firstElement instanceof TaxonName && partObject instanceof BulkEditorE4)){
-
+ && !(firstElement instanceof SpecimenOrObservationBase && partObject instanceof BulkEditorE4)){
+ // && !(firstElement instanceof TaxonName && partObject instanceof BulkEditorE4)){
+ if (firstElement instanceof TaxonName){
+ thisPart.setLabel(Messages.NameFactsDataView_Lable);
+ }else{
+ thisPart.setLabel(Messages.FactualDataView_Lable);
+ }
featureNodeContainerCache.clear();
showViewer(structuredSelection, activePart, viewer);
return;
@Optional
private void updateView(@UIEventTopic(WorkbenchEventConstants.SAVE_TAXON)boolean refresh){
if(refresh){
- List<? extends CdmBase> rootEntities = getRootEntities();
- for (CdmBase cdmBase : rootEntities) {
- if (cdmBase != null){
- if(cdmBase.isInstanceOf(Taxon.class)){
- Taxon taxon = HibernateProxyHelper.deproxy(cdmBase, Taxon.class);
- Set<TaxonDescription> descriptions = taxon.getDescriptions();
- for (TaxonDescription taxonDescription : descriptions) {
- taxonDescription.setTitleCache(null, false);
- }
- }
- }
- }
viewer.refresh();
}
}
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.jface.viewers.TreeNode;
+import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonNameDescriptionOperation;
//import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateNamedescriptionOperation;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateSpecimenDescriptionOperation;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonDescriptionOperation;
AbstractUtility.executeOperation(operation, sync);
}
}
-// if(viewerInput instanceof TaxonName){
-// operation = new CreateNamedescriptionOperation(menuItem.getLocalizedLabel(), EditorUtil.getUndoContext(), (TaxonName) viewerInput, factualDataPart);
-// if(operation!=null){
-// AbstractUtility.executeOperation(operation, sync);
-// }
-// }
+ if(viewerInput instanceof TaxonName){
+ operation = createTaxonNameOperation(menuItem.getLocalizedLabel(), (TaxonName) viewerInput, factualDataPart);
+ if(operation!=null){
+ AbstractUtility.executeOperation(operation, sync);
+ }
+ }
}
protected CreateTaxonDescriptionOperation createTaxonOperation(String eventLabel, Taxon taxon, IPostOperationEnabled postOperationEnabled) {
return new CreateTaxonDescriptionOperation(eventLabel, EditorUtil.getUndoContext(), taxon, null, postOperationEnabled);
}
+ protected CreateTaxonNameDescriptionOperation createTaxonNameOperation(String eventLabel, TaxonName taxonName, IPostOperationEnabled postOperationEnabled) {
+ return new CreateTaxonNameDescriptionOperation(eventLabel, EditorUtil.getUndoContext(), taxonName, null, postOperationEnabled);
+ }
+
}
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
+import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonNameDescriptionOperation;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateTaxonDescriptionOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.ui.dialog.selection.ReferenceSelectionDialog;
IdentifiableSource source = IdentifiableSource.NewInstance(OriginalSourceType.Unknown, null, null, reference, null);
return new CreateTaxonDescriptionOperation(eventLabel, EditorUtil.getUndoContext(), taxon, source, postOperationEnabled);
}
+
+ @Override
+ protected CreateTaxonNameDescriptionOperation createTaxonNameOperation(String eventLabel, TaxonName taxonName, IPostOperationEnabled postOperationEnabled) {
+ Reference reference = ReferenceSelectionDialog.select(shell, null);
+ if(reference==null){
+ return null;
+ }
+ IdentifiableSource source = IdentifiableSource.NewInstance(OriginalSourceType.Unknown, null, null, reference, null);
+ return new CreateTaxonNameDescriptionOperation(eventLabel, EditorUtil.getUndoContext(), taxonName, source, postOperationEnabled);
+ }
}
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.TreePath;
-import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.swt.widgets.Shell;
-import eu.etaxonomy.cdm.api.service.config.MediaDeletionConfigurator;
-import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.SpecimenDescription;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
-import eu.etaxonomy.cdm.model.media.Media;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
+import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteDescriptionElementOperation;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteSpecimenDescriptionOperation;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonDescriptionOperation;
-import eu.etaxonomy.taxeditor.editor.view.media.operation.DeleteMediaOperation;
-import eu.etaxonomy.taxeditor.editor.view.media.operation.RemoveImageFromDescriptionElementOperation;
+import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonNameDescriptionOperation;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
-import eu.etaxonomy.taxeditor.ui.dialog.configurator.deleteConfigurator.DeleteConfiguratorDialog;
/**
*
IUndoContext undoContext = EditorUtil.getUndoContext();
- List<AbstractPostOperation<?>> operations = new ArrayList<AbstractPostOperation<?>>();
+ List<AbstractPostOperation> operations = new ArrayList();
for(Iterator iter = selection.iterator();iter.hasNext();){
Object object = iter.next();
// TaxonDescription
- if(object instanceof TaxonDescription){
- operations.add(new DeleteTaxonDescriptionOperation(label, undoContext, (TaxonDescription) object, factualDataPart, cdmEntitySessionEnabled));
+ if(object instanceof TaxonDescription ){
+ DeleteTaxonDescriptionOperation operation = new DeleteTaxonDescriptionOperation(label, undoContext, (TaxonDescription) object, factualDataPart, cdmEntitySessionEnabled);
+
+ operations.add(operation);
+ ((TaxonDescription) object).getTaxon().removeDescription((TaxonDescription) object);
+ operation.getPostOperationEnabled().postOperation(object);
+ }
+ if(object instanceof TaxonNameDescription ){
+ DeleteTaxonNameDescriptionOperation operation = new DeleteTaxonNameDescriptionOperation(label, undoContext, (TaxonNameDescription) object, factualDataPart, cdmEntitySessionEnabled);
+ operations.add(operation);
+ ((TaxonNameDescription) object).getTaxonName().removeDescription((TaxonNameDescription) object);
+ operation.getPostOperationEnabled().postOperation(object);
}
else if(object instanceof SpecimenDescription){
- operations.add(new DeleteSpecimenDescriptionOperation(label, undoContext, (SpecimenDescription) object, factualDataPart, cdmEntitySessionEnabled)) ;
+ DeleteSpecimenDescriptionOperation operation = new DeleteSpecimenDescriptionOperation(label, undoContext, (SpecimenDescription) object, factualDataPart, cdmEntitySessionEnabled);
+ operations.add(operation) ;
+ ((SpecimenDescription) object).getDescribedSpecimenOrObservation().removeDescription((SpecimenDescription) object);
+
}
// DescriptionElementBase
else if(object instanceof DescriptionElementBase){
- operations.add(new DeleteDescriptionElementOperation(label, undoContext, (DescriptionElementBase) object, factualDataPart, cdmEntitySessionEnabled));
+ DeleteDescriptionElementOperation operation = new DeleteDescriptionElementOperation(label, undoContext, (DescriptionElementBase) object, factualDataPart, cdmEntitySessionEnabled);
+ AbstractUtility.executeOperation(operation, sync);
}
else if(object instanceof FeatureNodeContainer){
List<DescriptionElementBase> descriptions = ((FeatureNodeContainer) object).getDescriptionElementsForEntireBranch();
for(DescriptionElementBase description : descriptions){
- operations.add(new DeleteDescriptionElementOperation(label, undoContext, description, factualDataPart, cdmEntitySessionEnabled));
- }
- }
- // Media
- else if(object instanceof Media){
-
- TreeSelection treeSelection = (TreeSelection) factualDataPart.getViewer().getSelection();
-
- TreePath[] path = treeSelection.getPathsFor(object);
-
- DescriptionBase<?> imageGallery = (DescriptionBase<?>) path[0].getFirstSegment();
+ DeleteDescriptionElementOperation operation = new DeleteDescriptionElementOperation(label, undoContext, description, factualDataPart, cdmEntitySessionEnabled);
- MediaDeletionConfigurator config = new MediaDeletionConfigurator();
- config.setDeleteFromDescription(true);
- config.setOnlyRemoveFromGallery(false);
-
- if (imageGallery instanceof SpecimenDescription){
- config.setDeleteFrom(((SpecimenDescription)imageGallery).getDescribedSpecimenOrObservation());
- } else if (imageGallery instanceof TaxonDescription){
- config.setDeleteFrom(((TaxonDescription)imageGallery).getTaxon());
- }else if (imageGallery instanceof TaxonNameDescription){
- config.setDeleteFrom(((TaxonNameDescription)imageGallery).getTaxonName());
- }
- if (!DeleteConfiguratorDialog.openConfirmWithConfigurator(config, shell, Messages.DeleteHandler_CONFIRM_DELETION, Messages.DeleteHandler_CONFIRM_DELETION_MESSAGE)){
- return;
- }
- if (config.isOnlyRemoveFromGallery() || ((Media)object).getId() == 0){
- operations.add(new RemoveImageFromDescriptionElementOperation(label, undoContext, (Media) object, imageGallery, factualDataPart));
- }else{
- operations.add(new DeleteMediaOperation(label, undoContext, imageGallery, (Media) object, config, factualDataPart));
+ AbstractUtility.executeOperation(operation, sync);
}
}
+
else{
MessagingUtils.error(getClass(), Messages.DeleteHandler_INVALID_SELECTION, null);
}
}
// execute all cumulated operations
- for(AbstractPostOperation<?> operation : operations){
- AbstractUtility.executeOperation(operation, sync);
+ for(AbstractPostOperation operation : operations){
+ if (factualDataPart.getSelectionProvidingPart().getObject() instanceof TaxonNameEditorE4){
+ ((TaxonNameEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).getEditorInput().addOperation(operation);
+ ((TaxonNameEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).setDirty();
+ ((TaxonNameEditorE4)factualDataPart.getSelectionProvidingPart().getObject()).redraw();
+ }
+
+ // AbstractUtility.executeOperation(operation, sync);
}
+
}
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.jface.viewers.IStructuredSelection;
+import eu.etaxonomy.cdm.api.service.IVocabularyService;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
+import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.CreateDescriptionElementOperation;
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
Object selectedElement = selection.getFirstElement();
if (selectedElement instanceof DescriptionBase<?>) {
- FeatureTree featureTree = getFeatureTree((DescriptionBase<?>) selectedElement);
+ FeatureTree<?> featureTree = getFeatureTree((DescriptionBase<?>) selectedElement);
- for (FeatureNode childNode : featureTree.getRootChildren()) {
- createMenuItem(menu, childNode.getFeature(), globalLanguage);
+ for (FeatureNode<?> childNode : featureTree.getRootChildren()) {
+ createMenuItem(menu, childNode.getTerm(), globalLanguage);
}
} else if (selectedElement instanceof FeatureNodeContainer) {
- FeatureNode featureNode = ((FeatureNodeContainer) selectedElement)
+ FeatureNode<?> featureNode = ((FeatureNodeContainer) selectedElement)
.getFeatureNode();
// add the feature to the menu
- createMenuItem(menu, featureNode.getFeature(), globalLanguage);
+ createMenuItem(menu, featureNode.getTerm(), globalLanguage);
// add possible children to the menu
- for (FeatureNode childNode : featureNode.getChildNodes()) {
- createMenuItem(menu, childNode.getFeature(), globalLanguage);
+ for (FeatureNode<?> childNode : featureNode.getChildNodes()) {
+ createMenuItem(menu, childNode.getTerm(), globalLanguage);
}
} else if (selectedElement instanceof DescriptionElementBase) {
Feature feature = ((DescriptionElementBase) selectedElement)
}
}
- private void createMenuItem(MMenu menu, final Feature feature, Language globalLanguage) {
- final Feature deproxiedFeature = HibernateProxyHelper.deproxy(feature, Feature.class);
+ private void createMenuItem(MMenu menu, final DefinedTermBase feature, Language globalLanguage) {
+ final DefinedTermBase deproxiedFeature = HibernateProxyHelper.deproxy(feature, DefinedTermBase.class);
String label = deproxiedFeature.getLabel(globalLanguage);
if (label == null){
* @param description
* @return
*/
- private FeatureTree getFeatureTree(DescriptionBase description) {
- FeatureTree featureTree = null;
+ private FeatureTree<?> getFeatureTree(DescriptionBase description) {
+ FeatureTree<?> featureTree = null;
// TODO change this to the feature tree associated with this taxon
// description
}
if (featureTree == null) {
- featureTree = FeatureTree.NewInstance(CdmStore.getTermManager()
- .getPreferredTerms(Feature.class));
+ featureTree = TermEditorInput.getDefaultFeatureTree();
+ }
+ if (description instanceof TaxonNameDescription){
+ List<Feature> terms = CdmStore.getTermManager().getPreferredTerms(CdmStore.getService(IVocabularyService.class).load(VocabularyEnum.NameFeature.getUuid()));
+ terms.remove(Feature.PROTOLOGUE());
+ featureTree = FeatureTree.NewInstance(terms);
}
return featureTree;
package eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import javax.inject.Named;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.core.di.annotations.Optional;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.MoveDescriptionElementsOperation;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
-import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
/**
}
}
+ UUID classificationUuid = null;
+ if (classification != null){
+ classificationUuid = classification.getUuid();
+ }
TaxonNode newAcceptedTaxonNode = TaxonNodeSelectionDialog.select(shell,
Messages.MoveDescriptionElementsHandler_CHOOSE_ACC_TAXON,
excludeTaxa,
- null, classification.getUuid()
+ null, classificationUuid
);
if (newAcceptedTaxonNode != null){
Taxon targetTaxon = newAcceptedTaxonNode.getTaxon();
}
newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
- MPart targetEditor = EditorUtil.checkForChanges(targetTaxon.getUuid(), partService);
+ Collection<IE4SavablePart> targetEditors = EditorUtil.checkForTaxonChanges(targetTaxon.getUuid(), partService);
- if ((targetEditor != null && targetEditor.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")) || this.editor.isDirty()){
- boolean proceed = MessageDialog.openQuestion(null,
- Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE);
- if (proceed) {
- if (targetEditor != null){
- e4WrappedPart = WorkbenchUtility.getE4WrappedPart(targetEditor);
- ((TaxonNameEditorE4)e4WrappedPart).save(AbstractUtility.getMonitor());
- }
- if (editor.isDirty()){
- editor.save(AbstractUtility.getMonitor());
- }
- } else {
+ if (!targetEditors.isEmpty() || this.editor.isDirty()){
+ if(MessageDialog.openQuestion(null,Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE)){
+ this.editor.save(new NullProgressMonitor());
+ targetEditors.forEach(editor->editor.save(new NullProgressMonitor()));
+ return;
+ }
+ else{
return;
}
}
String moveMessage = String.format(Messages.MoveDescriptionElementsHandler_ELEMENTS_MOVED, editor.getTaxon());
- AbstractPostOperation operation = new MoveDescriptionElementsOperation(
+ AbstractPostTaxonOperation operation = new MoveDescriptionElementsOperation(
menuItem.getLocalizedLabel(), EditorUtil.getUndoContext(),
targetTaxon.getUuid(), moveMessage, elements, false, this, null);
+ editor.getEditorInput().addOperation(operation);
+ for (DescriptionElementBase element: elements)
+ {
+ element.getInDescription().removeElement(element);
+ }
+ editor.redraw();
+ editor.setDirty();
- AbstractUtility.executeOperation(operation, sync);
+ //AbstractUtility.executeOperation(operation, sync);
}
}
if(e4WrappedPart instanceof TaxonNameEditorE4){
ISelection selection = factualDataPart.getViewer().getSelection();
if(selection instanceof IStructuredSelection){
+ boolean selectionProviding = factualDataPart.getSelectionProvidingPart().getObject() instanceof TaxonNameEditorE4;
Object firstElement = ((IStructuredSelection) selection).getFirstElement();
- canExecute = firstElement instanceof FeatureNodeContainer
- || firstElement instanceof DescriptionElementBase;
+ canExecute = (firstElement instanceof FeatureNodeContainer && !(((FeatureNodeContainer)firstElement).getContainerTree().getDescription() instanceof TaxonNameDescription))
+ || (firstElement instanceof DescriptionElementBase && !(((DescriptionElementBase)firstElement).getInDescription() instanceof TaxonNameDescription)) ;
menuItem.setVisible(canExecute);
}
}
package eu.etaxonomy.taxeditor.editor.view.descriptive.e4.handler;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import javax.inject.Named;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.e4.core.di.annotations.Optional;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
import eu.etaxonomy.taxeditor.editor.view.descriptive.e4.FactualDataPartE4;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.MoveDescriptionToOtherTaxonOperation;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
/**
*
newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
newAcceptedTaxonUuid = newAcceptedTaxonNode.getTaxon().getUuid();
- MPart targetEditor = EditorUtil.checkForChanges(newAcceptedTaxonUuid, partService);
- if ((targetEditor != null && targetEditor.getElementId().equals("eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4")) || this.editor.isDirty()){
- boolean proceed = MessageDialog.openQuestion(null,
- Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE);
- if (proceed) {
- if (targetEditor != null){
- e4WrappedPart = WorkbenchUtility.getE4WrappedPart(targetEditor);
- ((TaxonNameEditorE4)e4WrappedPart).save(AbstractUtility.getMonitor());
- }
- if (editor.isDirty()){
- editor.save(AbstractUtility.getMonitor());
- }
- } else {
+ Collection<IE4SavablePart> targetEditors = EditorUtil.checkForTaxonChanges(newAcceptedTaxonUuid, partService);
+
+ if (!targetEditors.isEmpty() || this.editor.isDirty()){
+ if(MessageDialog.openQuestion(null,Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES, Messages.MoveDescriptionToOtherTaxonHandler_SAVE_CHANGES_MESSAGE)) {
+ this.editor.save(new NullProgressMonitor());
+ targetEditors.forEach(editor->editor.save(new NullProgressMonitor()));
+ }
+ else{
return;
}
}
this,
editor,
editor.getEditorInput());
- AbstractUtility.executeOperation(operation, sync);
+ editor.getEditorInput().addOperation(operation);
+ editor.setDirty();
+ editor.getTaxon().removeDescription(taxonDescription);
+ editor.redraw();
+ // AbstractUtility.executeOperation(operation, sync);
}
@Override
public void run() {
//FIXME E4 migrate
-// AbstractUtility.close(editor);
-//
try {
-// MultiPageTaxonEditor possibleOpenEditor = (MultiPageTaxonEditor) EditorUtil.findEditorByTaxonNodeUuid(newAcceptedTaxonNodeUuid);
-// if(possibleOpenEditor != null){
-// AbstractUtility.close(possibleOpenEditor);
-// }
-// EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, oldAcceptedTaxonNodeUuid);
-// EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, newAcceptedTaxonNodeUuid);
EditorUtil.openTaxonNodeE4(newAcceptedTaxonNodeUuid, modelService, partService, application);
- EditorUtil.openTaxonNodeE4(oldAcceptedTaxonNodeUuid, modelService, partService, application);
-// } catch (PartInitException e) {
-// MessagingUtils.error(this.getClass(), e);
-// throw new RuntimeException(e);
} catch (Exception e) {
MessagingUtils.warningDialog(Messages.MoveDescriptionToOtherTaxonHandler_CREATE_FAILED, this, e.getMessage());
}
if(selection instanceof IStructuredSelection){
Object firstElement = ((IStructuredSelection) selection).getFirstElement();
canExecute = ((IStructuredSelection) selection).size()==1
- && firstElement instanceof DescriptionBase;
+ && firstElement instanceof DescriptionBase && !(firstElement instanceof TaxonNameDescription);
menuItem.setVisible(canExecute);
}
}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.editor.view.descriptive.operation;
+
+import org.eclipse.core.commands.operations.IUndoContext;
+
+import eu.etaxonomy.cdm.model.common.IdentifiableSource;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.taxeditor.operation.AbstractDescriptionPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+
+/**
+ * @author k.luther
+ * @since 25 Jan 2019
+ *
+ */
+public class CreateTaxonNameDescriptionOperation extends AbstractDescriptionPostOperation<TaxonName, TaxonNameDescription> {
+
+ public CreateTaxonNameDescriptionOperation(String label, IUndoContext undoContext, TaxonName describable, IPostOperationEnabled postOperationEnabled) {
+ super(label, undoContext, describable, null, postOperationEnabled);
+ }
+
+ public CreateTaxonNameDescriptionOperation(String label, IUndoContext undoContext, TaxonName describable,
+ IdentifiableSource source, IPostOperationEnabled postOperationEnabled) {
+ super(label, undoContext, describable, source, postOperationEnabled, false);
+ }
+
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ protected void initDescription() {
+ description = TaxonNameDescription.NewInstance(element);
+
+ }
+
+}
@Override
public IStatus execute(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
-
- monitor.worked(20);
+ if (monitor != null){
+ monitor.worked(20);
+ }
if (description != null && description.isPersited()){
// element.removeDescription(description);
CdmStore.getService(IDescriptionService.class).deleteDescription(description.getUuid());
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.editor.view.descriptive.operation;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Status;
+
+import eu.etaxonomy.cdm.api.service.IDescriptionService;
+import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author k.luther
+ * @since 4 Mar 2019
+ *
+ */
+public class DeleteTaxonNameDescriptionOperation extends AbstractPostOperation<TaxonName> {
+ private final TaxonNameDescription description;
+ /**
+ * @param label
+ * @param undoContext
+ * @param element
+ * @param postOperationEnabled
+ * @param cdmEntitySessionEnabled
+ */
+ public DeleteTaxonNameDescriptionOperation(String label, IUndoContext undoContext, TaxonNameDescription description,
+ IPostOperationEnabled postOperationEnabled, ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
+ super(label, undoContext, description.getTaxonName(), postOperationEnabled, cdmEntitySessionEnabled);
+ this.description = description;
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+
+ monitor.worked(20);
+ if (description != null && description.isPersited()){
+// element.removeDescription(description);
+ CdmStore.getService(IDescriptionService.class).deleteDescription(description.getUuid());
+ element.removeDescription(description);
+ return postExecute(element);
+ }else if (description != null && !description.isPersited()){
+ element.removeDescription(description);
+ return Status.OK_STATUS;
+ }
+ return null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ return execute(monitor, info);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ element.addDescription(description);
+
+ return postExecute(null);
+ }
+
+}
} else {
UUID targetDescriptionUuid = targetDescription.getUuid();
UUID sourceDescriptionUuid = sourceDescription.getUuid();
- result = service.moveDescriptionElementsToDescription(descriptionElementsUuid, targetDescriptionUuid, isCopy);
+ if (!targetDescription.isPersited()){
+ result = service.moveDescriptionElementsToDescription(descriptionElementsUuid, targetDescription, isCopy);
+ }else{
+ result = service.moveDescriptionElementsToDescription(descriptionElementsUuid, targetDescriptionUuid, isCopy);
+ }
+
}
- return postExecute(targetDescription);
+ return postExecute(null);
}
/* (non-Javadoc)
package eu.etaxonomy.taxeditor.editor.view.descriptive.operation;
-import org.apache.commons.lang.StringUtils;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.operations.IUndoContext;
import org.eclipse.core.runtime.IAdaptable;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.IDescriptionService;
-import eu.etaxonomy.cdm.model.common.Annotation;
-import eu.etaxonomy.cdm.model.common.AnnotationType;
-import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
-import eu.etaxonomy.taxeditor.editor.l10n.Messages;
import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
@Override
public IStatus execute(IProgressMonitor monitor, IAdaptable info)
throws ExecutionException {
-
- monitor.worked(20);
+ if (monitor != null){
+ monitor.worked(20);
+ }
bind();
-
- String moveMessage = String.format(Messages.MoveDescriptionToOtherTaxonOperation_MOVED_FROM, description.getTaxon());
- if(description.isProtectedTitleCache()){
- String separator = ""; //$NON-NLS-1$
- if(!StringUtils.isBlank(description.getTitleCache())){
- separator = " - "; //$NON-NLS-1$
- }
- description.setTitleCache(description.getTitleCache() + separator + moveMessage, true);
- }
- Annotation annotation = Annotation.NewInstance(moveMessage, Language.getDefaultLanguage());
- annotation.setAnnotationType(AnnotationType.TECHNICAL());
- description.addAnnotation(annotation);
CdmStore.getService(IDescriptionService.class).moveTaxonDescription(description.getUuid(), newAcceptedTaxonNode.getTaxon().getUuid());
- monitor.worked(40);
+ if (monitor != null){
+ monitor.worked(40);
+ }
return postExecute(description);
}
package eu.etaxonomy.taxeditor.editor.view.media.handler;
import java.util.Iterator;
+import java.util.Set;
import javax.inject.Named;
import eu.etaxonomy.cdm.api.service.config.MediaDeletionConfigurator;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.SpecimenDescription;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
import eu.etaxonomy.cdm.model.media.Media;
import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.editor.l10n.Messages;
+import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteSpecimenDescriptionOperation;
import eu.etaxonomy.taxeditor.editor.view.descriptive.operation.DeleteTaxonDescriptionOperation;
import eu.etaxonomy.taxeditor.editor.view.media.e4.MediaViewPartE4;
}
if(object instanceof Media){
AbstractPostOperation<?> operation = new DeleteMediaOperation(menuItem.getLocalizedLabel(), EditorUtil.getUndoContext(), description, (Media) object, config, mediaView);
- AbstractUtility.executeOperation(operation, sync);
+ if (mediaView.getSelectionProvidingPart().getObject() instanceof TaxonNameEditorE4){
+ if (!config.isOnlyRemoveFromGallery()){
+ ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).getEditorInput().addOperation(operation);
+ }
+ Media media = (Media)object;
+ if (description.isImageGallery()){
+ Set<DescriptionElementBase> elements = description.getElements();
+ if (elements.size() == 1){
+ DescriptionElementBase element = elements.iterator().next();
+ element.removeMedia(media);
+ if (element.getMedia().isEmpty()){
+ description.removeElement(element);
+ }
+ }
+ }
+
+ ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).setDirty();
+ ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).redraw();
+ }else{
+ AbstractUtility.executeOperation(operation, sync);
+ }
}
if(object instanceof DescriptionBase && ((DescriptionBase) object).isImageGallery()){
if(object instanceof TaxonDescription){
DeleteTaxonDescriptionOperation deleteTaxonDescriptionOperation = new DeleteTaxonDescriptionOperation(menuItem.getLocalizedLabel(), EditorUtil.getUndoContext(), (TaxonDescription)object, mediaView, null);
- AbstractUtility.executeOperation(deleteTaxonDescriptionOperation, sync);
+ if (mediaView.getSelectionProvidingPart().getObject() instanceof TaxonNameEditorE4){
+ ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).getEditorInput().addOperation(deleteTaxonDescriptionOperation);
+ ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).setDirty();
+ ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).redraw();
+
+ }else{
+ AbstractUtility.executeOperation(deleteTaxonDescriptionOperation, sync);
+ }
}
else if(object instanceof SpecimenDescription){
DeleteSpecimenDescriptionOperation deleteTaxonDescriptionOperation = new DeleteSpecimenDescriptionOperation(menuItem.getLocalizedLabel(), EditorUtil.getUndoContext(), (SpecimenDescription)object, mediaView, null);
- AbstractUtility.executeOperation(deleteTaxonDescriptionOperation, sync);
+ if (mediaView.getSelectionProvidingPart().getObject() instanceof TaxonNameEditorE4){
+ ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).getEditorInput().addOperation(deleteTaxonDescriptionOperation);
+ ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).setDirty();
+ ((TaxonNameEditorE4)mediaView.getSelectionProvidingPart().getObject()).redraw();
+ }else{
+ AbstractUtility.executeOperation(deleteTaxonDescriptionOperation, sync);
+ }
}
}
}
throws ExecutionException {
// ImagesUtility.removeMediaFromGallery(description, media);
-
- monitor.worked(20);
+ if (monitor != null) {
+ monitor.worked(20);
+ }
if (!config.isOnlyRemoveFromGallery() && media.getId() != 0){
DeleteResult result = CdmStore.getService(IMediaService.class).delete(media.getUuid(), config);
String errorMessage = "The media ";
errorMessage += "could not be deleted from database. ";
//MessagingUtils.errorDialog("test", getClass(), "message", TaxeditorBulkeditorPlugin.PLUGIN_ID, result.getExceptions().iterator().next(),true);
DeleteResultMessagingUtils.messageDialogWithDetails(result,errorMessage, TaxeditorBulkeditorPlugin.PLUGIN_ID);
- if (config.isDeleteFromDescription()){
- ImagesUtility.removeMediaFromGallery(description, media);
- }
+// if (config.isDeleteFromDescription()){
+// ImagesUtility.removeMediaFromGallery(description, media);
+// }
}else{
- ImagesUtility.removeMediaFromGallery(description, media);
+// ImagesUtility.removeMediaFromGallery(description, media);
}
} else{
- ImagesUtility.removeMediaFromGallery(description, media);
+// ImagesUtility.removeMediaFromGallery(description, media);
+ }
+ if (monitor != null){
+ monitor.worked(40);
}
- monitor.worked(40);
-
- return postExecute(null);
+ return postExecute(media);
}
/* (non-Javadoc)
import org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.IStyledLabelProvider;\r
import org.eclipse.jface.viewers.StyledString;\r
\r
-import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
+import eu.etaxonomy.cdm.model.term.DefinedTerm;\r
import eu.etaxonomy.cdm.model.common.Language;\r
import eu.etaxonomy.cdm.model.common.LanguageString;\r
import eu.etaxonomy.cdm.model.description.CategoricalData;\r
import org.junit.BeforeClass;
import org.junit.Test;
-import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
+import eu.etaxonomy.cdm.model.term.DefaultTermInitializer;
import eu.etaxonomy.cdm.model.common.ICdmBase;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
<feature
id="eu.etaxonomy.taxeditor.feature.platform"
label="Taxeditor Dependencies"
- version="5.5.1"
+ version="5.6.0"
os="linux,macosx,win32"
ws="cocoa,gtk,win32"
arch="x86,x86_64">
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>eu.etaxonomy.taxeditor.feature.platform</artifactId>
<feature
id="eu.etaxonomy.taxeditor.feature"
label="Taxonomic Editor"
- version="5.5.1"
+ version="5.6.0"
provider-name="EDIT"
plugin="eu.etaxonomy.taxeditor.application"
os="linux,macosx,win32"
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>eu.etaxonomy.taxeditor.feature</artifactId>
Bundle-ManifestVersion: 2
Bundle-Name: Help
Bundle-SymbolicName: eu.etaxonomy.taxeditor.help; singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Bundle-Activator: eu.etaxonomy.taxeditor.help.Activator
Bundle-Vendor: EDIT
Require-Bundle: org.eclipse.ui,
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
Bundle-ManifestVersion: 2
Bundle-Name: eu.etaxonomy.taxeditor.molecular.lib
Bundle-SymbolicName: eu.etaxonomy.taxeditor.molecular.lib;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Bundle-ClassPath: .,
lib/owlapi-xmlutils-4.1.4.jar,
lib/commons-collections4-4.1.jar,
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<name>Molecular Library Dependencies Bundle</name>
Bundle-ManifestVersion: 2
Bundle-Name: Molecular Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.molecular;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Bundle-Activator: eu.etaxonomy.taxeditor.molecular.TaxeditorMolecularPlugin
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
Bundle-ManifestVersion: 2
Bundle-Name: Navigation Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.navigation;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Bundle-Activator: eu.etaxonomy.taxeditor.navigation.internal.TaxeditorNavigationPlugin
Bundle-Vendor: EDIT
Export-Package: eu.etaxonomy.cdm,
org.eclipse.e4.core.di.annotations,
org.eclipse.e4.core.contexts;bundle-version="1.5.1",
org.eclipse.e4.core.commands,
- org.eclipse.e4.core.di
+ org.eclipse.e4.core.di,
+ eu.etaxonomy.taxeditor.bulkeditor
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Import-Package: javax.inject;version="1.0.0",
org.eclipse.core.resources,
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
public static String TaxonNavigatorLabels_SET_PUBLISH_FOR_CHILDREN;
public static String TaxonNavigatorLabels_ACCEPTED_TAXA_NEED_TO_BE_FROM_SAME_CLASSIFICATION;
public static String TaxonNavigatorLabels_SET_UNPLACED;
+ public static String NO;
+ public static String YES;
+ public static String SetPublishFlagForSubtreeHandlerE4_UnsavedChanges;
+ public static String SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion;
static {
// initialize resource bundle
NLS.initializeMessages(BUNDLE_NAME, Messages.class);
SetPublishForSubtreeOperation_CHANGE_PUBLISH_OP=Change publish flag for all children
TaxonNavigatorLabels_SET_PUBLISH_FOR_CHILDREN=Change publish flag for all children
TaxonNavigatorLabels_SET_UNPLACED=Set unplaced flag for taxonnode(s)
+NO=No
+YES=Yes
+SetPublishFlagForSubtreeHandlerE4_UnsavedChanges=There are unsaved changes
+SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion=There are changes, do you want to save them? \nIf you do not save, the changes may be overwritten.
SetPublishForSubtreeOperation_CHANGE_PUBLISH_OP=Publish Flag für alle Kinder ändern
TaxonNavigatorLabels_SET_PUBLISH_FOR_CHILDREN=Ändere Publish Flag für alle Kinder
TaxonNavigatorLabels_SET_UNPLACED=Setze unplaced Flag für den/die Taxonknoten
+
+NO=Nein
+YES=Ja
+
+SetPublishFlagForSubtreeHandlerE4_UnsavedChanges=Es gibt ungespeicherte Änderungen
+SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion=Es gibt Änderungen, wollen Sie diese speichern? \nWenn Sie nicht speichern, könnten diese Änderungen verloren gehen.
ISelection selection = viewer.getSelection();
LocalSelectionTransfer.getTransfer().setSelection(selection);
}
+
+ @Override
+ public void dragFinished(DragSourceEvent event) {
+ super.dragFinished(event);
+ LocalSelectionTransfer.getTransfer().setSelection(null);
+ }
}
});
int status = dialog.open();
- if(status == IStatus.OK && wizard.openInEditor()){
+ if(status == IStatus.OK && wizard.openInEditor() && wizard.isSuccess()){
EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAVIGATOR, true);
if(wizard.openEmpty()){
EditorUtil.openEmptyE4(wizard.getParentTreeNode().getUuid());
*/
package eu.etaxonomy.taxeditor.navigation.navigator.e4.handler;
+import java.util.Collection;
+import java.util.Iterator;
+
import javax.inject.Named;
import org.eclipse.core.commands.operations.AbstractOperation;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.jface.window.Window;
import eu.etaxonomy.cdm.api.service.config.PublishForSubtreeConfigurator;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigatorLabels;
import eu.etaxonomy.taxeditor.navigation.navigator.operation.SetPublishForSubtreeOperation;
import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4;
import eu.etaxonomy.taxeditor.ui.dialog.configurator.SetPublishForSubtreeWizard;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
/**
* @author k.luther
public SetPublishFlagForSubtreeHandlerE4() {
//FIXME add missing l10n property
// super(TaxonNavigatorLabels.CHANGE_PUBLISH_FOR_SUBTREE);
- super("");
+ super(""); //$NON-NLS-1$
}
private TaxonNodeDto taxonNode;
private PublishForSubtreeConfigurator configurator;
-
+ private static final String NO = Messages.NO;
+ private static final String CANCEL = Messages.RemotingMoveTaxonNodeHandler_CANCEL;
+ private static final String YES = Messages.YES;
@Override
public IStatus allowOperations(IStructuredSelection selection, Shell shell, MPart activePart,
"unknown", //$NON-NLS-1$
TaxonNavigatorLabels.SELECTED_OBJECT_NOT_TREE_NODE_MESSAGE);
}
+ Collection<IE4SavablePart> dirtyParts = EditorUtil.checkForTaxonChanges(null, partService);
+
+ if (dirtyParts != null && !dirtyParts.isEmpty()){
+ String[] buttonLables = {YES, NO,CANCEL};
+ MessageDialog dialog = new MessageDialog(null, Messages.SetPublishFlagForSubtreeHandlerE4_UnsavedChanges, null, Messages.SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion, MessageDialog.QUESTION_WITH_CANCEL, buttonLables, 0);
+ dialog.open();
+ int returnCode = dialog.getReturnCode();
+ boolean proceed = false;
+ if (returnCode == 0){
+ proceed = true;
+ }else if (returnCode == 2){
+ return Status.CANCEL_STATUS;
+ }
+
+ Iterator<IE4SavablePart> partIterator = dirtyParts.iterator();
+ while( partIterator.hasNext() ){
+ IE4SavablePart part = partIterator.next();
+ if (proceed) {
+ if (part != null){
+ part.save(new NullProgressMonitor());
+ }
+ }
+ }
+ }
+
+
configurator = new PublishForSubtreeConfigurator(taxonNode.getUuid());
SetPublishForSubtreeWizard wizard = new SetPublishForSubtreeWizard(configurator);
*/
package eu.etaxonomy.taxeditor.navigation.navigator.e4.handler;
+import java.util.Collection;
+import java.util.Iterator;
+
import javax.inject.Named;
import org.eclipse.core.commands.operations.AbstractOperation;
import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Status;
import org.eclipse.e4.core.di.annotations.CanExecute;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.jface.window.Window;
import eu.etaxonomy.cdm.api.service.config.SecundumForSubtreeConfigurator;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.persistence.dto.TaxonNodeDto;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
+import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigatorLabels;
import eu.etaxonomy.taxeditor.navigation.navigator.operation.SetSecundumForSubtreeOperation;
import eu.etaxonomy.taxeditor.operation.e4.RemotingCdmHandlerE4;
import eu.etaxonomy.taxeditor.ui.dialog.configurator.SetSecundumForSubtreeConfigurationWizard;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
/**
* @author k.luther
"unknown", //$NON-NLS-1$
TaxonNavigatorLabels.SELECTED_OBJECT_NOT_TREE_NODE_MESSAGE);
}
+ Collection<IE4SavablePart> dirtyParts = EditorUtil.checkForTaxonChanges(null, partService);
+
+ if (dirtyParts != null && !dirtyParts.isEmpty()){
+ String[] buttonLables = {Messages.YES, Messages.NO,Messages.TreeNodeDropAdapter_CANCEL};
+ MessageDialog dialog = new MessageDialog(null, Messages.SetPublishFlagForSubtreeHandlerE4_UnsavedChanges, null, Messages.SetPublishFlagForSubtreeHandlerE4_UnsavedChangesQuestion, MessageDialog.QUESTION_WITH_CANCEL, buttonLables, 0);
+ dialog.open();
+ int returnCode = dialog.getReturnCode();
+ boolean proceed = false;
+ if (returnCode == 0){
+ proceed = true;
+ }else if (returnCode == 2){
+ return Status.CANCEL_STATUS;
+ }
+
+ Iterator<IE4SavablePart> partIterator = dirtyParts.iterator();
+ while( partIterator.hasNext() ){
+ IE4SavablePart part = partIterator.next();
+ if (proceed) {
+ if (part != null){
+ part.save(new NullProgressMonitor());
+ }
+ }
+ }
+ }
configurator = new SecundumForSubtreeConfigurator(taxonNode.getUuid());
SetSecundumForSubtreeConfigurationWizard wizard = new SetSecundumForSubtreeConfigurationWizard(configurator);
import java.util.UUID;
import org.apache.log4j.Logger;
-import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.swt.widgets.Display;
-import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.api.service.config.PublishForSubtreeConfigurator;
import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
-import eu.etaxonomy.taxeditor.store.CdmStore;
/**
* @author k.luther
}
- private Job createJob(IProgressMonitor monitor){
- Assert.isNotNull(config, "Configuration may not be null");
-
- final Display display = Display.getDefault();
- taxonNodeService = CdmStore.getService(ITaxonNodeService.class);
- Job job = new Job(Messages.SetPublishFlagForSubtreeOperation_SET_SEC_TASK) {
-
-
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- if (config instanceof PublishForSubtreeConfigurator){
- updateResult = taxonNodeService.setPublishForSubtree(config.getSubtreeUuid(), ((PublishForSubtreeConfigurator)config).isPublish(), config.isIncludeAcceptedTaxa(), config.isIncludeSynonyms(), config.isIncludeSharedTaxa(), null);
- }else {
- return Status.CANCEL_STATUS;
- }
- updateNameEditors();
- return Status.OK_STATUS;
-
- }
- };
- return job;
- }
+// private Job createJob(IProgressMonitor monitor){
+// Assert.isNotNull(config, "Configuration may not be null");
+//
+// final Display display = Display.getDefault();
+// taxonNodeService = CdmStore.getService(ITaxonNodeService.class);
+// Job job = new Job(Messages.SetPublishFlagForSubtreeOperation_SET_SEC_TASK) {
+//
+//
+// @Override
+// protected IStatus run(IProgressMonitor monitor) {
+// if (config instanceof PublishForSubtreeConfigurator){
+// updateResult = taxonNodeService.setPublishForSubtree(config.getSubtreeUuid(), ((PublishForSubtreeConfigurator)config).isPublish(), config.isIncludeAcceptedTaxa(), config.isIncludeSynonyms(), config.isIncludeSharedTaxa(), null);
+// }else {
+// return Status.CANCEL_STATUS;
+// }
+// updateNameEditors();
+// return Status.OK_STATUS;
+//
+// }
+// };
+// return job;
+// }
public void runMoniteredOperation() {
- ITaxonNodeService nodeService;
+
final UUID uuid = longRunningTaskService.monitLongRunningTask(config);
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
- AbstractUtility.executeMoniteredOperation("Set Publish Flag for Subtree: ",
+ EditorUtil.executeMoniteredOperation("Set Publish Flag for Subtree: ",
uuid,
1000,
false,
SetPublishForSubtreeOperation.this,
null,
true);
- updateNameEditors();
+ //updateNameEditors();
}
});
import javax.inject.Inject;
import org.apache.log4j.Logger;
-import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.e4.ui.di.UISynchronize;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.api.service.config.SecundumForSubtreeConfigurator;
import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.editor.EditorUtil;
import eu.etaxonomy.taxeditor.navigation.l10n.Messages;
import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
*/
@Override
protected UpdateResult doUpdateExecute(IProgressMonitor monitor, IAdaptable info) throws Exception {
+ EditorUtil.checkForChanges(null, partService);
+
// runMoniteredOperation();
runMoniteredOperation();
// updateNameEditors();
}
- private Job createJob(IProgressMonitor monitor){
- Assert.isNotNull(config, "Configuration may not be null");
-
- final Display display = Display.getDefault();
-
- Job job = new Job(Messages.SetSecundumForSubtreeOperation_SET_SEC_TASK) {
- @Override
- protected IStatus run(IProgressMonitor monitor) {
- if (config instanceof SecundumForSubtreeConfigurator){
- updateResult = taxonNodeService.setSecundumForSubtree((SecundumForSubtreeConfigurator)config);
- }else{
- return Status.CANCEL_STATUS;
- }
-
- return Status.OK_STATUS;
-
- }
- };
- return job;
- }
+// private Job createJob(IProgressMonitor monitor){
+// Assert.isNotNull(config, "Configuration may not be null");
+//
+// final Display display = Display.getDefault();
+//
+// Job job = new Job(Messages.SetSecundumForSubtreeOperation_SET_SEC_TASK) {
+// @Override
+// protected IStatus run(IProgressMonitor monitor) {
+// if (config instanceof SecundumForSubtreeConfigurator){
+// updateResult = taxonNodeService.setSecundumForSubtree((SecundumForSubtreeConfigurator)config);
+// }else{
+// return Status.CANCEL_STATUS;
+// }
+//
+// return Status.OK_STATUS;
+//
+// }
+// };
+// return job;
+// }
public void runMoniteredOperation() {
Display.getDefault().asyncExec(new Runnable() {
@Override
public void run() {
- AbstractUtility.executeMoniteredOperation("Set Secundum Reference for Subtree: ",
+ EditorUtil.executeMoniteredOperation("Set Secundum Reference for Subtree: ",
uuid,
1000,
false,
SetSecundumForSubtreeOperation.this,
null,
true);
- updateNameEditors();
+
}
});
package eu.etaxonomy.taxeditor.navigation.navigator.operation;
-import java.util.ArrayList;
-import java.util.List;
import java.util.UUID;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.ui.basic.MPart;
import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
-import org.eclipse.swt.widgets.Display;
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
import eu.etaxonomy.cdm.api.application.CdmChangeEvent.Action;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.api.service.config.ForSubtreeConfiguratorBase;
-import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.taxon.Synonym;
-import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
-import eu.etaxonomy.taxeditor.editor.EditorUtil;
-import eu.etaxonomy.taxeditor.editor.name.e4.TaxonNameEditorE4;
import eu.etaxonomy.taxeditor.operation.RemotingCdmUpdateOperation;
import eu.etaxonomy.taxeditor.store.CdmStore;
longRunningTaskService = CdmApplicationState.getLongRunningTasksService();
subtreeNode = CdmStore.getService(ITaxonNodeService.class).load(config.getSubtreeUuid());
}
- public void updateNameEditors(){
- List<TaxonNode> nodesToUpdate = new ArrayList();
- for (CdmBase object: updateResult.getUpdatedObjects()){
- Taxon taxon = null;
- TaxonNode node = null;
- if (object instanceof Taxon){
- taxon = HibernateProxyHelper.deproxy(object, Taxon.class);
- node = taxon.getTaxonNode(subtreeNode.getClassification());
-
- }else if (object instanceof Synonym){
- Synonym syn = HibernateProxyHelper.deproxy(object, Synonym.class);
- taxon = syn.getAcceptedTaxon();
- node = taxon.getTaxonNode(subtreeNode.getClassification());
- }
- nodesToUpdate.add(node);
- }
-
- Display.getDefault().asyncExec(new Runnable() {
- @Override
- public void run() {
-
- for (MPart part : partService.getParts()){
- Object object = part.getObject();
- boolean setFocus = false;
- if (part == activePart){
- setFocus = true;
- }
- if (object instanceof TaxonNameEditorE4){
- if (object != null){
- EditorUtil.openTaxonBaseE4(((TaxonNameEditorE4)object).getTaxon().getUuid(), modelService, partService, application);
- }
-// Set<TaxonNode> nodes = ((TaxonNameEditorE4)object).getTaxon().getTaxonNodes();
-// for (TaxonNode node: nodes){
-// if (nodesToUpdate.contains(node)){
-//// EditorUtil.closeObsoleteEditor(node, partService);
-// EditorUtil.openTaxonNodeE4(node.getUuid(), modelService, partService, application);
-// }
-//
-// }
- }
- }
- }
- });
-
- }
}
Bundle-ManifestVersion: 2
Bundle-Name: Printpublisher Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.printpublisher;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Require-Bundle: org.eclipse.osgi,
org.eclipse.ui,
eu.etaxonomy.taxeditor.cdmlib,
<parent>
<artifactId>taxeditor-parent</artifactId>
<groupId>eu.etaxonomy</groupId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
Bundle-ManifestVersion: 2
Bundle-Name: DataStore Bundle
Bundle-SymbolicName: eu.etaxonomy.taxeditor.store;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Bundle-Activator: eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin
Bundle-Vendor: EDIT
Bundle-Localization: OSGI-INF/l10n/bundle
page.name.19 = Stage\r
page.name.20 = Preservation Method\r
page.name.22 = Default Feature Trees\r
-page.name.23 = Representation\r
+page.name.23 = Multi-Language Support\r
page.name.24 = Mobot Open Url\r
page.name.25 = Type Designations\r
page.name.36 = Details View\r
page.name.54 = External Services\r
page.name.55 = Supplemental Data\r
page.name.56 = Search\r
-page.name.57 = Taxon Search
\ No newline at end of file
+page.name.57 = Taxon Search\r
+page.name.58 = Common Names
\ No newline at end of file
page.name.19 = Stadium
page.name.20 = Konservierungsmethoden
page.name.22 = Standard Merkmalsbaum
-page.name.23 = Repr\u00e4sentation
+page.name.23 = Mehrsprachigkeit
page.name.24 = Mobot Open Url
page.name.25 = Typus
page.name.36 = Details View
page.name.54 = Externe Services
page.name.55 = Zusatzdaten
page.name.56 = Suche
-page.name.57 = Taxonsuche
\ No newline at end of file
+page.name.57 = Taxonsuche
+page.name.58 = Trivialnamen
\ No newline at end of file
<handlers xmi:id="_b8sJAIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.DeleteTermBaseHandlerE4" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.DeleteTermBaseHandlerE4" command="_Z_XgsIdQEeecZ4F2Y9Z0Og"/>
<handlers xmi:id="_B7cTkIfSEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.CreateDefinedTermHandlerE4.newDefinedTerm" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.CreateDefinedTermHandlerE4" command="_GTbAcIfSEeecZ4F2Y9Z0Og"/>
<handlers xmi:id="_NqtXEIfSEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.CreateDefinedTermHandlerE4.newKindOfTerm" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.CreateDefinedTermHandlerE4" command="_LMwG4IfSEeecZ4F2Y9Z0Og"/>
+ <handlers xmi:id="_yPjL8EAVEembfJNLZI9wiA" elementId="eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.MoveDefinedTermHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.handler.MoveDefinedTermHandler" command="_d6YpoEAVEembfJNLZI9wiA"/>
<menus xsi:type="menu:PopupMenu" xmi:id="_CoJioIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.popupmenu.termeditor">
<children xsi:type="menu:Menu" xmi:id="_DR1Y0IdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.menu.menulabel0" label="%menu.label.0">
<children xsi:type="menu:HandledMenuItem" xmi:id="_N22PsIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.commandlabel12" label="%command.label.12" command="_5mFFMIdPEeecZ4F2Y9Z0Og"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_QOD-sIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.commandlabel13" label="%command.label.13" command="_GTbAcIfSEeecZ4F2Y9Z0Og"/>
- <children xsi:type="menu:HandledMenuItem" xmi:id="_R4pRMIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.kindofterm" label="%handledmenuitem.label.7" command="_LMwG4IfSEeecZ4F2Y9Z0Og">
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_R4pRMIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.kindofterm" toBeRendered="false" visible="false" label="%handledmenuitem.label.7" command="_LMwG4IfSEeecZ4F2Y9Z0Og">
<visibleWhen xsi:type="ui:CoreExpression" xmi:id="_2G0O8IfREeecZ4F2Y9Z0Og" coreExpressionId="isShowExperimentalFeatures"/>
</children>
</children>
<children xsi:type="menu:HandledMenuItem" xmi:id="_W94ssIdQEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.commandlabel14" label="%command.label.14" command="_Z_XgsIdQEeecZ4F2Y9Z0Og"/>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_aHm7kEAVEembfJNLZI9wiA" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.moveto" label="Move term" command="_d6YpoEAVEembfJNLZI9wiA"/>
</menus>
</elements>
<elements xsi:type="basic:PartDescriptor" xmi:id="_HBpj0KkNEeejedk4mZQIGw" elementId="eu.etaxonomy.taxeditor.view.dataimport.e4.SpecimenImportViewE4" label="%view.name.7" allowMultiple="true" closeable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.view.dataimport.e4.SpecimenImportViewE4">
</elements>
<elements xsi:type="basic:PartDescriptor" xmi:id="_aT37QM3UEeeznb_sS6rfAQ" elementId="eu.etaxonomy.taxeditor.store.partdescriptor.SearchDialog" label="%view.name.9" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.ui.dialog.selection.SearchDialog"/>
<elements xsi:type="basic:PartDescriptor" xmi:id="_XV6gkEbOEeiER_VRS0L7wA" elementId="eu.etaxonomy.taxeditor.view.webimport.termimport.GfBioTerminologyImportPart" label="%partdescriptor.label.1" tooltip="%partdescriptor.tooltip.1" closeable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.view.webimport.termimport.GfBioTerminologyImportPart"/>
+ <elements xsi:type="basic:PartDescriptor" xmi:id="_namYwB7xEemDKJyLc5CJfQ" elementId="eu.etaxonomy.taxeditor.store.partdescriptor.termsearch" label="Term Search" closeable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.view.search.facet.term.TermSearch"/>
+ <elements xsi:type="basic:PartDescriptor" xmi:id="_mbegMDNMEemOn_75IU-Tvg" elementId="eu.etaxonomy.taxeditor.store.partdescriptor.occurencesearch" label="Occurrence Search" closeable="true" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.view.search.facet.occurrence.OccurrenceSearch"/>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_3rW8wCXaEeex9MwMOgUeWw" featurename="children" parentElementId="eu.etaxonomy.taxeditor.menu.showView" positionInList="after:eu.etaxonomy.taxeditor.workbench.menuseparator.afterConcept">
<elements xsi:type="menu:HandledMenuItem" xmi:id="_TlufMCaGEeeTEd_pKXBflg" elementId="eu.etaxonomy.taxeditor.store.showViewMenu.supplemental" label="%command.label.1" iconURI="platform:/plugin/eu.etaxonomy.taxeditor.store/icons/applications-office.png" tooltip="%command.label.1" command="_bnVKsCZxEeeQLpuomSmVoQ">
<elements xsi:type="commands:Command" xmi:id="_xDk5kNjyEeidDMMI9xTsbQ" elementId="eu.etaxonomy.taxeditor.store.command.featureTree.pasteFeature" commandName="%command.commandname.12"/>
<elements xsi:type="commands:Command" xmi:id="_Za5DYO5vEeizn7bmbAeBkw" elementId="eu.etaxonomy.taxeditor.store.open.OpenDistributionStatusWizardHandler" commandName="%command.commandname.13"/>
<elements xsi:type="commands:Command" xmi:id="_xyZ4oPhmEei8uPv-H2wqnw" elementId="eu.etaxonomy.taxeditor.store.command.featureTree.exportTreeOntology" commandName="%command.commandname.14"/>
+ <elements xsi:type="commands:Command" xmi:id="_qYxw8D85EemTy7SLZkowuQ" elementId="eu.etaxonomy.taxeditor.store.command.OpenDatabaseRepairWizard" commandName="Open Cache Updater"/>
+ <elements xsi:type="commands:Command" xmi:id="_VUQY0D86EemTy7SLZkowuQ" elementId="eu.etaxonomy.taxeditor.store.command.openSortIndexUpdaterWizard" commandName="Open Sort Index Updater"/>
+ <elements xsi:type="commands:Command" xmi:id="_d6YpoEAVEembfJNLZI9wiA" elementId="eu.etaxonomy.taxeditor.editor.definedTerms.moveTerm" commandName="Move Term"/>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_swGH0GhvEee3K4uKJljEYg" featurename="handlers" parentElementId="xpath:/">
<elements xsi:type="commands:Handler" xmi:id="_rVEdIGcjEee0qLTtA2ZpVQ" elementId="eu.etaxonomy.taxeditor.featuretree.e4.handler.RemoveFeatureHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.featuretree.e4.handler.RemoveFeatureHandler" command="_fNBtQGcjEee0qLTtA2ZpVQ"/>
<elements xsi:type="commands:Handler" xmi:id="_i-FlkNjyEeidDMMI9xTsbQ" elementId="eu.etaxonomy.taxeditor.featuretree.e4.handler.CopyFeatureHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.featuretree.e4.handler.CopyFeatureHandler" command="_cMyQ4NjyEeidDMMI9xTsbQ"/>
<elements xsi:type="commands:Handler" xmi:id="_tzQ_YNjyEeidDMMI9xTsbQ" elementId="eu.etaxonomy.taxeditor.featuretree.e4.handler.PasteFeatureHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.featuretree.e4.handler.PasteFeatureHandler" command="_xDk5kNjyEeidDMMI9xTsbQ"/>
<elements xsi:type="commands:Handler" xmi:id="_xWlngO5vEeizn7bmbAeBkw" elementId="eu.etaxonomy.taxeditor.handler.e4.OpenDistributionStausWizardHandler" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.handler.e4.OpenDistributionStatusWizardHandler" command="_Za5DYO5vEeizn7bmbAeBkw"/>
+ <elements xsi:type="commands:Handler" xmi:id="_i4yZAD8zEemTy7SLZkowuQ" elementId="eu.etaxonomy.taxeditor.store.handler.0" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.handler.OpenDatabaseRepairWizardHandler" command="_qYxw8D85EemTy7SLZkowuQ"/>
+ <elements xsi:type="commands:Handler" xmi:id="_PugRQD86EemTy7SLZkowuQ" elementId="eu.etaxonomy.taxeditor.store.handler.1" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.handler.OpenUpdateSortIndicesHandler" command="_VUQY0D86EemTy7SLZkowuQ"/>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_qT4hgIfTEeecZ4F2Y9Z0Og" featurename="children" parentElementId="eu.etaxonomy.taxeditor.workbench.menu.window" positionInList="before:eu.etaxonomy.taxeditor.application.windowMenu.last">
<elements xsi:type="menu:Menu" xmi:id="_LT3P8IfcEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.menu.termeditor" label="%menu.label.1">
- <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_gVhOIEb1EeiER_VRS0L7wA" coreExpressionId="isCdmStoreConnected"/>
<children xsi:type="menu:DynamicMenuContribution" xmi:id="_HIptYIfUEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.dynamicmenucontribution.0" contributionURI="bundleclass://eu.etaxonomy.taxeditor.store/eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermMenuE4"/>
<children xsi:type="menu:MenuSeparator" xmi:id="_yRINcIfqEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.menuseparator.3"/>
<children xsi:type="menu:HandledMenuItem" xmi:id="_rwfDkIftEeecZ4F2Y9Z0Og" elementId="eu.etaxonomy.taxeditor.store.termEditorMenu.featureTreeEditor" label="%handledmenuitem.label.8" tooltip="%handledmenuitem.tooltip.1" command="_bnVKsCZxEeeQLpuomSmVoQ">
<visibleWhen xsi:type="ui:CoreExpression" xmi:id="_h15bwEb1EeiER_VRS0L7wA" coreExpressionId="isCdmStoreConnectedAndShowExperimental"/>
<parameters xmi:id="_eU0zcUbOEeiER_VRS0L7wA" elementId="eu.etaxonomy.taxeditor.store.showView.parameter.gfbioTermImport" name="eu.etaxonomy.taxeditor.workbench.commandparameter.partName" value="eu.etaxonomy.taxeditor.view.webimport.termimport.GfBioTerminologyImportPart"/>
</children>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_fbZtkB7xEemDKJyLc5CJfQ" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.termsearch" label="Term Search" command="_bnVKsCZxEeeQLpuomSmVoQ">
+ <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_fDkegDNMEemOn_75IU-Tvg" coreExpressionId="isShowExperimentalFeatures"/>
+ <parameters xmi:id="_jnbCEB7xEemDKJyLc5CJfQ" elementId="eu.etaxonomy.taxeditor.store.showView.parameter.termsearch" name="eu.etaxonomy.taxeditor.workbench.commandparameter.partName" value="eu.etaxonomy.taxeditor.store.partdescriptor.termsearch"/>
+ </children>
+ <children xsi:type="menu:HandledMenuItem" xmi:id="_ab1eYDNMEemOn_75IU-Tvg" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.occurrencesearch" label="Occurrence Search" command="_bnVKsCZxEeeQLpuomSmVoQ">
+ <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_eiOE8DNMEemOn_75IU-Tvg" coreExpressionId="isShowExperimentalFeatures"/>
+ <parameters xmi:id="_ab1eYTNMEemOn_75IU-Tvg" elementId="eu.etaxonomy.taxeditor.store.showView.parameter.occurrencesearch" name="eu.etaxonomy.taxeditor.workbench.commandparameter.partName" value="eu.etaxonomy.taxeditor.store.partdescriptor.occurencesearch"/>
+ </children>
</elements>
</fragments>
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_pVVyEJFJEeeDJpjGQES7gw" featurename="addons" parentElementId="xpath:/">
<fragments xsi:type="fragment:StringModelFragment" xmi:id="_lnmLABWNEeiazYUJirF0Pw" featurename="children" parentElementId="eu.etaxonomy.taxeditor.workbench.menu.help" positionInList="after:eu.etaxonomy.taxeditor.workbench.menuseparator.beforeHelp">
<elements xsi:type="menu:HandledMenuItem" xmi:id="_uHiLwBWNEeiazYUJirF0Pw" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.handledmenuitemlabel6" label="%handledmenuitem.label.11" command="_jSJrsBWPEeiazYUJirF0Pw"/>
</fragments>
+ <fragments xsi:type="fragment:StringModelFragment" xmi:id="_S2CIED8oEempU5gGjh-zOg" featurename="children" parentElementId="eu.etaxonomy.taxeditor.workbench.menu.databaseRepair">
+ <elements xsi:type="menu:HandledMenuItem" xmi:id="_67xR4D8oEempU5gGjh-zOg" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.UpdateCaches" label="Update Caches" command="_qYxw8D85EemTy7SLZkowuQ">
+ <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_HcAdUD8_EemTy7SLZkowuQ" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
+ </elements>
+ <elements xsi:type="menu:HandledMenuItem" xmi:id="_CSXsAD8pEempU5gGjh-zOg" elementId="eu.etaxonomy.taxeditor.store.handledmenuitem.UpdateSortindices" label="Update Sortindices" command="_VUQY0D86EemTy7SLZkowuQ">
+ <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_JRRV0D8_EemTy7SLZkowuQ" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
+ </elements>
+ </fragments>
</fragment:ModelFragments>
id="eu.etaxonomy.taxeditor.preference.taxonSearchPreferences"
name="%page.name.57">
</page>
+ <page
+ category="eu.etaxonomy.taxeditor.preference.defaultlanguagepditorpreferencePage"
+ class="eu.etaxonomy.taxeditor.preference.menu.CommonNameLanguagePreferences"
+ id="eu.etaxonomy.taxeditor.preferences.commonnamelanguages"
+ name="%page.name.58">
+ </page>
</extension>
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.TabFolder;
-import org.eclipse.swt.widgets.TabItem;
-import eu.etaxonomy.cdm.io.operation.config.CacheUpdaterConfigurator;
-import eu.etaxonomy.cdm.io.operation.config.SortIndexUpdaterConfigurator;
+import eu.etaxonomy.cdm.api.service.config.CacheUpdaterConfigurator;
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
* @date 14.12.2016
*
*/
-public class Test extends WizardPage {
+public class CacheUpdaterWizardPage extends WizardPage {
CacheUpdaterConfigurator config;
- SortIndexUpdaterConfigurator sortIndexConfig;
+
boolean updateAgentBase = false;
boolean updateReference = false;
boolean updateTaxonBase = false;
boolean updateName = false;
boolean updateSpecimen = false;
- public Test(String pageName, CacheUpdaterConfigurator configTitleCache, SortIndexUpdaterConfigurator sortIndexConfig) {
+ public CacheUpdaterWizardPage(String pageName, CacheUpdaterConfigurator configTitleCache) {
super(pageName);
+ this.setDescription(Messages.DatabaseRepairPage_description);
config = configTitleCache;
- this.sortIndexConfig = sortIndexConfig;
+
}
/**
public void createControl(Composite parent) {
- Composite container = new Composite(parent, SWT.NULL);
- setControl(container);
- container.setLayout(new FillLayout(SWT.HORIZONTAL));
-
- TabFolder tabFolder = new TabFolder(container, SWT.NONE);
-
- TabItem tbtmSortIndex = new TabItem(tabFolder, SWT.NONE);
- tbtmSortIndex.setText("Sort Index");
+ Composite composite = new Composite(parent, SWT.NONE);
- Composite composite = new Composite(tabFolder, SWT.NONE);
- tbtmSortIndex.setControl(composite);
composite.setLayout(new GridLayout(1, true));
-
-
- Button checkBoxTaxonNode = new Button(composite, SWT.CHECK);
- checkBoxTaxonNode.setSelection(sortIndexConfig.isDoTaxonNode());
- checkBoxTaxonNode.setText(Messages.DatabaseRepairPage_updateTaxonNodes);
- checkBoxTaxonNode
- .setToolTipText(Messages.DatabaseRepairPage_toolTip_taxonNode);
- checkBoxTaxonNode.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- sortIndexConfig.setDoTaxonNode(!sortIndexConfig.isDoTaxonNode());
- }
- });
-
- Button checkBoxPolytomousKeyNode = new Button(composite, SWT.CHECK);
- checkBoxPolytomousKeyNode.setSelection(sortIndexConfig.isDoPolytomousKeyNode());
- checkBoxPolytomousKeyNode.setText(Messages.DatabaseRepairPage_PolytomousKeyNode);
- checkBoxPolytomousKeyNode
- .setToolTipText(Messages.DatabaseRepairPage_toolTip_polytomousKeyNode);
- checkBoxPolytomousKeyNode.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- sortIndexConfig.setDoPolytomousKeyNode(!sortIndexConfig.isDoPolytomousKeyNode());
- }
- });
-
- Button checkBoxFeatureNode = new Button(composite, SWT.CHECK);
- checkBoxFeatureNode.setSelection(sortIndexConfig.isDoFeatureNode());
- checkBoxFeatureNode.setText(Messages.DatabaseRepairPage_featureNodes);
- checkBoxFeatureNode
- .setToolTipText(Messages.DatabaseRepairPage_toolTipFeatureNodes);
- checkBoxFeatureNode.addSelectionListener(new SelectionAdapter() {
- @Override
- public void widgetSelected(SelectionEvent e) {
- sortIndexConfig.setDoFeatureNode(!sortIndexConfig.isDoFeatureNode());
- }
- });
-
-
- TabItem tbtmNewItem = new TabItem(tabFolder, SWT.NONE);
- tbtmNewItem.setText("Update Caches");
-
- Composite composite_1 = new Composite(tabFolder, SWT.NONE);
- tbtmNewItem.setControl(composite_1);
- composite_1.setLayout(new GridLayout(1, false));
-
- Button checkBoxTeamOrPerson = new Button(composite_1, SWT.CHECK);
+ setControl(composite);
+ Button checkBoxTeamOrPerson = new Button(composite, SWT.CHECK);
checkBoxTeamOrPerson.setSelection(config.getClassList().contains(TeamOrPersonBase.class));
checkBoxTeamOrPerson.setText(Messages.DatabaseRepairPage_TeamOrPerson);
checkBoxTeamOrPerson
}
});
- Button checkBoxReference = new Button(composite_1, SWT.CHECK);
+ Button checkBoxReference = new Button(composite, SWT.CHECK);
checkBoxReference.setSelection(config.getClassList().contains(Reference.class));
checkBoxReference.setText(Messages.DatabaseRepairPage_Reference);
checkBoxReference
}
});
- Button checkBoxTaxonName = new Button(composite_1, SWT.CHECK);
+ Button checkBoxTaxonName = new Button(composite, SWT.CHECK);
checkBoxTaxonName.setSelection(config.getClassList().contains(TaxonName.class));
checkBoxTaxonName.setText(Messages.DatabaseRepairPage_updateTaxonName);
checkBoxTaxonName
}
});
- Button checkBoxTaxonBase = new Button(composite_1, SWT.CHECK);
+ Button checkBoxTaxonBase = new Button(composite, SWT.CHECK);
checkBoxTaxonBase.setSelection(config.getClassList().contains(TaxonBase.class));
checkBoxTaxonBase.setText(Messages.DatabaseRepairPage_TaxonBase);
checkBoxTaxonBase
});
- Button checkBoxSpecimen = new Button(composite_1, SWT.CHECK);
+ Button checkBoxSpecimen = new Button(composite, SWT.CHECK);
checkBoxSpecimen.setSelection(config.getClassList().contains(SpecimenOrObservationBase.class));
checkBoxSpecimen.setText(Messages.DatabaseRepairPage_Specimen);
checkBoxSpecimen
}
});
- tabFolder.pack();
+
}
}
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
-import eu.etaxonomy.cdm.io.operation.config.CacheUpdaterConfigurator;
+import eu.etaxonomy.cdm.api.service.config.CacheUpdaterConfigurator;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.databaseAdmin.wizard;
+
+import java.util.UUID;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.widgets.Display;
+
+import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.api.longrunningService.ILongRunningTasksService;
+import eu.etaxonomy.cdm.api.service.config.CacheUpdaterConfigurator;
+import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
+
+/**
+ * @author k.luther
+ * @since 05.03.2019
+ *
+ */
+public class DatabaseRepairUpdateCachesWizard extends Wizard implements IPostMoniteredOperationEnabled {
+
+ CacheUpdaterConfigurator cacheUpdaterConfig;
+ ILongRunningTasksService longRunningTaskService;
+ CacheUpdaterWizardPage page;
+
+
+ public DatabaseRepairUpdateCachesWizard() {
+ setWindowTitle("Update Caches");
+ cacheUpdaterConfig = CacheUpdaterConfigurator.NewInstance();
+ longRunningTaskService = CdmApplicationState.getLongRunningTasksService();
+ page = new CacheUpdaterWizardPage("Update Caches", cacheUpdaterConfig);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void postOperation(IRemotingProgressMonitor monitor) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public void addPages() {
+ addPage(page);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean performFinish() {
+ if (page.updateAgentBase){
+ cacheUpdaterConfig.getClassList().add(TeamOrPersonBase.class);
+ }
+ if (page.updateReference){
+ cacheUpdaterConfig.getClassList().add(Reference.class);
+ }
+ if (page.updateName){
+ cacheUpdaterConfig.getClassList().add(TaxonName.class);
+ }
+ if (page.updateTaxonBase){
+ cacheUpdaterConfig.getClassList().add(TaxonBase.class);
+ }
+ if (page.updateSpecimen){
+ cacheUpdaterConfig.getClassList().add(SpecimenOrObservationBase.class);
+ }
+ if (!cacheUpdaterConfig.getClassList().isEmpty()){
+
+
+ final UUID uuid = longRunningTaskService.monitLongRunningTask(cacheUpdaterConfig);
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ AbstractUtility.executeMoniteredOperation("Update Caches",
+ uuid,
+ 1000,
+ false,
+ DatabaseRepairUpdateCachesWizard.this,
+ null,
+ true);
+
+ }
+
+ });
+ }
+
+
+
+ return true;
+ }
+
+}
--- /dev/null
+/**
+* Copyright (C) 2016 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.databaseAdmin.wizard;
+
+import java.util.UUID;
+
+import org.eclipse.jface.wizard.Wizard;
+import org.eclipse.swt.widgets.Display;
+
+import eu.etaxonomy.cdm.api.application.CdmApplicationState;
+import eu.etaxonomy.cdm.api.longrunningService.ILongRunningTasksService;
+import eu.etaxonomy.cdm.api.service.config.SortIndexUpdaterConfigurator;
+import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
+import eu.etaxonomy.cdm.config.ICdmSource;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author k.luther
+ * @date 06.12.2016
+ *
+ */
+public class DatabaseRepairUpdateSortIndicesWizard extends Wizard implements IPostMoniteredOperationEnabled{
+ // private final DatabaseRepairSortIndexPage repairSortIndexPage;
+ private final SortIndexUpdaterWizardPage page;
+ SortIndexUpdaterConfigurator config;
+
+ ILongRunningTasksService longRunningTaskService;
+
+
+ public DatabaseRepairUpdateSortIndicesWizard() {
+ setWindowTitle("Update Sort Indices");
+ config = SortIndexUpdaterConfigurator.NewInstance();
+ page = new SortIndexUpdaterWizardPage("Sort index update", config);
+ longRunningTaskService = CdmApplicationState.getLongRunningTasksService();
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean performFinish() {
+
+ if (config == null){
+ ICdmSource source= CdmStore.getActiveCdmSource();
+ config = SortIndexUpdaterConfigurator.NewInstance();
+ config.setDoFeatureNode(false);
+ config.setDoPolytomousKeyNode(false);
+
+
+ }
+ if (config.isDoFeatureNode() || config.isDoPolytomousKeyNode() || config.isDoTaxonNode()){
+
+ final UUID uuid = longRunningTaskService.monitLongRunningTask(config);
+ Display.getDefault().asyncExec(new Runnable() {
+ @Override
+ public void run() {
+ AbstractUtility.executeMoniteredOperation("Update SortIndices: ",
+ uuid,
+ 1000,
+ false,
+ DatabaseRepairUpdateSortIndicesWizard.this,
+ null,
+ true);
+
+ }
+
+ });
+
+
+ }
+
+
+ return true;
+ }
+
+ @Override
+ public void addPages() {
+ addPage(page);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void postOperation(IRemotingProgressMonitor monitor) {
+ // TODO Auto-generated method stub
+
+ }
+
+
+}
+++ /dev/null
-/**
-* Copyright (C) 2016 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-package eu.etaxonomy.taxeditor.databaseAdmin.wizard;
-
-import org.eclipse.core.runtime.jobs.Job;
-import org.eclipse.jface.wizard.Wizard;
-
-import eu.etaxonomy.cdm.config.ICdmSource;
-import eu.etaxonomy.cdm.io.common.IImportConfigurator.CHECK;
-import eu.etaxonomy.cdm.io.operation.config.CacheUpdaterConfigurator;
-import eu.etaxonomy.cdm.io.operation.config.SortIndexUpdaterConfigurator;
-import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
-import eu.etaxonomy.cdm.model.name.TaxonName;
-import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
-import eu.etaxonomy.cdm.model.reference.Reference;
-import eu.etaxonomy.cdm.model.taxon.TaxonBase;
-import eu.etaxonomy.taxeditor.store.CdmStore;
-
-/**
- * @author k.luther
- * @date 06.12.2016
- *
- */
-public class DatabaseRepairWizard extends Wizard {
- // private final DatabaseRepairSortIndexPage repairSortIndexPage;
- private final Test test;
- SortIndexUpdaterConfigurator config;
- CacheUpdaterConfigurator cacheUpdaterConfig;
-
-
-
- public DatabaseRepairWizard() {
- setWindowTitle("Repair Wizard");
- config = SortIndexUpdaterConfigurator.NewInstance(null);
- // repairSortIndexPage = new DatabaseRepairSortIndexPage("SortIndex Repair",config);
- cacheUpdaterConfig = CacheUpdaterConfigurator.NewInstance(null);
- test = new Test("Test", cacheUpdaterConfig, config);
-
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean performFinish() {
-
- if (config == null){
- ICdmSource source= CdmStore.getActiveCdmSource();
- config = SortIndexUpdaterConfigurator.NewInstance(null);
- config.setDoFeatureNode(false);
- config.setDoPolytomousKeyNode(false);
-
-
- }
- if (config.isDoFeatureNode() || config.isDoPolytomousKeyNode() || config.isDoTaxonNode()){
- config.setCheck(CHECK.IMPORT_WITHOUT_CHECK);
- Job updateJob = CdmStore.getImportManager().createIOServiceJob(config);
- CdmStore.getImportManager().run(updateJob);
- }
- if (test.updateAgentBase){
- cacheUpdaterConfig.getClassList().add(TeamOrPersonBase.class);
- }
- if (test.updateReference){
- cacheUpdaterConfig.getClassList().add(Reference.class);
- }
- if (test.updateName){
- cacheUpdaterConfig.getClassList().add(TaxonName.class);
- }
- if (test.updateTaxonBase){
- cacheUpdaterConfig.getClassList().add(TaxonBase.class);
- }
- if (test.updateSpecimen){
- cacheUpdaterConfig.getClassList().add(SpecimenOrObservationBase.class);
- }
- if (!cacheUpdaterConfig.getClassList().isEmpty()){
- cacheUpdaterConfig.setCheck(CHECK.IMPORT_WITHOUT_CHECK);
- Job updateJob2 = CdmStore.getImportManager().createIOServiceJob(cacheUpdaterConfig);
- CdmStore.getImportManager().run(updateJob2);
- }
-
-
-
- return true;
- }
-
- @Override
- public void addPages() {
- //addPage(repairSortIndexPage);
- addPage(test);
- }
-
-
-}
/**
-* Copyright (C) 2016 EDIT
+* Copyright (C) 2019 EDIT
* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
*
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
-import eu.etaxonomy.cdm.io.operation.config.SortIndexUpdaterConfigurator;
+import eu.etaxonomy.cdm.api.service.config.SortIndexUpdaterConfigurator;
import eu.etaxonomy.taxeditor.l10n.Messages;
/**
* @author k.luther
- * @date 06.12.2016
+ * @since 05.03.2019
*
*/
-public class DatabaseRepairSortIndexPage extends WizardPage {
+public class SortIndexUpdaterWizardPage extends WizardPage {
- SortIndexUpdaterConfigurator config = null;
- /**
- * @param pageName
- */
- protected DatabaseRepairSortIndexPage(String pageName, SortIndexUpdaterConfigurator config){
+ SortIndexUpdaterConfigurator sortIndexConfig;
+
+ public SortIndexUpdaterWizardPage(String pageName, SortIndexUpdaterConfigurator sortIndexConfig) {
super(pageName);
- this.config = config;
- setMessage(Messages.DatabaseRepairPage_chooseParameter);
+ this.setDescription(Messages.DatabaseRepairPage_description_sortIndex);
+ this.sortIndexConfig = sortIndexConfig;
}
-
-
-
-
-
-
-
/**
* {@inheritDoc}
*/
@Override
public void createControl(Composite parent) {
- final Composite composite = new Composite(parent, SWT.NULL);
-
- GridLayout gridLayout = new GridLayout();
- composite.setLayout(gridLayout);
+ Composite composite = new Composite(parent, SWT.NONE);
+ composite.setLayout(new GridLayout(1, true));
+ setControl(composite);
Button checkBoxTaxonNode = new Button(composite, SWT.CHECK);
- checkBoxTaxonNode.setSelection(config.isDoTaxonNode());
+ checkBoxTaxonNode.setSelection(sortIndexConfig.isDoTaxonNode());
checkBoxTaxonNode.setText(Messages.DatabaseRepairPage_updateTaxonNodes);
checkBoxTaxonNode
.setToolTipText(Messages.DatabaseRepairPage_toolTip_taxonNode);
checkBoxTaxonNode.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- config.setDoTaxonNode(!config.isDoTaxonNode());
+ sortIndexConfig.setDoTaxonNode(!sortIndexConfig.isDoTaxonNode());
}
});
Button checkBoxPolytomousKeyNode = new Button(composite, SWT.CHECK);
- checkBoxPolytomousKeyNode.setSelection(config.isDoPolytomousKeyNode());
+ checkBoxPolytomousKeyNode.setSelection(sortIndexConfig.isDoPolytomousKeyNode());
checkBoxPolytomousKeyNode.setText(Messages.DatabaseRepairPage_PolytomousKeyNode);
checkBoxPolytomousKeyNode
.setToolTipText(Messages.DatabaseRepairPage_toolTip_polytomousKeyNode);
checkBoxPolytomousKeyNode.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- config.setDoPolytomousKeyNode(!config.isDoPolytomousKeyNode());
+ sortIndexConfig.setDoPolytomousKeyNode(!sortIndexConfig.isDoPolytomousKeyNode());
}
});
Button checkBoxFeatureNode = new Button(composite, SWT.CHECK);
- checkBoxFeatureNode.setSelection(config.isDoFeatureNode());
+ checkBoxFeatureNode.setSelection(sortIndexConfig.isDoFeatureNode());
checkBoxFeatureNode.setText(Messages.DatabaseRepairPage_featureNodes);
checkBoxFeatureNode
.setToolTipText(Messages.DatabaseRepairPage_toolTipFeatureNodes);
checkBoxFeatureNode.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
- config.setDoFeatureNode(!config.isDoFeatureNode());
+ sortIndexConfig.setDoFeatureNode(!sortIndexConfig.isDoFeatureNode());
}
});
-
-
- setControl(composite);
-
}
-
-
}
package eu.etaxonomy.taxeditor.editor;
import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
public interface ITaxonEditor {
/**
- *
+ *
* @return the @Taxon of the editor
- *
+ *
*/
public abstract Taxon getTaxon();
+
+ public abstract void update();
+
+ public void addOperation(AbstractPostOperation operation);
}
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
-import eu.etaxonomy.cdm.model.common.OrderedTermBase;
+import eu.etaxonomy.cdm.model.term.OrderedTermBase;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
import eu.etaxonomy.cdm.remote.l10n.TermRepresentation_L10n;
import org.eclipse.jface.viewers.ITreeContentProvider;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
/**
*
\r
import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
import eu.etaxonomy.cdm.model.common.Marker;\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
-import eu.etaxonomy.cdm.model.common.TermBase;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.TermBase;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
import eu.etaxonomy.cdm.persistence.dto.TermDto;\r
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;\r
import eu.etaxonomy.taxeditor.store.CdmStore;\r
return vocabularyDto;
}
//parent is the vocabulary
- return new TermVocabularyDto(termDto.getVocabularyUuid(), null);
+ return new TermVocabularyDto(termDto.getVocabularyUuid(), null, termDto.getTermType());
}
return null;
import java.util.UUID;\r
\r
import eu.etaxonomy.cdm.api.service.ITermService;\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
import eu.etaxonomy.taxeditor.model.CdmObjectTransfer;\r
import eu.etaxonomy.taxeditor.store.CdmStore;\r
\r
event.doit = true;
}
+ @Override
+ public void dragFinished(DragSourceEvent event) {
+ super.dragFinished(event);
+ LocalSelectionTransfer.getTransfer().setSelection(null);
+ }
+
@Override
public void dragSetData(DragSourceEvent event) {
IStructuredSelection selection = (IStructuredSelection) viewer.getSelection();
*/
public class DefinedTermDropAdapterE4 extends EditViewerDropAdapter {
+
+ public static final String TERM_TYPE_ERROR_TITLE = Messages.DefinedTermDropAdapterE4_TERM_TYPE_ERROR_TITLE;
+ public static final String TERM_TYPE_ERROR_MESSAGE = Messages.DefinedTermDropAdapterE4_TERM_TYPE_ERROR_MESSAGE;
+
public static final String MOVE_FAILED = Messages.DefinedTermDropAdapterE4_MOVE_FAILED;
private static final String MOVE_FAILED_MESSAGE = Messages.DefinedTermDropAdapterE4_MOVE_FAILED_MESSAGE;
@Override
public boolean performDrop(Object data) {
- if(StoreUtil.promptCheckIsDirty(editor)){
+ if(StoreUtil.promptCheckIsDirty(editor) || data == null){
return false;
}
AbstractTermDto target = (AbstractTermDto) getCurrentTarget();//can be vocab
MOVE_FAILED_MESSAGE);
return false;
}
- // check if target is a child of the dropped term
if(target instanceof TermDto){
TermDto parentTerm = (TermDto)target;
+ //check term type compatibility
+ if(droppedObject instanceof TermDto && !((TermDto) droppedObject).getTermType().equals(parentTerm.getTermType())){
+ MessagingUtils.warningDialog(TERM_TYPE_ERROR_TITLE, this, TERM_TYPE_ERROR_MESSAGE);
+ return false;
+ }
+
TermDto partOfDto = parentTerm.getPartOfDto();
while(partOfDto!=null){
if(partOfDto.equals(droppedObject)){
MOVE_FAILED_MESSAGE);
return false;
}
- partOfDto = partOfDto.getPartOfDto();
}
TermDto kindOfDto = parentTerm.getKindOfDto();
while(kindOfDto!=null){
MOVE_FAILED_MESSAGE);
return false;
}
- kindOfDto = kindOfDto.getKindOfDto();
+ }
+ }
+ else if(target instanceof TermVocabularyDto){
+ TermVocabularyDto vocDto = (TermVocabularyDto)target;
+ //check term type compatibility
+ if(droppedObject instanceof TermDto && !((TermDto) droppedObject).getTermType().equals(vocDto.getTermType())){
+ MessagingUtils.warningDialog(TERM_TYPE_ERROR_TITLE, this, TERM_TYPE_ERROR_MESSAGE);
+ return false;
}
}
}
editor,
currentLocation);
AbstractUtility.executeOperation(operation, sync);
- // select the newly moved objects
+ // select the moved objects
editor.getViewer().setSelection(new StructuredSelection(sourceTerms));
return true;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.ITermService;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermBase;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
public void init(TermEditorInput input){
this.input = input;
- input.initialiseVocabularies();
viewer.setInput(input.getVocabularies());
thisPart.setLabel(input.getName());
}
}
else if(element instanceof TermVocabulary){
TermVocabulary vocabulary = (TermVocabulary)element;
- TermVocabularyDto vocabularyDto = new TermVocabularyDto(vocabulary.getUuid(), vocabulary.getRepresentations());
+ TermVocabularyDto vocabularyDto = new TermVocabularyDto(vocabulary.getUuid(), vocabulary.getRepresentations(), vocabulary.getTermType());
viewer.update(vocabularyDto, null);
changedTerms.add(vocabulary);
}
import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
import org.eclipse.e4.ui.model.application.ui.menu.MMenuFactory;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
if(CdmStore.isActive()){
//add Feature and NamedArea to top level
- addChildTermsToMenuManager(items, TermType.Feature);
+ addChildTermsToMenuManager(items, TermType.Feature, true);
addChildTermsToMenuManager(items, TermType.NamedArea);
MMenu otherMenu = MMenuFactory.INSTANCE.createMenu();
items.add(otherMenu);
items.add(MMenuFactory.INSTANCE.createMenuSeparator());
-// createFeatureTreeMenuItem(menu);
List<TermType> ttList = new ArrayList<TermType>(EnumSet.allOf(TermType.class));
Collections.sort(ttList,new SortByTermTypeMessage());
}
private void addChildTermsToMenuManager(List<MMenuElement> items, TermType termType) {
+ addChildTermsToMenuManager(items, termType, false);
+ }
+
+ private void addChildTermsToMenuManager(List<MMenuElement> items, TermType termType, boolean skipChildren) {
//FIXME : need a better way to find out if a term type can be editable (ticket 3853)
if(termType.getEmptyDefinedTermBase() != null) {
Set<TermType> children = termType.getGeneralizationOf();
// term type has no children, so create menu item
- if(children.isEmpty()) {
+ if(skipChildren || children.isEmpty()) {
items.add(createMenuItem(termType));
}
else{
return menuItem;
}
- private void createFeatureTreeMenuItem() {
-
-// String commandId = "eu.etaxonomy.taxeditor.workbench.commandparameter.partName";
-//
-// MDirectMenuItem directMenuItem = MMenuFactory.INSTANCE.createDirectMenuItem();
-// directMenuItem.
-// MHandledMenuItem menuItem = MMenuFactory.INSTANCE.createHandledMenuItem();
-// menuItem.setLabel(Messages.DefinedTermMenu_FEATURE_TREE);
-// MCommand mCommand = MCommandsFactory.INSTANCE.createCommand();
-// mCommand.setElementId(commandId);
-// mCommand.getParameters().add(MCommandsFactory.INSTANCE.createCommandParameter().);
-//
-// MCommandParameter commandParameter = MCommandsFactory.INSTANCE.createCommandParameter();
-// commandParameter.setName("eu.etaxonomy.taxeditor.workbench.commandparameter.partName");
-// commandParameter.set
-//
-// //set params
-// menuItem.getTransientData().put(commandId+"termTypeUuid", termType.getUuid());
-//
-// menuItem.setCommand(mCommand);
-// menu.getChildren().add(menuItem);
-//
-//
-// Map<String, String> params = new HashMap<String, String>();
-// params.put("eu.etaxonomy.taxeditor.workbench.commandparameter.partName", //$NON-NLS-1$
-// "eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor"); //$NON-NLS-1$
-//
-// CommandContributionItemParameter p = new CommandContributionItemParameter(
-// PlatformUI.getWorkbench(),
-// "eu.etaxonomy.taxeditor.featuretree.commandContributionItemParameter", //$NON-NLS-1$
-// "eu.etaxonomy.taxeditor.command.openPart", //$NON-NLS-1$
-// params,
-// null,
-// null,
-// null,
-// Messages.DefinedTermMenu_FEATURE_TREE,
-// "", //$NON-NLS-1$
-// "", //$NON-NLS-1$
-// SWT.PUSH,
-// "", //$NON-NLS-1$
-// true);
-//
-//
-//
-// CommandContributionItem item = new CommandContributionItem(p);
-// return item;
-
- }
-
private MHandledMenuItem createDefaultMenuItem(TermType termType) {
MHandledMenuItem menuItem = MMenuFactory.INSTANCE.createHandledMenuItem();
--- /dev/null
+/**
+ * Copyright (C) 2009 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+package eu.etaxonomy.taxeditor.editor.definedterm.e4.handler;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Set;
+
+import javax.inject.Named;
+
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.e4.core.di.annotations.CanExecute;
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.e4.ui.di.UISynchronize;
+import org.eclipse.e4.ui.model.application.ui.basic.MPart;
+import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
+import org.eclipse.e4.ui.services.IServiceConstants;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.model.location.Country;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
+import eu.etaxonomy.taxeditor.editor.definedterm.operation.MoveDefinedTermOperation;
+import eu.etaxonomy.taxeditor.featuretree.TermChooseWizard;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+
+/**
+ *
+ * @author pplitzner
+ * @date 06.03.2019
+ *
+ */
+public class MoveDefinedTermHandler {
+
+ @Execute
+ public void execute(@Named(IServiceConstants.ACTIVE_PART) MPart activePart,
+ @Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+ @Named(IServiceConstants.ACTIVE_SHELL) Shell shell,
+ MHandledMenuItem menuItem,
+ UISynchronize sync) {
+ DefinedTermEditorE4 termEditor = (DefinedTermEditorE4) activePart.getObject();
+ if(StoreUtil.promptCheckIsDirty(termEditor)){
+ return;
+ }
+
+ TermDto selectedTerm = (TermDto) selection.getFirstElement();
+
+ TermChooseWizard wizard = new TermChooseWizard(selectedTerm.getTermType());
+ WizardDialog dialog = new WizardDialog(shell, wizard);
+
+ List<TermDto> selectedTerms = new ArrayList<>();
+ if (dialog.open() == IStatus.OK) {
+ selectedTerms = wizard.getSelectedTerms();
+ }
+
+ if(selectedTerms.size()!=1){
+ MessagingUtils.warningDialog("Move not possible", this, "You have to select one single target term");
+ return;
+ }
+
+ TermDto target = selectedTerms.get(0);
+ String label = menuItem.getLocalizedLabel();
+ IUndoContext undoContext = StoreUtil.getUndoContext();
+ Set<TermDto> movedTerms = Collections.singleton(selectedTerm);
+ AbstractPostOperation operation =
+ new MoveDefinedTermOperation(label,
+ undoContext,
+ target,
+ movedTerms,
+ termEditor);
+ AbstractUtility.executeOperation(operation, sync);
+
+ }
+
+ @CanExecute
+ public boolean canExecute(@Named(IServiceConstants.ACTIVE_SELECTION) IStructuredSelection selection,
+ MHandledMenuItem menuItem){
+ boolean canExecute = false;
+ Object firstElement = selection.getFirstElement();
+ canExecute = PreferencesUtil.getBooleanValue(IPreferenceKeys.SHOW_EXPERIMENTAL_FEATURES)
+ && selection.size()==1
+ && firstElement instanceof TermDto
+ // TODO temporary fix for #7933
+ && !((TermDto) firstElement).getVocabularyUuid().equals(Country.uuidCountryVocabulary);
+ menuItem.setVisible(canExecute);
+ return canExecute;
+ }
+
+}
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.e4.ui.workbench.modeling.EPartService.PartState;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
\r
import java.util.List;\r
\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
import eu.etaxonomy.taxeditor.editor.CdmEntitySessionInput;\r
\r
/**\r
import java.util.Set;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.store.TermStore;
import org.eclipse.core.runtime.IStatus;\r
\r
import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
-import eu.etaxonomy.cdm.model.common.OrderedTermBase;\r
-import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;\r
-import eu.etaxonomy.cdm.model.common.TermType;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.OrderedTermBase;\r
+import eu.etaxonomy.cdm.model.term.OrderedTermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.TermType;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;\r
import eu.etaxonomy.taxeditor.editor.definedterm.input.TermEditorInput;\r
import eu.etaxonomy.taxeditor.operation.AbstractPostTaxonOperation;\r
//FIXME: implement creation of term vocabularies\r
// definedEditorInput.getVocabularies().add(termVocabulary);\r
\r
- return postExecute(new TermVocabularyDto(termVocabulary.getUuid(), termVocabulary.getRepresentations()));\r
+ return postExecute(new TermVocabularyDto(termVocabulary.getUuid(), termVocabulary.getRepresentations(), termVocabulary.getTermType()));\r
}\r
\r
@Override\r
private final AbstractTermDto targetTermOrVocabulary;// the target VOCABULARY or DefinedTerm we are moving these to\r
private final int currentLocation;\r
\r
+ public MoveDefinedTermOperation(String label,\r
+ IUndoContext undoContext,\r
+ AbstractTermDto target,\r
+ Collection<TermDto> sourceTerms,\r
+ IPostOperationEnabled postOperationEnabled) {\r
+ this(label, undoContext, target, sourceTerms, postOperationEnabled, ViewerDropAdapter.LOCATION_ON);\r
+ }\r
public MoveDefinedTermOperation(String label,\r
IUndoContext undoContext,\r
AbstractTermDto target,\r
public static final String REFRESH_DETAILS = "REFRESH/DETAILS/DISTRIBUTION";
+ public static final String REMOVE_USER = "UPDATE/GROUP/REMOVEUSER";
+
}
import org.eclipse.jface.wizard.Wizard;
-import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
/**
* <p>AvailableFeaturesWizard class.</p>
private AvailableFeaturesWizardPage page;
- private Set<Feature> additionalFeatures;
+ private Set<DefinedTermBase> additionalFeatures;
- public AvailableFeaturesWizard(){
+ private TermType termType;
+
+ public AvailableFeaturesWizard(TermType termType){
+ this.termType = termType;
}
/** {@inheritDoc} */
@Override
public void addPages() {
- page = new AvailableFeaturesWizardPage();
+ page = new AvailableFeaturesWizardPage(termType);
addPage(page);
}
return additionalFeatures.size() > 0;
}
- public Set<Feature> getAdditionalFeatures() {
+ public Set<DefinedTermBase> getAdditionalFeatures() {
return additionalFeatures;
}
}
import eu.etaxonomy.cdm.api.service.ITermService;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.description.Feature;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermSorter;
public class AvailableFeaturesWizardPage extends WizardPage {
private CheckBoxTreeComposite treeComposite;
+ private TermType termType;
- protected AvailableFeaturesWizardPage() {
- super("AvailableFeaturesWizardPage");
- setTitle("Available Features");
- setDescription("Please select features you want to add to the tree.");
+ protected AvailableFeaturesWizardPage(TermType termType) {
+ super("Available Terms Wizard Page");
+ this.termType = termType;
+ setTitle("Available Terms");
+ setDescription("Please select terms you want to add to the tree.");
}
/** {@inheritDoc} */
@Override
public void createControl(Composite parent) {
treeComposite = new CheckBoxTreeComposite(parent, new TermDtoContentProvider(), new TermDtoLabelProvider(), SWT.NONE);
- List<TermVocabularyDto> vocabularyDtos = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(TermType.Feature);
+ List<TermVocabularyDto> vocabularyDtos = CdmStore.getService(IVocabularyService.class).findVocabularyDtoByTermType(termType);
treeComposite.getViewer().setComparator(new DefinedTermSorter());
treeComposite.getViewer().setInput(vocabularyDtos);
GridLayoutFactory.fillDefaults().applyTo(treeComposite);
setControl(treeComposite);
}
- public Set<Feature> getSelectedFeatures() {
+ public Set<DefinedTermBase> getSelectedFeatures() {
List<Object> checkedElements = Arrays.asList(treeComposite.getViewer().getCheckedElements());
checkedElements = checkedElements.stream().filter(element->element instanceof TermDto).collect(Collectors.toList());
- Set<Feature> features = new HashSet<Feature>();
+ Set<DefinedTermBase> terms = new HashSet<>();
for(Object element : checkedElements){
if(element instanceof TermDto){
- DefinedTermBase feature = CdmStore.getService(ITermService.class).load(((TermDto) element).getUuid());
- features.add((Feature) feature);
+ DefinedTermBase term = CdmStore.getService(ITermService.class).load(((TermDto) element).getUuid());
+ terms.add(term);
}
}
- return features;
+ return terms;
}
}
import org.eclipse.swt.dnd.TransferData;
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.Representation;
import eu.etaxonomy.cdm.model.description.Character;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
IFeatureNodeService featureNodeService = CdmStore.getService(IFeatureNodeService.class);
FeatureNode structure = featureNodeService.load(UUID.fromString(split[0]));
FeatureNode property = featureNodeService.load(UUID.fromString(split[1]));
- Representation structureRepresentation = structure.getFeature().getRepresentation(PreferencesUtil.getGlobalLanguage());
- Representation propertyRepresentation = property.getFeature().getRepresentation(PreferencesUtil.getGlobalLanguage());
+ Representation structureRepresentation = structure.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
+ Representation propertyRepresentation = property.getTerm().getRepresentation(PreferencesUtil.getGlobalLanguage());
String label = null;
String abbrevLabel = null;
if(structureRepresentation.getLabel()!=null && propertyRepresentation.getLabel()!=null){
import java.util.UUID;
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.model.CdmObjectTransfer;
import eu.etaxonomy.taxeditor.store.CdmStore;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
/**
* <p>FeatureTreeContentProvider class.</p>
import org.eclipse.jface.viewers.LabelProvider;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
/**
if(element instanceof FeatureTree){
return ((FeatureTree) element).getTitleCache();
}else if(element instanceof FeatureNode){
- Feature feature = ((FeatureNode) element).getFeature();
- if(feature!=null){
- Representation rep = feature.getRepresentation(PreferencesUtil.getGlobalLanguage());
+ DefinedTermBase term = ((FeatureNode) element).getTerm();
+ if(term!=null){
+ Representation rep = term.getRepresentation(PreferencesUtil.getGlobalLanguage());
if (rep == null){
- rep = feature.getPreferredRepresentation(new ArrayList<Language>());
+ rep = term.getPreferredRepresentation(new ArrayList<Language>());
}
- return rep != null? rep.getLabel() : feature.getTitleCache();
+ return rep != null? rep.getLabel() : term.getTitleCache();
}
}
import org.eclipse.core.expressions.PropertyTester;
import org.eclipse.jface.viewers.IStructuredSelection;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
/**
* Property tester used by the feature tree menu.
--- /dev/null
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.featuretree;
+
+import java.util.List;
+
+import org.eclipse.jface.wizard.Wizard;
+
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+
+/**
+ *
+ * @author pplitzner
+ * @since Feb 14, 2019
+ *
+ */
+public class TermChooseWizard extends Wizard {
+
+ private TermChooseWizardPage page;
+
+ private List<TermDto> selectedTerms;
+
+ private TermType termType;
+
+ public TermChooseWizard(TermType termType){
+ this.termType = termType;
+ }
+
+ public List<TermDto> getSelectedTerms() {
+ return selectedTerms;
+ }
+
+ @Override
+ public void addPages() {
+ page = new TermChooseWizardPage(termType);
+ addPage(page);
+ }
+
+ @Override
+ public boolean performFinish() {
+ selectedTerms = page.getSelectedTerms();
+ return selectedTerms.size() > 0;
+ }
+
+}
--- /dev/null
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.featuretree;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
+import eu.etaxonomy.taxeditor.view.search.facet.term.TermSearchController;
+
+/**
+ *
+ * @author pplitzner
+ * @since Feb 14, 2019
+ *
+ */
+public class TermChooseWizardPage extends WizardPage {
+
+ private TermSearchController controller;
+ private TermType termType;
+
+ protected TermChooseWizardPage(TermType termType) {
+ super("Term Choose Wizard");
+ setTitle("Term Choose Wizard");
+ setDescription("Please search and select the terms you want to add to the tree.");
+ this.termType = termType;
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+ SearchComposite searchComposite = new SearchComposite(parent, SWT.NONE);
+ controller = new TermSearchController(searchComposite, termType);
+ setControl(searchComposite);
+ }
+
+ public List<TermDto> getSelectedTerms() {
+ List<TermDto> termDtos = new ArrayList<>();
+ controller.getSelectedSearchResults().forEach(result->termDtos.add(result.getContent()));
+ return termDtos;
+ }
+
+}
import org.eclipse.swt.dnd.DragSourceAdapter;
import org.eclipse.swt.dnd.DragSourceEvent;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
public class FeatureNodeDragListener extends DragSourceAdapter {
import org.eclipse.jface.viewers.ViewerDropAdapter;
import org.eclipse.swt.dnd.TransferData;
-import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.OrderedTermVocabulary;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.IHasTermType;
+import eu.etaxonomy.cdm.model.term.OrderedTermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermDropAdapterE4;
import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
-import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.store.StoreUtil;
import eu.etaxonomy.taxeditor.ui.dialog.selection.TermVocabularySelectionDialog;
import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrapper;
}
}
for (Object droppedObject : droppedObjects) {
+ //check term type compatibility
+ TermType targetType = target.getTermType();
+ TermType droppedType = null;
+ if(droppedObject instanceof IHasTermType){
+ droppedType = ((IHasTermType)droppedObject).getTermType();
+ if(droppedType!=null && !droppedType.equals(targetType)){
+ MessagingUtils.warningDialog(DefinedTermDropAdapterE4.TERM_TYPE_ERROR_TITLE, this, DefinedTermDropAdapterE4.TERM_TYPE_ERROR_MESSAGE);
+ continue;
+ }
+ }
+ else if(droppedObject instanceof TermDto){
+ droppedType = ((TermDto)droppedObject).getTermType();
+ if(droppedType!=null && !droppedType.equals(targetType) && !droppedType.isKindOf(targetType)){
+ MessagingUtils.warningDialog(DefinedTermDropAdapterE4.TERM_TYPE_ERROR_TITLE, this, DefinedTermDropAdapterE4.TERM_TYPE_ERROR_MESSAGE);
+ continue;
+ }
+ }
if(droppedObject instanceof FeatureNode){
FeatureNode droppedNode = (FeatureNode) droppedObject;
int currentPosition = target.getIndex(droppedNode);
else if(droppedObject instanceof Feature){
Feature droppedFeature = (Feature) droppedObject;
AddFeatureOperation operation = new AddFeatureOperation(
- (Feature) CdmStore.getService(ITermService.class).load(droppedFeature.getUuid()),
+ droppedFeature.getUuid(),
target, position, editor, editor);
AbstractUtility.executeOperation(operation, sync);
}
else if(droppedObject instanceof TermDto){
- TermDto termDto = (TermDto) droppedObject;
- DefinedTermBase term = CdmStore.getService(ITermService.class).load(termDto.getUuid());
- if(term.isInstanceOf(Feature.class)){
- AddFeatureOperation operation = new AddFeatureOperation(
- (Feature)term,
- target, position, editor, editor);
- AbstractUtility.executeOperation(operation, sync);
- }
- else{
- MessagingUtils.warningDialog(DefinedTermDropAdapterE4.MOVE_FAILED, this, Messages.FeatureTreeDropAdapter_ONLY_MOVE_FEATURES);
- }
+ TermDto termDto = (TermDto) droppedObject;
+ // check if target feature tree has the same type as the dropped term
+ if(!termDto.getTermType().equals(targetType)){
+ MessagingUtils.warningDialog(DefinedTermDropAdapterE4.TERM_TYPE_ERROR_TITLE, this, DefinedTermDropAdapterE4.TERM_TYPE_ERROR_MESSAGE);
+ continue;
+ }
+ AddFeatureOperation operation = new AddFeatureOperation(
+ termDto.getUuid(),
+ target, position, editor, editor);
+ AbstractUtility.executeOperation(operation, sync);
}
else if(droppedObject instanceof OntologyTermWrapper){
OntologyTermWrapper wrapper = (OntologyTermWrapper)droppedObject;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
if(parentNode!=null){
FeatureNode copiedNode = (FeatureNode) ((IStructuredSelection)clipBoardSelection).getFirstElement();
- AddFeatureOperation operation = new AddFeatureOperation(copiedNode.getFeature(), parentNode, this, this);
+ AddFeatureOperation operation = new AddFeatureOperation(copiedNode.getTerm().getUuid(), parentNode, this, this);
AbstractUtility.executeOperation(operation, sync);
}
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.editor.definedterm.TermTransfer;
import eu.etaxonomy.taxeditor.featuretree.FeatureNodeTransfer;
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
* @since Jun 19, 2017
*
*/
-public class FeatureTreeEditorComposite extends Composite{
+public class FeatureTreeEditorComposite <T extends DefinedTermBase> extends Composite{
- private FeatureTree featureTree;
+ private FeatureTree<T> featureTree;
private Label label_title;
private Text text_title;
ISelectionChangedListener viewerSelectionChangedListener,
IDirtyMarkable dirtyMarkable,
ModifyListener textModifyListener) {
+ init(label,
+ null,
+ dragSourceListener,
+ dropTargetListener,
+ null,
+ viewerSelectionChangedListener,
+ null,
+ dirtyMarkable,
+ textModifyListener);
+ }
+
+ public void init(String label, TermType termType,
+ DragSourceListener dragSourceListener,
+ DropTargetListener dropTargetListener,
+ ISelectionChangedListener viewerSelectionChangedListener,
+ IDirtyMarkable dirtyMarkable,
+ ModifyListener textModifyListener) {
this.init(label,
+ termType,
dragSourceListener,
dropTargetListener,
null,
ISelectionChangedListener viewerSelectionChangedListener,
SelectionListener openFeatureTreeSelectionListener,
ModifyListener textModifyListener) {
- init(null, dragSourceListener,
+ init(null,
+ null,
+ dragSourceListener,
dropTargetListener,
transfers,
viewerSelectionChangedListener,
null,
textModifyListener);
}
- private void init(String label, DragSourceListener dragSourceListener,
+ private void init(String label,
+ TermType termType,
+ DragSourceListener dragSourceListener,
DropTargetListener dropTargetListener,
Transfer[] transfers,
ISelectionChangedListener viewerSelectionChangedListener,
btnOpenFeatureTree.addSelectionListener(new SelectionAdapter(){
@Override
public void widgetSelected(SelectionEvent e) {
- FeatureTree tree = FeatureTreeSelectionDialog.select(getDisplay().getActiveShell(),
- null);
+ FeatureTree<T> tree = FeatureTreeSelectionDialog.select(getDisplay().getActiveShell(),
+ null, termType);
if(tree!=null){
setSelectedTree(tree);
if(dirtyMarkable!=null){
}
}
- public void setSelectedTree(FeatureTree featureTree) {
+ public void setSelectedTree(FeatureTree<T> featureTree) {
this.featureTree = featureTree;
viewer.setInput(featureTree);
}
}
- public FeatureTree getFeatureTree() {
+ public FeatureTree<T> getFeatureTree() {
return featureTree;
}
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Shell;
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.featuretree.AvailableFeaturesWizard;
import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
import eu.etaxonomy.taxeditor.featuretree.e4.operation.AddFeatureOperation;
if (StoreUtil.promptCheckIsDirty(editor)) {
return;
}
+ FeatureNode parent = (FeatureNode)selection.getFirstElement();
- AvailableFeaturesWizard wizard = new AvailableFeaturesWizard();
+// TermChooseWizard wizard = new TermChooseWizard(parent.getTermType());
+// WizardDialog dialog = new WizardDialog(shell, wizard);
+//
+// if (dialog.open() == IStatus.OK) {
+// List<TermDto> selectedTerms = wizard.getSelectedTerms();
+// for (TermDto termDto: selectedTerms) {
+// AddFeatureOperation operation = new AddFeatureOperation(termDto.getUuid(), parent, editor, editor);
+// AbstractUtility.executeOperation(operation, sync);
+// }
+// }
+
+ AvailableFeaturesWizard wizard = new AvailableFeaturesWizard(parent.getTermType());
WizardDialog dialog = new WizardDialog(shell, wizard);
- Object next = selection.getFirstElement();
- if (dialog.open() == IStatus.OK && next instanceof FeatureNode) {
- FeatureNode parent = (FeatureNode)next;
- Collection<Feature> additionalFeatures = wizard.getAdditionalFeatures();
- for (Feature feature : additionalFeatures) {
- AddFeatureOperation operation = new AddFeatureOperation(feature, parent, editor, editor);
+ if (dialog.open() == IStatus.OK) {
+ Collection<DefinedTermBase> additionalTerms = wizard.getAdditionalFeatures();
+ for (DefinedTermBase term : additionalTerms) {
+ AddFeatureOperation operation = new AddFeatureOperation(term.getUuid(), parent, editor, editor);
AbstractUtility.executeOperation(operation, sync);
}
}
import org.eclipse.jface.wizard.WizardDialog;
import org.eclipse.swt.widgets.Shell;
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.featuretree.AvailableFeaturesWizard;
import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
import eu.etaxonomy.taxeditor.featuretree.e4.operation.AddFeatureOperation;
@Named(IServiceConstants.ACTIVE_SELECTION)IStructuredSelection selection,
@Named(IServiceConstants.ACTIVE_PART)MPart thisPart, UISynchronize sync) {
IFeatureTreeEditor editor = ((IFeatureTreeEditor) thisPart.getObject());
-
if (StoreUtil.promptCheckIsDirty(editor)) {
return;
}
+ FeatureTree tree = (FeatureTree) selection.getFirstElement();
+//
+// TermChooseWizard wizard = new TermChooseWizard(tree.getTermType());
+// WizardDialog dialog = new WizardDialog(shell, wizard);
+//
+// if (dialog.open() == IStatus.OK) {
+// List<TermDto> selectedTerms = wizard.getSelectedTerms();
+// for (TermDto termDto: selectedTerms) {
+// AddFeatureOperation operation = new AddFeatureOperation(termDto.getUuid(), tree.getRoot(), editor, editor);
+// AbstractUtility.executeOperation(operation, sync);
+// }
+// }
-
- AvailableFeaturesWizard wizard = new AvailableFeaturesWizard();
+ AvailableFeaturesWizard wizard = new AvailableFeaturesWizard(tree.getTermType());
WizardDialog dialog = new WizardDialog(shell, wizard);
if (dialog.open() == IStatus.OK) {
- FeatureTree tree = (FeatureTree) selection.getFirstElement();
- Collection<Feature> additionalFeatures = wizard.getAdditionalFeatures();
- for (Feature feature : additionalFeatures) {
- AddFeatureOperation operation = new AddFeatureOperation(feature, tree.getRoot(), editor, editor);
+ Collection<DefinedTermBase> additionalTerms = wizard.getAdditionalFeatures();
+ for (DefinedTermBase term : additionalTerms) {
+ AddFeatureOperation operation = new AddFeatureOperation(term.getUuid(), tree.getRoot(), editor, editor);
AbstractUtility.executeOperation(operation, sync);
}
}
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.jface.viewers.IStructuredSelection;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor;
public class CopyFeatureHandler {
import org.eclipse.e4.ui.model.application.ui.menu.MHandledMenuItem;
import org.eclipse.e4.ui.services.IServiceConstants;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
import eu.etaxonomy.taxeditor.featuretree.e4.operation.CreateFeatureTreeOperation;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import org.eclipse.ui.progress.IProgressConstants;
import eu.etaxonomy.cdm.io.descriptive.owl.out.OwlExportConfigurator;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import org.eclipse.ui.progress.IProgressConstants;
import eu.etaxonomy.cdm.io.descriptive.word.out.WordExportConfigurator;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor;
public class PasteFeatureHandler {
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.jface.viewers.IStructuredSelection;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
import eu.etaxonomy.taxeditor.featuretree.e4.operation.RemoveFeatureOperation;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.jface.viewers.IStructuredSelection;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.featuretree.e4.IFeatureTreeEditor;
import eu.etaxonomy.taxeditor.featuretree.e4.operation.RemoveFeatureTreeOperation;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
*/
package eu.etaxonomy.taxeditor.featuretree.e4.operation;
+import java.util.UUID;
+
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IProgressMonitor;
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
private FeatureNode node;
private int position;
+ private UUID featureUuid;
- public AddFeatureOperation(Feature element, FeatureNode node,
+ public AddFeatureOperation(UUID featureUuid, FeatureNode node,
IPostOperationEnabled postOperationEnabled, ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
- this(element, node, 0, postOperationEnabled, cdmEntitySessionEnabled);
+ this(featureUuid, node, 0, postOperationEnabled, cdmEntitySessionEnabled);
}
- public AddFeatureOperation(Feature element, FeatureNode node, int position,
+ public AddFeatureOperation(UUID featureUuid, FeatureNode node, int position,
IPostOperationEnabled postOperationEnabled, ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
- super("Add Feature", StoreUtil.getUndoContext(), element, postOperationEnabled, cdmEntitySessionEnabled);
+ super("Add Feature", StoreUtil.getUndoContext(), null, postOperationEnabled, cdmEntitySessionEnabled);
this.node = node;
+ this.featureUuid = featureUuid;
this.position = position;
}
@Override
public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
- UpdateResult updateResult = CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(node.getUuid(), element.getUuid(), position);
+ UpdateResult updateResult = CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(node.getUuid(), featureUuid, position);
return postExecute(updateResult.getCdmEntity());
}
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
Feature feature = Feature.NewInstance(wrapper.getDescription(), wrapper.getLabel(), null);
feature.setUri(URI.create(wrapper.getUri()));
- vocabulary.addTerm(feature);
- CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(target, feature);
+ CdmStore.getService(IFeatureNodeService.class).createChildFeatureNode(target.getUuid(), feature, vocabulary.getUuid());
UpdateResult updateResult = CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(target.getUuid(), element.getUuid());
return postExecute(updateResult.getCdmEntity());
import org.eclipse.core.runtime.IStatus;
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
}
//copy operation
else if(currentOperation==DND.DROP_COPY){
- updateResult = CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(target.getUuid(), droppedNode.getFeature().getUuid());
+ updateResult = CdmStore.getService(IFeatureNodeService.class).addChildFeatureNode(target.getUuid(), droppedNode.getTerm().getUuid());
}
if(updateResult!=null){
return postExecute(updateResult.getCdmEntity());
import eu.etaxonomy.cdm.api.service.DeleteResult;
import eu.etaxonomy.cdm.api.service.IFeatureNodeService;
import eu.etaxonomy.cdm.api.service.config.FeatureNodeDeletionConfigurator;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
import org.eclipse.core.runtime.IStatus;
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
import org.eclipse.e4.core.di.annotations.Execute;
import org.eclipse.jface.wizard.WizardDialog;
-import eu.etaxonomy.taxeditor.databaseAdmin.wizard.DatabaseRepairWizard;
+import eu.etaxonomy.taxeditor.databaseAdmin.wizard.DatabaseRepairUpdateCachesWizard;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
*/
@Execute
public Object execute(){
- DatabaseRepairWizard databaseRepairWizard = new DatabaseRepairWizard();
+ DatabaseRepairUpdateCachesWizard databaseRepairWizard = new DatabaseRepairUpdateCachesWizard();
WizardDialog dialog = new WizardDialog(AbstractUtility.getShell(),
databaseRepairWizard);
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.handler;
+
+import org.eclipse.e4.core.di.annotations.Execute;
+import org.eclipse.jface.wizard.WizardDialog;
+
+import eu.etaxonomy.taxeditor.databaseAdmin.wizard.DatabaseRepairUpdateSortIndicesWizard;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+
+/**
+ * @author k.luther
+ * @since 05.03.2019
+ *
+ */
+public class OpenUpdateSortIndicesHandler {
+
+ @Execute
+ public Object execute(){
+ DatabaseRepairUpdateSortIndicesWizard databaseRepairWizard = new DatabaseRepairUpdateSortIndicesWizard();
+ WizardDialog dialog = new WizardDialog(AbstractUtility.getShell(),
+ databaseRepairWizard);
+
+ dialog.open();
+
+ return null;
+ }
+
+
+}
import eu.etaxonomy.cdm.io.dwca.in.DwcaImportConfigurator;
import eu.etaxonomy.cdm.io.excel.taxa.NormalExplicitImportConfigurator;
import eu.etaxonomy.cdm.io.jaxb.JaxbImportConfigurator;
-import eu.etaxonomy.cdm.io.operation.config.CacheUpdaterConfigurator;
-import eu.etaxonomy.cdm.io.operation.config.SortIndexUpdaterConfigurator;
import eu.etaxonomy.cdm.io.reference.endnote.in.EndnoteImportConfigurator;
import eu.etaxonomy.cdm.io.sdd.in.SDDImportConfigurator;
import eu.etaxonomy.cdm.io.service.IIOService;
monitor.beginTask("Updating data", IProgressMonitor.UNKNOWN);
IIOService ioService = CdmApplicationState.getIOService();
ImportResult importResult = null;
- if (configurator instanceof SortIndexUpdaterConfigurator){
- SortIndexUpdaterConfigurator config = (SortIndexUpdaterConfigurator)configurator;
- importResult =ioService.updateSortIndex(config);
- } else if (configurator instanceof CacheUpdaterConfigurator){
- CacheUpdaterConfigurator config = (CacheUpdaterConfigurator) configurator;
- importResult = ioService.updateCaches(config);
- } else if (configurator instanceof ExcelDistributionUpdateConfigurator){
+ if (configurator instanceof ExcelDistributionUpdateConfigurator){
ExcelDistributionUpdateConfigurator config = (ExcelDistributionUpdateConfigurator) configurator;
importResult =ioService.updateDistributionData(config);
}
import eu.etaxonomy.cdm.api.service.IVocabularyService;
import eu.etaxonomy.cdm.common.CdmUtils;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
import eu.etaxonomy.cdm.common.CdmUtils;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.store.CdmStore;
public static String LanguageMenuPreferences_configure;
-
+ public static String CommonNameLanguageMenuPreferences_configure;
public static String LanguageMenuPreferences_warning;
public static String DatabaseRepairPage_toolTip_specimen;
public static String DatabaseRepairPage_TeamOrPerson;
public static String DatabaseRepairPage_toolTip_teamOrPerson;
+ public static String DatabaseRepairPage_description;
+ public static String DatabaseRepairPage_description_sortIndex;
public static String LoginDialog_CANCEL_MESSAGE;
public static String LoginDialog_LOGIN;
public static String DefaultFeatureTreePreferenecs_1;
+ public static String DefinedTermDropAdapterE4_TERM_TYPE_ERROR_MESSAGE;
+
+
+ public static String DefinedTermDropAdapterE4_TERM_TYPE_ERROR_TITLE;
+
+
public static String DefinedTermEditorE4_SAVE_MESSAGE;
public static String DefinedTermEditorE4_SAVE_TITLE;
public static String DefinedTermMenu_FEATURE_TREE;
public static String RemotingLoginDialog_JOB_SERVER_LAUNCH;
public static String RemotingLoginDialog_STARTING_MGD_SERVER;
public static String RemotingLoginDialog_TASK_LAUNCHING_SERVER;
+ public static String RemotingLoginDialog_MISSING_PERMISSION;
public static String SearchManager_LARGE_RESULT_EXPECTED;
public static String SearchDialogPreferences_3;
public static String SearchDialogPreferences_4;
public static String TypeDesignationPreferences_typeDesignationsToAllNames;
+ public static String TypeDesignationSection_ADD_TYPE;
+ public static String TypeDesignationSection_CREATE_DUPLICATE;
+ public static String TypeDesignationSection_DUPLICATE_FAILED;
+ public static String TypeDesignationSection_NO_TYPES_YET;
+ public static String TypeDesignationSection_TYPE_DESIGNATIONS;
+
+
public static String TaxonNodeWizardPage_edit;
public static String NamedAreaTypeMenuPreferences;
+ public static String NameTypeDesignationElement_4;
+
+
+ public static String NameTypeDesignationElement_5;
+
+
public static String NameTypeDesignationStatusMenuPreferences_configure;
public static String GeneralPreference_open_common_name_area_selection;
LanguageEditorPreferencePage_RestartRequired=After changing the default language, a restart is required,\nin order for the new settings to take effect.
LanguageMenuPreferences_configure=Choose available languages
LanguageMenuPreferences_warning=\ - Warning: no description - not shown in menus
+CommonNameLanguageMenuPreferences_configure=Choose available languages for common names
LanguageRepresentationPreferencePage_global=Choose the global language that will be used throughout the editor to get representations in
LanguageRepresentationPreferencePage_enable=Enable Multiple Language Editing Capability
ListComponent_ADD_PROVIDER=Add Provider
DatabaseRepairPage_toolTip_specimen=Caches of all Derived Units und Field Units are recalculated.
DatabaseRepairPage_TeamOrPerson=Persons and Teams
DatabaseRepairPage_toolTip_teamOrPerson=Caches of all Persons and Teams are recalculated.
-
+DatabaseRepairPage_description=Update caches of selected types
+DatabaseRepairPage_description_sortIndex=Update sort indices of selected trees
UIPreferences_expand=Expand sections when data are available in Details View. This might make the Editor slow.
+
UpdateHandler_CHECK_UPDATE_JOB=Check Update Job
UpdateHandler_INSTALL_JOB=Install Update Job
UpdateHandler_NO_UPDATE_MESSAGE=No updates for the current installation have been found.
RemotingLoginDialog_JOB_SERVER_LAUNCH=Managed CDM Server Launch
RemotingLoginDialog_STARTING_MGD_SERVER=Starting Managed CDM Server. This may take a while.
RemotingLoginDialog_TASK_LAUNCHING_SERVER=Launching Managed CDM Server
+RemotingLoginDialog_MISSING_PERMISSION=Your credentials are valid but you are not permitted to use the TaxEditor with the selected data source
EditPasswordElement_PLEASE_CREATE_OR_SAVE_USER=Please create or save user '%s' before changing password
EditPasswordElement_USERNAME_DOES_NOT_EXIST=Username does not exist
DefinedTermDropAdapterE4_MOVE_FAILED=Move failed
DefinedTermDropAdapterE4_MOVE_FAILED_MESSAGE=Cannot move term onto itself or its children
DefinedTermDropAdapterE4_MOVE_FAILED_SAVE_MESSAGE=Moving the term failed. Try saving before.
+DefinedTermDropAdapterE4_TERM_TYPE_ERROR_MESSAGE=The term type of the dropped term does not match the target term type.
+DefinedTermDropAdapterE4_TERM_TYPE_ERROR_TITLE=Term types do not match
DebugPreferences_0=Show up widget is disposed error messages
DebugPreferences_1=Disable services api timestamp check
NameDetailsViewConfiguration_description_not_available=The configuration of the name details view is not possible in local preferences. \nIf you want to change the configuration, please contact an administrator.
NameRelationshipTypeMenuPreferences_relationshipTypes=Configure name relationship types
NameRelationshipWizardPage_description=Choose namerelationship type and related name
+NameTypeDesignationElement_4=Citation will be removed
+NameTypeDesignationElement_5=When changing the type from lectotype to a non lectotype the lectotype reference will be removed.\nDo you want to continue?
NameTypeDesignationStatusMenuPreferences_configure=Configure name type designation status
NavigatorOrderEnum_1=Alphabetical Order
NavigatorOrderEnum_3=Natural Order
ToggleableText_ToolTip_closed=Cache is created automatically from atomized data, cache protected against manual entries
ToggleableText_ToolTip_open=Cache can be edited manually, editing the atomized data has no effect on the cache (not recommended)
TypeDesignationPreferences_typeDesignationsToAllNames=Add type designations to all names in a homotypical group
+TypeDesignationSection_ADD_TYPE=Add a type designation
+TypeDesignationSection_CREATE_DUPLICATE=Create type duplicate
+TypeDesignationSection_DUPLICATE_FAILED=Duplicating type failed
+TypeDesignationSection_NO_TYPES_YET=No type designations yet.
+TypeDesignationSection_TYPE_DESIGNATIONS=Type Designations
FeatureTreeDropAdapter_CHOOSE_VOC=Choose vocabulary for import
FeatureTreeDropAdapter_IMPORT_NOT_POSSIBLE=Import not possible
TermOrder_Title=Title
TermOrder_natural=Natural
-ChecklistEditorGeneralPreference_Configure_area_order=Order of Areas
\ No newline at end of file
+ChecklistEditorGeneralPreference_Configure_area_order=Order of Areas
LanguageEditorPreferencePage_RestartRequired=Nach dem Wechsel der Standardsprache ist ein Neustart erforderlich.
LanguageMenuPreferences_configure=Auswahl der zur Verf\u00FCgung stehenden Sprachen
LanguageMenuPreferences_warning=\ - Warnung: keine Beschreibung - wird nicht in den Menüs angezeigt
+CommonNameLanguageMenuPreferences_configure=Auswahl der für Trivialnamen zur Verf\u00FCgung stehenden Sprachen
LanguageRepresentationPreferencePage_global=Wählen Sie die Sprache, für die im gesamten Editor die Repräsentationen ausgewählt werden soll (sofern vorhanden).
LanguageRepresentationPreferencePage_enable=Aktiviere mehrsprachige Editierbarkeit
ListComponent_ADD_PROVIDER=Provider hinzufügen
OrderPreferences_Sorting=Sortierung
OrderPreferencePage_NewNavigatorWindowRequired=Änderungen werden erst nach dem erneuten Öffnen des Navigators sichtbar.
OrderPreferencePage_PleaseReopenNavigator=Um die Änderungen zu sehen, müssen Sie den Navigator schließen und neu öffnen.
-
DatabaseRepairPage_chooseParameter=Bitte wählen Sie, für welche Bäume der SortIndex neu berechnet werden soll.
DatabaseRepairPage_updateTaxonNodes=Taxonomischer Baum
DatabaseRepairPage_toolTip_taxonNode=Die Sortier Indizes des Taxonomischen Baums werden aktualisiert.
DatabaseRepairPage_toolTip_specimen=Die Caches aller Derived Units und Field Units werden aktualisiert.
DatabaseRepairPage_TeamOrPerson=Personen und Teams
DatabaseRepairPage_toolTip_teamOrPerson=Die Caches aller Personen und Teams werden aktualisiert.
+DatabaseRepairPage_description=Die Caches aller ausgewählten Datentypen werden aktualisiert
+DatabaseRepairPage_description_sortIndex=Die Sortier Indizes aller ausgewählten Bäume werden aktualisiert.
UIPreferences_expand=Klappe Abschnitte im Details View auf, wenn Daten vorhanden sind
UpdateHandler_CHECK_UPDATE_JOB=Check Update Job
RemotingLoginDialog_JOB_SERVER_LAUNCH=Starte internen CDM-Server
RemotingLoginDialog_STARTING_MGD_SERVER=Starte internen CDM-Server. Dies kann eine Weile dauern.
RemotingLoginDialog_TASK_LAUNCHING_SERVER=Starte internen CDM-Server
+RemotingLoginDialog_MISSING_PERMISSION="Die Anmeldedaten sind korrekt, aber Sie haben nicht die Rechte auf der ausgewählten Instanz mit dem Editor zu arbeiten"
EditPasswordElement_PLEASE_CREATE_OR_SAVE_USER=Bitte erstellen oder speichern sie den Nutzer '%s', bevor Sie das Kennwort ändern
EditPasswordElement_USERNAME_DOES_NOT_EXIST=Nutzername existiert nicht
DefinedTermDropAdapterE4_MOVE_FAILED=Verschieben fehlgeschlagen
DefinedTermDropAdapterE4_MOVE_FAILED_MESSAGE=Terme können nicht auf sich selbst oder ihre Kindterme verschoben werden
DefinedTermDropAdapterE4_MOVE_FAILED_SAVE_MESSAGE=Das Verschieben des Terms ist fehlgeschlagen. Versuchen Sie vorher zu speichern.
+DefinedTermDropAdapterE4_TERM_TYPE_ERROR_MESSAGE=Der Termtyp des verschobenen Terms stimmt nicht mit dem des Ziels überein.
+DefinedTermDropAdapterE4_TERM_TYPE_ERROR_TITLE=Termtypen stimmen nicht überein
DebugPreferences_0=\"Widget is disposed\" Fehler Meldungen anzeigen
DebugPreferences_1=Deaktiviere die Überprüfung des API Timestamp
NameDetailsViewConfiguration_description_not_available=Die Konfiguration des Details Views kann nur über die Admin Präferenzen geändert werden, da kein lokales Überschreiben erlaubt ist. \nWenn Sie dennoch Änderungen vornehmen möchten, wenden Sie sich an einen Administrator.
NameRelationshipTypeMenuPreferences_relationshipTypes=Auswahl der zur Verf\u00FCgung stehenden Namensrelationstypen
NameRelationshipWizardPage_description=Auswahl des Relationstyps und des in Beziehung stehenden Namens
+NameTypeDesignationElement_4=Referenz wird entfernt
+NameTypeDesignationElement_5=Beim Ändern des Typs von Lectotype zu einem anderen Typ wird die Lectotyp-Referenze entfernt.\nWollen Sie fortfahren?
NameTypeDesignationStatusMenuPreferences_configure=Auswahl der zur Verf\u00FCgung stehenden Nametypedesignation Status
NavigatorOrderEnum_1=alphabetisch
NavigatorOrderEnum_3=natürlich
SpecimenOrObservationPreferences_1=Editieren der Einstellungen zur Darstellung von Specimen und Beobachtungen.
SpecimenTypeDesignationStatusMenuPreferences_configure=Auswahl der zur Verf\u00FCgung stehenden Specimentypedesignation Status
StageMenuPreferences_choose=Auswahl der zur Verf\u00FCgung stehenden Stadien
-DatabasePreferncesPage_Show_IOMenu=Import/Export Menü Einträge anzeigen
-DatabasePreferncesPage_Show_Specimen=Specimenbezogene Views und Menüeinträge anzeigen
+DatabasePreferncesPage_Show_IOMenu=Import/Export Men\u00FC Einträge anzeigen
+DatabasePreferncesPage_Show_Specimen=Specimenbezogene Views und Men\u00FCeinträge anzeigen
DatabasePreferncesPage_Show_MediaView=Media View anzeigen
DatabasePreferncesPage_Show_ChecklistPerspective=Checklist Perspektive als Default Perspektive anzeigen
DatabasePreferncesPage_Show_TaxonNodeWizard=Wizard zum Editieren der Taxon Knoten anzeigen
ToggleableText_ToolTip_closed=Der Cache wird automatisch aus den atomisierten Daten erstellt und ist gegen manuelle Eingabe geschützt
ToggleableText_ToolTip_open=Der Cache kann manuell bearbeitet werden, Änderungen an den atomisierten Daten haben keinen Einfluß auf den Cache (nicht empfohlen)
TypeDesignationPreferences_typeDesignationsToAllNames=Füge allen Namen einer Homotypischen Gruppe, Type Designations zu
+TypeDesignationSection_ADD_TYPE=Typbestimmung hinzufügen
+TypeDesignationSection_CREATE_DUPLICATE=Typusdublette erzeugen
+TypeDesignationSection_DUPLICATE_FAILED=Dubletten-Erzeugung fehlgeschlagen
+TypeDesignationSection_NO_TYPES_YET=Noch keine Typbestimmungen vorhanden.
+TypeDesignationSection_TYPE_DESIGNATIONS=Typbestimmungen
FeatureTreeDropAdapter_CHOOSE_VOC=Vokabular für den Import wählen
FeatureTreeDropAdapter_IMPORT_NOT_POSSIBLE=Import nicht möglich
import eu.etaxonomy.cdm.api.service.IProgressMonitorService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.common.monitor.IRemotingProgressMonitor;
+import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.io.common.ExportDataWrapper;
import eu.etaxonomy.cdm.io.common.ExportResult;
import eu.etaxonomy.cdm.io.common.ExportResultType;
import eu.etaxonomy.cdm.io.common.ExportType;
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
+import eu.etaxonomy.cdm.model.common.CdmBase;
+import eu.etaxonomy.cdm.model.taxon.Synonym;
+import eu.etaxonomy.cdm.model.taxon.Taxon;
+import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.operation.IFeedbackGenerator;
import eu.etaxonomy.taxeditor.operation.IPostMoniteredOperationEnabled;
// collect reports
// for(String report : remotingMonitor.getResult()) {
createResult(label, showResult, remotingMonitor);
-
+ updateNameEditors(remotingMonitor);
return Status.OK_STATUS;
}
}
- private static void createResult(final String label, final boolean showResult,
+ public static void createResult(String label, boolean showResult,
IRemotingProgressMonitor remotingMonitor) {
final StringBuilder reportSb = new StringBuilder();
if (remotingMonitor.getResult() instanceof ExportResult) {
reportSb.append(((ExportResult)remotingMonitor.getResult()).createReport());
}else if (remotingMonitor.getResult() instanceof UpdateResult){
if (((UpdateResult)remotingMonitor.getResult()).isOk()){
- reportSb.append("Update successful. \n"+"Updated Objects: " + ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects().size());
+ int count = ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects().size();
+ if (count == 0){
+ count = ((UpdateResult)remotingMonitor.getResult()).getUpdatedCdmIds().size();
+ }
+
+ reportSb.append("Update successful. \n"+"Updated Objects: " +count);
}
if (!((UpdateResult)remotingMonitor.getResult()).getExceptions().isEmpty()){
reportSb.append(((UpdateResult)remotingMonitor.getResult()).getExceptions().toString());
}
}
}
+ public static void updateNameEditors(IRemotingProgressMonitor remotingMonitor){
+ List<Taxon> taxaToUpdate = new ArrayList();
+ for (CdmBase object: ((UpdateResult)remotingMonitor.getResult()).getUpdatedObjects()){
+ Taxon taxon = null;
+ TaxonNode node = null;
+ if (object instanceof Taxon){
+ taxon = HibernateProxyHelper.deproxy(object, Taxon.class);
+
+
+ }else if (object instanceof Synonym){
+ Synonym syn = HibernateProxyHelper.deproxy(object, Synonym.class);
+ taxon = syn.getAcceptedTaxon();
+ }
+ taxaToUpdate.add(taxon);
+ }
+ EventUtility.postEvent(WorkbenchEventConstants.REFRESH_NAME_EDITOR, taxaToUpdate);
+ }
+
+
}
}
protected void initializeColorRegistry(ColorRegistry registry) {
+ registerColor(registry, Resources.COLOR_SWT_BG_DEFAULT, 214, 214, 214);
registerColor(registry, Resources.COLOR_MATRIX_SUMMARY_BG, 255, 255, 153);
registerColor(registry, Resources.COLOR_BULK_EDITOR_CANDIDATE, 243, 240, 165);
registerColor(registry, Resources.COLOR_BULK_EDITOR_TARGET, 135, 255, 135);
import java.util.Comparator;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.taxeditor.store.CdmStore;
/**
import eu.etaxonomy.cdm.model.common.LanguageStringBase;
import eu.etaxonomy.cdm.model.common.Marker;
import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
import eu.etaxonomy.cdm.model.common.RelationshipBase;
import eu.etaxonomy.cdm.model.common.RelationshipTermBase;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.Representation;
import eu.etaxonomy.cdm.model.common.TimePeriod;
import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.model.description.CategoricalData;
}
return resultString;
}
-
+
private static String getCache(GatheringEvent gatheringEvent){
String ALTITUDE_PREFIX = "alt. ";
final String METER = "m";
AgentBase<?> collector = CdmBase.deproxy(gatheringEvent.getCollector());
String collectorStr = collector == null? null : collector.getTitleCache();
result = CdmUtils.concat(", ", result, collectorStr);
-
+
//gathering period
TimePeriod gatheringPeriod = gatheringEvent.getTimeperiod();
result = CdmUtils.concat(", ", result, (gatheringPeriod == null? null : gatheringPeriod.toString()));
-
+
//country
String strCountry = null;
NamedArea country = gatheringEvent.getCountry();
*/
public static String getFeatureNodeContainerText(FeatureNodeContainer element) {
String result = null;
- if(element.getFeatureNode() != null && element.getFeatureNode().getFeature() != null){
- result = element.getFeatureNode().getFeature().getLabel(CdmStore.getDefaultLanguage());
+ if(element.getFeatureNode() != null && element.getFeatureNode().getTerm() != null){
+ result = element.getFeatureNode().getTerm().getLabel(CdmStore.getDefaultLanguage());
} else{
return "No label set";
}
if (result == null){
- result = element.getFeatureNode().getFeature().getLabel();
+ result = element.getFeatureNode().getTerm().getLabel();
}
return result;
}
return element.toString();
}
}
-
+
private static boolean isNotBlank(String str){
return StringUtils.isNotBlank(str);
}
-
+
private static boolean isBlank(String str){
return StringUtils.isBlank(str);
}
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
/**
- private FeatureNode featureNode;
+ private FeatureNode<Feature> featureNode;
private List<FeatureNodeContainer> children = new ArrayList<FeatureNodeContainer>();
private List<DescriptionElementBase> descriptionElements = new ArrayList<DescriptionElementBase>();
* @param description
* @return
*/
- protected void findLeaves(FeatureNode featureNode) {
+ protected void findLeaves(FeatureNode<Feature> featureNode) {
if(featureNode.isLeaf()){
buildLeaf(featureNode);
}else{
- for(FeatureNode childNode : featureNode.getChildNodes()){
+ for(FeatureNode<Feature> childNode : featureNode.getChildNodes()){
findLeaves(childNode);
}
}
* @param description
* @return
*/
- private void buildLeaf(FeatureNode featureNode){
- if(featureNode.getFeature() == null){
+ private void buildLeaf(FeatureNode<Feature> featureNode){
+ if(featureNode.getTerm() == null){
throw new IllegalArgumentException("The given feature node does not have a feature.");
}
- Feature feature = (Feature) HibernateProxyHelper.deproxy(featureNode.getFeature());
+ Feature feature = HibernateProxyHelper.deproxy(featureNode.getTerm());
// get feature node container for the given feature
FeatureNodeContainer container = containerTree.getFeatureNodeContainer(feature);
*/
private void buildBranch(){
if(getParent() == null){
- FeatureNode parentFeatureNode = getFeatureNode().getParent();
+ FeatureNode<Feature> parentFeatureNode = getFeatureNode().getParent();
if(parentFeatureNode.isRoot()){
containerTree.getRoot().addChild(this);
/**
* <p>Setter for the field <code>featureNode</code>.</p>
*
- * @param featureNode a {@link eu.etaxonomy.cdm.model.description.FeatureNode} object.
+ * @param featureNode a {@link eu.etaxonomy.cdm.model.term.FeatureNode} object.
*/
- public void setFeatureNode(FeatureNode featureNode) {
+ public void setFeatureNode(FeatureNode<Feature> featureNode) {
this.featureNode = featureNode;
}
/**
* <p>Getter for the field <code>featureNode</code>.</p>
*
- * @return a {@link eu.etaxonomy.cdm.model.description.FeatureNode} object.
+ * @return a {@link eu.etaxonomy.cdm.model.term.FeatureNode} object.
*/
- public FeatureNode getFeatureNode() {
+ public FeatureNode<Feature> getFeatureNode() {
return featureNode;
}
*/
public Feature getFeature(){
if(featureNode != null){
- return featureNode.getFeature();
+ return featureNode.getTerm();
}
return null;
}
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
/**
public static final String TRASH_ICON = "trash_icon";
/** Constant <code>BROWSE_ICON="browse_icon"</code> */
public static final String BROWSE_ICON = "browse_icon";
+ public static final String SEARCH_ICON = "search_icon";
/** Constant <code>EDIT_ICON="edit_icon"</code> */
public static final String EDIT_ICON = "edit_icon";
/** Constant <code>EDIT_LOGO_ICON="edit_logo_icon"</code> */
"collapseall.gif");
registerImage(registry, BROWSE_ICON,
"prj_obj.gif");
+ registerImage(registry, SEARCH_ICON,
+ "search.gif");
registerImage(registry, LOCK_ICON,
"lock.png");
registerImage(registry, SYNCED,
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
-import eu.etaxonomy.cdm.model.common.TermBase;
+import eu.etaxonomy.cdm.model.term.TermBase;
/**
* <p>MultiLanguageText class.</p>
import org.apache.commons.lang.NotImplementedException;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
package eu.etaxonomy.taxeditor.newWizard;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.store.CdmStore;
/**
private VocabularyWizardPage vocabularyPage;
+ private TermType termType;
+
+ public NewFeatureVocabularyWizard(TermType termType) {
+ this.termType = termType;
+ }
+
@Override
public void addPages() {
vocabularyPage = new VocabularyWizardPage(formFactory, getConversationHolder(), getEntity());
@Override
protected TermVocabulary createNewEntity() {
+ if(termType!=null){
+ return TermVocabulary.NewInstance(termType);
+ }
return TermVocabulary.NewInstance(TermType.Feature);
}
private UUID generatedTaxonNodeUuid;
private IWizardPageListener wizardPageListener;
private boolean isOpenInEditor = false;
+ private boolean success = true;
/**
* <p>Constructor for AbstractNewEntityWizard.</p>
.fireChangeEvent(new CdmChangeEvent(Action.Create, result.getUpdatedObjects(), NewTaxonNodeWizard.class), true);
}else{
+ setSuccess(false);
if (!result.isOk()){
if (!result.getExceptions().isEmpty()){
MessagingUtils.error(getClass(), "Taxon could not be created", result.getExceptions().iterator().next());
}else{
MessagingUtils.warn(getClass(), "Taxon could not be created");
}
+
}
}
}catch(IllegalArgumentException e){
}
+ public boolean isSuccess() {
+ return success;
+ }
+
+
+ public void setSuccess(boolean success) {
+ this.success = success;
+ }
+
+
}
package eu.etaxonomy.taxeditor.newWizard;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.ui.element.AbstractCdmEntityWizardPage;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.cdm.api.application.ICdmRepository;
import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.metadata.PreferenceResolver;
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.store.TermStore;
private final static Logger logger = Logger.getLogger(CdmPreferenceCache.class);
+
+
public static CdmPreferenceCache instance(){
if(instance == null){
instance = new CdmPreferenceCache();
}
}
+ private CdmPreference findBestMatching(PrefKey key) {
+
+ return PreferenceResolver.resolve(new ArrayList(this.preferenceCache.values()), key);
+
+ }
+
}
Composite child ;
protected boolean isAllowOverride;
- protected Button activateCheckButton;
- protected Button allowOverrideActivatedButton;
+ protected Combo activateCombo;
+ // protected Button allowOverrideActivatedButton;
protected Button activateRankButton;
protected Button allowOverrideRankButton;
if(!isAdminPreference && !isEditorActivated && !isAllowOverride){
Label label = new Label(composite, SWT.NONE);
label.setText("The CDM settings don't allow to set the preferences for using the distribution editor locally. If you need to make local settings, please ask an administrator.");
-
+ this.setDefaultButtonActivated(false);
}else{
Composite activateComp = createComposite(composite);
Label separator= new Label(activateComp, SWT.HORIZONTAL | SWT.SEPARATOR);
GridData sepGrid = createTextGridData();
separator.setLayoutData(sepGrid);
separator.setVisible(false);
- activateCheckButton = new Button(activateComp, SWT.CHECK);
- activateCheckButton.setText(Messages.ChecklistEditorGeneralPreference_enable);
- activateCheckButton.setSelection(isEditorActivated);
- activateCheckButton.addSelectionListener(new SelectionAdapter(){
- @Override
- public void widgetSelected(SelectionEvent e) {
- setApply(true);
- isEditorActivated = activateCheckButton.getSelection();
- if(!isAdminPreference){
- overrideActivated = true;
- child.setEnabled(isEditorActivated);
- PreferencesUtil.recursiveSetEnabled(child, isEditorActivated);
- }
-
-
-
-
+ activateCombo = new Combo(activateComp, SWT.BORDER| SWT.READ_ONLY);
+ CdmPreference dbPref = PreferencesUtil.getPreferenceFromDB(PreferencePredicate.DistributionEditorActivated);
+ if (dbPref != null){
+ if (Boolean.valueOf(dbPref.getValue())){
+ activateCombo.add("Enable (default)");
+ activateCombo.add("Disable");
+ }else{
+ activateCombo.add("Enable");
+ activateCombo.add("Disable (default)");
}
- });
- allowOverrideActivatedButton = createAllowOverrideButton(activateComp);
- if (isAdminPreference){
- allowOverrideActivatedButton.setSelection(allowOverrideActivated);
- allowOverrideActivatedButton.addSelectionListener(new SelectionAdapter(){
- @Override
- public void widgetSelected(SelectionEvent e) {
- setApply(true);
- allowOverrideActivated = allowOverrideActivatedButton.getSelection();
- }
- });
}else{
- allowOverrideActivatedButton.setSelection(overrideActivated);
- allowOverrideActivatedButton.addSelectionListener(new SelectionAdapter(){
- @Override
- public void widgetSelected(SelectionEvent e) {
- setApply(true);
- overrideActivated = allowOverrideActivatedButton.getSelection();
- }
- });
+ boolean defaultValue = (Boolean)PreferencePredicate.DistributionEditorActivated.getDefaultValue();
+ if (defaultValue){
+ activateCombo.add("Enable (default)");
+ activateCombo.add("Disable");
+ }else{
+ activateCombo.add("Enable");
+ activateCombo.add("Disable (default)");
+ }
+ }
+
+ if (isEditorActivated){
+ activateCombo.select(0);
+ }else{
+ activateCombo.select(1);
}
+ activateCombo.addSelectionListener(this);
+// allowOverrideActivatedButton = createAllowOverrideButton(activateComp);
+// if (isAdminPreference){
+// allowOverrideActivatedButton.setSelection(allowOverrideActivated);
+// allowOverrideActivatedButton.addSelectionListener(new SelectionAdapter(){
+// @Override
+// public void widgetSelected(SelectionEvent e) {
+// setApply(true);
+// allowOverrideActivated = allowOverrideActivatedButton.getSelection();
+// }
+// });
+// }else{
+// allowOverrideActivatedButton.setSelection(overrideActivated);
+// allowOverrideActivatedButton.addSelectionListener(new SelectionAdapter(){
+// @Override
+// public void widgetSelected(SelectionEvent e) {
+// setApply(true);
+// overrideActivated = allowOverrideActivatedButton.getSelection();
+// }
+// });
+// }
+
+
child = createComposite(composite);
if(!isAdminPreference){
@Override
protected void performDefaults() {
isEditorActivated = (Boolean)PreferencePredicate.DistributionEditorActivated.getDefaultValue();
- activateCheckButton.setSelection(isEditorActivated);
+ if (isEditorActivated){
+ activateCombo.select(0);
+ }else{
+ activateCombo.select(1);
+ }
displayArea = ((TermDisplayEnum)PreferencePredicate.DisplayOfAreasInDistributionEditor.getDefaultValue()).getKey();
TermDisplayEnum areaDisplay;
ownDescriptionForDistributionEditor = Boolean.valueOf(PreferencePredicate.OwnDescriptionForDistributionEditor.getDefaultValue().toString());
allowOverrideActivated = true;
- allowOverrideActivatedButton.setSelection(allowOverrideActivated);
+ // allowOverrideActivatedButton.setSelection(allowOverrideActivated);
overrideActivated = true;
allowOverrideAreaDisplay = true;
overrideAreaDisplay = true;
import org.eclipse.swt.widgets.Control;
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeContentProvider;
import eu.etaxonomy.taxeditor.featuretree.FeatureTreeLabelProvider;
import eu.etaxonomy.taxeditor.l10n.Messages;
import java.util.Set;
import java.util.UUID;
-import eu.etaxonomy.cdm.model.common.EnumeratedTermVoc;
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
+import eu.etaxonomy.cdm.model.term.EnumeratedTermVoc;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.metadata.IPreferencePredicate;
}else{
final CLabel description = new CLabel(parent, SWT.NULL);
description.setText(Messages.NameDetailsViewConfiguration_description_not_available);
+ this.setDefaultButtonActivated(false);
}
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
import eu.etaxonomy.cdm.model.common.ICdmBase;
-import eu.etaxonomy.cdm.model.common.IDefinedTerm;
-import eu.etaxonomy.cdm.model.common.ISimpleTerm;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
import eu.etaxonomy.cdm.model.metadata.CdmPreference.PrefKey;
import eu.etaxonomy.cdm.model.metadata.IPreferencePredicate;
import eu.etaxonomy.cdm.model.metadata.PreferenceSubject;
import eu.etaxonomy.cdm.model.metadata.TermDisplayEnum;
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.cdm.model.term.IDefinedTerm;
+import eu.etaxonomy.cdm.model.term.ISimpleTerm;
+import eu.etaxonomy.cdm.model.term.TermBase;
import eu.etaxonomy.cdm.strategy.match.DefaultMatchStrategy;
import eu.etaxonomy.cdm.strategy.match.FieldMatcher;
import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
}
+ public static List<CdmPreference> getPreferencesFromDB(IPreferencePredicate predicate){
+ ICdmRepository controller;
+ List<CdmPreference> prefs = null;
+
+ try{
+ if(CdmStore.isActive()){
+ controller = CdmStore.getCurrentApplicationConfiguration();
+ PrefKey key = CdmPreference.NewKey(PreferenceSubject.NewTaxEditorInstance(), predicate);
+ prefs = controller.getPreferenceService().list(predicate);
+ }
+ }catch(Exception e){
+ e.printStackTrace();
+ }
+
+ return prefs;
+
+ }
+
+ public static CdmPreference getPreferenceFromDB(PrefKey key){
+ ICdmRepository controller;
+ CdmPreference pref = null;
+
+ try{
+ if(CdmStore.isActive()){
+ controller = CdmStore.getCurrentApplicationConfiguration();
+ pref = controller.getPreferenceService().find(key);
+ }
+ }catch(Exception e){
+ e.printStackTrace();
+ }
+
+ return pref;
+
+ }
+
+
+
public static void setPreferenceToDB(CdmPreference preference){
ICdmRepository controller;
try{
* getDefaultFeatureTreeForTextualDescription
* </p>
*
- * @return a {@link eu.etaxonomy.cdm.model.description.FeatureTree} object.
+ * @return a {@link eu.etaxonomy.cdm.model.term.FeatureTree} object.
*/
public static FeatureTree getDefaultFeatureTreeForTextualDescription() {
String uuidString = getStringValue(
* getDefaultFeatureTreeForStructuredDescription
* </p>
*
- * @return a {@link eu.etaxonomy.cdm.model.description.FeatureTree} object.
+ * @return a {@link eu.etaxonomy.cdm.model.term.FeatureTree} object.
*/
public static FeatureTree getDefaultFeatureTreeForStructuredDescription() {
String uuidString = getStringValue(
}
-
-
/**
* @param saveCheckedElements
* @param saveCheckedElements2
}
}
+}
-
-
+public static List<UUID> createUUIDListFromStringPref(String prefKey) {
+ String prefValue = PreferencesUtil.getStringValue(prefKey);
+ String[] stringArray = prefValue.split(";");
+ List<UUID> uuidList = new ArrayList();
+ for (String uuid: stringArray){
+ if (!StringUtils.isBlank(uuid)){
+ uuidList.add(UUID.fromString(uuid));
+ }
+ }
+ return uuidList;
}
public static boolean getFilterCommonNameReferences(){
}
+/**
+ * @param string
+ * @param saveCheckedElements
+ */
+public static void setPreferencesToDB(List<CdmPreference> preferences) {
+
+ ICdmRepository controller;
+ try{
+ if(CdmStore.isActive()){
+ controller = CdmStore.getCurrentApplicationConfiguration();
+ for (CdmPreference preference: preferences){
+ controller.getPreferenceService().set(preference);
+ }
+ }
+ }catch(Exception e){
+ e.printStackTrace();
+ }
+}
+
public static final String COLOR_CONTROL_SELECTED = "eu.etaxonomy.taxeditor.preferences.colorDefinition.nameEditor.colorContainerSelected";
/** Constant <code>COLOR_CONTROL_SELECTED_FOCUS="eu.etaxonomy.taxeditor.preferences.colo"{trunked}</code> */
public static final String COLOR_CONTROL_SELECTED_FOCUS = "eu.etaxonomy.taxeditor.preferences.colorDefinition.nameEditor.colorContainerSelectedFocus";
+ public static final String COLOR_SWT_BG_DEFAULT = "eu.etaxonomy.taxeditor.preferences.colorDefinition.swtBGDefault";
public static final String COLOR_BULK_EDITOR_CANDIDATE = "eu.etaxonomy.taxeditor.preferences.colorDefinition.bulkEditor.colorCandidate";
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.editor.definedterm.e4.DefinedTermEditorE4;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
return super.performOk();
}
- private boolean checkNoneChecked(){
+ protected boolean checkNoneChecked(){
if(tableViewer!=null && tableViewer.getCheckedElements().length == 0){
setMessage("Please check at least one item", WARNING);
public abstract class CdmPreferencePage extends PreferencePage implements IE4PreferencePage {
private boolean isApply = false;
+ private boolean isDefaultButtonActivated = true;
protected boolean isAdminPreference;
if (getApplyButton() != null){
this.getApplyButton().setEnabled(false);
}
+ if (getDefaultsButton() != null){
+ this.getDefaultsButton().setEnabled(isDefaultButtonActivated);
+ }
}
}
}
+ public boolean isDefaultButtonActivated() {
+ return isDefaultButtonActivated;
+ }
+
+ public void setDefaultButtonActivated(boolean isDefaultButtonActivated) {
+ this.isDefaultButtonActivated = isDefaultButtonActivated;
+ }
+
--- /dev/null
+/**
+* Copyright (C) 2007 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+
+package eu.etaxonomy.taxeditor.preference.menu;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.lang.StringUtils;
+import org.eclipse.jface.viewers.ITableLabelProvider;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.ViewerComparator;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+
+import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * <p>LanguageMenuPreferences class.</p>
+ *
+ * @author p.ciardelli
+ * @created 24.08.2009
+ * @version 1.0
+ */
+public class CommonNameLanguagePreferences extends AbstractMenuPreferences<Language> {
+
+ /** Constant <code>ID="eu.etaxonomy.taxeditor.preferences.lang"{trunked}</code> */
+ public final static String ID = "eu.etaxonomy.taxeditor.preferences.languages"; //$NON-NLS-1$
+
+ /**
+ * <p>Constructor for LanguageMenuPreferences.</p>
+ */
+ public CommonNameLanguagePreferences() {
+ super("Language Preferences", //$NON-NLS-1$
+ Messages.CommonNameLanguageMenuPreferences_configure,
+ false);
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.preference.AbstractMenuPreferences#createContents(org.eclipse.swt.widgets.Composite)
+ */
+ /** {@inheritDoc} */
+ @Override
+ public Control createContents(Composite parent) {
+ Control control = super.createContents(parent);
+
+ tableViewer.setLabelProvider(new LanguagePreferenceLabelProvider());
+ tableViewer.setComparator(new ViewerComparator());
+
+ return control;
+ }
+
+ class LanguagePreferenceLabelProvider extends LabelProvider implements ITableLabelProvider{
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnImage(java.lang.Object, int)
+ */
+ @Override
+ public Image getColumnImage(Object element, int columnIndex) {
+ return null;
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.viewers.ITableLabelProvider#getColumnText(java.lang.Object, int)
+ */
+ @Override
+ public String getColumnText(Object element, int columnIndex) {
+ String description = ((Language)element).getDescription();
+ if (description == null) {
+ description = ((Language)element).getLabel() + Messages.LanguageMenuPreferences_warning;
+ }
+ return description;
+ }
+
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.taxeditor.preference.menu.AbstractMenuPreferences#getTermClass()
+ */
+ /** {@inheritDoc} */
+ @Override
+ protected TermType getTermType() {
+ return TermType.Language;
+ }
+
+
+ @Override
+ protected void refresh(List<Language> definedTerms) {
+ tableViewer.setInput(definedTerms);
+ List<UUID> uuids = PreferencesUtil.createUUIDListFromStringPref(PreferencePredicate.CommonNameLanguages.getKey());
+ List<Language> preferedTerms = CdmStore.getTermManager().getTerms(uuids, Language.class);
+
+ tableViewer.setCheckedElements(preferedTerms.toArray());
+ }
+
+
+
+ @Override
+ public boolean performOk() {
+ if(!CdmStore.isActive()) {
+ return true;
+ }
+
+ if(super.checkNoneChecked()){
+ return false;
+ }
+
+ getConversationHolder().commit(true);
+
+ if(tableViewer!=null){
+ List<UUID> preferredTermUuids = new ArrayList<UUID>();
+ if (tableViewer.getCheckedElements().length == tableViewer.getTable().getItemCount()){
+ PreferencesUtil.setStringValue(PreferencePredicate.CommonNameLanguages.getKey(), "");
+ }else{
+ for (Object element : tableViewer.getCheckedElements()){
+ preferredTermUuids.add(((Language)element).getUuid());
+ }
+
+ String preferredLanguagesString = StringUtils.join(preferredTermUuids, ";");
+ PreferencesUtil.setStringValue(PreferencePredicate.CommonNameLanguages.getKey(), preferredLanguagesString);
+ }
+
+ PreferencesUtil.firePreferencesChanged(this.getClass());
+ }
+
+ return super.performOk();
+ }
+}
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.Viewer;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
/**
* <p>DefinedTermBaseContentProvider class.</p>
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.swt.graphics.Image;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
/**
* <p>DefinedTermBaseLabelProvider class.</p>
package eu.etaxonomy.taxeditor.preference.menu;
import eu.etaxonomy.cdm.model.common.ExtensionType;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.l10n.Messages;
/**
*/
package eu.etaxonomy.taxeditor.preference.menu;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.taxeditor.l10n.Messages;
import org.eclipse.swt.widgets.Control;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.l10n.Messages;
/**
package eu.etaxonomy.taxeditor.preference.menu;
import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.l10n.Messages;
/**
*/
package eu.etaxonomy.taxeditor.preference.menu;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.description.MeasurementUnit;
import eu.etaxonomy.taxeditor.l10n.Messages;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.labels.ILabelImageStrategy;
package eu.etaxonomy.taxeditor.preference.menu;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
import eu.etaxonomy.taxeditor.l10n.Messages;
package eu.etaxonomy.taxeditor.preference.menu;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.location.NamedAreaType;
import eu.etaxonomy.taxeditor.l10n.Messages;
package eu.etaxonomy.taxeditor.preference.menu;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
import eu.etaxonomy.taxeditor.l10n.Messages;
package eu.etaxonomy.taxeditor.preference.menu;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
import eu.etaxonomy.taxeditor.l10n.Messages;
package eu.etaxonomy.taxeditor.preference.menu;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.l10n.Messages;
/**
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.name.Rank;
import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
package eu.etaxonomy.taxeditor.preference.menu;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
import eu.etaxonomy.taxeditor.l10n.Messages;
package eu.etaxonomy.taxeditor.preference.menu;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.l10n.Messages;
package eu.etaxonomy.taxeditor.preference.menu;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
import eu.etaxonomy.taxeditor.l10n.Messages;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
import eu.etaxonomy.cdm.api.service.ITermService;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
IVocabularyService vocabularyService = CdmStore.getService(IVocabularyService.class);
TermVocabulary termVocabulary = vocabularyService.load(uuid);
if (termVocabulary != null){
- termlist.add(new TermVocabularyDto(uuid, termVocabulary.getRepresentations()));
+ termlist.add(new TermVocabularyDto(uuid, termVocabulary.getRepresentations(), termVocabulary.getTermType()));
}
}
}
import org.eclipse.swt.widgets.Composite;
import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
import org.eclipse.swt.widgets.Composite;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.persistence.dto.AbstractTermDto;
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
import eu.etaxonomy.taxeditor.l10n.Messages;
}
List<TermVocabulary> tempVocs = CdmStore.getService(IVocabularyService.class).find(uuidVocs);
for (TermVocabulary voc: tempVocs){
- vocs.add(new TermVocabularyDto(voc.getUuid(), voc.getRepresentations()));
+ vocs.add(new TermVocabularyDto(voc.getUuid(), voc.getRepresentations(), voc.getTermType()));
}
}
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import org.eclipse.swt.widgets.Composite;
import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import java.util.Set;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
/**
* @author k.luther
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.Representation;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.store.CdmStore;
import org.eclipse.swt.widgets.Text;
import eu.etaxonomy.cdm.common.CdmUtils;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.Representation;
/**
* <p>VocabularyTermWizardPage class.</p>
import eu.etaxonomy.cdm.model.agent.AgentBase;
import eu.etaxonomy.cdm.model.common.Annotation;
import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.cdm.model.description.PolytomousKey;
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
import eu.etaxonomy.cdm.model.description.DescriptiveDataSet;
import eu.etaxonomy.cdm.config.ICdmSource;
import eu.etaxonomy.cdm.database.DbSchemaValidation;
import eu.etaxonomy.cdm.database.ICdmDataSource;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.metadata.CdmMetaData;
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
import eu.etaxonomy.cdm.model.name.Rank;
NomenclaturalStatusType.initDefaultTerms();
} catch(CdmAuthenticationException cae) {
loginDialog.hide(false);
- loginDialog.setMessage("Your credentials are valid \nbut you are not permitted to use \nthe TaxEditor with the selected data source");
+ loginDialog.setMessage(Messages.RemotingLoginDialog_MISSING_PERMISSION);
}
import org.eclipse.core.commands.operations.IOperationHistory;
import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.action.IStatusLineManager;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.widgets.Composite;
boolean proceed = MessageDialog.openQuestion(null,
Messages.DefinedTermEditorE4_SAVE_TITLE, Messages.DefinedTermEditorE4_SAVE_MESSAGE);
if (proceed) {
- editor.save(null);
+ editor.save(new NullProgressMonitor());
return false;
}
else{
public static boolean confirmDelete(){
return MessagingUtils.confirmDialog("Confirm deletion", "Do you really want to delete the selected element(s)?");
}
+
+ /**
+ * Compares the two given input strings considering the given search string.<br>
+ * Strings will be sorted according to <br>
+ * <ol>
+ * <li> result begins with search string
+ * <li> string length
+ * <li> result contains search string
+ * <li> string length
+ * <li> alphabetically
+ * </ol>
+ */
+ public static int compareBySearchString(String searchString, String string1, String string2) {
+ string1 = string1.toLowerCase();
+ string2 = string2.toLowerCase();
+ //1. search string at the beginning
+ if(string1.startsWith(searchString)){
+ if(!string2.startsWith(searchString)){
+ return -1;
+ }
+ else{
+ return string1.compareTo(string2);
+ }
+ }
+ else if(string2.startsWith(searchString)){
+ return 1;
+ }
+ //2. label that contains search string
+ if(string1.contains(searchString)){
+ if(!string2.contains(searchString)){
+ return -1;
+ }
+ }
+ else if(string2.contains(searchString)){
+ return 1;
+ }
+ return string1.compareTo(string2);
+ }
}
import java.util.Map;
import java.util.UUID;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.model.TaxonRelationshipTypeInverseContainer;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
List<T> filteredTerms = new ArrayList<T>();
List<T> terms = TermStore.getTerms(clazz);
+ if (uuidList.isEmpty()){
+ return terms;
+ }
for (T term : terms){
if(uuidList.contains(term.getUuid())){
filteredTerms.add(term);
import eu.etaxonomy.cdm.api.service.ITermService;
import eu.etaxonomy.cdm.api.service.exception.ReferencedObjectUndeletableException;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
import eu.etaxonomy.cdm.model.name.Rank;
}
/**
- * @param term a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase} object.
+ * @param term a {@link eu.etaxonomy.cdm.model.term.DefinedTermBase} object.
*/
public static void saveTerm(DefinedTermBase term){
CdmStore.getService(ITermService.class).saveOrUpdate(term);
/**
* <p>delete</p>
*
- * @param selected a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase} object.
+ * @param selected a {@link eu.etaxonomy.cdm.model.term.DefinedTermBase} object.
* @throws ReferencedObjectUndeletableException
*/
public static void delete(DefinedTermBase selected) throws ReferencedObjectUndeletableException {
/**
* Save a vacabulary to data store
*
- * @param term a {@link eu.etaxonomy.cdm.model.common.DefinedTermBase} object.
+ * @param term a {@link eu.etaxonomy.cdm.model.term.DefinedTermBase} object.
*/
public static void updateVocabulary(DefinedTermBase term) {
CdmStore.getService(ITermService.class).saveOrUpdate(term);
\r
import java.util.UUID;\r
\r
-import eu.etaxonomy.cdm.model.common.VocabularyEnum;\r
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;\r
\r
public class UsageTermCollection {\r
protected final static UUID uuidMarkersVocabulary = UUID.fromString("19dffff7-e142-429c-a420-5d28e4ebe305");\r
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
import eu.etaxonomy.cdm.api.service.ITermService;\r
import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
-import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
+import eu.etaxonomy.cdm.model.term.DefinedTerm;\r
import eu.etaxonomy.cdm.model.common.MarkerType;\r
-import eu.etaxonomy.cdm.model.common.TermType;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.TermType;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
import eu.etaxonomy.cdm.model.description.Feature;\r
import eu.etaxonomy.cdm.model.description.State;\r
\r
import org.eclipse.swt.events.SelectionEvent;
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.cdm.model.media.ExternalLinkType;
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
import java.util.List;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
+import eu.etaxonomy.cdm.model.term.Representation;
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import org.eclipse.swt.events.SelectionEvent;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.name.NameRelationshipType;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.widgets.Listener;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
public TermComboElement(CdmFormFactory formFactory,
ICdmFormElement parentElement, TermType termType, String labelString, T selection, boolean addEmptyElement,
int style, boolean useAbbrevLabel, Comparator<T> comparator) {
- this(formFactory, parentElement, null, termType, null, labelString, selection, addEmptyElement, style, useAbbrevLabel, comparator);
+ this(formFactory, parentElement, null, termType, null, null, labelString, selection, addEmptyElement, style, useAbbrevLabel, comparator);
}
public TermComboElement(CdmFormFactory formFactory,
ICdmFormElement parentElement, TermVocabulary<?> termVocabulary, String labelString, T selection, boolean addEmptyElement,
int style, boolean useAbbrevLabel, Comparator<T> comparator) {
- this(formFactory, parentElement, null, null, termVocabulary, labelString, selection, addEmptyElement, style, useAbbrevLabel, comparator);
+ this(formFactory, parentElement, null, null, termVocabulary, null,labelString, selection, addEmptyElement, style, useAbbrevLabel, comparator);
}
public TermComboElement(CdmFormFactory formFactory,
ICdmFormElement parentElement, Class<T> termClass, String labelString, T selection, boolean addEmptyElement,
int style) {
- this(formFactory, parentElement, termClass, null, null, labelString, selection, addEmptyElement, style, false, null);
+ this(formFactory, parentElement, termClass, null, null, null, labelString, selection, addEmptyElement, style, false, null);
}
public TermComboElement(CdmFormFactory formFactory,
ICdmFormElement parentElement, Class<T> termClass, String labelString, T selection, boolean addEmptyElement,
int style, boolean useAbbrevLabel) {
- this(formFactory, parentElement, termClass, null, null, labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
+ this(formFactory, parentElement, termClass, null, null, null,labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
+
+ }
+
+ public TermComboElement(CdmFormFactory formFactory,
+ ICdmFormElement parentElement, List<T> terms, String labelString, T selection, boolean addEmptyElement,
+ int style, boolean useAbbrevLabel) {
+ this(formFactory, parentElement, null, null, null, terms,labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
}
private TermComboElement(CdmFormFactory formFactory,
- ICdmFormElement parentElement, Class<T> termClass, TermType termType, TermVocabulary<?> termVocabulary, String labelString, T selection, boolean addEmptyElement,
+ ICdmFormElement parentElement, Class<T> termClass, TermType termType, TermVocabulary<?> termVocabulary, List<T> terms,String labelString, T selection, boolean addEmptyElement,
int style, boolean useAbbrevLabel, Comparator<T> comparator) {
super(formFactory, parentElement);
}
else if(this.termClass!=null){
populateTerms(getPreferredTerms());
+ }else if (terms != null){
+ populateTerms(terms);
}
combo.addSelectionListener(this);
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.swt.widgets.Composite;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
/**
* @author pplitzner
import org.eclipse.jface.viewers.IStructuredContentProvider;
import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.store.CdmStore;
/**
import org.eclipse.jface.viewers.LabelProvider;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
/**
* @author pplitzner
import org.eclipse.swt.widgets.Listener;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
import org.eclipse.jface.viewers.LabelProvider;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
/**
*
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.swt.widgets.Composite;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.ui.combo.AbstractComboComposite;
/**
*/
package eu.etaxonomy.taxeditor.ui.dialog;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
private final int MIN_WIDTH = 530;
private final int MIN_HEIGHT = 220;
private final int MIN_EXP_HEIGHT = 380;
- private final int MESSAGE_HEIGHT = 75;
+ private final int MESSAGE_HEIGHT = 50;
private Label lblEditorVersion;
private Text txtEditorVersion;
private Label lblServerCDMVersion;
* Create contents of the dialog.
*/
private void createContents() {
- shlConnect = new Shell(getParent(), SWT.DIALOG_TRIM);
+ shlConnect = new Shell(getParent(), SWT.DIALOG_TRIM | SWT.APPLICATION_MODAL);
shlConnect.setMinimumSize(new Point(MIN_WIDTH, MIN_HEIGHT));
shlConnect.setSize(MIN_WIDTH, MIN_HEIGHT);
shlConnect.setText(Messages.RemotingLoginDialog_LABEL_CONNECT);
txtCdmServerStatus.setEditable(false);
GridData gd_txtCdmServerStatus = new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1);
gd_txtCdmServerStatus.widthHint = 100;
+
txtCdmServerStatus.setLayoutData(gd_txtCdmServerStatus);
btnCdmServerRefresh = new Button(cdmServerComposite, SWT.NONE);
styledTxtMessage.setSelectionForeground(SWTResourceManager.getColor(SWT.COLOR_DARK_RED));
styledTxtMessage.setDoubleClickEnabled(false);
styledTxtMessage.setEditable(false);
+ styledTxtMessage.setWordWrap(true);
+
GridData gd_styledTxtMessage = new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1);
gd_styledTxtMessage.exclude = true;
gd_styledTxtMessage.minimumHeight = MESSAGE_HEIGHT;
gd_styledTxtMessage.heightHint = MESSAGE_HEIGHT;
+ gd_styledTxtMessage.widthHint = MIN_WIDTH - 5;
+
styledTxtMessage.setLayoutData(gd_styledTxtMessage);
xpndblcmpstAdvanced = new ExpandableComposite(remotingComposite, SWT.NONE, ExpandableComposite.TWISTIE);
GridData gd_xpndblcmpstAdvanced = new GridData(SWT.FILL, SWT.FILL, false, true, 1, 1);
gd_xpndblcmpstAdvanced.heightHint = 19;
+ gd_xpndblcmpstAdvanced.widthHint = MIN_WIDTH - 10;
xpndblcmpstAdvanced.setLayoutData(gd_xpndblcmpstAdvanced);
xpndblcmpstAdvanced.addExpansionListener(new IExpansionListener() {
@Override
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
import eu.etaxonomy.cdm.api.service.IIdentifiableEntityService;
import eu.etaxonomy.cdm.api.service.dto.IdentifiedEntityDTO;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
import eu.etaxonomy.cdm.model.common.ICdmBase;
import eu.etaxonomy.cdm.persistence.query.MatchMode;
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
* @created Sep 10, 2009
* @version 1.0
*/
-public class AgentSelectionDialog extends
- AbstractFilteredCdmResourceSelectionDialog<AgentBase> {
+public class AgentSelectionDialog<T extends AgentBase> extends
+ AbstractFilteredCdmResourceSelectionDialog {
/**
*
AgentBase entity, boolean selectTeamMember) {
AgentSelectionDialog dialog = new AgentSelectionDialog(shell, //conversation,
"Choose Agent", false, AgentSelectionDialog.class.getCanonicalName(), entity, selectTeamMember);
- return getSelectionFromDialog(dialog);
+ return (AgentBase) getSelectionFromDialog(dialog);
}
/**
*/
@Override
public String getText(Object element) {
- AgentBase agent = getCdmObjectByUuid(((UuidAndTitleCache<AgentBase>) element).getUuid());
+ AgentBase agent = (AgentBase) getCdmObjectByUuid(((UuidAndTitleCache<AgentBase>) element).getUuid());
if (agent instanceof INomenclaturalAuthor) {
return "Nomenclatural title: '" + ((INomenclaturalAuthor) agent).getNomenclaturalTitle() + "'";
} else {
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.location.NamedArea;
import eu.etaxonomy.cdm.model.metadata.CdmPreference;
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
import eu.etaxonomy.cdm.model.agent.Person;
import eu.etaxonomy.cdm.model.agent.Team;
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.cdm.model.reference.Reference;
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
import eu.etaxonomy.taxeditor.store.CdmStore;
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
import eu.etaxonomy.taxeditor.store.CdmStore;
public class FeatureTreeSelectionDialog extends
AbstractFilteredCdmResourceSelectionDialog<FeatureTree> {
+ private final TermType termType;
+
+ public static FeatureTree select(Shell shell,
+ FeatureTree featureTree) {
+ return select(shell, featureTree, null);
+
+ }
public static FeatureTree select(Shell shell,
- FeatureTree featureTree) {
+ FeatureTree featureTree, TermType termType) {
FeatureTreeSelectionDialog dialog = new FeatureTreeSelectionDialog(shell,
- Messages.FeatureTreeSelectionDialog_CHOOSE_TREE, false, featureTree);
+ Messages.FeatureTreeSelectionDialog_CHOOSE_TREE, false, featureTree, termType);
return getSelectionFromDialog(dialog);
}
protected FeatureTreeSelectionDialog(Shell shell,
String title, boolean multi,
- FeatureTree cdmObject) {
- super(shell,
- title, multi, FeatureTreeSelectionDialog.class.getCanonicalName(), cdmObject);
+ FeatureTree cdmObject, TermType termType) {
+ super(shell, title, multi, FeatureTreeSelectionDialog.class.getCanonicalName(), cdmObject);
+ this.termType = termType;
}
@Override
@Override
protected void callService(String pattern) {
- model = CdmStore.getService(IFeatureTreeService.class).getUuidAndTitleCache(FeatureTree.class, limitOfInitialElements, pattern);
+ model = CdmStore.getService(IFeatureTreeService.class).getUuidAndTitleCacheByTermType(FeatureTree.class, termType, limitOfInitialElements, pattern);
}
@Override
InputDialog dialog = new InputDialog(getShell(), Messages.FeatureTreeSelectionDialog_TREE_LABEL, Messages.FeatureTreeSelectionDialog_ENTER_LABEL, null, null);
if (dialog.open() == Window.OK) {
// User clicked OK; update the label with the input
- FeatureTree tree = FeatureTree.NewInstance();
+ FeatureTree tree = null;
+ if(termType!=null){
+ tree = FeatureTree.NewInstance(termType);
+ }
+ else{
+ tree = FeatureTree.NewInstance();
+ }
tree.setTitleCache(dialog.getValue(), true);
CdmStore.getService(IFeatureTreeService.class).merge(tree,true);
refresh();
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Shell;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
/**
import eu.etaxonomy.cdm.api.service.IGroupService;
import eu.etaxonomy.cdm.common.CdmUtils;
import eu.etaxonomy.cdm.model.common.Group;
+import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
import eu.etaxonomy.taxeditor.newWizard.NewGroupWizard;
public class GroupSelectionDialog extends
AbstractFilteredCdmResourceSelectionDialog<Group> {
+ User user;
+
public static Group select(Shell shell, //ConversationHolder conversation,
- Group group){
+ Group group, User user){
GroupSelectionDialog dialog = new GroupSelectionDialog(shell, //conversation,
- "Choose Group", false, GroupSelectionDialog.class.getCanonicalName(), group);
+ "Choose Group", false, GroupSelectionDialog.class.getCanonicalName(), group, user);
return getSelectionFromDialog(dialog);
}
*/
protected GroupSelectionDialog(Shell shell,//ConversationHolder conversation,
String title, boolean multi,
- String settings, Group cdmObject) {
+ String settings, Group cdmObject, User user) {
super(shell, //conversation,
title, multi, settings, cdmObject);
+ this.user = user;
}
/* (non-Javadoc)
for(Group group : groups){
if (pattern == null || group.getName().matches("(?i)"+CdmUtils.quoteRegExWithWildcard(pattern) + ".*")){
+ if (user != null && !user.getGroups().isEmpty() && user.getGroups().contains(group)){
+ continue;
+ }
model.add(new UuidAndTitleCache<Group>(Group.class, group.getUuid(), group.getId(), String.format("%s", group.getName())));
}
}
import eu.etaxonomy.cdm.api.service.ITermService;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.location.NamedArea;
import eu.etaxonomy.taxeditor.model.ImageResources;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.service.IAgentService;
-import eu.etaxonomy.cdm.model.agent.AgentBase;
+import eu.etaxonomy.cdm.model.agent.INomenclaturalAuthor;
+import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.cdm.model.agent.Team;
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
* @date 25.05.2016
*
*/
-public class NomenclaturalAuthorSelectionDialog extends AgentSelectionDialog {
+public class NomenclaturalAuthorSelectionDialog extends TeamOrPersonBaseSelectionDialog {
/**
*/
protected NomenclaturalAuthorSelectionDialog(Shell shell, //ConversationHolder conversation,
String title,
- boolean multi, String settings, AgentBase agent, boolean teamMemberSelection) {
- super(shell, //conversation,
- title, multi, settings, agent, teamMemberSelection);
- // TODO Auto-generated constructor stub
+ boolean multi, String settings, TeamOrPersonBase agent, boolean teamMemberSelection) {
+ super(shell, title, multi, settings, agent, teamMemberSelection);
+
}
@Override
protected void callService(String pattern) {
- model = CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern, null);
+ model = CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(Team.class, limitOfInitialElements, pattern);
+ model.addAll(CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(Person.class, limitOfInitialElements, pattern));
}
/** {@inheritDoc} */
* @param entity a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
* @return a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
*/
- public static AgentBase select(Shell shell, //ConversationHolder conversation,
- AgentBase entity, boolean teamMemberSelection) {
+ public static TeamOrPersonBase select(Shell shell, //ConversationHolder conversation,
+ TeamOrPersonBase entity, boolean teamMemberSelection) {
NomenclaturalAuthorSelectionDialog dialog = new NomenclaturalAuthorSelectionDialog(shell, //conversation,
"Choose Agent", false, NomenclaturalAuthorSelectionDialog.class.getCanonicalName(), entity, teamMemberSelection);
- return getSelectionFromDialog(dialog);
+ return (TeamOrPersonBase)getSelectionFromDialog(dialog);
}
/**
* @return a {@link java.lang.String} object.
*/
@Override
- protected String getTitle(AgentBase cdmObject) {
+ protected String getTitle(TeamOrPersonBase cdmObject) {
if(cdmObject == null){
return "";
}
- if (cdmObject instanceof TeamOrPersonBase) {
- return ((TeamOrPersonBase) cdmObject).getNomenclaturalTitle();
- } else if (cdmObject instanceof AgentBase){
- return ((TeamOrPersonBase) cdmObject).getTitleCache();
+ if (cdmObject instanceof INomenclaturalAuthor) {
+ return ((INomenclaturalAuthor)cdmObject).getNomenclaturalTitle();
}
-
throw new IllegalArgumentException("Generic method only" +
" supports cdmObject of type IIdentifiableEntity." +
" Please implement specific method in subclass.");
*/
@Override
void callService(String pattern) {
- model = CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern, Team.class);
+ model = CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(Team.class, limitOfInitialElements, pattern);
}
}
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.service.IAgentService;
-import eu.etaxonomy.cdm.model.agent.AgentBase;
import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
import eu.etaxonomy.taxeditor.store.CdmStore;
/**
*/
protected NomenclaturalPersonAuthorSelectionDialog(Shell shell, //ConversationHolder conversation,
String title,
- boolean multi, String settings, AgentBase agent, boolean teamMemberSelection) {
+ boolean multi, String settings, TeamOrPersonBase agent, boolean teamMemberSelection) {
super(shell, //conversation,
title, multi, settings, agent, teamMemberSelection);
// TODO Auto-generated constructor stub
* @param entity a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
* @return a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
*/
- public static AgentBase select(Shell shell, //ConversationHolder conversation,
- AgentBase entity, boolean teamMemberSelection) {
+ public static TeamOrPersonBase select(Shell shell, //ConversationHolder conversation,
+ TeamOrPersonBase entity, boolean teamMemberSelection) {
NomenclaturalPersonAuthorSelectionDialog dialog = new NomenclaturalPersonAuthorSelectionDialog(shell, //conversation,
"Choose Agent", false, NomenclaturalAuthorSelectionDialog.class.getCanonicalName(), entity,teamMemberSelection);
- return getSelectionFromDialog(dialog);
+ return (TeamOrPersonBase)getSelectionFromDialog(dialog);
}
@Override
protected void callService(String pattern) {
- model = CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(limitOfInitialElements, pattern, Person.class);
+ model = CdmStore.getService(IAgentService.class).getUuidAndAbbrevTitleCache(Person.class, limitOfInitialElements, pattern);
}
}
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
/**
*
* @param shell a {@link org.eclipse.swt.widgets.Shell} object.
* @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
- * @return a {@link eu.etaxonomy.cdm.model.common.OriginalSourceType} object.
+ * @return a {@link eu.etaxonomy.cdm.model.reference.OriginalSourceType} object.
*/
public static OriginalSourceType select(Shell shell, ConversationHolder conversation){
OriginalSourceTypeSelectionDialog dialog =
@Override
public void widgetSelected(SelectionEvent e) {
useIdentifier = btnCheckButton.getSelection();
+ search();
}
});
}
import eu.etaxonomy.cdm.model.common.ICdmBase;
import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
import eu.etaxonomy.cdm.model.description.PolytomousKey;
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
import eu.etaxonomy.cdm.model.location.Country;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.section.agent.TeamMemberElement;
import eu.etaxonomy.taxeditor.ui.section.description.CommonNameSourceElement;
import eu.etaxonomy.taxeditor.ui.section.description.detail.CommonNameDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.group.MemberDetailSection;
import eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement;
import eu.etaxonomy.taxeditor.ui.section.reference.NomenclaturalReferenceDetailElement;
import eu.etaxonomy.taxeditor.ui.section.reference.ReferenceDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.user.GroupsByUserDetailSection;
/**
* @author n.hoffmann
}
if(clazz.equals(TeamOrPersonBase.class) && parentElement instanceof AuthorshipDetailElement){
return (T) NomenclaturalAuthorSelectionDialog.select(shell, //conversation,
- (AgentBase) currentSelection, false);
+ (TeamOrPersonBase) currentSelection, false);
}else if(clazz.equals(TeamOrPersonBase.class)){
//TODO: add TeamOrPersonBaseSelectionDialog (see ticket #4545)
- return (T) AgentSelectionDialog.select(shell, //conversation,
- (AgentBase) currentSelection, false);
+ return (T) TeamOrPersonBaseSelectionDialog.select(shell, //conversation,
+ (TeamOrPersonBase) currentSelection, false);
}
if(clazz.equals(Person.class) && parentElement instanceof TeamMemberElement){
return (T) NomenclaturalPersonAuthorSelectionDialog.select(shell, //conversation,
- (AgentBase) currentSelection, true);
+ (TeamOrPersonBase) currentSelection, true);
}
if(clazz.equals(AgentBase.class)){
return (T) AgentSelectionDialog.select(shell, //conversation,
return (T) CollectionSelectionDialog.select(shell, //conversation,
(Collection) currentSelection);
}
- if(clazz.equals(User.class)){
+ if(clazz.equals(User.class) && parentElement instanceof MemberDetailElement){
+ MemberDetailSection section = (MemberDetailSection)((MemberDetailElement)parentElement).getParentElement();
return (T) UserSelectionDialog.select(shell, //conversation,
- (User) currentSelection);
+ (User) currentSelection, section.getEntity());
}
if(clazz.equals(GrantedAuthorityImpl.class)){
return (T) GrantedAuthoritySelectionDialog.select(shell, //conversation,
return (T) PersonSelectionDialog.select(shell, //conversation,
(Person) currentSelection);
}
- if(clazz.equals(Group.class)){
+ if(clazz.equals(Group.class) && parentElement instanceof GroupsByUserDetailElement){
+ GroupsByUserDetailSection section =(GroupsByUserDetailSection)((GroupsByUserDetailElement)parentElement).getParentElement();
return (T) GroupSelectionDialog.select(shell, //conversation,
- (Group) currentSelection);
+ (Group) currentSelection, section.getEntity());
}
if(clazz.equals(Institution.class)){
return (T) InstitutionSelectionDialog.select(shell, //conversation,
*
* @param shell a {@link org.eclipse.swt.widgets.Shell} object.
* @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
- * @return a {@link eu.etaxonomy.cdm.model.common.OriginalSourceType} object.
+ * @return a {@link eu.etaxonomy.cdm.model.reference.OriginalSourceType} object.
*/
public static SpecimenOrObservationType select(Shell shell, ConversationHolder conversation){
SpecimenOrObservationTypeSelectionDialog dialog =
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.dialog.selection;
+
+import org.eclipse.swt.widgets.Shell;
+
+import eu.etaxonomy.cdm.api.service.IAgentService;
+import eu.etaxonomy.cdm.model.agent.Person;
+import eu.etaxonomy.cdm.model.agent.Team;
+import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ * @author k.luther
+ * @since 18.03.2019
+ *
+ */
+public class TeamOrPersonBaseSelectionDialog extends AgentSelectionDialog<TeamOrPersonBase> {
+
+ /**
+ * @param shell
+ * @param title
+ * @param multi
+ * @param settings
+ * @param agent
+ * @param selectTeamMember
+ */
+ protected TeamOrPersonBaseSelectionDialog(Shell shell, String title, boolean multi, String settings,
+ TeamOrPersonBase agent, boolean selectTeamMember) {
+ super(shell, title, multi, settings, agent, selectTeamMember);
+ // TODO Auto-generated constructor stub
+ }
+
+
+
+ /**
+ * <p>select</p>
+ *
+ * @param shell a {@link org.eclipse.swt.widgets.Shell} object.
+ * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
+ * @param entity a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
+ * @return a {@link eu.etaxonomy.cdm.model.agent.AgentBase} object.
+ */
+ public static TeamOrPersonBase select(Shell shell, //ConversationHolder conversation,
+ TeamOrPersonBase entity, boolean selectTeamMember) {
+ TeamOrPersonBaseSelectionDialog dialog = new TeamOrPersonBaseSelectionDialog(shell, //conversation,
+ "Choose Team or Person", false, TeamOrPersonBaseSelectionDialog.class.getCanonicalName(), entity, selectTeamMember);
+ return (TeamOrPersonBase)getSelectionFromDialog(dialog);
+ }
+
+ @Override
+ void callService(String pattern) {
+ model = CdmStore.getService(IAgentService.class).getUuidAndTitleCache(Team.class,limitOfInitialElements, pattern);
+ model.addAll( CdmStore.getService(IAgentService.class).getUuidAndTitleCache(Person.class,limitOfInitialElements, pattern));
+ }
+
+
+
+ /**
+ * @param cdmObject
+ * @return
+ */
+ protected String getTitle(TeamOrPersonBase cdmObject) {
+ if(cdmObject == null){
+ return "";
+ }
+ return cdmObject.getTitleCache();
+ }
+}
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
import eu.etaxonomy.taxeditor.newWizard.NewFeatureVocabularyWizard;
import eu.etaxonomy.taxeditor.store.CdmStore;
@Override
protected AbstractNewEntityWizard getNewEntityWizard(String parameter) {
- return new NewFeatureVocabularyWizard();
+ return new NewFeatureVocabularyWizard(termType);
}
}
import java.util.ArrayList;
import java.util.List;
+import java.util.Set;
import java.util.UUID;
import org.eclipse.swt.widgets.Shell;
import eu.etaxonomy.cdm.api.service.IUserService;
import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
import eu.etaxonomy.taxeditor.newWizard.AbstractNewEntityWizard;
public class UserSelectionDialog extends
AbstractFilteredCdmResourceSelectionDialog<User> {
+ Group group;
+ Set<User> groupMembers;
+
/**
*
* @param shell
* @return
*/
public static User select(Shell shell, //ConversationHolder conversation,
- User user){
+ User user, Group group){
UserSelectionDialog dialog = new UserSelectionDialog(shell, //conversation,
- "Choose User", false, UserSelectionDialog.class.getCanonicalName(), user);
+ "Choose User", false, UserSelectionDialog.class.getCanonicalName(), user, group);
return getSelectionFromDialog(dialog);
}
* @param cdmObject
*/
protected UserSelectionDialog(Shell shell, //ConversationHolder conversation,
- String title, boolean multi, String settings, User cdmObject) {
+ String title, boolean multi, String settings, User cdmObject, Group group) {
super(shell, //conversation,
title, multi, settings, cdmObject);
+ this.group = group;
+ groupMembers = group.getMembers();
}
/* (non-Javadoc)
for(User user : users){
if (pattern == null || user.getUsername().matches(CdmUtils.quoteRegExWithWildcard(pattern) + ".*")) {
+ if (groupMembers != null && !groupMembers.isEmpty() && groupMembers.contains(user)){
+ continue;
+ }
model.add(new UuidAndTitleCache<User>(User.class, user.getUuid(), user.getId(), String.format("%s, %s", user.getUsername(), user.getPerson())));
}
}
import eu.etaxonomy.cdm.model.common.Annotation;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.Credit;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.Extension;
import eu.etaxonomy.cdm.model.common.GrantedAuthorityImpl;
import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.cdm.model.common.ICdmBase;
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
import eu.etaxonomy.cdm.model.common.Identifier;
import eu.etaxonomy.cdm.model.common.LSID;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.common.Marker;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
import eu.etaxonomy.cdm.model.common.TimePeriod;
import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.model.common.VerbatimTimePeriod;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;
import eu.etaxonomy.cdm.model.taxon.TaxonRelationshipType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.strategy.parser.ParserProblem;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
* object.
*
* @param Representation
- * a {@link eu.etaxonomy.cdm.model.common.Representation} object.
+ * a {@link eu.etaxonomy.cdm.model.term.Representation} object.
* @param textHeight
* a int.
* @param style
* object.
*
* @param Representation
- * a {@link eu.etaxonomy.cdm.model.common.Representation} object.
+ * a {@link eu.etaxonomy.cdm.model.term.Representation} object.
* @param textHeight
* a int.
* @param style
return element;
}
- /**
- * <p>
- * createMultiLanguageTextElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- *
- * @param term
- * a {@link eu.etaxonomy.cdm.model.common.Representation} object.
- * @param textHeight
- * a int.
- * @param style
- * a int.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.element.RepresentationElement}
- * object.
- */
- public RepresentationElement createRepresentationElement(ICdmFormElement parentElement, TermBase term, int textHeight, int style, boolean fillDetails) {
- RepresentationElement element = new RepresentationElement(this, parentElement, term, textHeight, style, fillDetails);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
- /**
- * <p>
- * createMultiLanguageTextElement
- * </p>
- *
- * @param parentElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- *
- * @param term
- * a {@link eu.etaxonomy.cdm.model.common.Representation} object.
- * @param textHeight
- * a int.
- * @param style
- * a int.
- * @return a
- * {@link eu.etaxonomy.taxeditor.ui.element.RepresentationElement}
- * object.
- */
- public TranslatableRepresentationElement createTranslatableRepresentationElement(ICdmFormElement parentElement, TermBase term, int textHeight, int style, boolean fillDetails) {
- TranslatableRepresentationElement element = new TranslatableRepresentationElement(this, parentElement, term, textHeight, style, fillDetails);
- adapt(element);
- parentElement.addElement(element);
- return element;
- }
-
public KeyStatementElement createKeyStatementElement(ICdmFormElement parentElement, String labelString,
KeyStatement keyStatement, int textHeight, int style) {
KeyStatementElement element = new KeyStatementElement(this, parentElement, labelString, keyStatement,
T selection,
int style,
Comparator<T> comparator) {
- return this.createDefinedTermComboElement(termType, null, parentElement, labelString, selection, true, style, false, comparator);
+ return this.createDefinedTermComboElement(termType, null, null, parentElement, labelString, selection, true, style, false, comparator);
}
public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
T selection,
boolean addEmptyElement,
int style) {
- return this.createDefinedTermComboElement(termType, null, parentElement, labelString, selection, addEmptyElement, style, false, null);
+ return this.createDefinedTermComboElement(termType, null, null, parentElement, labelString, selection, addEmptyElement, style, false, null);
}
public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
String labelString,
T selection,
int style) {
- return this.createDefinedTermComboElement(termType, null, parentElement, labelString, selection, true, style, false, null);
+ return this.createDefinedTermComboElement(termType, null, null, parentElement, labelString, selection, true, style, false, null);
}
+
+ public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
+ List<T> terms,
+ ICdmFormElement parentElement,
+ String labelString,
+ T selection,
+ int style) {
+ return this.createDefinedTermComboElement(null, null, terms, parentElement, labelString, selection, true, style, false, null);
+ }
public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
TermType termType,
ICdmFormElement parentElement,
boolean addEmptyElement,
int style,
boolean useAbbrevLabel) {
- return createDefinedTermComboElement(termType, null, parentElement, labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
+ return createDefinedTermComboElement(termType, null, null, parentElement, labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
}
String labelString,
T selection,
int style) {
- return this.createDefinedTermComboElement(null, termVocabulary, parentElement, labelString, selection, true, style, false, null);
+ return this.createDefinedTermComboElement(null, termVocabulary, null, parentElement, labelString, selection, true, style, false, null);
}
public <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
boolean addEmptyElement,
int style,
boolean useAbbrevLabel) {
- return createDefinedTermComboElement(null, termVocabulary, parentElement, labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
+ return createDefinedTermComboElement(null, termVocabulary, null, parentElement, labelString, selection, addEmptyElement, style, useAbbrevLabel, null);
}
private <T extends DefinedTermBase> TermComboElement<T> createDefinedTermComboElement(
TermType termType,
TermVocabulary<?> termVocabulary,
+ List<T> terms,
ICdmFormElement parentElement,
String labelString,
T selection,
adapt(element);
parentElement.addElement(element);
return element;
+ }else if (terms != null){
+
+ TermComboElement<T> element = new TermComboElement<T>(this, parentElement, terms, labelString, selection, addEmptyElement, style, useAbbrevLabel);
+ if (comparator!= null){
+ element.setTermComparator(comparator);
+ }
+ adapt(element);
+ parentElement.addElement(element);
+ return element;
}
else {
//this should never happen
return element;
}
+
+
/**
* <p>
* createGatheringEventUnitElement
/** {@inheritDoc} */
@Override
public void setBackground(Color color) {
- checkbox.setBackground(color);
+ if (checkbox.isDisposed()){
+ return;
+ }
+ checkbox.setBackground(color);
if (label != null) {
label.setBackground(color);
}
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import org.apache.commons.lang.StringUtils;
import org.eclipse.jface.util.PropertyChangeEvent;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.location.Point;
import eu.etaxonomy.cdm.model.location.ReferenceSystem;
import eu.etaxonomy.taxeditor.preference.Resources;
*/
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.widgets.Button;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.model.DefaultTermComparator;
import eu.etaxonomy.taxeditor.model.ImageResources;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
-public class RepresentationElement extends AbstractCdmFormElement implements
-SelectionListener{
+public class RepresentationElement extends AbstractCdmFormElement {
protected TermComboElement<Language> combo_language;
protected TextWithLabelElement element_Label;
protected TextWithLabelElement element_abbrevLabel;
+ protected TextWithLabelElement element_plural;
protected TextWithLabelElement element_text;
protected Button button;
-
+
protected Representation selectedRepresentation;
protected TermBase term;
private Button removeRepresentation;
- // protected final boolean isTranslationWizard;
-
-
- /**
- * <p>
- * Constructor for MultilanguageTextElement.
- * </p>
- *
- * @param formFactory
- * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
- * object.
- * @param formElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- *
- * @param term
- * a {@link eu.etaxonomy.cdm.model.common.TermBase} object.
- * @param textHeight
- * a {@link java.lang.Integer} object.
- * @param style
- * a int.
- */
public RepresentationElement(CdmFormFactory formFactory,
ICdmFormElement formElement, TermBase term,
Integer textHeight, int style, boolean fill) {
- super(formFactory, formElement);
-
- formFactory.addPropertyChangeListener(this);
-
- element_Label = this.formFactory.createTextWithLabelElement(formElement, "Label", null, style);
- element_abbrevLabel = this.formFactory
- .createTextWithLabelElement(formElement, "abbrev. Label",
- null, style);
- element_text = this.formFactory.createMultiLineTextWithLabel(formElement, "Description", textHeight, style);
- if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
- createRepresentationEditingElements(formElement, style);
- }
- setTerm(term, fill);
-
+ this(formFactory, formElement, null, term, textHeight, style, fill);
}
- /**
- * <p>
- * Constructor for MultilanguageTextElement.
- * </p>
- *
- * @param formFactory
- * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
- * object.
- * @param formElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- * @param representation
- * a {@link eu.etaxonomy.cdm.model.common.Representation} object.
- * @param term
- * a {@link eu.etaxonomy.cdm.model.common.TermBase} object.
- * @param textHeight
- * a {@link java.lang.Integer} object.
- * @param style
- * a int.
- */
public RepresentationElement(CdmFormFactory formFactory,
ICdmFormElement formElement, Representation representation, TermBase term,
Integer textHeight, int style, boolean fill) {
formFactory.addPropertyChangeListener(this);
element_Label = this.formFactory.createTextWithLabelElement(formElement, "Label", null, style);
- element_abbrevLabel = this.formFactory
- .createTextWithLabelElement(formElement, "abbrev. Label",
- null, style);
+ element_abbrevLabel = this.formFactory.createTextWithLabelElement(formElement, "abbrev. Label", null, style);
+ element_plural = this.formFactory.createTextWithLabelElement(formElement, "Plural", null, style);
element_text = this.formFactory.createMultiLineTextWithLabel(formElement, "Description", textHeight, style);
if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
createRepresentationEditingElements(formElement, style);
}
setTerm(term, fill);
- setSelectedRepresentation(representation);
-
+ if(representation!=null){
+ setSelectedRepresentation(representation);
+ }
}
removeRepresentation.setToolTipText("Remove representation");
removeRepresentation.addSelectionListener(new DeleteListener(this));
addControl(removeRepresentation);
-
+
combo_language = formFactory.createDefinedTermComboElement(TermType.Language, formElement,
"", null, false, style);
- combo_language.addSelectionListener(this);
-
- //addControl(formFactory.createLabel(getLayoutComposite(), ""));
}
public List<Language> getLanguages() {
return languageList;
}
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt
- * .events.SelectionEvent)
- */
- /** {@inheritDoc} */
- @Override
- public void widgetSelected(SelectionEvent e) {
- Language selectedLanguage = combo_language.getSelection();
- if (selectedLanguage != null) {
- selectedRepresentation = getTerm().getRepresentation(
- selectedLanguage);
- if (selectedRepresentation == null){
- selectedRepresentation = Representation.NewInstance("", "", "", selectedLanguage);
- }
- element_Label.setText(selectedRepresentation.getLabel());
- element_abbrevLabel.setText(selectedRepresentation.getAbbreviatedLabel());
- element_text.setText(selectedRepresentation.getDescription());
-
- }else {
-
- element_Label.setEnabled(false);
- element_abbrevLabel.setEnabled(false);
- element_text.setEnabled(false);
- }
-
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.swt.events.SelectionListener#widgetDefaultSelected(org.eclipse
- * .swt.events.SelectionEvent)
- */
- /** {@inheritDoc} */
- @Override
- public void widgetDefaultSelected(SelectionEvent e) {
- }
-
- /**
- * <p>
- * Setter for the field <code>multilanguageText</code>.
- * </p>
- *
- * @param multilanguageText
- * the multilanguageText to set
- */
public void setTerm(
TermBase term, boolean update) {
this.term = term;
if (selectedRepresentation != null) {
combo_language.setTerms(getLanguages());
-
+
} else{
- element_Label.setEnabled(false);
- element_abbrevLabel.setEnabled(false);
- element_text.setEnabled(false);
+ setEnabledControls(false);
if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
removeRepresentation.setEnabled(false);
}
}
}
- /**
- *
- */
+ private void setEnabledControls(boolean enabled){
+ element_Label.setEnabled(enabled);
+ element_abbrevLabel.setEnabled(enabled);
+ element_plural.setEnabled(enabled);
+ element_text.setEnabled(enabled);
+ }
+
protected void updateControls() {
Representation preferredRepresentation = term
.getPreferredRepresentation(PreferencesUtil.getGlobalLanguage() );
element_Label.setText(preferredRepresentation.getLabel());
element_abbrevLabel.setText(preferredRepresentation.getAbbreviatedLabel());
+ element_plural.setText(preferredRepresentation.getPlural());
element_text.setText(preferredRepresentation.getDescription());
selectedRepresentation = preferredRepresentation;
if (PreferencesUtil.isMultilanguageTextEditingCapability()) {
combo_language.setSelection(preferredRepresentation == null?CdmStore.getDefaultLanguage():preferredRepresentation.getLanguage());
boolean removePossible = term.getRepresentations().size() > 1 ;
removeRepresentation.setEnabled(removePossible);
-
+
}
}
- /**
- * <p>
- * Getter for the field <code>multilanguageText</code>.
- * </p>
- *
- * @return the multilanguageText
- */
public TermBase getTerm() {
return term;
}
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.taxeditor.forms.AbstractCdmFormElement#propertyChange(org
- * .eclipse.jface.util.PropertyChangeEvent)
- */
- /** {@inheritDoc} */
@Override
public void propertyChange(PropertyChangeEvent event) {
if (event == null) {
.getText();
selectedRepresentation.setAbbreviatedLabel(abbrevLabel);
firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
+ }
+ else if (eventSource == element_plural){
+ String plural = ((TextWithLabelElement) eventSource)
+ .getText();
+ selectedRepresentation.setPlural(plural);
+ firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
} else if (eventSource == element_Label){
String label = ((TextWithLabelElement) eventSource)
.getText();
} else if (eventSource == button){
firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
} else if (eventSource == combo_language){
- if (combo_language.getSelection() != null){
- element_Label.setEnabled(true);
- element_abbrevLabel.setEnabled(true);
- element_text.setEnabled(true);
- boolean removePossible = term.getRepresentations().size() > 1 ;
- removeRepresentation.setEnabled(removePossible);
- } else{
- element_Label.setEnabled(false);
- element_abbrevLabel.setEnabled(false);
- element_text.setEnabled(false);
- removeRepresentation.setEnabled(false);
- }
- firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
+ if (combo_language.getSelection() != null){
+ setEnabledControls(true);
+ boolean removePossible = term.getRepresentations().size() > 1 ;
+ removeRepresentation.setEnabled(removePossible);
+
+ Language selectedLanguage = combo_language.getSelection();
+ if (selectedLanguage != null) {
+ selectedRepresentation = getTerm().getRepresentation(selectedLanguage);
+ if (selectedRepresentation == null){
+ selectedRepresentation = Representation.NewInstance("", "", "", selectedLanguage);
+ }
+ element_Label.setText(selectedRepresentation.getLabel());
+ element_abbrevLabel.setText(selectedRepresentation.getAbbreviatedLabel());
+ element_plural.setText(selectedRepresentation.getPlural());
+ element_text.setText(selectedRepresentation.getDescription());
+
+ }else {
+ setEnabledControls(false);
+ }
+ } else{
+ setEnabledControls(false);
+ removeRepresentation.setEnabled(false);
+ }
+ firePropertyChangeEvent(new CdmPropertyChangeEvent(this, event));
}
}
- /**
- * @return the selectedRepresentation
- */
public Representation getSelectedRepresentation() {
return selectedRepresentation;
}
- /**
- * @param selectedRepresentation the selectedRepresentation to set
- */
public void setSelectedRepresentation(Representation selectedRepresentation) {
if (selectedRepresentation == null){
selectedRepresentation = Representation.NewInstance("", "", "", null);
}
this.selectedRepresentation = selectedRepresentation;
}
-
+
private class DeleteListener extends SelectionAdapter {
private final RepresentationElement element;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermBase;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.TermTranslationWizard;
import org.eclipse.ui.forms.widgets.TableWrapData;
import org.eclipse.ui.forms.widgets.TableWrapLayout;
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.mvc.AbstractCdmComposite;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
import eu.etaxonomy.cdm.model.reference.ReferenceType;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.common.CdmUtils;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.description.TextData;
toolBarManager.add(browseAction);
}
+ addAction(toolBarManager);
+
return toolBarManager.createControl(this);
}
- /**
+ protected void addAction(ToolBarManager toolBarManager) {
+ // default implementation empty
+ }
+
+ /**
* using this method is discouraged, use updateToolBar() instead
*/
public void showToolbar(){
}
}
- private void updateToolbar() {
+ protected void updateToolbar() {
if(getEntity() != null && CdmStore.currentAuthentiationHasPermission(StoreUtil.getCdmEntity(getEntity()), UPDATE)){
showToolbar();
} else {
import org.eclipse.swt.graphics.Color;
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.taxon.TaxonNodeAgentRelation;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
// .createSelectionElement(Classification.class,//getConversationHolder(),
// formElement, "Classification",
// null, EntitySelectionElement.DELETABLE, style);
+
selection_parentTaxonNode = formFactory
.createTaxonNodeSelectionElement(getConversationHolder(), formElement, "Parent", parentTreeNode,
EntitySelectionElement.DELETABLE, style);
+
+
+ selection_Ref = formFactory
+ .createSelectionElement(Reference.class,
+ formElement, "Parent Child Relation Source", null,
+ EntitySelectionElement.DELETABLE, style);
+
+
+ microReference = formFactory.createTextWithLabelElement(formElement,"Detail", "", style);
+ microReference.setText(getEntity().getMicroReference());
+
selection_reuseExistingTaxon = formFactory
.createSelectionElement(Taxon.class,//getConversationHolder(),
formElement,
}
}else{
- TextWithLabelElement textClassification = formFactory.createTextWithLabelElement(formElement,"Classification", entity.getClassification().getTitleCache(), style);
- textClassification.setEnabled(false);
-
+ if (entity.getParent().getTaxon() == null){
+ TextWithLabelElement textParent = formFactory.createTextWithLabelElement(formElement,"Classification", entity.getClassification().getTitleCache(), style);
+ textParent.setEnabled(false);
+ }else{
+ TextWithLabelElement textParent = formFactory.createTextWithLabelElement(formElement,"Parent", entity.getParent().getTaxon().getTitleCache(), style);
+ textParent.setEnabled(false);
+ }
// TextWithLabelElement textTaxon = formFactory.createTextWithLabelElement(formElement,"Taxon", taxon.getTitleCache(), style);
// textTaxon.setEnabled(false);
}
- selection_Ref = formFactory
- .createSelectionElement(Reference.class,//getConversationHolder(),
- formElement, "Parent Child Relation Source", null,
- EntitySelectionElement.DELETABLE, style);
- microReference = formFactory.createTextWithLabelElement(formElement,"Detail", "", style);
- microReference.setText(getEntity().getMicroReference());
+
if (!isCreateNew()){
- selection_Ref.setEntity(entity.getReference());
+ if (entity.getReference() != null){
+ selection_Ref.setEntity(entity.getReference());
+ }
}
parentTreeNode = entity.getParent();
selectionNodeAgentRelation.setEntity(entity);
selectionNodeAgentRelation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
}
-// checkbox_openInEditor = formFactory.createCheckbox(formElement,
-// "Open in Editor", true, style);
-// setOpenInEditor(true);
+
}
private void preFillTaxonName() {
}
checkbox_publish.setSelected(getTaxon().isPublish());
}
+ boolean enabled = selection_reuseExistingTaxon.getEntity() == null;
+ if (selection_reuseExistingName != null){
+ selection_reuseExistingName.setEnabled(enabled);
+ }
+ textNewTaxonName.setEnabled(enabled);
complete = true;
} else if (eventSource == selection_reuseExistingName) {
boolean enabled = selection_reuseExistingName.getEntity() == null;
return classification;
}
-// public boolean isOpenInEditor() {
-// return openInEditor;
-// }
+
public ITaxonTreeNode getParentTreeNode() {
return parentTreeNode;
import java.util.Comparator;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
import eu.etaxonomy.cdm.model.media.ExternalLink;
import eu.etaxonomy.cdm.model.media.ExternalLinkType;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
/**
* Copyright (C) 2007 EDIT
-* European Distributed Institute of Taxonomy
+* European Distributed Institute of Taxonomy
* http://www.e-taxonomy.eu
-*
+*
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
package eu.etaxonomy.taxeditor.ui.section.description;
-import org.eclipse.swt.SWT;
+import java.util.Arrays;
+
+import org.eclipse.jface.util.PropertyChangeEvent;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
-import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
-import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
+import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
/**
* <p>DescriptionDetailElement class.</p>
* @created Mar 5, 2010
* @version 1.0
*/
-public class DescriptionDetailElement extends AbstractCdmDetailElement<DescriptionBase> {
+public class DescriptionDetailElement extends AbstractIdentifiableEntityDetailElement<DescriptionBase> {
- private TextWithLabelElement detailDescription;
- private EntitySelectionElement<FeatureTree> selection_featureTree;
+// private EntitySelectionElement<FeatureTree> selection_featureTree;
- /**
- * <p>Constructor for DescriptionDetailElement.</p>
- *
- * @param cdmFormFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
- * @param formElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
- * @param style a int.
- */
public DescriptionDetailElement(CdmFormFactory cdmFormFactory,
ICdmFormElement formElement, int style) {
super(cdmFormFactory, formElement);
}
-
- /** {@inheritDoc} */
+
@Override
protected void createControls(ICdmFormElement formElement, DescriptionBase entity, int style) {
- detailDescription = formFactory.createMultiLineTextWithLabel(this, "Label", 50, SWT.WRAP);
- detailDescription.setText(entity.getTitleCache());
-
- // TODO I initially thought that we can handle the entity's descriptive system with a feature tree
- // Since descriptiveSystem is a Set of Features that are present or allowed for the current description,
+ toggleable_cache = formFactory.createToggleableTextField(this, "Label", entity.getTitleCache(), entity.isProtectedTitleCache(), style);
+ // TODO I initially thought that we can handle the entity's descriptive system with a feature tree
+ // Since descriptiveSystem is a Set of Features that are present or allowed for the current description,
// it is similar to a FeatureTree (you can get this information from a feature tree) but not the same.
// Please correct this once it is clear what descriptive system will be used for in CDM
// selection_featureTree = formFactory.createSelectionElement(FeatureTree.class, getConversationHolder(), formElement, "Feature Tree", null, EntitySelectionElement.ALL, style);
}
-
- /** {@inheritDoc} */
+
+ @Override
+ protected void updateContent() {
+ super.updateContent();
+ toggleable_cache.setEnabled(getEntity().isProtectedTitleCache());
+ setIrrelevant(toggleable_cache.getState(),
+ Arrays.asList(new Object[] { toggleable_cache}));
+ }
+
+ @Override
+ protected void handleTitleCacheRelevantChange(PropertyChangeEvent event) {
+ if(!getEntity().isProtectedTitleCache()){
+ String title = getEntity().generateTitle();
+ getEntity().setTitleCache(title, false);
+ }
+ super.updateToggleableCacheField();
+ }
+
@Override
public void handleEvent(Object eventSource) {
- if(eventSource == detailDescription){
- getEntity().setTitleCache(detailDescription.getText(), true);
- }
- else if(eventSource == selection_featureTree){
- FeatureTree featureTree = selection_featureTree.getSelection();
- //descriptive system is not available anymore since v3.3
-// getEntity().setDescriptiveSystem(featureTree.getDistinctFeatures());
- }
+ if (eventSource == toggleable_cache) {
+ getEntity().setTitleCache(toggleable_cache.getText(), toggleable_cache.getState());
+ setIrrelevant(toggleable_cache.getState(), Arrays.asList(new Object[] { toggleable_cache }));
+ }
}
}
import java.util.Comparator;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import org.eclipse.swt.events.SelectionListener;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.StateData;
import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
if(parentSection.getEntity() instanceof StateData){
StateData stateData = (StateData) parentSection.getEntity();
recommendedModifierEnumeration = stateData.getCategoricalData().getFeature().getRecommendedModifierEnumeration();
- }
- if(parentSection.getEntity() instanceof StatisticalMeasurementValue){
+ }else if(parentSection.getEntity() instanceof StatisticalMeasurementValue){
StatisticalMeasurementValue statisticalMeasurementValue = (StatisticalMeasurementValue)parentSection.getEntity();
recommendedModifierEnumeration = statisticalMeasurementValue.getQuantitativeData().getFeature().getRecommendedModifierEnumeration();
}
+ if (!(parentSection.getParentElement() instanceof DescriptionElementBase) && parentSection.getEntity() instanceof DescriptionElementBase){
+ DescriptionElementBase element = (DescriptionElementBase) parentSection.getEntity();
+ recommendedModifierEnumeration = element.getFeature().getRecommendedModifierEnumeration();
+
+ }
+
for (TermVocabulary<DefinedTerm> termVocabulary : recommendedModifierEnumeration) {
modifierTerms.addAll(termVocabulary.getTerms());
}
DefinedTerm term = combo_modifier.getSelection();
parentEntity.addModifier(term);
entity = term;
+ }else {
+ ((DescriptionElementBase)parentSection.getEntity()).removeModifier(entity);
+ DefinedTerm term = combo_modifier.getSelection();
+ ((DescriptionElementBase)parentSection.getEntity()).addModifier(term);
+ entity = term;
}
}
}
import java.util.Comparator;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
import eu.etaxonomy.cdm.model.description.IModifiable;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import org.eclipse.swt.widgets.Display;
import eu.etaxonomy.cdm.api.service.NaturalLanguageGenerator;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.description.TextData;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
/** {@inheritDoc} */
@Override
protected void createControls(ICdmFormElement formElement,
- TaxonDescription entity, int style) {
+ TaxonDescription entity, int style) {
label = formFactory.createLabel(formElement, "Generating Natural Language Description ...");
if(entity.hasStructuredData()){
import org.eclipse.swt.events.SelectionListener;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.description.PolytomousKey;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import java.util.Comparator;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import java.util.Comparator;
-import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.cdm.model.reference.Reference;
/**
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import eu.etaxonomy.cdm.model.common.LanguageString;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.description.State;
import eu.etaxonomy.cdm.model.description.StateData;
import eu.etaxonomy.taxeditor.store.CdmStore;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
import eu.etaxonomy.cdm.model.description.StatisticalMeasurementValue;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
package eu.etaxonomy.taxeditor.ui.section.description.detail;
import org.eclipse.swt.SWT;
+import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
+import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
+import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
import eu.etaxonomy.taxeditor.ui.element.TimePeriodElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
+import eu.etaxonomy.taxeditor.ui.section.description.ModifierSection;
/**
* <p>Abstract AbstractDetailedDescriptionDetailElement class.</p>
public abstract class AbstractDetailedDescriptionDetailElement<T extends DescriptionElementBase> extends AbstractCdmDetailElement<T>{
TimePeriodElement timePeriod;
+ ModifierSection section_modifiers;
+ TextWithLabelElement text_modifyingText;
/**
* <p>Constructor for AbstractDetailedDescriptionDetailElement.</p>
}
+ protected void createModifier(ICdmFormElement formElement, DescriptionElementBase entity,
+ int style) {
+
+ section_modifiers = formFactory.createModifierSection(getConversationHolder(), this, ExpandableComposite.TWISTIE|ExpandableComposite.EXPANDED);
+ section_modifiers.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+ section_modifiers.setEntity(entity);
+
+ text_modifyingText = formFactory.createTextWithLabelElement(this, "Modifying Text", null, style);
+ if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
+ text_modifyingText.setText(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()).getText());
+ }
+ }
+
+ protected void createFreetextModifier(ICdmFormElement formElement, DescriptionElementBase entity,
+ int style) {
+
+ text_modifyingText = formFactory.createTextWithLabelElement(this, "Modifying Text", null, style);
+ if(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()) != null) {
+ text_modifyingText.setText(getEntity().getModifyingText().get(CdmStore.getDefaultLanguage()).getText());
+ }
+ }
+
@Override
public void handleEvent(Object eventSource) {
if(eventSource == timePeriod){
getEntity().setTimeperiod(timePeriod.getTimePeriod());
}
+ if (eventSource == text_modifyingText){
+ getEntity().putModifyingText(LanguageString.NewInstance(text_modifyingText.getText(), CdmStore.getDefaultLanguage()));
+ }
+
}
}
section_stateData.setEntity(entity);
section_stateData.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
createTimePeriod(formElement, entity, style);
+ if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+ createModifier(formElement, entity, style);
+ }else{
+ createFreetextModifier(formElement, entity, style);
+ }
}
/* (non-Javadoc)
package eu.etaxonomy.taxeditor.ui.section.description.detail;
+import java.util.List;
+import java.util.UUID;
+
import org.eclipse.swt.SWT;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.TermType;
import eu.etaxonomy.cdm.model.description.CommonTaxonName;
import eu.etaxonomy.cdm.model.location.NamedArea;
+import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
+import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
+import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
CommonTaxonName entity, int style) {
commonName = formFactory.createTextWithLabelElement(this, "Common Name", entity.getName(), SWT.WRAP);
-
- combo_language = formFactory.createDefinedTermComboElement(TermType.Language, this, "Language", entity.getLanguage(), style);
+ List<UUID> uuidList = PreferencesUtil.createUUIDListFromStringPref(PreferencePredicate.CommonNameLanguages.getKey());
+ List<Language> languages = CdmStore.getTermManager().getTerms(uuidList, Language.class);
+ combo_language = formFactory.createDefinedTermComboElement(languages, this, "Language", entity.getLanguage(), style);
selection_namedArea = formFactory.createSelectionElement(NamedArea.class, //getConversationHolder(),
formElement, "Area",
entity.getArea(), EntitySelectionElement.NOTHING, style);
createTimePeriod(formElement, entity, style);
+ if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+ createModifier(formElement, entity, style);
+ }else{
+ createFreetextModifier(formElement, entity, style);
+ }
+
}
+
+
/** {@inheritDoc} */
@Override
public void handleEvent(Object eventSource) {
combo_presenceAbsence = formFactory.createTermComboElement(PresenceAbsenceTerm.class, this, "Distribution Status", entity.getStatus(), style);
createTimePeriod(formElement, entity, style);
+ if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+ createModifier(formElement, entity, style);
+ }else{
+ createFreetextModifier(formElement, entity, style);
+ }
}
/** {@inheritDoc} */
}
createTimePeriod(formElement, entity, style);
+ if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+ createModifier(formElement, entity, style);
+ }else{
+ createFreetextModifier(formElement, entity, style);
+ }
}
/** {@inheritDoc} */
import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import eu.etaxonomy.cdm.model.common.TermType;
import eu.etaxonomy.cdm.model.description.MeasurementUnit;
import eu.etaxonomy.cdm.model.description.QuantitativeData;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
section_statisticalMeasurementValues = formFactory.createStatisticalMeasurementValueSection(getConversationHolder(), formElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
section_statisticalMeasurementValues.setEntity(entity);
section_statisticalMeasurementValues.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+ if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+ createModifier(formElement, entity, style);
+ }else{
+ createFreetextModifier(formElement, entity, style);
+ }
}
/** {@inheritDoc} */
CdmStore.getDefaultLanguage()).getText());
}
createTimePeriod(formElement, entity, style);
+ if (entity.getFeature().getRecommendedModifierEnumeration() != null && !entity.getFeature().getRecommendedModifierEnumeration().isEmpty()){
+ createModifier(formElement, entity, style);
+ }else{
+ createFreetextModifier(formElement, entity, style);
+ }
}
/** {@inheritDoc} */
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
+import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.description.Character;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.editor.definedterm.TermBasePropertyTester;
import eu.etaxonomy.taxeditor.model.ColorResources;
import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
+import eu.etaxonomy.taxeditor.ui.element.RepresentationElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.MeasurementUnitCollectionSection;
import eu.etaxonomy.taxeditor.ui.section.vocabulary.RecommendedModifierVocabulariesCollectionSection;
private ICdmFormElement parentFormElement;
+ protected RepresentationElement element_Representation;
+
+ private TermComboElement<DefinedTerm> comboStructuralModifier;
+
private CheckboxElement supportsQuantitativeData;
private CheckboxElement supportsCategoricalData;
@Override
protected void createControls(ICdmFormElement formElement, Character entity, int style) {
this.parentFormElement = formElement;
+ element_Representation = formFactory.createTranslatableRepresentationElement(formElement, getEntity().getPreferredRepresentation(CdmStore.getDefaultLanguage()),getEntity(), 100, style, true);
Label lblStructure = new Label(formElement.getLayoutComposite(), style);
lblStructure.setText("Structure");
Label lblStructureText = new Label(formElement.getLayoutComposite(), style);
- lblStructureText.setText(entity.getStructure().getFeature().getLabel());
+ lblStructureText.setText(getPath(entity.getStructure()));
lblStructureText.setForeground(ColorResources.getColor(Resources.BLACK));
Label lblProperty = new Label(formElement.getLayoutComposite(), style);
lblProperty.setText("Property");
Label lblPropertyText = new Label(formElement.getLayoutComposite(), style);
lblPropertyText.setForeground(ColorResources.getColor(Resources.BLACK));
- lblPropertyText.setText(entity.getProperty().getFeature().getLabel());
+ lblPropertyText.setText(getPath(entity.getProperty()));
+
+ comboStructuralModifier = formFactory.createDefinedTermComboElement(TermType.StructureModifier, formElement, "Structural Modifier", entity.getStructureModifier(), style);
+
supportsQuantitativeData = formFactory.createCheckbox(formElement, "Supports Quantitative Data", entity.isSupportsQuantitativeData(), style);
supportsCategoricalData = formFactory.createCheckbox(formElement, "Supports Categorical Data", entity.isSupportsCategoricalData(), style);
if (supportsCategoricalData.getSelection()) {
sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(),
- parentFormElement, ExpandableComposite.TWISTIE);
+ parentFormElement, ExpandableComposite.TWISTIE| ExpandableComposite.EXPANDED);
sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
sectionStateVocabularies.setEntity(getEntity());
-
}
if (supportsQuantitativeData.getSelection()) {
sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(),
- parentFormElement, ExpandableComposite.TWISTIE);
+ parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
sectionMeasurementUnits.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
sectionMeasurementUnits.setEntity(getEntity());
sectionStatisticalMeasures = formFactory.createStatisticalMeasureCollectionSection(getConversationHolder(),
- parentFormElement, ExpandableComposite.TWISTIE);
+ parentFormElement, ExpandableComposite.TWISTIE| ExpandableComposite.EXPANDED);
sectionStatisticalMeasures.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
sectionStatisticalMeasures.setEntity(getEntity());
}
if (supportsCategoricalData.getSelection() || supportsQuantitativeData.getSelection()) {
sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(
- getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE
- );
+ getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
sectionModifierVocabularies.setEntity(getEntity());
}
}
+ private String getPath(FeatureNode node){
+ String path = node.getTerm().getLabel();
+ FeatureNode parent = node.getParent();
+ while(parent != null && parent.getTerm()!=null){
+ path = parent.getTerm().getLabel() + "/" + path;
+ parent = parent.getParent();
+ }
+ return path;
+ }
+
+ @Override
+ public void setEntity(Character entity) {
+ super.setEntity(entity);
+ setEnabled(TermBasePropertyTester.isModifiable(entity));
+ }
+
@Override
public void handleEvent(Object eventSource) {
+ if(eventSource == comboStructuralModifier){
+ getEntity().setStructureModifier(comboStructuralModifier.getSelection());
+ }
if(eventSource == supportsQuantitativeData || eventSource == supportsCategoricalData){
//if any type is selected disable supportsTextData
getEntity().setSupportsTextData(false);
else{
removeQuantitativeWidgets();
}
+ StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);
}
else if(eventSource == supportsCategoricalData){
getEntity().setSupportsCategoricalData(supportsCategoricalData.getSelection());
else{
removeCategoricalWidgets();
}
+ StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);
}
+ else if (eventSource == element_Representation) {
+ Representation selectedRepresentation = element_Representation.getSelectedRepresentation();
+ if(selectedRepresentation!=null){
+ Language representationLanguage = selectedRepresentation.getLanguage();
+ if(representationLanguage==null){
+ representationLanguage = Language.getDefaultLanguage();
+ }
+ getEntity().setLabel(selectedRepresentation.getLabel(), representationLanguage);
+ getEntity().getRepresentation(representationLanguage).setAbbreviatedLabel(selectedRepresentation.getAbbreviatedLabel());
+ getEntity().getRepresentation(representationLanguage).setText(selectedRepresentation.getDescription());
+ }
+ getEntity().setTitleCache(null);
+ }
}
private void activateQuantitativeWidgets(){
//measurement units
sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(),
- parentFormElement, ExpandableComposite.TWISTIE);
+ parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
sectionMeasurementUnits.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
sectionMeasurementUnits.setEntity(getEntity());
//statistical measures
sectionStatisticalMeasures = formFactory.createStatisticalMeasureCollectionSection(
- getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
+ getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
sectionStatisticalMeasures.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
sectionStatisticalMeasures.setEntity(getEntity());
//modifiers
sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(
- getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
+ getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
sectionModifierVocabularies.setEntity(getEntity());
}
//states
sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(),
- parentFormElement, ExpandableComposite.TWISTIE);
+ parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
sectionStateVocabularies.setEntity(getEntity());
//modifiers
sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(
- getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);
+ getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
sectionModifierVocabularies.setEntity(getEntity());
}
import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.element.LayoutConstants;
import org.eclipse.jface.viewers.ISelectionProvider;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
*/
package eu.etaxonomy.taxeditor.ui.section.feature;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import org.eclipse.swt.widgets.Label;
+
+import eu.etaxonomy.cdm.model.term.FeatureTree;
+import eu.etaxonomy.taxeditor.model.ColorResources;
+import eu.etaxonomy.taxeditor.preference.Resources;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
@Override
protected void createControls(ICdmFormElement formElement, FeatureTree entity, int style) {
+ Label lblTermType = new Label(formElement.getLayoutComposite(), style);
+ lblTermType.setText("Term Type");
+ Label lblStructureText = new Label(formElement.getLayoutComposite(), style);
+ lblStructureText.setText(entity.getTermType().getMessage());
+ lblStructureText.setForeground(ColorResources.getColor(Resources.BLACK));
+
toggleable_cache = formFactory.createToggleableTextField(
formElement, "Title Cache", entity.getTitleCache(),
entity.isProtectedTitleCache(), style);
import org.eclipse.jface.viewers.ISelectionProvider;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Color;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.cdm.model.description.State;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import java.util.Comparator;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.cdm.model.description.State;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Color;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.cdm.model.description.State;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import java.util.Comparator;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
import eu.etaxonomy.cdm.model.description.State;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.cdm.model.common.User;
+import eu.etaxonomy.taxeditor.event.EventUtility;
+import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
import eu.etaxonomy.taxeditor.ui.dialog.selection.UserSelectionDialog;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
@Override
public User createNewElement() {
User selection = UserSelectionDialog.select(getLayoutComposite().getShell(), //getConversationHolder(),
- null);
+ null, this.getEntity());
return selection;
}
@Override
public void removeElement(User element) {
getEntity().removeMember(element);
+ EventUtility.postEvent(WorkbenchEventConstants.REMOVE_USER, element);
+
}
/* (non-Javadoc)
*/
@Override
protected String getTooltipString() {
- return "Add a memeber to this group";
+ return "Add a member to this group";
}
/**
import java.util.Comparator;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
import eu.etaxonomy.cdm.model.description.PolytomousKey;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
package eu.etaxonomy.taxeditor.ui.section.name;
+import java.util.Iterator;
+
import org.eclipse.swt.events.SelectionListener;
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
+import eu.etaxonomy.cdm.model.reference.Reference;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
-import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractReferencedEntityElement;
+import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
+import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
+import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;
+import eu.etaxonomy.taxeditor.ui.section.supplemental.AbstractSourcedEntityBaseElement;
+import eu.etaxonomy.taxeditor.ui.selection.EntitySelectionElement;
/**
* <p>Abstract AbstractTypeDesignationElement class.</p>
* @created May 17, 2010
* @version 1.0
*/
-public abstract class AbstractTypeDesignationElement<T extends TypeDesignationBase> extends AbstractReferencedEntityElement<T> {
+public abstract class AbstractTypeDesignationElement<T extends TypeDesignationBase> extends AbstractSourcedEntityBaseElement<T> {
protected CheckboxElement checkbox_notDesignated;
-
+ protected EntitySelectionElement<Reference> selection_reference;
+ protected TextWithLabelElement text_referenceDetail;
+ protected ICdmFormElement formElement;
+ protected int style;
/**
* <p>Constructor for AbstractTypeDesignationElement.</p>
public AbstractTypeDesignationElement(CdmFormFactory formFactory,
AbstractFormSection section, T entity,
SelectionListener removeListener, int style) {
- super(formFactory, section, entity, removeListener, style, false);
+ super(formFactory, section, entity, removeListener, style);
}
/** {@inheritDoc} */
@Override
public void createControls(ICdmFormElement formElement, int style) {
checkbox_notDesignated = formFactory.createCheckbox(formElement, "Not Designated", false, style);
- super.createControls(formElement, style);
+ this.formElement = formElement;
+ this.style = style;
}
+ @Override
+ public void setEntity(T entity){
+ super.setEntity(entity);
+
+ if (this.entity != null && this.entity.isLectoType()){
+ if (selection_reference == null){
+ removeNotDesignatedControls();
+ selection_reference = formFactory
+ .createSelectionElement(Reference.class, formElement, "Status Reference",
+ entity.getCitation(), EntitySelectionElement.ALL, style);
+
+ text_referenceDetail = formFactory.createTextWithLabelElement(
+ formElement, "Reference Detail", entity.getCitationMicroReference(), style);
+ checkbox_notDesignated = formFactory.createCheckbox(formElement, "Not Designated", entity.isNotDesignated(), style);
+ }
+ }else{
+ if (selection_reference != null){
+ removeReferenceControls();
+ //check if there is still a reference
+ if (this.entity.getCitation() != null){
+ this.entity.setCitation(null);
+ this.entity.setCitationMicroReference(null);
+ }
+ }
+ }
+ StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);
+
+ }
+
+ /**
+ * Updates all widgets to display the latest data
+ */
+ protected void updateContent() {
+ // if (this.getParentElement() instanceof NameDetailSection
+
+ }
+
+
+ public void removeReferenceControls(){
+ for (Iterator<ICdmFormElement> iterator = getElements().iterator();iterator.hasNext();) {
+ ICdmFormElement childElement = iterator.next();
+ // recursion
+ if (childElement instanceof EntitySelectionElement && ((EntitySelectionElement)childElement).equals(selection_reference)) {
+ childElement.removeElements();
+
+ // unregister selection arbitrator
+ if(childElement instanceof ISelectableElement){
+ SelectionArbitrator selectionArbitrator = ((ISelectableElement) childElement).getSelectionArbitrator();
+ if(selectionArbitrator != null){
+ formFactory.destroySelectionArbitrator(selectionArbitrator);
+ }
+ }
+
+ // unregister from property changes
+ formFactory.removePropertyChangeListener(childElement);
+ selection_reference = null;
+ }
+ if (childElement instanceof TextWithLabelElement && ((TextWithLabelElement)childElement).equals(text_referenceDetail)) {
+
+ childElement.removeElements();
+
+ // unregister selection arbitrator
+ if(childElement instanceof ISelectableElement){
+ SelectionArbitrator selectionArbitrator = ((ISelectableElement) childElement).getSelectionArbitrator();
+ if(selectionArbitrator != null){
+ formFactory.destroySelectionArbitrator(selectionArbitrator);
+ }
+ }
+
+ // unregister from property changes
+ formFactory.removePropertyChangeListener(childElement);
+ text_referenceDetail = null;
+
+
+ }
+ }
+
+ }
+
+ public void removeNotDesignatedControls(){
+ for (Iterator<ICdmFormElement> iterator = getElements().iterator();iterator.hasNext();) {
+ ICdmFormElement childElement = iterator.next();
+ // recursion
+ if (childElement instanceof CheckboxElement && ((CheckboxElement)childElement).equals(this.checkbox_notDesignated)) {
+ childElement.removeElements();
+
+ // unregister selection arbitrator
+ if(childElement instanceof ISelectableElement){
+ SelectionArbitrator selectionArbitrator = ((ISelectableElement) childElement).getSelectionArbitrator();
+ if(selectionArbitrator != null){
+ formFactory.destroySelectionArbitrator(selectionArbitrator);
+ }
+ }
+
+ // unregister from property changes
+ formFactory.removePropertyChangeListener(childElement);
+ checkbox_notDesignated = null;
+ }
+
+ }
+
+ }
+ @Override
+ public void handleEvent(Object eventSource) {
+ if (eventSource == selection_reference) {
+ getEntity().setCitation(selection_reference.getEntity());
+ setEntity(entity);
+ }
+ if (eventSource == text_referenceDetail) {
+ getEntity().setCitationMicroReference(text_referenceDetail.getText());
+ setEntity(entity);
+ }
+ if (eventSource == checkbox_notDesignated) {
+ getEntity().setNotDesignated(checkbox_notDesignated.getSelection());
+ }
+ }
+
}
import org.apache.log4j.Logger;
import org.eclipse.swt.SWT;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.name.IBacterialName;
import eu.etaxonomy.cdm.model.name.ICultivarPlantName;
import eu.etaxonomy.cdm.model.name.IFungusName;
import org.eclipse.swt.events.SelectionListener;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.TermType;
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
import eu.etaxonomy.cdm.model.name.NameTypeDesignationStatus;
import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
public void createControls(ICdmFormElement formElement, int style) {
checkbox_rejectedType = formFactory.createCheckbox(formElement,
- "Rejected Type", false, style);
+ "Rejected Type", false, style); //$NON-NLS-1$
checkbox_conservedType = formFactory.createCheckbox(formElement,
- "Conserved Type", false, style);
+ "Conserved Type", false, style); //$NON-NLS-1$
selection_typeName = formFactory
.createSelectionElement(TaxonName.class,//getConversationHolder(),
- formElement, "Name", null,
+ formElement, "Name", null, //$NON-NLS-1$
EntitySelectionElement.ALL, style);
combo_typeStatus = formFactory.createDefinedTermComboElement(TermType.NameTypeDesignationStatus, formElement,
- "Designation Status", null, style);
+ "Designation Status", null, style); //$NON-NLS-1$
super.createControls(formElement, style);
}
} else if (eventSource == selection_typeName) {
getEntity().setTypeName(selection_typeName.getEntity());
} else if (eventSource == combo_typeStatus) {
+ if ((combo_typeStatus.getSelection() == null && entity.getCitation() != null)){
+ boolean ok = MessagingUtils.confirmDialog(Messages.NameTypeDesignationElement_4, Messages.NameTypeDesignationElement_5);
+ if (!ok){
+ combo_typeStatus.setSelection(entity.getTypeStatus());
+ return;
+ }
+ }else if ( entity.getTypeStatus() != null && getEntity().getTypeStatus().isLectotype() && !combo_typeStatus.getSelection().isLectotype() && entity.getCitation() != null){
+ boolean ok = MessagingUtils.confirmDialog(Messages.NameTypeDesignationElement_4, Messages.NameTypeDesignationElement_5);
+ if (!ok){
+ combo_typeStatus.setSelection(entity.getTypeStatus());
+ return;
+ }
+ }
getEntity().setTypeStatus(combo_typeStatus.getSelection());
+
+ setEntity(entity);
} else if (eventSource == checkbox_notDesignated) {
getEntity().setNotDesignated(checkbox_notDesignated.getSelection());
- } else if (eventSource == selection_reference) {
+ }
+ else if (eventSource == selection_reference) {
getEntity().setCitation(selection_reference.getSelection());
} else if (eventSource == text_referenceDetail) {
getEntity().setCitationMicroReference(
import org.eclipse.swt.events.SelectionListener;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
-import eu.etaxonomy.cdm.model.common.VocabularyEnum;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
import eu.etaxonomy.cdm.model.name.NomenclaturalStatus;
import eu.etaxonomy.cdm.model.name.NomenclaturalStatusType;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.cdm.api.service.name.TypeDesignationStatusComparator;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.TermType;
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
/** {@inheritDoc} */
@Override
public void handleEvent(Object eventSource) {
+ super.handleEvent(eventSource);
if (eventSource == combo_typeStatus) {
+
+ if ((combo_typeStatus.getSelection() == null && entity.getCitation() != null) || ( entity.getTypeStatus() != null && getEntity().getTypeStatus().isLectotype() && !combo_typeStatus.getSelection().isLectotype() && entity.getCitation() != null)){
+ boolean ok = MessagingUtils.confirmDialog(Messages.NameTypeDesignationElement_4, Messages.NameTypeDesignationElement_5);
+ if (!ok){
+ combo_typeStatus.setSelection(entity.getTypeStatus());
+ return;
+ }
+ }
getEntity().setTypeStatus(combo_typeStatus.getSelection());
+ setEntity(entity);
+
}
// TODO remove this once specimens are correctly implemented
else if (eventSource == text_specimenTypeText) {
getEntity().setTypeSpecimen(selection_typeSpecimen.getSelection());
} else if (eventSource == checkbox_notDesignated) {
getEntity().setNotDesignated(checkbox_notDesignated.getSelection());
- } else if (eventSource == selection_reference) {
+ }
+ else if (eventSource == selection_reference) {
getEntity().setCitation(selection_reference.getSelection());
} else if (eventSource == text_referenceDetail) {
getEntity().setCitationMicroReference(
import java.util.Collection;
import java.util.Comparator;
+import org.eclipse.core.commands.operations.IOperationHistory;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.e4.ui.workbench.modeling.EPartService;
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.ToolBarManager;
+import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.wizard.WizardDialog;
+import org.eclipse.swt.graphics.ImageData;
+
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.service.INameService;
+import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.api.service.name.TypeDesignationComparator;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.name.NameTypeDesignation;
import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
+import eu.etaxonomy.taxeditor.editor.ITaxonEditor;
+import eu.etaxonomy.taxeditor.l10n.Messages;
+import eu.etaxonomy.taxeditor.model.AbstractUtility;
+import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
import eu.etaxonomy.taxeditor.ui.section.ITaxonBaseDetailSection;
+import eu.etaxonomy.taxeditor.ui.section.name.operation.DeleteTypeDesignationOperation;
+import eu.etaxonomy.taxeditor.ui.section.name.type.CloneTypeWizard;
+import eu.etaxonomy.taxeditor.view.e4.details.DetailsPartE4;
+import eu.etaxonomy.taxeditor.workbench.part.IE4SavablePart;
/**
- * <p>TypeDesignationSection class.</p>
- *
* @author n.hoffmann
* @created May 17, 2010
*/
private TaxonBase taxonBase;
- /**
- * <p>Constructor for TypeDesignationSection.</p>
- *
- * @param formFactory a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory} object.
- * @param conversation a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder} object.
- * @param parentElement a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement} object.
- * @param style a int.
- */
public TypeDesignationSection(CdmFormFactory formFactory, ConversationHolder conversation,
ICdmFormElement parentElement, int style) {
- super(formFactory, conversation, parentElement, "Type Designations", style);
+ super(formFactory, conversation, parentElement, Messages.TypeDesignationSection_TYPE_DESIGNATIONS, style);
+ }
+
+ @Override
+ protected void addAction(ToolBarManager toolBarManager) {
+ if(!isSpecimenType() ||
+ getEntity().getTypeDesignations().isEmpty()
+ || getEntity().getTypeDesignations().stream().noneMatch(designation->designation instanceof SpecimenTypeDesignation)){
+ return;
+ }
+ Action cloneAction = new Action(Messages.TypeDesignationSection_CREATE_DUPLICATE, IAction.AS_PUSH_BUTTON){
+ @Override
+ public void run() {
+ DetailsPartE4 detailsView = AbstractUtility.getDetailsView(getFormFactory().getContext().get((EPartService.class)));
+ if(detailsView!=null
+ && detailsView.getSelectionProvidingPart().getObject() instanceof IE4SavablePart
+ && StoreUtil.promptCheckIsDirty(((IE4SavablePart)detailsView.getSelectionProvidingPart().getObject()))){
+ return;
+ }
+ CloneTypeWizard wizard = new CloneTypeWizard(getEntity());
+ WizardDialog dialog = new WizardDialog(getShell(), wizard);
+
+ if (dialog.open() == IStatus.OK) {
+ SpecimenTypeDesignation baseTypeDesignation = HibernateProxyHelper.deproxy(wizard.getBaseTypeDesignation());
+ UpdateResult result = CdmStore.getService(INameService.class).cloneTypeDesignation(
+ wizard.getTaxonName().getUuid(),
+ baseTypeDesignation,
+ wizard.getAccessionNumber(),
+ wizard.getBarcode(),
+ wizard.getCatalogNumber(),
+ wizard.getCollection().getUuid(),
+ wizard.getTypeStatus());
+ if(!result.isOk()){
+ MessagingUtils.warningDialog(Messages.TypeDesignationSection_DUPLICATE_FAILED, this, result.getExceptions().toString());
+ }
+ StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);
+ internalUpdateSection(false);
+ }
+ }
+ };
+ cloneAction.setImageDescriptor(new ImageDescriptor() {
+
+ @Override
+ public ImageData getImageData() {
+ return ImageResources.getImage(ImageResources.COPY_ICON).getImageData();
+ }
+ });
+ cloneAction.setToolTipText(Messages.TypeDesignationSection_CREATE_DUPLICATE);
+
+ toolBarManager.add(cloneAction);
}
- /** {@inheritDoc} */
@Override
public void addElement(TypeDesignationBase element) {
getEntity().addTypeDesignation(element, PreferencesUtil.getBooleanValue(IPreferenceKeys.ADD_TYPES_TO_ALL_NAMES));
+ updateToolbar();
}
- /** {@inheritDoc} */
@Override
public TypeDesignationBase createNewElement() {
if(isSpecimenType()){
}
}
- /** {@inheritDoc} */
@Override
public Collection<TypeDesignationBase> getCollection(TaxonName entity) {
if (entity == null){
return new TypeDesignationComparator();
}
- /** {@inheritDoc} */
@Override
public String getEmptyString() {
- return "No type designations yet.";
+ return Messages.TypeDesignationSection_NO_TYPES_YET;
}
- /** {@inheritDoc} */
@Override
protected String getTooltipString() {
- return "Add a type designation";
+ return Messages.TypeDesignationSection_ADD_TYPE;
}
- /** {@inheritDoc} */
@Override
public void removeElement(TypeDesignationBase element) {
+ DetailsPartE4 detailsView = AbstractUtility.getDetailsView(getFormFactory().getContext().get((EPartService.class)));
+ if(detailsView!=null
+ && detailsView.getSelectionProvidingPart().getObject() instanceof IE4SavablePart
+ && StoreUtil.promptCheckIsDirty(((IE4SavablePart)detailsView.getSelectionProvidingPart().getObject()))){
+ return;
+ }
boolean removeTypeDesignationFromAllTypifiedNames = PreferencesUtil.getBooleanValue(IPreferenceKeys.ADD_TYPES_TO_ALL_NAMES);
TaxonName entity = removeTypeDesignationFromAllTypifiedNames ? null : getEntity();
- CdmStore.getService(INameService.class).deleteTypeDesignation(entity.getUuid(), element.getUuid());
+ if(!element.isPersited() && entity!=null){
+ entity.removeTypeDesignation(element);
+ }
+ else if(detailsView!=null
+ && detailsView.getSelectionProvidingPart().getObject() instanceof ITaxonEditor
+ && detailsView.getSelectionProvidingPart().getObject() instanceof IPostOperationEnabled) {
+ DeleteTypeDesignationOperation operation = new DeleteTypeDesignationOperation(
+ "Remove type designation",
+ IOperationHistory.GLOBAL_UNDO_CONTEXT,
+ entity,
+ element,
+ (IPostOperationEnabled) detailsView.getSelectionProvidingPart().getObject(),
+ null);
+ ((ITaxonEditor) detailsView.getSelectionProvidingPart().getObject()).addOperation(operation);
+ if(entity!=null){
+ entity.removeTypeDesignation(element);
+ }
+ }
+ updateToolbar();
}
- /** {@inheritDoc} */
@Override
public void setTaxonBase(TaxonBase entity) {
this.taxonBase = entity;
return taxonBase;
}
- /**
- * {@inheritDoc}
- */
@Override
public TypeDesignationBase addExisting() {
return null;
}
- /**
- * {@inheritDoc}
- */
@Override
public boolean allowAddExisting() {
return false;
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.section.name.operation;
+
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.commands.operations.IUndoContext;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+
+import eu.etaxonomy.cdm.api.service.INameService;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
+import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
+import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
+import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+
+/**
+ *
+ * @author pplitzner
+ * @since Apr 10, 2019
+ *
+ */
+public class DeleteTypeDesignationOperation extends AbstractPostOperation<TaxonName> {
+
+ private final TypeDesignationBase<?> typeDesignation;
+
+ public DeleteTypeDesignationOperation(String label, IUndoContext undoContext, TaxonName taxonName,
+ TypeDesignationBase<?> typeDesignation, IPostOperationEnabled postOperationEnabled,
+ ICdmEntitySessionEnabled cdmEntitySessionEnabled) {
+ super(label, undoContext, taxonName, postOperationEnabled, cdmEntitySessionEnabled);
+ this.typeDesignation = typeDesignation;
+
+ }
+
+ @Override
+ public IStatus execute(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ monitor.worked(20);
+ if (typeDesignation != null && typeDesignation.isPersited()){
+ if(element==null){
+ CdmStore.getService(INameService.class).deleteTypeDesignation(null, typeDesignation);
+ }
+ else{
+ CdmStore.getService(INameService.class).deleteTypeDesignation(element.getUuid(), typeDesignation.getUuid());
+ }
+ return postExecute(element);
+ }
+ return null;
+ }
+
+ @Override
+ public IStatus redo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ return execute(monitor, info);
+ }
+
+ @Override
+ public IStatus undo(IProgressMonitor monitor, IAdaptable info) throws ExecutionException {
+ element.removeTypeDesignation(typeDesignation);
+ return postExecute(element);
+ }
+
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.section.name.type;
+
+import java.util.Collection;
+import java.util.stream.Collectors;
+
+import org.eclipse.jface.wizard.Wizard;
+
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
+import eu.etaxonomy.cdm.model.name.TaxonName;
+
+/**
+ * @author pplitzner
+ * @since Mar 13, 2019
+ *
+ */
+public class CloneTypeWizard extends Wizard{
+
+ private CloneTypeWizardPage page;
+
+ private final Collection<SpecimenTypeDesignation> typeDesignations;
+
+ private final TaxonName taxonName;
+
+ private SpecimenTypeDesignation baseTypeDesignation;
+
+ private String accessionNumber;
+
+ private String barcode;
+
+ private String catalogNumber;
+
+ private eu.etaxonomy.cdm.model.occurrence.Collection collection;
+
+ private SpecimenTypeDesignationStatus typeStatus;
+
+ public CloneTypeWizard(TaxonName taxonName) {
+ this.taxonName = taxonName;
+ this.typeDesignations = taxonName.getTypeDesignations().stream()
+ .filter(designation -> designation instanceof SpecimenTypeDesignation)
+ .map(specimenTypeDesignation -> (SpecimenTypeDesignation)specimenTypeDesignation)
+ .collect(Collectors.toList());
+ }
+
+ @Override
+ public void addPages() {
+ page = new CloneTypeWizardPage(typeDesignations);
+ addPage(page);
+ }
+
+ @Override
+ public boolean performFinish() {
+ this.baseTypeDesignation = page.getBaseTypeDesignation();
+ this.accessionNumber = page.getAccessionNumber();
+ this.barcode = page.getBarcode();
+ this.catalogNumber = page.getCatalogNumber();
+ this.collection = page.getCollection();
+ this.typeStatus = page.getTypeStatus();
+ return true;
+ }
+
+ public TaxonName getTaxonName() {
+ return taxonName;
+ }
+
+ public SpecimenTypeDesignation getBaseTypeDesignation() {
+ return baseTypeDesignation;
+ }
+
+ public String getAccessionNumber() {
+ return accessionNumber;
+ }
+
+ public String getBarcode() {
+ return barcode;
+ }
+
+ public String getCatalogNumber() {
+ return catalogNumber;
+ }
+
+ public eu.etaxonomy.cdm.model.occurrence.Collection getCollection() {
+ return collection;
+ }
+
+ public SpecimenTypeDesignationStatus getTypeStatus() {
+ return typeStatus;
+ }
+
+}
--- /dev/null
+/**
+ * Copyright (C) 2019 EDIT
+ * European Distributed Institute of Taxonomy
+ * http://www.e-taxonomy.eu
+ *
+ * The contents of this file are subject to the Mozilla Public License Version 1.1
+ * See LICENSE.TXT at the top of this package for the full license terms.
+ */
+package eu.etaxonomy.taxeditor.ui.section.name.type;
+
+import org.eclipse.jface.viewers.ComboViewer;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Combo;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.taxeditor.model.ImageResources;
+import eu.etaxonomy.taxeditor.ui.combo.TermUuidComboViewer;
+
+/**
+ * @author pplitzner
+ * @since Mar 13, 2019
+ *
+ */
+public class CloneTypeWizardComposite extends Composite {
+ private Text txtAccNumber;
+ private Text txtCollection;
+ private Button btnBrowseCollection;
+ private TermUuidComboViewer comboTypeStatus;
+ private ComboViewer comboViewerBaseType;
+ private Text textBarcode;
+ private Text textCatalogNumber;
+
+ /**
+ * Create the composite.
+ * @param parent
+ * @param style
+ */
+ public CloneTypeWizardComposite(Composite parent, int style) {
+ super(parent, style);
+ setLayout(new GridLayout(3, false));
+
+ Label lblNewLabel_3 = new Label(this, SWT.NONE);
+ lblNewLabel_3.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+ lblNewLabel_3.setText("Base Type");
+
+ comboViewerBaseType = new ComboViewer(this, SWT.READ_ONLY);
+ Combo combo = comboViewerBaseType.getCombo();
+ combo.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ Label lblNewLabel_2 = new Label(this, SWT.NONE);
+ lblNewLabel_2.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+ lblNewLabel_2.setText("Collection");
+
+ txtCollection = new Text(this, SWT.BORDER);
+ txtCollection.setEnabled(false);
+ txtCollection.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 1, 1));
+
+ btnBrowseCollection = new Button(this, SWT.NONE);
+ btnBrowseCollection.setImage(ImageResources.getImage(ImageResources.BROWSE_ICON));
+
+ Label lblNewLabel = new Label(this, SWT.NONE);
+ lblNewLabel.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+ lblNewLabel.setText("Accession Number");
+
+ txtAccNumber = new Text(this, SWT.BORDER);
+ txtAccNumber.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ Label lblNewLabel_4 = new Label(this, SWT.NONE);
+ lblNewLabel_4.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+ lblNewLabel_4.setText("Barcode");
+
+ textBarcode = new Text(this, SWT.BORDER);
+ textBarcode.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ Label lblNewLabel_5 = new Label(this, SWT.NONE);
+ lblNewLabel_5.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+ lblNewLabel_5.setText("Catalog Number");
+
+ textCatalogNumber = new Text(this, SWT.BORDER);
+ textCatalogNumber.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+
+ Label lblNewLabel_1 = new Label(this, SWT.NONE);
+ lblNewLabel_1.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false, 1, 1));
+ lblNewLabel_1.setText("Type Status");
+
+ comboTypeStatus = new TermUuidComboViewer(this, SWT.NONE);
+ comboTypeStatus.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false, 2, 1));
+ comboTypeStatus.setInput(TermType.SpecimenTypeDesignationStatus);
+
+ }
+
+ @Override
+ protected void checkSubclass() {
+ // Disable the check that prevents subclassing of SWT components
+ }
+
+ public Button getBtnBrowseCollection() {
+ return btnBrowseCollection;
+ }
+ public TermUuidComboViewer getComboTypeStatus() {
+ return comboTypeStatus;
+ }
+ public Text getTxtCollection() {
+ return txtCollection;
+ }
+ public ComboViewer getComboViewerBaseType() {
+ return comboViewerBaseType;
+ }
+ public Text getTxtAccNumber() {
+ return txtAccNumber;
+ }
+ public Text getTextBarcode() {
+ return textBarcode;
+ }
+ public Text getTextCatalogNumber() {
+ return textCatalogNumber;
+ }
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.section.name.type;
+
+import java.util.Collection;
+
+import org.eclipse.jface.viewers.ArrayContentProvider;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.LabelProvider;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.jface.wizard.WizardPage;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
+import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
+import eu.etaxonomy.taxeditor.ui.dialog.selection.CollectionSelectionDialog;
+
+/**
+ * @author pplitzner
+ * @since Mar 13, 2019
+ *
+ */
+public class CloneTypeWizardPage extends WizardPage implements ISelectionChangedListener, ModifyListener {
+
+ private CloneTypeWizardComposite composite;
+
+ private eu.etaxonomy.cdm.model.occurrence.Collection selectedCollection = null;
+ private SpecimenTypeDesignation baseDesignation = null;
+
+ private final Collection<SpecimenTypeDesignation> typeDesignations;
+
+ protected CloneTypeWizardPage(Collection<SpecimenTypeDesignation> typeDesignations) {
+ super("Duplicate Type");
+ setTitle("Duplicate Type");
+ setDescription("Create a type duplicate based on an existing type specimen.");
+ this.typeDesignations = typeDesignations;
+ }
+
+ @Override
+ public void createControl(Composite parent) {
+
+ composite = new CloneTypeWizardComposite(parent, SWT.NONE);
+
+ // fill combo with available types
+ composite.getComboViewerBaseType().setContentProvider(new ArrayContentProvider());
+ composite.getComboViewerBaseType().setLabelProvider(new LabelProvider(){
+ @Override
+ public String getText(Object element) {
+ if(element instanceof SpecimenTypeDesignation){
+ return ((SpecimenTypeDesignation) element).getTypeSpecimen().getTitleCache();
+ }
+ return super.getText(element);
+ }
+ });
+ composite.getComboViewerBaseType().setInput(typeDesignations);
+ if(typeDesignations.size()==1){
+ SpecimenTypeDesignation next = typeDesignations.iterator().next();
+ baseDesignation = next;
+ composite.getComboViewerBaseType().setSelection(new StructuredSelection(next));
+ }
+ composite.getComboViewerBaseType().addSelectionChangedListener(e->{
+ baseDesignation = (SpecimenTypeDesignation) ((StructuredSelection) e.getSelection()).getFirstElement();
+ getWizard().getContainer().updateButtons();
+ });
+
+ composite.getBtnBrowseCollection().addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ selectedCollection = CollectionSelectionDialog.select(getShell(), selectedCollection);
+ composite.getTxtCollection().setText(selectedCollection.getTitleCache());
+ getWizard().getContainer().updateButtons();
+ }
+ });
+
+ // add listeners for update buttons
+ composite.getTxtAccNumber().addModifyListener(this);
+ composite.getComboTypeStatus().addSelectionChangedListener(this);
+
+ setControl(composite);
+ }
+
+ @Override
+ public boolean isPageComplete() {
+ return composite.getComboViewerBaseType().getSelection()!=null
+ && selectedCollection!=null
+ && composite.getComboTypeStatus().getSelection()!=null;
+ }
+
+ @Override
+ public void selectionChanged(SelectionChangedEvent event) {
+ getWizard().getContainer().updateButtons();
+ }
+
+ @Override
+ public void modifyText(ModifyEvent e) {
+ getWizard().getContainer().updateButtons();
+
+ }
+
+ public SpecimenTypeDesignation getBaseTypeDesignation() {
+ return baseDesignation;
+ }
+
+ public String getAccessionNumber() {
+ return composite.getTxtAccNumber().getText();
+ }
+
+ public String getBarcode() {
+ return composite.getTextBarcode().getText();
+ }
+
+ public String getCatalogNumber() {
+ return composite.getTextCatalogNumber().getText();
+ }
+
+ public eu.etaxonomy.cdm.model.occurrence.Collection getCollection() {
+ return selectedCollection;
+ }
+
+ public SpecimenTypeDesignationStatus getTypeStatus() {
+ return (SpecimenTypeDesignationStatus) composite.getComboTypeStatus().getSelection();
+ }
+
+}
package eu.etaxonomy.taxeditor.ui.section.occurrence;
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
import eu.etaxonomy.cdm.api.facade.MethodNotSupportedByDerivedUnitTypeException;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import org.eclipse.swt.events.SelectionListener;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.occurrence.DeterminationEvent;
import eu.etaxonomy.cdm.model.taxon.TaxonBase;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacade;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionSection;
import org.eclipse.swt.events.SelectionListener;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignation;
import eu.etaxonomy.cdm.model.name.SpecimenTypeDesignationStatus;
import eu.etaxonomy.cdm.model.name.TaxonName;
getEntity().setTypeStatus(combo_typeStatus.getSelection());
} else if (eventSource == checkbox_notDesignated) {
getEntity().setNotDesignated(checkbox_notDesignated.getSelection());
- } else if (eventSource == selection_reference) {
- getEntity().setCitation(selection_reference.getSelection());
- } else if (eventSource == text_referenceDetail) {
- getEntity().setCitationMicroReference(
- text_referenceDetail.getText());
}
+// else if (eventSource == selection_reference) {
+// getEntity().setCitation(selection_reference.getSelection());
+// } else if (eventSource == text_referenceDetail) {
+// getEntity().setCitationMicroReference(
+// text_referenceDetail.getText());
+// }
}
}
import org.eclipse.ui.forms.widgets.ExpandableComposite;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
import eu.etaxonomy.cdm.model.agent.AgentBase;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.molecular.AmplificationResult;
import eu.etaxonomy.cdm.model.molecular.Cloning;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.cdm.model.agent.AgentBase;
import eu.etaxonomy.cdm.model.agent.Institution;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.molecular.Amplification;
import eu.etaxonomy.cdm.model.molecular.Primer;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import org.joda.time.DateTime;
import org.joda.time.LocalDateTime;
-import eu.etaxonomy.cdm.model.common.OrderedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.OrderedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.molecular.DnaQuality;
import eu.etaxonomy.cdm.model.molecular.DnaSample;
import eu.etaxonomy.taxeditor.model.DateConverter;
*/
package eu.etaxonomy.taxeditor.ui.section.occurrence.dna;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.molecular.Primer;
import eu.etaxonomy.cdm.model.molecular.SequenceString;
import eu.etaxonomy.cdm.model.reference.Reference;
import org.eclipse.swt.widgets.Text;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.molecular.Sequence;
import eu.etaxonomy.cdm.model.molecular.SequenceString;
import eu.etaxonomy.taxeditor.preference.Resources;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
import eu.etaxonomy.cdm.model.agent.AgentBase;
import eu.etaxonomy.cdm.model.agent.Institution;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.common.TimePeriod;
-import eu.etaxonomy.cdm.model.common.VocabularyEnum;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
import eu.etaxonomy.cdm.model.molecular.DnaSample;
import eu.etaxonomy.cdm.model.occurrence.Collection;
import eu.etaxonomy.cdm.model.occurrence.PreservationMethod;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
import eu.etaxonomy.cdm.model.agent.AgentBase;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.common.TimePeriod;
-import eu.etaxonomy.cdm.model.common.VocabularyEnum;
+import eu.etaxonomy.cdm.model.term.VocabularyEnum;
import eu.etaxonomy.cdm.model.media.Media;
import eu.etaxonomy.cdm.model.occurrence.Collection;
import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
import org.eclipse.swt.SWT;
import org.joda.time.DateTime;
-import eu.etaxonomy.cdm.model.agent.AgentBase;
import eu.etaxonomy.cdm.model.agent.Institution;
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
import eu.etaxonomy.cdm.model.reference.Reference;
private DoiWithLabelElement text_doi;
private UriWithLabelElement text_uri;
private DateElement text_accessed;
- private EntitySelectionElement<AgentBase> selection_authorTeam;
+ private EntitySelectionElement<TeamOrPersonBase> selection_authorTeam;
private VerbatimTimePeriodElement element_timePeriod;
private EntitySelectionElement<Reference> selection_inReference;
private EntitySelectionElement<Institution> selection_institution;
// author team
if(referenceType != null && !referenceType.equals(ReferenceType.Journal) && !referenceType.equals(ReferenceType.PrintSeries) ) {
selection_authorTeam = formFactory
- .createSelectionElement(AgentBase.class,//getConversationHolder(),
+ .createSelectionElement(TeamOrPersonBase.class,//getConversationHolder(),
formElement, "Author",
entity.getAuthorship(),
EntitySelectionElement.ALL, style);
// selections
else if (eventSource == selection_authorTeam) {
getEntity().setAuthorship(
- (TeamOrPersonBase) selection_authorTeam.getEntity());
+ selection_authorTeam.getEntity());
} else if (eventSource == selection_inReference) {
getEntity().setInReference(selection_inReference.getSelection());
} else if (eventSource == selection_inSeries) {
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionListener;
-import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceBase;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.taxeditor.ui.combo.EnumComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
/**
* @author n.hoffmann
* @created Mar 25, 2010
- * @version 1.0
*/
public abstract class AbstractReferencedEntityElement<T extends ReferencedEntityBase>
extends AbstractEntityCollectionElement<T> implements ISelectableElement {
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.ui.section.supplemental;
+
+import org.eclipse.swt.events.SelectionListener;
+
+import eu.etaxonomy.cdm.model.common.SourcedEntityBase;
+import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
+import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
+import eu.etaxonomy.taxeditor.ui.element.ISelectableElement;
+import eu.etaxonomy.taxeditor.ui.element.SelectionArbitrator;
+import eu.etaxonomy.taxeditor.ui.section.AbstractEntityCollectionElement;
+
+/**
+ * @author k.luther
+ * @since 26 Feb 2019
+ *
+ */
+public abstract class AbstractSourcedEntityBaseElement<T extends SourcedEntityBase> extends AbstractEntityCollectionElement<T> implements ISelectableElement{
+
+ private SelectionArbitrator selectionArbitrator;
+
+ // protected SourceSection sources;
+
+
+ /**
+ * @param formFactory
+ * @param section
+ * @param entity
+ * @param removeListener
+ * @param backgroundColor
+ * @param style
+ */
+ public AbstractSourcedEntityBaseElement(CdmFormFactory formFactory, AbstractFormSection section, T entity,
+ SelectionListener removeListener, int style) {
+ super(formFactory, section, entity, removeListener, null, style);
+ // make this element selectable
+ if(formFactory.getSelectionProvider() != null){
+ selectionArbitrator = formFactory.createSelectionArbitrator(this);
+ }
+
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public SelectionArbitrator getSelectionArbitrator() {
+ return selectionArbitrator;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void setEntity(T entity) {
+ this.entity = entity;
+ }
+
+
+
+
+
+}
import eu.etaxonomy.cdm.model.common.Annotation;
import eu.etaxonomy.cdm.model.common.AnnotationType;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.Extension;
import eu.etaxonomy.cdm.model.common.ExtensionType;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
*/
package eu.etaxonomy.taxeditor.ui.section.supplemental;
-import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
}
if(eventSource == selection_reference){
getEntity().setCitation(selection_reference.getSelection());
- AbstractUtility.getDetailsView(this.formFactory.getContext().get(EPartService.class)).
- refreshSelection();
}
else if(eventSource == text_referenceDetail){
getEntity().setCitationMicroReference(text_referenceDetail.getText());
import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
import eu.etaxonomy.cdm.model.common.Marker;
import eu.etaxonomy.cdm.model.common.MarkerType;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import org.eclipse.swt.events.SelectionListener;
import eu.etaxonomy.cdm.model.agent.AgentBase;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.media.Rights;
import eu.etaxonomy.cdm.model.media.RightsType;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import java.util.Comparator;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.IIdentifiableEntity;
+import eu.etaxonomy.cdm.model.reference.ISourceable;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.cdm.model.media.Media;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
* @created Nov 17, 2009
* @version 1.0
*/
-public class SourceSection extends AbstractEntityCollectionSection<IIdentifiableEntity, IdentifiableSource> {
+public class SourceSection extends AbstractEntityCollectionSection<ISourceable, IdentifiableSource> {
/**
* <p>Constructor for SourceSection.</p>
/** {@inheritDoc} */
@Override
public IdentifiableSource createNewElement() {
- IIdentifiableEntity entity = getEntity();
+ ISourceable entity = getEntity();
OriginalSourceType type;
if(entity instanceof Media) {
type = OriginalSourceType.PrimaryMediaSource;
/** {@inheritDoc} */
@Override
public Collection<IdentifiableSource> getCollection(
- IIdentifiableEntity entity) {
+ ISourceable entity) {
return entity.getSources();
}
return false;
}
+
+
}
import org.eclipse.swt.events.SelectionListener;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
import eu.etaxonomy.cdm.model.common.Identifier;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
@Override
public Group createNewElement() {
Group selectedGroup = GroupSelectionDialog.select(getShell(), //getConversationHolder(),
- null);
+ null, getEntity());
return selectedGroup;
}
import org.eclipse.swt.events.SelectionEvent;\r
import org.eclipse.swt.events.SelectionListener;\r
\r
-import eu.etaxonomy.cdm.model.common.DefinedTerm;\r
+import eu.etaxonomy.cdm.model.term.DefinedTerm;\r
import eu.etaxonomy.cdm.model.common.Language;\r
import eu.etaxonomy.cdm.model.common.LanguageString;\r
import eu.etaxonomy.cdm.model.common.Marker;\r
-import eu.etaxonomy.cdm.model.common.TermType;\r
+import eu.etaxonomy.cdm.model.term.TermType;\r
import eu.etaxonomy.cdm.model.description.CategoricalData;\r
import eu.etaxonomy.cdm.model.description.State;\r
import eu.etaxonomy.cdm.model.description.StateData;\r
import org.eclipse.swt.widgets.Button;\r
\r
import eu.etaxonomy.cdm.model.common.Language;\r
-import eu.etaxonomy.cdm.model.common.Representation;\r
-import eu.etaxonomy.cdm.model.common.TermBase;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.Representation;\r
+import eu.etaxonomy.cdm.model.term.TermBase;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
import eu.etaxonomy.taxeditor.editor.definedterm.TermBasePropertyTester;\r
import eu.etaxonomy.taxeditor.store.CdmStore;\r
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
\r
import org.apache.commons.lang.StringUtils;\r
\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
import eu.etaxonomy.taxeditor.ui.element.TextWithLabelElement;\r
import org.eclipse.jface.viewers.ISelectionProvider;\r
\r
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;\r
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;\r
import org.eclipse.ui.forms.widgets.ExpandableComposite;\r
\r
import eu.etaxonomy.cdm.model.description.Feature;\r
+import eu.etaxonomy.taxeditor.store.StoreUtil;\r
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
import eu.etaxonomy.taxeditor.ui.element.CheckboxElement;\r
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
}\r
\r
/* (non-Javadoc)\r
- * @see eu.etaxonomy.taxeditor.ui.section.vocabulary.AbstractTermBaseDetailElement#createControls(eu.etaxonomy.taxeditor.ui.element.ICdmFormElement, eu.etaxonomy.cdm.model.common.TermBase, int)\r
+ * @see eu.etaxonomy.taxeditor.ui.section.vocabulary.AbstractTermBaseDetailElement#createControls(eu.etaxonomy.taxeditor.ui.element.ICdmFormElement, eu.etaxonomy.cdm.model.term.TermBase, int)\r
*/\r
@Override\r
protected void createControls(ICdmFormElement formElement, Feature entity, int style) {\r
if(eventSource == supportsTextData){\r
getEntity().setSupportsTextData(supportsTextData.getSelection());\r
}\r
- else if(eventSource == supportsQuantitativeData){\r
- getEntity().setSupportsQuantitativeData(supportsQuantitativeData.getSelection());\r
- if(supportsQuantitativeData.getSelection()){\r
- removeElementsAndControls(supportsDistribution);\r
- sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(),\r
- parentFormElement, ExpandableComposite.TWISTIE);\r
- sectionMeasurementUnits.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
- sectionMeasurementUnits.setEntity(getEntity());\r
-\r
- sectionStatisticalMeasures = formFactory.createStatisticalMeasureCollectionSection(\r
- getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
- sectionStatisticalMeasures.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
- sectionStatisticalMeasures.setEntity(getEntity());\r
-\r
- if (!supportsCategoricalData.getSelection()) {\r
- sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(\r
- getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
- sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
- sectionModifierVocabularies.setEntity(getEntity());\r
- }\r
- }\r
- else{\r
- if(sectionMeasurementUnits!=null){\r
- removeElementsAndControls(sectionMeasurementUnits);\r
- removeElementsAndControls(sectionStatisticalMeasures);\r
- if(!supportsCategoricalData.getSelection()){\r
- removeElementsAndControls(sectionModifierVocabularies);\r
- }\r
- }\r
- }\r
- }\r
+ if(eventSource == supportsQuantitativeData){\r
+ getEntity().setSupportsQuantitativeData(supportsQuantitativeData.getSelection());\r
+ if(supportsQuantitativeData.getSelection()){\r
+ activateQuantitativeWidgets();\r
+ }\r
+ else{\r
+ removeQuantitativeWidgets();\r
+ }\r
+ StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);\r
+ }\r
+ else if(eventSource == supportsCategoricalData){\r
+ getEntity().setSupportsCategoricalData(supportsCategoricalData.getSelection());\r
+ if (supportsCategoricalData.getSelection()) {\r
+ activateCategoricalWidgets();\r
+ }\r
+ else{\r
+ removeCategoricalWidgets();\r
+ }\r
+ StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);\r
+ }\r
else if(eventSource == supportsDistribution){\r
getEntity().setSupportsDistribution(supportsDistribution.getSelection());\r
}\r
else if(eventSource == supportsTaxonInteraction){\r
getEntity().setSupportsTaxonInteraction(supportsTaxonInteraction.getSelection());\r
}\r
- else if(eventSource == supportsCategoricalData){\r
- getEntity().setSupportsCategoricalData(supportsCategoricalData.getSelection());\r
- if (supportsCategoricalData.getSelection()) {\r
- sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(),\r
- parentFormElement, ExpandableComposite.TWISTIE);\r
- sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
- sectionStateVocabularies.setEntity(getEntity());\r
-\r
- if (!supportsQuantitativeData.getSelection()) {\r
- sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(\r
- getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
- sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
- sectionModifierVocabularies.setEntity(getEntity());\r
- }\r
- }\r
- else{\r
- if(sectionStateVocabularies!=null){\r
- removeElementsAndControls(sectionStateVocabularies);\r
- if(!supportsQuantitativeData.getSelection()){\r
- removeElementsAndControls(sectionModifierVocabularies);\r
- }\r
- }\r
- }\r
- }\r
else if(eventSource == supportsCommonTaxonName){\r
getEntity().setSupportsCommonTaxonName(supportsCommonTaxonName.getSelection());\r
}\r
+ StoreUtil.reflowParentScrolledForm(getLayoutComposite(), true);\r
}\r
\r
+ private void activateQuantitativeWidgets(){\r
+ //disable categorical widgets\r
+ supportsCategoricalData.setSelection(false);\r
+ getEntity().setSupportsCategoricalData(false);\r
+ removeCategoricalWidgets();\r
+\r
+ //measurement units\r
+ sectionMeasurementUnits = formFactory.createMeasurementUnitCollectionSection(getConversationHolder(),\r
+ parentFormElement, ExpandableComposite.TWISTIE);\r
+ sectionMeasurementUnits.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
+ sectionMeasurementUnits.setEntity(getEntity());\r
+\r
+ //statistical measures\r
+ sectionStatisticalMeasures = formFactory.createStatisticalMeasureCollectionSection(\r
+ getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
+ sectionStatisticalMeasures.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
+ sectionStatisticalMeasures.setEntity(getEntity());\r
+\r
+ //modifiers\r
+ sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(\r
+ getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
+ sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
+ sectionModifierVocabularies.setEntity(getEntity());\r
+ }\r
+\r
+ private void removeQuantitativeWidgets(){\r
+ if(sectionMeasurementUnits!=null){\r
+ removeElementsAndControls(sectionMeasurementUnits);\r
+ removeElementsAndControls(sectionStatisticalMeasures);\r
+ removeElementsAndControls(sectionModifierVocabularies);\r
+ }\r
+ }\r
+\r
+ private void activateCategoricalWidgets(){\r
+ //disable quantitative widgeets\r
+ supportsQuantitativeData.setSelection(false);\r
+ getEntity().setSupportsQuantitativeData(false);\r
+ removeQuantitativeWidgets();\r
+\r
+ //states\r
+ sectionStateVocabularies = formFactory.createStateVocabulariesSection(getConversationHolder(),\r
+ parentFormElement, ExpandableComposite.TWISTIE);\r
+ sectionStateVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
+ sectionStateVocabularies.setEntity(getEntity());\r
+\r
+ //modifiers\r
+ sectionModifierVocabularies = formFactory.createRecommendedModifierVocabulariesCollectionSection(\r
+ getConversationHolder(), parentFormElement, ExpandableComposite.TWISTIE);\r
+ sectionModifierVocabularies.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));\r
+ sectionModifierVocabularies.setEntity(getEntity());\r
+ }\r
+\r
+ private void removeCategoricalWidgets(){\r
+ if(sectionStateVocabularies!=null){\r
+ removeElementsAndControls(sectionStateVocabularies);\r
+ removeElementsAndControls(sectionModifierVocabularies);\r
+ }\r
+ }\r
+\r
}\r
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Color;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.MeasurementUnit;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
*/\r
package eu.etaxonomy.taxeditor.ui.section.vocabulary;\r
\r
-import eu.etaxonomy.cdm.model.common.TermType;\r
+import eu.etaxonomy.cdm.model.term.TermType;\r
import eu.etaxonomy.cdm.model.location.NamedArea;\r
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
import eu.etaxonomy.cdm.model.location.NamedAreaType;\r
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.forms.widgets.TableWrapData;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
import eu.etaxonomy.taxeditor.l10n.Messages;
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import java.util.Comparator;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Color;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement;
import eu.etaxonomy.taxeditor.ui.element.AbstractFormSection;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Color;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.State;
import eu.etaxonomy.taxeditor.ui.combo.VocabularyComboElement;
import java.util.Comparator;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.State;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import org.eclipse.swt.events.SelectionListener;
import org.eclipse.swt.graphics.Color;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.StatisticalMeasure;
import eu.etaxonomy.taxeditor.ui.combo.TermComboElement;
import org.eclipse.jface.wizard.Wizard;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermBase;
+import eu.etaxonomy.cdm.common.CdmUtils;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermBase;
import eu.etaxonomy.taxeditor.ui.translation.TermTranslationWizardPage;
/**
private final TermBase term;
- /**
- * <p>Constructor for TranslationWizard.</p>
- *
- * @param multilanguageText a {@link java.util.Map} object.
- */
public TermTranslationWizard(TermBase term) {
setWindowTitle("Translation Editor");
this.term = term;
setNeedsProgressMonitor(true);
}
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.Wizard#addPages()
- */
- /** {@inheritDoc} */
@Override
public void addPages() {
page = new TermTranslationWizardPage(term);
addPage(page);
}
- /* (non-Javadoc)
- * @see org.eclipse.jface.wizard.Wizard#performFinish()
- */
- /** {@inheritDoc} */
@Override
public boolean performFinish() {
Representation representation = page.getTargetRepresentation();
-
+
if (representation.getLanguage() == null){
return false;
}
- if (!representation.getText().equals("") || !representation.getLabel().equals("") || !representation.getAbbreviatedLabel().equals("")) {
+ if (CdmUtils.isNotBlank(representation.getText())
+ || CdmUtils.isNotBlank(representation.getLabel())
+ || CdmUtils.isNotBlank(representation.getAbbreviatedLabel())
+ || CdmUtils.isNotBlank(representation.getPlural())){
term.addRepresentation(representation);
}
return true;
}
+
+ @Override
+ public boolean canFinish() {
+ Representation representation = page.getTargetRepresentation();
+ if (representation==null || representation.getLanguage() == null){
+ return false;
+ }
+ return CdmUtils.isNotBlank(representation.getText())
+ || CdmUtils.isNotBlank(representation.getLabel())
+ || CdmUtils.isNotBlank(representation.getAbbreviatedLabel())
+ || CdmUtils.isNotBlank(representation.getPlural());
+ }
}
*/\r
package eu.etaxonomy.taxeditor.ui.section.vocabulary;\r
\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
import eu.etaxonomy.taxeditor.ui.element.UriWithLabelElement;\r
import org.eclipse.jface.viewers.ISelectionProvider;\r
\r
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;\r
-import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.model.term.TermVocabulary;\r
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;\r
import eu.etaxonomy.taxeditor.ui.element.ICdmFormElement;\r
import eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement;\r
*/
package eu.etaxonomy.taxeditor.ui.translation;
-/**
- * @author k.luther
- * @date 22.06.2016
- *
- */
-
-import java.beans.PropertyChangeEvent;
-import java.beans.PropertyChangeListener;
-
-import org.apache.commons.lang.StringUtils;
+import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.wizard.WizardPage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.Representation;
-import eu.etaxonomy.cdm.model.common.TermBase;
+import eu.etaxonomy.cdm.model.term.Representation;
+import eu.etaxonomy.cdm.model.term.TermBase;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
import eu.etaxonomy.taxeditor.ui.element.RepresentationElement;
import eu.etaxonomy.taxeditor.ui.element.RootElement;
-public class TermTranslationWizardPage extends WizardPage implements PropertyChangeListener{
-
+/**
+ * @author k.luther
+ * @date 22.06.2016
+ *
+ */
+public class TermTranslationWizardPage extends WizardPage implements IPropertyChangeListener{
private static int TEXT_HEIGHT = 200;
private final TermBase term;
- MultilanguageTextElement source;
+ private MultilanguageTextElement source;
private final CdmFormFactory formFactory;
private RepresentationElement text_target;
- /**
- * <p>Constructor for TranslationWizardPage.</p>
- *
- * @param multilanguageText a {@link java.util.Map} object.
- */
public TermTranslationWizardPage(TermBase term) {
super("TranslationWizardPage");
//Assert.isNotNull(multilanguageText, "Multilanguage text may not be null");
setTitle("Add or edit translations.");
this.term = term;
formFactory = new CdmFormFactory(Display.getCurrent());
+ formFactory.addPropertyChangeListener(this);
setPageComplete(false);
}
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite)
- */
- /** {@inheritDoc} */
@Override
public void createControl(Composite parent) {
Composite control = formFactory.createComposite(parent);
-// control.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_GREEN));
control.setLayout(LayoutConstants.LAYOUT(2, false));
Composite leftContainer = formFactory.createComposite(control);
leftContainer.setLayoutData(LayoutConstants.FILL(1, 4));
leftContainer.setLayout(LayoutConstants.LAYOUT(2, false));
-// leftContainer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_BLUE));
RootElement leftRoot = new RootElement(formFactory, leftContainer);
Composite rightContainer = formFactory.createComposite(control);
rightContainer.setLayoutData(LayoutConstants.FILL(1, 4));
rightContainer.setLayout(LayoutConstants.LAYOUT(2, false));
-// rightContainer.setBackground(Display.getCurrent().getSystemColor(SWT.COLOR_RED));
RootElement rightRoot = new RootElement(formFactory, rightContainer);
createLeftControls(leftRoot);
createRightControls(rightRoot);
-
// initialize with default language
setSource(CdmStore.getDefaultLanguage());
-
setControl(control);
setPageComplete(true);
}
- /**
- * @param defaultLanguage
- */
private void setSource(Language language) {
-
Representation preferredRepresentation =term.getPreferredRepresentation(language);
-
if(preferredRepresentation != null){
text_source.setSelectedRepresentation(preferredRepresentation);
}
}
-
- /**
- *
- * @param element
- */
private void createLeftControls(ICdmFormElement element){
Representation preferredRepresentation= term.getPreferredRepresentation(PreferencesUtil.getGlobalLanguage());
}
- /**
- *
- * @param element
- */
private void createRightControls(ICdmFormElement element){
text_target = formFactory.createRepresentationElement(element, null, term, TEXT_HEIGHT, SWT.NULL, false);
-
}
-
-
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.dialogs.DialogPage#dispose()
- */
- /** {@inheritDoc} */
@Override
public void dispose() {
super.dispose();
}
- /**
- * @return
- *
- */
public Representation getTargetRepresentation() {
return text_target.getSelectedRepresentation();
}
- /* (non-Javadoc)
- * @see java.beans.PropertyChangeListener#propertyChange(java.beans.PropertyChangeEvent)
- */
@Override
- public void propertyChange(PropertyChangeEvent evt) {
- if (evt.getSource() == text_target){
- if (!StringUtils.isBlank(text_target.getSelectedRepresentation().getAbbreviatedLabel()) ||
- !StringUtils.isBlank(text_target.getSelectedRepresentation().getLabel()) || !StringUtils.isBlank(text_target.getSelectedRepresentation().getText())){
- setPageComplete(true);
- }
+ public void propertyChange(org.eclipse.jface.util.PropertyChangeEvent event) {
+ if (event.getSource() == text_target){
+ getWizard().getContainer().updateButtons();
}
-
}
-
-
-
-
}
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.LanguageString;
import eu.etaxonomy.cdm.model.common.MultilanguageTextHelper;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
}
// start the client monitor
- // monitor.subTask(remotingMonitor.getTaskName());
monitor.beginTask(remotingMonitor.getTaskName(), remotingMonitor.getTotalWork());
logger.info("Work to be done: " + remotingMonitor.getTotalWork());
int editorTotalWorkDone = 0;
// set dialog text
- monitor.setTaskName(label + " " + percentage + "% done ");
- monitor.subTask(remotingMonitor.getSubTask());
-// monitor.setWorkRemaining((int) (remotingMonitor.getTotalWork()-remotingMonitor.getWorkDone()));
- // monitor.subTask(remotingMonitor.getSubTask(), remotingMonitor.getWorkDone());
+ monitor.setTaskName(remotingMonitor.getTaskName());
+ monitor.subTask(" " + percentage + "% done ");
+
int worked = 0;
if (serverTotalWorkDone > editorTotalWorkDone){
worked = serverTotalWorkDone - editorTotalWorkDone;
if(remotingMonitor.getResult() instanceof Exception) {
UpdateResult result = new UpdateResult();
result.addException((Exception) remotingMonitor.getResult());
-// throw new IllegalStateException((Exception)remotingMonitor.getResult());
+
}
return remotingMonitor;
} finally {
import eu.etaxonomy.cdm.ext.occurrence.gbif.GbifResponse;
import eu.etaxonomy.cdm.io.specimen.abcd206.in.Abcd206ImportConfigurator;
import eu.etaxonomy.cdm.io.specimen.gbif.in.GbifImportConfigurator;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.view.dataimport.GbifResponseComparator;
import org.eclipse.e4.ui.services.IServiceConstants;
import org.eclipse.e4.ui.workbench.modeling.EPartService;
import org.eclipse.e4.ui.workbench.modeling.ESelectionService;
-import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.StructuredSelection;
import eu.etaxonomy.cdm.api.service.ITermService;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
+import eu.etaxonomy.cdm.model.name.TaxonName;
import eu.etaxonomy.cdm.model.taxon.Taxon;
import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.view.e4.details.DetailsPartE4;
import eu.etaxonomy.taxeditor.view.e4.details.DetailsViewerE4;
import eu.etaxonomy.taxeditor.workbench.WorkbenchUtility;
import eu.etaxonomy.taxeditor.workbench.part.ISelectionElementEditingPart;
protected Object previousSelection;
- public Object getPreviousSelection() {
- return previousSelection;
- }
-
- public void setPreviousSelection(Object previousSelection) {
- this.previousSelection = previousSelection;
- }
-
protected ISelectionChangedListener selectionChangedListener;
public ISelectionChangedListener getSelectionChangedListener() {
showEmptyPage();
return;
}
+ // no active editor found
if(activePart==thisPart && WorkbenchUtility.getActiveEditorPart(partService)==null){
showEmptyPage();
return;
}
- if(previousSelection!=null){
- if(previousSelection==selection || previousSelection.equals(selection)){
- return;
- }
- else if(previousSelection instanceof ISelection &&
- previousSelection.equals(selection)){//skip redundant rendering of details view
- return;
- }
+ if((previousSelection!=null && selection!=null) && (activePart != null && selectionProvidingPart != null && activePart.equals(selectionProvidingPart)) &&
+ (previousSelection==selection
+ || previousSelection.equals(selection)
+ || new StructuredSelection(selection).equals(previousSelection))
+ ) {
+ return;
}
if(delaySelection==null){
delaySelection = new DelaySelection(selection, activePart, thisPart);
else if(element instanceof TermVocabularyDto){
element = CdmStore.getService(IVocabularyService.class).load(((TermVocabularyDto) element).getUuid());
}
+
+ selectionProvidingPart = activePart;
if (viewer instanceof DetailsViewerE4){
((DetailsViewerE4)viewer).setInput(element, part);
((DetailsViewerE4)viewer).setDetailsEnabled(true);
+
}
+
else{
+ if (activePart.getObject() instanceof DetailsPartE4 && element instanceof TaxonName){
+ selectionProvidingPart = ((DetailsPartE4)activePart.getObject()).getSelectionProvidingPart();
+ }
viewer.setInput(element);
}
- selectionProvidingPart = activePart;
}
}
}
import eu.etaxonomy.taxeditor.model.AbstractUtility;
import eu.etaxonomy.taxeditor.model.FeatureNodeContainer;
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
+import eu.etaxonomy.taxeditor.model.IPartContentHasFactualData;
import eu.etaxonomy.taxeditor.model.IPartContentHasSupplementalData;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
* @date 18.07.2017
*
*/
-public class DetailsPartE4 extends AbstractCdmEditorPartE4 implements IPartContentHasSupplementalData {
+public class DetailsPartE4 extends AbstractCdmEditorPartE4 implements IPartContentHasSupplementalData, IPartContentHasFactualData {
@Inject
private Logger logger;
import eu.etaxonomy.cdm.model.agent.Person;
import eu.etaxonomy.cdm.model.agent.Team;
import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.cdm.model.common.Marker;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.model.description.CategoricalData;
import eu.etaxonomy.cdm.model.description.Character;
import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
import eu.etaxonomy.cdm.model.description.Distribution;
-import eu.etaxonomy.cdm.model.description.FeatureNode;
-import eu.etaxonomy.cdm.model.description.FeatureTree;
+import eu.etaxonomy.cdm.model.term.FeatureNode;
+import eu.etaxonomy.cdm.model.term.FeatureTree;
import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
import eu.etaxonomy.cdm.model.description.SpecimenDescription;
+import eu.etaxonomy.cdm.model.description.TaxonDescription;
import eu.etaxonomy.cdm.model.media.Media;
import eu.etaxonomy.cdm.model.molecular.DnaSample;
import eu.etaxonomy.cdm.model.molecular.Sequence;
input = ((GbifResponse) input).getDerivedUnitFacade();
}
if(input instanceof FeatureNode
- && HibernateProxyHelper.isInstanceOf(((FeatureNode) input).getFeature(), Character.class)){
- input = HibernateProxyHelper.deproxy(((FeatureNode) input).getFeature(), Character.class);
+ && HibernateProxyHelper.isInstanceOf(((FeatureNode) input).getTerm(), Character.class)){
+ input = HibernateProxyHelper.deproxy(((FeatureNode) input).getTerm(), Character.class);
}
if (input !=null && input.getClass().equals(DerivedUnit.class)) {
DerivedUnit derivedUnit = (DerivedUnit)input;
} else if (isUseDescription) {
createUseDescriptionSection(rootElement);
- } else {
+ } else if (input instanceof TaxonDescription){
createTaxonDescriptionSection(rootElement);
+ } else{
+ createDescriptionSection(rootElement, false);
}
}
} else if (input instanceof DescriptionElementBase){
import org.eclipse.ui.forms.widgets.ExpandableComposite;
import eu.etaxonomy.cdm.model.common.AnnotatableEntity;
+import eu.etaxonomy.cdm.model.reference.ISourceable;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
import eu.etaxonomy.cdm.model.common.VersionableEntity;
-import eu.etaxonomy.cdm.model.description.DescriptionBase;
import eu.etaxonomy.cdm.model.media.IdentifiableMediaEntity;
import eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap;
import eu.etaxonomy.taxeditor.event.WorkbenchEventConstants;
if(input instanceof IdentifiableEntity){
createIdentifiableSections(rootElement);
}
+ if(input instanceof ISourceable && !(input instanceof IdentifiableEntity)){
+ createSourceSection(rootElement);
+ }
//4. Identifiable media entity
if(input instanceof IdentifiableMediaEntity){
createIdentifiableMediaSections(rootElement);
addPart(headlineSection);
}
+ private void createSourceSection(RootElement parent){
+ SourceSection sourceSection = formFactory.createSourceSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
+ formFactory.createHorizontalSeparator(parent, SWT.BORDER);
+ addPart(sourceSection);
+ }
+
private void createAnnotationSections(RootElement parent) {
AnnotationSection annotationSection = formFactory.createAnnotationSection(getConversationHolder(), parent, ExpandableComposite.TWISTIE);
import eu.etaxonomy.cdm.format.ICdmFormatter.FormatKey;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.DefinedTerm;
+import eu.etaxonomy.cdm.model.term.DefinedTerm;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
import eu.etaxonomy.cdm.model.common.Identifier;
import eu.etaxonomy.cdm.model.molecular.DnaSample;
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+
+/**
+ * @author pplitzner
+ * @since Feb 14, 2019
+ *
+ */
+public abstract class CheckBoxSearchResultComposite<T, S extends SearchResult<T>> extends Composite {
+
+ protected S result;
+ private Button btnCheck;
+
+ public CheckBoxSearchResultComposite(S result, Composite parent, int style) {
+ super(parent, style);
+ this.result = result;
+ setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true, false));
+ GridLayout gridLayout = new GridLayout();
+ gridLayout.marginWidth = 0;
+ gridLayout.horizontalSpacing = 0;
+ gridLayout.numColumns = 2;
+ setLayout(gridLayout);
+
+ Composite composite = new Composite(this, SWT.NONE);
+ composite.setLayout(new GridLayout(1, false));
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, false, false, 1, 1));
+
+ btnCheck = new Button(composite, SWT.CHECK);
+ btnCheck.setLayoutData(new GridData(SWT.CENTER, SWT.CENTER, false, false, 1, 1));
+
+ createContent(this);
+ }
+
+ public abstract Composite createContent(Composite parent);
+
+ public S getResult() {
+ return result;
+ }
+
+ public Button getBtnCheck() {
+ return btnCheck;
+ }
+
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet;
+
+/**
+ * @author pplitzner
+ * @since Jan 24, 2019
+ *
+ */
+public class Facet {
+
+ private String category;
+ private String facet;
+
+ public Facet(String facet) {
+ this(facet, null);
+ }
+
+ public Facet(String facet, String category) {
+ this.category = category;
+ this.facet = facet;
+ }
+
+ public String getCategory() {
+ return category;
+ }
+
+ public String getFacet() {
+ return facet;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((category == null) ? 0 : category.hashCode());
+ result = prime * result + ((facet == null) ? 0 : facet.hashCode());
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj) {
+ return true;
+ }
+ if (obj == null) {
+ return false;
+ }
+ if (getClass() != obj.getClass()) {
+ return false;
+ }
+ Facet other = (Facet) obj;
+ if (category == null) {
+ if (other.category != null) {
+ return false;
+ }
+ } else if (!category.equals(other.category)) {
+ return false;
+ }
+ if (facet == null) {
+ if (other.facet != null) {
+ return false;
+ }
+ } else if (!facet.equals(other.facet)) {
+ return false;
+ }
+ return true;
+ }
+
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.SelectionAdapter;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+/**
+ * @author pplitzner
+ * @since Jan 23, 2019
+ *
+ */
+public class FilterComposite extends Composite{
+ private Button btnCheck;
+ private Facet facet;
+
+ public FilterComposite(Facet facet, SearchController controller, Composite parent, int style) {
+ super(parent, style);
+ this.facet = facet;
+ GridDataFactory.fillDefaults().applyTo(this);
+ GridLayout gridLayout = new GridLayout(2, false);
+ gridLayout.marginHeight = 0;
+ gridLayout.marginWidth = 0;
+ gridLayout.horizontalSpacing = 0;
+ setLayout(gridLayout);
+
+ btnCheck = new Button(this, SWT.CHECK);
+ btnCheck.addSelectionListener(new SelectionAdapter() {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ controller.applyFilter(FilterComposite.this);
+ }
+ });
+ btnCheck.setSelection(true);
+
+ Composite content = new Composite(this, SWT.NONE);
+ GridDataFactory.fillDefaults().applyTo(content);
+ GridLayout gl_content = new GridLayout();
+ gl_content.horizontalSpacing = 0;
+ content.setLayout(gl_content);
+
+ Label label = new Label(content, SWT.NONE);
+ label.setText(facet.getFacet());
+ GridDataFactory.fillDefaults().applyTo(label);
+
+ }
+
+ public boolean isFilterActive() {
+ return btnCheck.getSelection();
+ }
+
+ public Facet getFacet() {
+ return facet;
+ }
+
+}
--- /dev/null
+// $Id$
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.SashForm;
+import org.eclipse.swt.custom.ScrolledComposite;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Button;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+
+import eu.etaxonomy.taxeditor.model.ImageResources;
+
+/**
+ * @author pplitzner
+ * @date 22.01.2019
+ *
+ */
+public class SearchComposite extends SashForm {
+ private Text txtSearch;
+ private ScrolledComposite filterScrolledComposite;
+ private Composite filterListComposite;
+ private Composite searchResultComposite;
+ private ScrolledComposite resultScrolledComposite;
+ private Button btnSearchButton;
+
+ /**
+ * Create the composite.
+ * @param parent
+ * @param style
+ */
+ public SearchComposite(Composite parent, int style) {
+ super(parent, style);
+ setLayout(new GridLayout(2, false));
+
+ Composite filterComposite = new Composite(this, SWT.NONE);
+ filterComposite.setLayout(new GridLayout(1, false));
+ GridData gd_filterComposite = new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1);
+ filterComposite.setLayoutData(gd_filterComposite);
+
+ Composite composite = new Composite(filterComposite, SWT.NONE);
+ composite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
+ composite.setLayout(new GridLayout(2, false));
+
+ txtSearch = new Text(composite, SWT.BORDER);
+ txtSearch.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
+
+ btnSearchButton = new Button(composite, SWT.NONE);
+ btnSearchButton.setImage(ImageResources.getImage(ImageResources.SEARCH_ICON));
+
+ filterScrolledComposite = new ScrolledComposite(filterComposite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+ filterScrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+ filterScrolledComposite.setExpandHorizontal(true);
+ filterScrolledComposite.setExpandVertical(true);
+
+ initFilterList();
+
+ Composite composite_1 = new Composite(this, SWT.NONE);
+ composite_1.setLayout(new GridLayout(1, false));
+ composite_1.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+
+ resultScrolledComposite = new ScrolledComposite(composite_1, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
+ resultScrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
+ resultScrolledComposite.setExpandHorizontal(true);
+ resultScrolledComposite.setExpandVertical(true);
+ setWeights(new int[] {40, 60});
+
+ initSearchResultList();
+
+ }
+
+ private void initSearchResultList() {
+ searchResultComposite = new Composite(resultScrolledComposite, SWT.NONE);
+ searchResultComposite.setLayout(new GridLayout(1, false));
+ resultScrolledComposite.setContent(searchResultComposite);
+ resultScrolledComposite.setMinSize(searchResultComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ }
+
+ private void initFilterList() {
+ filterListComposite = new Composite(filterScrolledComposite, SWT.NONE);
+ GridLayout gl_filterListComposite = new GridLayout(1, false);
+ gl_filterListComposite.marginHeight = 0;
+ gl_filterListComposite.verticalSpacing = 0;
+ filterListComposite.setLayout(gl_filterListComposite);
+ filterScrolledComposite.setContent(filterListComposite);
+ filterScrolledComposite.setMinSize(filterListComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ }
+
+ @Override
+ protected void checkSubclass() {
+ // Disable the check that prevents subclassing of SWT components
+ }
+ public Text getTxtSearch() {
+ return txtSearch;
+ }
+
+ public Composite getFilterListComposite() {
+ return filterListComposite;
+ }
+
+ public void clear(){
+ filterListComposite.dispose();
+ initFilterList();
+
+ clearResults();
+ }
+
+ public void clearResults() {
+ searchResultComposite.dispose();
+ initSearchResultList();
+ }
+
+ public void refresh(){
+ filterScrolledComposite.layout(true, true);
+ filterScrolledComposite.setMinSize(filterListComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ resultScrolledComposite.layout(true, true);
+ resultScrolledComposite.setMinSize(searchResultComposite.computeSize(SWT.DEFAULT, SWT.DEFAULT));
+ }
+ public Composite getSearchResultComposite() {
+ return searchResultComposite;
+ }
+ public Button getBtnSearchButton() {
+ return btnSearchButton;
+ }
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import java.util.TreeMap;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.KeyListener;
+import org.eclipse.swt.events.SelectionEvent;
+import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
+
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
+
+/**
+ * @author pplitzner
+ * @since Jan 22, 2019
+ *
+ */
+public abstract class SearchController<S extends SearchResult<T>, T> implements KeyListener, SelectionListener{
+
+ private SearchComposite composite;
+ private List<S> searchResults = new ArrayList<>();
+ private Set<Facet> appliedFacets = new HashSet<>();
+ private List<CheckBoxSearchResultComposite<T, S>> searchResultComposites = new ArrayList<>();
+
+ public SearchController(SearchComposite composite) {
+ this.composite = composite;
+ composite.getTxtSearch().addKeyListener(this);
+ composite.getBtnSearchButton().addSelectionListener(this);
+ }
+
+ protected abstract List<S> searchResults(String searchString);
+
+ protected abstract CheckBoxSearchResultComposite<T, S> createResultComposite(S result, Composite parent);
+
+ protected abstract Comparator<S> getResultComparator(String searchString);
+
+ protected abstract List<S> getSelectedResults();
+
+ private void search(String searchString){
+ searchResults.clear();
+ searchResultComposites.clear();
+
+ searchResults = searchResults(searchString);
+ if(searchResults.size()>500){
+ MessagingUtils.warningDialog("Specify your search", this, "The following search has too many results. Please enter a more specific search query.");
+ return;
+ }
+
+ Collections.sort(searchResults, getResultComparator(searchString));
+
+ Set<Facet> facets = createResults(searchResults);
+
+ createFilterButtons(facets);
+
+ composite.refresh();
+ }
+
+ private void createFilterButtons(Set<Facet> facets) {
+ Map<String, List<Facet>> categoryToFacetsMap = new TreeMap<>();//(String o1, String o2)->o1.compareTo(o2));
+ for (Facet facet : facets) {
+ String category = facet.getCategory();
+ if(category==null){
+ category = "None";
+ }
+ List<Facet> categoryFacets = categoryToFacetsMap.get(category);
+ if(categoryFacets==null){
+ categoryFacets = new ArrayList<>();
+ }
+ categoryFacets.add(facet);
+ categoryToFacetsMap.put(category, categoryFacets);
+ }
+ for (Entry<String, List<Facet>> entry: categoryToFacetsMap.entrySet()) {
+ String category = entry.getKey();
+ // create group
+ Group group = new Group(composite.getFilterListComposite(), SWT.NONE);
+ group.setLayout(new GridLayout());
+ GridDataFactory.fillDefaults().applyTo(group);
+ group.setText(category!=null?category:"None");
+ // fill group with facet filters
+ List<Facet> categoryFacets = entry.getValue();
+ for (Facet facet : categoryFacets) {
+ if(facet.getFacet()!=null){
+ FilterComposite filterComposite = new FilterComposite(facet, this, group, SWT.NONE);
+ appliedFacets.add(facet);
+ }
+ }
+ }
+
+ }
+
+ private Set<Facet> createResults(List<S> results) {
+ Set<Facet> facets = new HashSet<>();
+ searchResultComposites.clear();
+ for (S result : results) {
+ searchResultComposites.add(createResultComposite(result, composite.getSearchResultComposite()));
+ facets.addAll(result.getFacets());
+ }
+ return facets;
+ }
+
+ public void applyFilter(FilterComposite filterComposite) {
+
+ composite.clearResults();
+
+ Facet facet = filterComposite.getFacet();
+ if(filterComposite.isFilterActive()){
+ appliedFacets.add(facet);
+ }
+ else{
+ appliedFacets.remove(facet);
+ }
+
+ searchResultComposites.clear();
+ for (S searchResult : searchResults) {
+ if(searchResult.hasAnyFacet(appliedFacets)){
+ searchResultComposites.add(createResultComposite(searchResult, composite.getSearchResultComposite()));
+ }
+ }
+
+ composite.refresh();
+ }
+
+ private void search(){
+ composite.clear();
+ search(composite.getTxtSearch().getText());
+ }
+
+ public List<S> getSelectedSearchResults(){
+ List<S> selectedSearchResults = new ArrayList<>();
+ searchResultComposites.stream()
+ .filter(resultComposite->resultComposite.getBtnCheck().getSelection())
+ .forEach(selected->selectedSearchResults.add(selected.getResult()));
+ return selectedSearchResults;
+ }
+
+ @Override
+ public void keyPressed(KeyEvent e) {
+ if(e.keyCode==SWT.CR && e.widget==composite.getTxtSearch()){
+ search();
+ }
+ }
+
+ @Override
+ public void keyReleased(KeyEvent e) {
+ }
+
+ @Override
+ public void widgetSelected(SelectionEvent e) {
+ if(e.widget==composite.getBtnSearchButton()){
+ search();
+ }
+ }
+
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {
+ }
+
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet;
+
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author pplitzner
+ * @since Jan 23, 2019
+ *
+ * @param <T> The type of the search result
+ */
+public abstract class SearchResult<T> {
+
+ private Set<Facet> facets = new HashSet<>();
+ private T content;
+
+ public SearchResult(T content) {
+ super();
+ this.content = content;
+ facets = initFacets(content);
+ }
+
+ protected abstract Set<Facet> initFacets(T content);
+
+ public boolean hasFacet(Facet facet){
+ return facets.contains(facet);
+ }
+
+ public boolean hasAnyFacet(Set<Facet> facets){
+ return facets.stream().anyMatch(facet->this.facets.contains(facet));
+ }
+
+ public T getContent() {
+ return content;
+ }
+
+ public Set<Facet> getFacets() {
+ return facets;
+ }
+
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet.occurrence;
+
+import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
+
+/**
+ * @author pplitzner
+ * @since Jan 22, 2019
+ *
+ */
+public class OccurrenceFilter {
+
+ private TermVocabularyDto vocabulary;
+
+ /**
+ * @param vocabulary
+ */
+ public OccurrenceFilter(TermVocabularyDto vocabulary) {
+ super();
+ this.vocabulary = vocabulary;
+ }
+
+ /**
+ * @return the vocabulary
+ */
+ public TermVocabularyDto getVocabulary() {
+ return vocabulary;
+ }
+
+ /**
+ * @param vocabulary the vocabulary to set
+ */
+ public void setVocabulary(TermVocabularyDto vocabulary) {
+ this.vocabulary = vocabulary;
+ }
+
+
+
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet.occurrence;
+
+import javax.annotation.PostConstruct;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
+
+/**
+ * @author pplitzner
+ * @since Jan 22, 2019
+ *
+ */
+public class OccurrenceSearch {
+
+ @SuppressWarnings("unused")
+ @PostConstruct
+ public void create(Composite parent){
+ new OccurrenceSearchController(new SearchComposite(parent, SWT.NONE));
+ }
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet.occurrence;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.config.FindOccurrencesConfigurator;
+import eu.etaxonomy.cdm.api.service.dto.PreservedSpecimenDTO;
+import eu.etaxonomy.cdm.persistence.query.MatchMode;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchController;
+
+/**
+ * @author pplitzner
+ * @since Jan 22, 2019
+ *
+ */
+public class OccurrenceSearchController extends SearchController<OccurrenceSearchResult, PreservedSpecimenDTO> {
+
+ public OccurrenceSearchController(SearchComposite composite) {
+ super(composite);
+ }
+
+ @Override
+ protected Comparator<OccurrenceSearchResult> getResultComparator(String searchString) {
+ return new Comparator<OccurrenceSearchResult>() {
+ @Override
+ public int compare(OccurrenceSearchResult o1, OccurrenceSearchResult o2) {
+ String label1 = o1.getContent().getTitleCache();
+ String label2 = o2.getContent().getTitleCache();
+ return StoreUtil.compareBySearchString(searchString, label1, label2);
+ }
+
+ };
+ }
+
+ @Override
+ protected List<OccurrenceSearchResult> searchResults(String searchString){
+ List<OccurrenceSearchResult> searchResults = new ArrayList<>();
+ FindOccurrencesConfigurator config = new FindOccurrencesConfigurator();
+ config.setTitleSearchString(searchString);
+ config.setMatchMode(MatchMode.ANYWHERE);
+ Collection<PreservedSpecimenDTO> dtos = CdmStore.getService(IOccurrenceService.class).findByTitlePreservedSpecimenDTO(config);
+ dtos.stream().forEach(dto->searchResults.add(new OccurrenceSearchResult(dto)));
+ return searchResults;
+ }
+
+ @Override
+ protected OccurrenceSearchResultComposite createResultComposite(OccurrenceSearchResult result, Composite parent) {
+ return new OccurrenceSearchResultComposite(result, parent, SWT.NONE);
+ }
+
+ @Override
+ protected List<OccurrenceSearchResult> getSelectedResults() {
+ return null;
+ }
+
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet.occurrence;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import eu.etaxonomy.cdm.api.service.dto.PreservedSpecimenDTO;
+import eu.etaxonomy.taxeditor.view.search.facet.Facet;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchResult;
+
+/**
+ * @author pplitzner
+ * @since Jan 24, 2019
+ *
+ */
+public class OccurrenceSearchResult extends SearchResult<PreservedSpecimenDTO> {
+
+ public OccurrenceSearchResult(PreservedSpecimenDTO content) {
+ super(content);
+ }
+
+ @Override
+ protected Set<Facet> initFacets(PreservedSpecimenDTO content) {
+ Set<Facet> facets = new HashSet<>();
+ content.getAssociatedTaxa().forEach(pair->facets.add(new Facet(pair.getValue(), content.getKindOfUnit())));
+ return facets;
+ }
+
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet.occurrence;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import eu.etaxonomy.cdm.api.service.dto.PreservedSpecimenDTO;
+import eu.etaxonomy.taxeditor.view.search.facet.CheckBoxSearchResultComposite;
+
+/**
+ * @author pplitzner
+ * @since Jan 23, 2019
+ *
+ */
+public class OccurrenceSearchResultComposite extends CheckBoxSearchResultComposite<PreservedSpecimenDTO, OccurrenceSearchResult> {
+
+ private Label label;
+
+ public OccurrenceSearchResultComposite(OccurrenceSearchResult result, Composite parent, int style) {
+ super(result, parent, style);
+ }
+
+ @Override
+ public Composite createContent(Composite parent) {
+ Composite content = new Composite(this, SWT.NONE);
+ content.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
+ GridLayout layout = new GridLayout(1, false);
+ content.setLayout(layout);
+ label = new Label(content, SWT.WRAP);
+ label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
+ label.setText(result.getContent().getTitleCache());
+ label.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT));
+ GridDataFactory.fillDefaults().applyTo(label);
+
+ Label lblDescription = new Label(content, SWT.WRAP);
+ GridData layoutData = new GridData();
+ lblDescription.setLayoutData(layoutData);
+ parent.addControlListener(new ControlAdapter() {
+ @Override
+ public void controlResized(ControlEvent e) {
+ layoutData.widthHint = parent.getClientArea().width - (6*layout.marginWidth);
+ parent.layout(true);
+ }
+ });
+ String representation_L10n_text = result.getContent().getCitation();
+ if(representation_L10n_text!=null){
+ lblDescription.setText(representation_L10n_text);
+ }
+ return content;
+ }
+
+}
* The contents of this file are subject to the Mozilla Public License Version 1.1
* See LICENSE.TXT at the top of this package for the full license terms.
*/
-package eu.etaxonomy.taxeditor.view.search.term;
+package eu.etaxonomy.taxeditor.view.search.facet.term;
import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet.term;
+
+import javax.annotation.PostConstruct;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
+
+/**
+ * @author pplitzner
+ * @since Jan 22, 2019
+ *
+ */
+public class TermSearch {
+
+ @SuppressWarnings("unused")
+ @PostConstruct
+ public void create(Composite parent){
+ new TermSearchController(new SearchComposite(parent, SWT.NONE), null);
+ }
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet.term;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Comparator;
+import java.util.List;
+
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.widgets.Composite;
+
+import eu.etaxonomy.cdm.api.service.ITermService;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.taxeditor.store.CdmStore;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchComposite;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchController;
+
+/**
+ * @author pplitzner
+ * @since Jan 22, 2019
+ *
+ */
+public class TermSearchController extends SearchController<TermSearchResult, TermDto> {
+
+ private TermType termType;
+
+ public TermSearchController(SearchComposite composite, TermType termType) {
+ super(composite);
+ this.termType = termType;
+ }
+
+ @Override
+ protected Comparator<TermSearchResult> getResultComparator(String searchString) {
+ return new Comparator<TermSearchResult>() {
+ @Override
+ public int compare(TermSearchResult o1, TermSearchResult o2) {
+ String label1 = o1.getContent().getRepresentation_L10n();
+ String label2 = o2.getContent().getRepresentation_L10n();
+ return StoreUtil.compareBySearchString(searchString, label1, label2);
+ }
+
+ };
+ }
+
+ @Override
+ protected List<TermSearchResult> searchResults(String searchString){
+ List<TermSearchResult> searchResults = new ArrayList<>();
+ Collection<TermDto> dtos = CdmStore.getService(ITermService.class).findByTitleAsDto(searchString, termType);
+ dtos.stream().forEach(dto->searchResults.add(new TermSearchResult(dto)));
+ return searchResults;
+ }
+
+ @Override
+ protected TermSearchResultComposite createResultComposite(TermSearchResult result, Composite parent) {
+ return new TermSearchResultComposite(result, parent, SWT.NONE);
+ }
+
+ @Override
+ protected List<TermSearchResult> getSelectedResults() {
+ return null;
+ }
+
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet.term;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.cdm.remote.l10n.TermRepresentation_L10n;
+import eu.etaxonomy.taxeditor.view.search.facet.Facet;
+import eu.etaxonomy.taxeditor.view.search.facet.SearchResult;
+
+/**
+ * @author pplitzner
+ * @since Jan 24, 2019
+ *
+ */
+public class TermSearchResult extends SearchResult<TermDto> {
+
+ public TermSearchResult(TermDto content) {
+ super(content);
+ }
+
+ @Override
+ protected Set<Facet> initFacets(TermDto content) {
+ Set<Facet> facets = new HashSet<>();
+ content.localize(new TermRepresentation_L10n());
+ TermType termType = content.getTermType();
+ facets.add(new Facet(content.getVocRepresentation_L10n(), termType!=null?termType.getMessage():null));
+ return facets;
+ }
+
+}
--- /dev/null
+/**
+* Copyright (C) 2019 EDIT
+* European Distributed Institute of Taxonomy
+* http://www.e-taxonomy.eu
+*
+* The contents of this file are subject to the Mozilla Public License Version 1.1
+* See LICENSE.TXT at the top of this package for the full license terms.
+*/
+package eu.etaxonomy.taxeditor.view.search.facet.term;
+
+import org.eclipse.jface.layout.GridDataFactory;
+import org.eclipse.jface.resource.JFaceResources;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ControlAdapter;
+import org.eclipse.swt.events.ControlEvent;
+import org.eclipse.swt.layout.GridData;
+import org.eclipse.swt.layout.GridLayout;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Label;
+
+import eu.etaxonomy.cdm.persistence.dto.TermDto;
+import eu.etaxonomy.taxeditor.view.search.facet.CheckBoxSearchResultComposite;
+
+/**
+ * @author pplitzner
+ * @since Jan 23, 2019
+ *
+ */
+public class TermSearchResultComposite extends CheckBoxSearchResultComposite<TermDto, TermSearchResult> {
+
+ private Label label;
+
+ public TermSearchResultComposite(TermSearchResult result, Composite parent, int style) {
+ super(result, parent, style);
+ }
+
+ @Override
+ public Composite createContent(Composite parent) {
+ Composite content = new Composite(this, SWT.NONE);
+ content.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
+ GridLayout layout = new GridLayout(1, false);
+ content.setLayout(layout);
+ label = new Label(content, SWT.WRAP);
+ label.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
+ label.setText(result.getContent().getRepresentation_L10n());
+ label.setFont(JFaceResources.getFontRegistry().getBold(JFaceResources.DEFAULT_FONT));
+ GridDataFactory.fillDefaults().applyTo(label);
+
+ Label lblDescription = new Label(content, SWT.WRAP);
+ GridData layoutData = new GridData();
+ lblDescription.setLayoutData(layoutData);
+ parent.addControlListener(new ControlAdapter() {
+ @Override
+ public void controlResized(ControlEvent e) {
+ layoutData.widthHint = parent.getClientArea().width - (6*layout.marginWidth);
+ parent.layout(true);
+ }
+ });
+ String representation_L10n_text = result.getContent().getRepresentation_L10n_text();
+ if(representation_L10n_text!=null){
+ lblDescription.setText(representation_L10n_text);
+ }
+ return content;
+ }
+
+}
+++ /dev/null
-/**
-* Copyright (C) 2019 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-package eu.etaxonomy.taxeditor.view.search.term;
-
-import javax.annotation.PostConstruct;
-import javax.inject.Named;
-
-import org.eclipse.e4.core.contexts.IEclipseContext;
-import org.eclipse.e4.ui.services.EMenuService;
-import org.eclipse.e4.ui.services.IServiceConstants;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Shell;
-
-/**
- * @author pplitzner
- * @since Jan 22, 2019
- *
- */
-public class TermSearch {
-
- @PostConstruct
- public void create(Composite parent, IEclipseContext context, @Named(IServiceConstants.ACTIVE_SHELL)Shell shell,
- EMenuService menuService){
- new TermSearchController(new TermSearchComposite(parent, SWT.NONE));
- }
-}
+++ /dev/null
-// $Id$
-/**
-* Copyright (C) 2019 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-package eu.etaxonomy.taxeditor.view.search.term;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.custom.ScrolledComposite;
-import org.eclipse.swt.layout.GridData;
-import org.eclipse.swt.layout.GridLayout;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.ExpandBar;
-import org.eclipse.swt.widgets.ExpandItem;
-import org.eclipse.swt.widgets.Label;
-import org.eclipse.swt.widgets.Text;
-
-/**
- * @author pplitzner
- * @date 22.01.2019
- *
- */
-public class TermSearchComposite extends Composite {
- private Text txtSearch;
- private Composite searchResultComposite;
-
- /**
- * Create the composite.
- * @param parent
- * @param style
- */
- public TermSearchComposite(Composite parent, int style) {
- super(parent, style);
- setLayout(new GridLayout(2, false));
-
- Composite filterComposite = new Composite(this, SWT.NONE);
- filterComposite.setLayout(new GridLayout(1, false));
- filterComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 1, 1));
- filterComposite.setBounds(0, 0, 64, 64);
-
- txtSearch = new Text(filterComposite, SWT.BORDER);
- txtSearch.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false, 1, 1));
-
- ScrolledComposite scrolledComposite = new ScrolledComposite(filterComposite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
- scrolledComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
- scrolledComposite.setExpandHorizontal(true);
- scrolledComposite.setExpandVertical(true);
-
- searchResultComposite = new Composite(this, SWT.NONE);
- searchResultComposite.setLayout(new GridLayout(1, false));
- searchResultComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
- searchResultComposite.setBounds(0, 0, 64, 64);
-
- ScrolledComposite resultComposite = new ScrolledComposite(searchResultComposite, SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
- resultComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
- resultComposite.setExpandHorizontal(true);
- resultComposite.setExpandVertical(true);
-
- ExpandBar expandBar = new ExpandBar(resultComposite, SWT.NONE);
-
- ExpandItem xpndtmNewExpanditem = new ExpandItem(expandBar, SWT.NONE);
- xpndtmNewExpanditem.setExpanded(true);
- xpndtmNewExpanditem.setText("New ExpandItem");
-
- Label lblNewLabel = new Label(expandBar, SWT.NONE);
- xpndtmNewExpanditem.setControl(lblNewLabel);
- lblNewLabel.setText("New Label");
- xpndtmNewExpanditem.setHeight(xpndtmNewExpanditem.getControl().computeSize(SWT.DEFAULT, SWT.DEFAULT).y);
-
- ExpandItem xpndtmNewExpanditem_1 = new ExpandItem(expandBar, SWT.NONE);
- xpndtmNewExpanditem_1.setText("New ExpandItem");
- resultComposite.setContent(expandBar);
- resultComposite.setMinSize(expandBar.computeSize(SWT.DEFAULT, SWT.DEFAULT));
-
- }
-
- @Override
- protected void checkSubclass() {
- // Disable the check that prevents subclassing of SWT components
- }
- public Text getTxtSearch() {
- return txtSearch;
- }
- public Composite getSearchResultComposite() {
- return searchResultComposite;
- }
-}
+++ /dev/null
-/**
-* Copyright (C) 2019 EDIT
-* European Distributed Institute of Taxonomy
-* http://www.e-taxonomy.eu
-*
-* The contents of this file are subject to the Mozilla Public License Version 1.1
-* See LICENSE.TXT at the top of this package for the full license terms.
-*/
-package eu.etaxonomy.taxeditor.view.search.term;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
-import org.eclipse.swt.widgets.Label;
-
-import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.description.Feature;
-import eu.etaxonomy.cdm.model.location.Country;
-import eu.etaxonomy.cdm.persistence.dto.TermDto;
-import eu.etaxonomy.cdm.persistence.dto.TermVocabularyDto;
-import eu.etaxonomy.cdm.remote.l10n.TermRepresentation_L10n;
-
-/**
- * @author pplitzner
- * @since Jan 22, 2019
- *
- */
-public class TermSearchController implements KeyListener{
-
- private TermSearchComposite composite;
-
- public TermSearchController(TermSearchComposite composite) {
- this.composite = composite;
- composite.getTxtSearch().addKeyListener(this);
- }
-
- private void search(String searchString){
- //search terms via term service
- List<TermDto> terms = new ArrayList<>();
- terms.add(TermDto.fromTerm(Feature.ANATOMY()));
- terms.add(TermDto.fromTerm(Feature.BIOLOGY_ECOLOGY()));
- terms.add(TermDto.fromTerm(Country.AFGHANISTAN()));
- terms.add(TermDto.fromTerm(Country.DENMARKKINGDOMOF()));
- terms.add(TermDto.fromTerm(Language.ENGLISH()));
- terms.add(TermDto.fromTerm(Language.SUKUMA()));
-
- List<TermFilter> filters = createResultsAndFilters(terms);
-
- createFilterButtons(filters);
-
- }
-
- private void createFilterButtons(List<TermFilter> filters) {
-
- }
-
- private void extractFilters(List<TermDto> terms) {
- }
-
- private List<TermFilter> createResultsAndFilters(List<TermDto> terms) {
- List<TermVocabularyDto> vocabularyDtos = new ArrayList<>();
- for (TermDto term : terms) {
- term.localize(new TermRepresentation_L10n());
- createResultComposite(term);
- if(!vocabularyDtos.contains(term.getVocabularyUuid())){
- vocabularyDtos.add(term.getVocabularyDto());
- }
- }
- List<TermFilter> filters = new ArrayList<>();
- for (TermVocabularyDto termVocabularyDto : vocabularyDtos) {
- filters.add(new TermFilter(termVocabularyDto));
- }
- return filters;
- }
-
- private void createResultComposite(TermDto term) {
- Label label = new Label(composite.getSearchResultComposite(), SWT.NONE);
- label.setText(term.getRepresentation_L10n());
- }
-
- @Override
- public void keyPressed(KeyEvent e) {
- if(e.widget==composite.getTxtSearch()){
- search(composite.getTxtSearch().getText());
- }
- }
-
- @Override
- public void keyReleased(KeyEvent e) {
- }
-
-}
import org.eclipse.wb.swt.SWTResourceManager;
import eu.etaxonomy.cdm.api.service.IVocabularyService;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.taxeditor.model.ImageResources;
import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.combo.termvocabulary.TermVocabularyComboViewer;
import eu.etaxonomy.taxeditor.model.ColorResources;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.Resources;
+import eu.etaxonomy.taxeditor.store.StoreUtil;
import eu.etaxonomy.taxeditor.store.internal.TaxeditorStorePlugin;
import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TermParser;
import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TerminologyParser;
String trimmedSearch = searchString.replace("*", "");
String label1 = o1.getLabel();
String label2 = o2.getLabel();
- //1. search string at the beginning
- if(label1.startsWith(trimmedSearch)){
- if(!label2.startsWith(trimmedSearch)){
- return -1;
- }
- else{
- return label1.compareTo(label2);
- }
- }
- else if(label2.startsWith(trimmedSearch)){
- return 1;
- }
- //2. label that contains search string
- if(label1.contains(trimmedSearch)){
- if(!label2.contains(trimmedSearch)){
- return -1;
- }
- }
- else if(label2.contains(trimmedSearch)){
- return 1;
- }
- return label1.compareTo(label2);
+ return StoreUtil.compareBySearchString(trimmedSearch, label1, label2);
}
}
import java.util.List;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
/**
* Wrapper for terms received from the GfBio terminology service.
import org.junit.Test;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
-import eu.etaxonomy.cdm.model.common.DefaultTermInitializer;
import eu.etaxonomy.cdm.model.name.INonViralName;
import eu.etaxonomy.cdm.model.name.Rank;
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
+import eu.etaxonomy.cdm.model.term.DefaultTermInitializer;
/**
* @author n.hoffmann
import org.junit.Test;
-import eu.etaxonomy.cdm.model.common.IEnumTerm;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.IEnumTerm;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.cdm.model.metadata.PreferencePredicate;
import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
import eu.etaxonomy.cdm.model.name.RankClass;
+++ /dev/null
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
Bundle-ManifestVersion: 2
Bundle-Name: eu.etaxonomy.taxeditor.test
Bundle-SymbolicName: eu.etaxonomy.taxeditor.test;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Bundle-ActivationPolicy: lazy
Bundle-Vendor: EDIT
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<artifactId>eu.etaxonomy.taxeditor.test</artifactId>
<packaging>eclipse-test-plugin</packaging>
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.core.context.SecurityContextImpl;
import org.unitils.database.DatabaseUnitils;
import org.unitils.database.annotations.Transactional;
import org.unitils.database.util.TransactionMode;
import eu.etaxonomy.cdm.api.application.CdmDataChangeService;
import eu.etaxonomy.cdm.api.cache.CdmServiceCacher;
import eu.etaxonomy.cdm.cache.CdmRemoteCacheManager;
+import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.taxeditor.remoting.cache.ConversationalTransientEntityCacher;
import eu.etaxonomy.taxeditor.remoting.source.CdmPersistentRemoteSource;
import eu.etaxonomy.taxeditor.remoting.source.CdmRemoteSource;
user,
password);
} catch (Exception e) {
+ System.err.println("user: " + user + " password: " + password);
e.printStackTrace();
// Assert.fail("Server failed to start. Reason : " + e.getMessage());
}
//FIXME:Remoting the authentication code should be replaced by a method call which actually
// does the authentication in the editor code so that the 'real' authentication can be tested
SecurityContextHolder.clearContext();
- SecurityContextImpl sc = new SecurityContextImpl();
- Authentication token = new UsernamePasswordAuthenticationToken(username,password);
+
+ UsernamePasswordAuthenticationToken token = new UsernamePasswordAuthenticationToken(username, password);
Authentication authentication = getRemoteApplicationController().getAuthenticationManager().authenticate(token);
- authentication = new UsernamePasswordAuthenticationToken(username,password, authentication.getAuthorities());
- sc.setAuthentication(authentication);
- SecurityContextHolder.setContext(sc);
+
+ User user = (User) authentication.getPrincipal();
+ /* circumventing problem with hibernate not refreshing the transient collection authorities in this case,
+ * see http://dev.e-taxonomy.eu/trac/ticket/4053 */
+ user.initAuthorities();
+ authentication = new UsernamePasswordAuthenticationToken(user,password, authentication.getAuthorities());
+ SecurityContextHolder.getContext().setAuthentication(authentication);
CdmApplicationState.setCurrentSecurityContext(SecurityContextHolder.getContext());
+
+
+
+
+// SecurityContextHolder.clearContext();
+// SecurityContextImpl sc = new SecurityContextImpl();
+// Authentication token = new UsernamePasswordAuthenticationToken(username,password);
+// Authentication authentication = getRemoteApplicationController().getAuthenticationManager().authenticate(token);
+//
+// authentication = new UsernamePasswordAuthenticationToken(username,password, authentication.getAuthorities());
+// sc.setAuthentication(authentication);
+//
+// SecurityContextHolder.setContext(sc);
+// CdmApplicationState.setCurrentSecurityContext(SecurityContextHolder.getContext());
+
}
@Test
@Ignore
- //FIXME: remove @ignore and fix test
+ //FIXME: remove @ignore and fix test #5632
public void manageCdmServer() throws IOException, URISyntaxException, CDMEmbeddedServerException {
Bundle bundle = Platform.getBundle("eu.etaxonomy.taxeditor.test");
URL mgdDatasourcesConfigURL = bundle.getEntry("src/test/resources/.cdmLibrary/writableResources/mgd.datasources.xml");
import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
+import org.springframework.security.core.userdetails.UserDetails;
import org.springframework.security.core.userdetails.UsernameNotFoundException;
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
import eu.etaxonomy.cdm.api.service.IUserService;
import eu.etaxonomy.cdm.model.common.Group;
import eu.etaxonomy.cdm.model.common.User;
-import eu.etaxonomy.cdm.persistence.dto.MergeResult;
import eu.etaxonomy.taxeditor.remoting.cache.ConversationalTransientEntityCacher;
import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
import eu.etaxonomy.taxeditor.session.MockSessionOwner;
sessionOwner.setCdmEntitySession(cdmEntitySession);
cacher = getCacher(sessionOwner);
- User extraUser = null;
+ UserDetails extraUser = null;
try {
- extraUser = (User) userService.loadUserByUsername(extraUsername);
+ extraUser = userService.loadUserByUsername(extraUsername);
Group editorGroup = getRemoteApplicationController().getGroupService().find(editorGroupUuid);
- if (!extraUser.getGroups().contains(editorGroup)){
- extraUser.getGroups().add(editorGroup);
- userService.merge(extraUser, true);
+ if (!((User)extraUser).getGroups().contains(editorGroup)){
+ ((User)extraUser).getGroups().add(editorGroup);
+ userService.merge(((User)extraUser), true);
+
}
} catch (UsernameNotFoundException unfe) {
- User user = User.NewInstance(extraUsername, extraPassword);
- userService.createUser(user);
+ UserDetails user = User.NewInstance(extraUsername, extraPassword);
+ user = userService.save((User)user);
+ //user = userService.find(((User)user).getUuid());
Group editorGroup = getRemoteApplicationController().getGroupService().find(editorGroupUuid);
- user = userService.load(user.getUuid());
- user.getGroups().add(editorGroup);
- MergeResult<User> result = userService.merge(user, true);
- user = result.getMergedEntity();
+ ((User)user).getGroups().add(editorGroup);
+ userService.merge(((User)user), true);
+
+
}
protected static void authenticateExtraUser() {
+
authenticate(extraUsername, extraPassword);
}
import eu.etaxonomy.cdm.api.service.ITaxonService;
import eu.etaxonomy.cdm.model.common.Annotation;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.OriginalSourceType;
+import eu.etaxonomy.cdm.model.reference.OriginalSourceType;
import eu.etaxonomy.cdm.model.description.DescriptionElementSource;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.TaxonDescription;
import org.eclipse.core.runtime.SubMonitor;
import org.junit.After;
import org.junit.Assert;
-import org.junit.Ignore;
import org.junit.Test;
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
}
@Test
- @Ignore
public void testMonitLongRunningMethodByChangingUser() throws InterruptedException {
IllegalStateException ise = new IllegalStateException("IllegalStateException");
UUID uuid = testService.monitLongRunningMethod(ise, null, 0);
+
authenticateExtraUser();
IRemotingProgressMonitor monitor = progressMonitorService.getRemotingMonitor(uuid);
Assert.assertNull(monitor);
import eu.etaxonomy.cdm.api.application.CdmApplicationState;
import eu.etaxonomy.cdm.api.cache.CdmServiceCacher;
import eu.etaxonomy.cdm.api.service.ITermService;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.Language;
-import eu.etaxonomy.cdm.model.common.TermType;
+import eu.etaxonomy.cdm.model.term.TermType;
import eu.etaxonomy.taxeditor.httpinvoker.RemotingSessionAwareTest;
public class ServiceInterceptorTest extends RemotingSessionAwareTest {
import eu.etaxonomy.cdm.model.agent.Person;
import eu.etaxonomy.cdm.model.common.CdmBase;
import eu.etaxonomy.cdm.model.common.Credit;
-import eu.etaxonomy.cdm.model.common.DefinedTermBase;
+import eu.etaxonomy.cdm.model.term.DefinedTermBase;
import eu.etaxonomy.cdm.model.common.Extension;
import eu.etaxonomy.cdm.model.common.IdentifiableSource;
import eu.etaxonomy.cdm.model.common.Language;
import eu.etaxonomy.cdm.model.common.LanguageString;
-import eu.etaxonomy.cdm.model.common.TermType;
-import eu.etaxonomy.cdm.model.common.TermVocabulary;
+import eu.etaxonomy.cdm.model.term.TermType;
+import eu.etaxonomy.cdm.model.term.TermVocabulary;
import eu.etaxonomy.cdm.model.description.Feature;
import eu.etaxonomy.cdm.model.description.KeyStatement;
import eu.etaxonomy.cdm.model.description.PolytomousKey;
+++ /dev/null
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=1.8
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.8
Bundle-ManifestVersion: 2
Bundle-Name: Webapp
Bundle-SymbolicName: eu.etaxonomy.taxeditor.webapp;singleton:=true
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Require-Bundle: org.eclipse.core.runtime
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-ActivationPolicy: lazy
lib/c3p0-0.9.5.2.jar,
lib/h2-1.4.190.jar,
lib/mchange-commons-java-0.2.11.jar,
- lib/mysql-connector-java-5.1.38.jar,
lib/postgresql-9.4-1206-jdbc4.jar,
- lib/jdbc4-2.0.jar
+ lib/jdbc4-2.0.jar,
+ lib/mysql-connector-java-8.0.15.jar
Bundle-Vendor: EDIT
Import-Package: org.eclipse.jface.resource,
org.eclipse.ui.plugin
lib/,\
lib/h2-1.4.190.jar,\
lib/mchange-commons-java-0.2.11.jar,\
- lib/mysql-connector-java-5.1.38.jar,\
lib/postgresql-9.4-1206-jdbc4.jar,\
- lib/jdbc4-2.0.jar
+ lib/jdbc4-2.0.jar,\
+ lib/mysql-connector-java-8.0.15.jar
output.. = bin/
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>eu.etaxonomy.taxeditor.webapp</artifactId>
eu.etaxonomy.taxeditor.workbench,
eu.etaxonomy.taxeditor.workbench.part
Bundle-Name: Workbench Bundle
-Bundle-Version: 5.5.1
+Bundle-Version: 5.6.0
Require-Bundle: org.eclipse.ui,
org.eclipse.core.runtime,
org.eclipse.e4.ui.workbench,
<children xsi:type="menu:HandledMenuItem" xmi:id="_b4RFsCQsEeeq76l4saMAFQ" elementId="eu.etaxonomy.taxeditor.workbench.menu.admin.dbpreferences" label="%command.label.23" command="_VawPsCQsEeeq76l4saMAFQ">
<visibleWhen xsi:type="ui:CoreExpression" xmi:id="_b4RFsSQsEeeq76l4saMAFQ" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
</children>
- <children xsi:type="menu:HandledMenuItem" xmi:id="_cWhvACQsEeeq76l4saMAFQ" elementId="eu.etaxonomy.taxeditor.workbench.menu.admin.dbrepair" label="%command.label.24" command="_Va29YCQsEeeq76l4saMAFQ">
- <visibleWhen xsi:type="ui:CoreExpression" xmi:id="_cWhvASQsEeeq76l4saMAFQ" coreExpressionId="hasROLE_PROJECT_MANAGER_AND_isCdmStoreConnected"/>
- </children>
+ <children xsi:type="menu:Menu" xmi:id="_NS6cwD8zEemTy7SLZkowuQ" elementId="eu.etaxonomy.taxeditor.workbench.menu.databaseRepair" label="Database Repair Functionality"/>
</children>
<children xsi:type="menu:Menu" xmi:id="_FaGnvyQNEeen_7LZsZSNoA" elementId="eu.etaxonomy.taxeditor.workbench.menu.help" label="%menu.label.2" mnemonics="H">
<children xsi:type="menu:HandledMenuItem" xmi:id="_3cDNACQ7EeeKsvEah5BAoQ" elementId="eu.etaxonomy.taxeditor.workbench.menu.help.help_contents" label="%command.label.13" mnemonics="H" command="_xOYw4CQ7EeeKsvEah5BAoQ"/>
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<?xml version="1.0" encoding="UTF-8"?>
-<?pde version="3.5"?><product application="eu.etaxonomy.taxeditor.application.application" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" includeLaunchers="true" name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product" useFeatures="true" version="5.5.1">
+<?pde version="3.5"?><product application="eu.etaxonomy.taxeditor.application.application" id="eu.etaxonomy.taxeditor.application.eu_etaxonomy_taxeditor_product" includeLaunchers="true" name="EDIT Taxonomic Editor" uid="eu.etaxonomy.taxeditor.product" useFeatures="true" version="5.6.0">
<aboutInfo>
<image path="/eu.etaxonomy.taxeditor.application/icons/256color_48x48.gif"/>
<text>
<parent>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
</parent>
<modelVersion>4.0.0</modelVersion>
</prerequisites>
<groupId>eu.etaxonomy</groupId>
<artifactId>taxeditor-parent</artifactId>
- <version>5.5.1</version>
+ <version>5.6.0</version>
<name>EDIT Taxonomic Editor</name>
<description>The Taxonomic Editor for EDIT's platform for
cybertaxonomy
<properties>
<java.codelevel>1.8</java.codelevel>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <cdmlib.version>5.5.1</cdmlib.version>
+ <cdmlib.version>5.6.0</cdmlib.version>
<!-- TODO can we use project.version ????? -->
<!-- Increasing tycho above 0.22.0 will fail for the macosx build because
for higher version numbers tycho needs to be build against Eclipse Mars or
higher -->
<tycho.version>1.0.0</tycho.version>
- <taxeditor.version>5.5.1</taxeditor.version>
+ <taxeditor.version>5.6.0</taxeditor.version>
<update.dir>snapshot</update.dir>
<unitils.version>3.4.2</unitils.version>
<log4j.version>1.2.17</log4j.version>
read choice
if [ "$choice" == "y" ]; then
- find -type f -name ".classpath" -or -name ".project" -prune -exec rm -f {} \;
- find -type d -name ".settings" -prune -exec rm -rf {} \;
+ find . -type f \( -name ".classpath" -o -name "*.project" \) -prune -exec rm -f {} \;
+ find . -type d -name ".settings" -prune -exec rm -rf {} \;
fi
echo -n "Use the local repo? [y,N]"