import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotation;
import eu.etaxonomy.taxeditor.annotatedlineeditor.LineAnnotationModel;
import eu.etaxonomy.taxeditor.bulkeditor.input.AbstractBulkEditorInput;
+import eu.etaxonomy.taxeditor.bulkeditor.input.TaxonEditorInput;
import eu.etaxonomy.taxeditor.model.IDerivedUnitFacadePart;
import eu.etaxonomy.taxeditor.model.IDirtyMarkable;
import eu.etaxonomy.taxeditor.model.IPartContentHasDetails;
menu.remove(ITextEditorActionConstants.SHIFT_LEFT);
menu.remove(ITextEditorActionConstants.CONTEXT_PREFERENCES);
}
+
+ @Override
+ public boolean canAttachMedia() {
+ return getEditorInput() instanceof TaxonEditorInput?true:false;
+ }
}
@Override\r
public Object execute(ExecutionEvent event) throws ExecutionException {\r
ISelection selection = HandlerUtil.getCurrentSelection(event);\r
- \r
+\r
IEditorPart editor = HandlerUtil.getActiveEditor(event);\r
- \r
+\r
IEditorInput input = editor.getEditorInput();\r
if (editor.isDirty()){\r
boolean proceed = MessageDialog.openQuestion(null,\r
}\r
}\r
if((input instanceof IEntityPersistenceService) && (selection instanceof IStructuredSelection)){\r
- \r
- \r
+\r
+\r
IDocumentProvider provider = ((BulkEditor) editor).getDocumentProvider();\r
- LineAnnotationModel model = \r
+ LineAnnotationModel model =\r
(LineAnnotationModel) provider.getAnnotationModel(input);\r
- \r
- \r
+\r
+\r
IStructuredSelection structuredSelection = (IStructuredSelection) selection;\r
- \r
+\r
IEntityPersistenceService persistenceService = (IEntityPersistenceService) input;\r
- \r
+\r
Team team ;\r
for(Object object : structuredSelection.toList()){\r
LineAnnotation annotation = (LineAnnotation) model.getAnnotation(object);\r
} catch (IllegalArgumentException e) {\r
MessagingUtils.errorDialog("Can not convert Person into a Team", null, e.getLocalizedMessage(), TaxeditorBulkeditorPlugin.PLUGIN_ID,e, true);\r
} catch (MergeException e) {\r
- MessagingUtils.errorDialog("Can not convert Person into a Team", null, e.getMessage(), TaxeditorBulkeditorPlugin.PLUGIN_ID,e, true);\r
+ MessagingUtils.informationDialog("Convert not possible", "Person can not be transformed into team as it is referenced in a way that does not allow converting");\r
}\r
}else{\r
MessagingUtils.informationDialog("Can not convert Person into a Team", "convert Person to Team can only be called on a person.");\r
}\r
- \r
+\r
if (team != null){\r
((BulkEditor) editor).removeAnnotatedLine(annotation);\r
((BulkEditor) editor).createAnnotatedLine(team);\r
public boolean merge(TeamOrPersonBase entity, TeamOrPersonBase mergeTarget) {
if (entity instanceof IMergable) {
try {
- if(entity instanceof Person) {
+ if(entity instanceof Person && mergeTarget instanceof Person) {
IMergeStrategy strategy = DefaultMergeStrategy.NewInstance(Person.class);
strategy.setMergeMode("institutionalMemberships", MergeMode.FIRST);
CdmStore.getCommonService().merge(mergeTarget.getId(), entity.getId(), Person.class);
}
showViewer();
}catch(Exception e){
- setContentDescription("Some Problems occured.");
+ setContentDescription("The referencing objects view could not be loaded completely. Some Problems occured.");
}
}
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-commons-3.8.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-ext-3.8.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-io-3.8.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-3.8.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-3.8.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-print-3.8.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-3.8.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cdmlib-services-3.8.0-SNAPSHOT.jar"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src/main/java"/>
- <classpathentry kind="src" path="src/main/resources"/>
- <classpathentry exported="true" kind="lib" path="lib/activation-1.1.1.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/aspectjrt-1.7.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/aspectjweaver-1.7.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/avro-1.6.3.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-dom-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/batik-ext-1.7.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/batik-xml-1.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/c3p0-0.9.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/cglib-nodep-2.2.2.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.8.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-codec-20041127.091804.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-collections-3.2.1.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-logging-1.1.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/commons-pool-1.5.4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/concurrent-1.3.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/doxia-core-1.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/doxia-logging-api-1.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/doxia-module-apt-1.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/doxia-module-xhtml-1.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/doxia-sink-api-1.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/dozer-5.3.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/easymock-3.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/easymockclassextension-2.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/ehcache-core-2.6.9.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/ezmorph-1.0.6.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/fop-1.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/guava-r05.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/h2-1.3.170.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hamcrest-core-1.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-c3p0-4.1.10.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-4.0.1.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-core-4.1.10.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-ehcache-4.1.10.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-entitymanager-4.1.10.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-envers-4.1.10.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-jpa-2.0-api-1.0.1.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-4.2.0.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-search-orm-4.2.0.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hibernate-validator-4.3.1.Final.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/hsqldb-1.8.0.10.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/httpclient-4.2.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/httpcore-4.2.4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/icu4j-2.6.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/identificationKeyAPI-1.0-SNAPSHOT-sources.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/identificationKeyAPI-1.0-SNAPSHOT.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/itextpdf-5.4.0.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/javassist-3.17.1-GA.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jaxb-api-2.2.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jaxb-impl-2.2-EA.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jaxb-xjc-2.2-EA.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/jboss-logging-3.1.3.GA.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/jdbc4-2.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jdom-1.1.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/joda-time-2.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/json-lib-2.4-jdk15.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jsr250-api-1.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jtds-1.3.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/junit-4.11.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/junit-benchmarks-0.5.0.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/lsid-server-1.1.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-analyzers-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-core-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-facet-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-grouping-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-highlighter-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-kuromoji-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-memory-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-misc-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-phonetic-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-queries-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-smartcn-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-spatial-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-spellchecker-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/lucene-stempel-3.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/mchange-commons-java-0.2.3.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/mysql-connector-java-5.1.24.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/objenesis-1.2.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/opencsv-2.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.eclipse.equinox.common-3.6.0.v20110523.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.eclipse.osgi-3.7.2.v20120110-1415.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.osgi.core-1.0.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.aop-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.aspects-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.beans-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.context-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.core-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.expression-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.jdbc-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.orm-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.oxm-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.test-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.transaction-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.web-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/org.springframework.web.servlet-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/osgi-3.6.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/p6spy-1.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/paranamer-2.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/plexus-classworlds-1.2-alpha-9.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/plexus-container-default-1.0-alpha-30.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/plexus-utils-2.0.5.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/postgresql-9.1-901.jdbc4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/sanselan-0.97-incubator.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/servlet-api-2.5.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.7.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/slf4j-log4j12-1.7.2.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/spring-aop-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-beans-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-context-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-context-support-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-core-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-expression-3.2.2.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-modules-cache-0.7.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-security-config-3.1.3.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-security-core-3.1.3.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/stax-1.2.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/stax-api-1.0.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-core-3.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-database-3.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-dbmaintainer-3.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-dbunit-3.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-easymock-3.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-inject-3.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-mock-3.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-orm-3.3.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/unitils-spring-3.3.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.0.0.GA.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/wsdl4j-1.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xalan-2.6.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/xmlgraphics-commons-1.5.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xmlParserAPIs-2.6.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xmlpull-1.1.3.1.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xmlunit-1.4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xom-1.0.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/xstream-1.4.4.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/yjp-controller-api-redist-9.0.8.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/google-api-translate-java-0.92.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/odfdom-0.8.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/h2mig_pagestore_addon.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/spring-security-remoting-3.1.3.RELEASE.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jena-core-2.11.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/jena-iri-1.0.2.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/poi-3.10-FINAL.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-3.10-FINAL.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/xmlbeans-2.3.0.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-schemas-3.10-FINAL.jar"/>
- <classpathentry exported="true" kind="lib" path="lib/swagger-annotations-1.3.5.jar"/>
- <classpathentry kind="output" path="target/classes"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>\r
+<classpath>\r
+ <classpathentry exported="true" kind="lib" path="lib/cdmlib-commons-3.8.0-SNAPSHOT.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/cdmlib-ext-3.8.0-SNAPSHOT.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/cdmlib-io-3.8.0-SNAPSHOT.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/cdmlib-model-3.8.0-SNAPSHOT.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/cdmlib-persistence-3.8.0-SNAPSHOT.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/cdmlib-print-3.8.0-SNAPSHOT.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/cdmlib-remote-3.8.0-SNAPSHOT.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/cdmlib-services-3.8.0-SNAPSHOT.jar" sourcepath="lib/cdmlib-services-3.8.0-SNAPSHOT-sources.jar"/>\r
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>\r
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>\r
+ <classpathentry kind="src" path="src/main/java"/>\r
+ <classpathentry kind="src" path="src/main/resources"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/activation-1.1.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/antlr-2.7.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/aopalliance-1.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/aspectjrt-1.7.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/aspectjweaver-1.7.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/avro-1.6.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-anim-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-awt-util-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-bridge-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-css-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-dom-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-ext-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-extension-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-gvt-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-js-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-parser-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-script-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-svg-dom-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-svggen-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-transcoder-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-util-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/batik-xml-1.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/c3p0-0.9.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/cglib-nodep-2.2.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/com.springsource.org.aopalliance-1.0.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/com.springsource.org.apache.commons.logging-1.1.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/commons-beanutils-1.8.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/commons-codec-20041127.091804.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/commons-collections-3.2.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/commons-dbcp-1.4.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/commons-io-2.4.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/commons-lang-2.6.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/commons-logging-1.1.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/commons-pool-1.5.4.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/concurrent-1.3.4.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/dbunit-2.4.9.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/dom4j-1.6.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/doxia-core-1.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/doxia-logging-api-1.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/doxia-module-apt-1.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/doxia-module-xhtml-1.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/doxia-sink-api-1.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/dozer-5.3.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/easymock-3.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/easymockclassextension-2.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/ehcache-core-2.6.9.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/ezmorph-1.0.6.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/fop-1.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/guava-r05.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/h2-1.3.170.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hamcrest-core-1.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-c3p0-4.1.10.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-cglib-repack-2.1_3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-commons-annotations-4.0.1.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-core-4.1.10.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-ehcache-4.1.10.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-entitymanager-4.1.10.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-envers-4.1.10.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-jpa-2.0-api-1.0.1.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-search-4.2.0.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-search-analyzers-4.2.0.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-search-engine-4.2.0.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-search-orm-4.2.0.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hibernate-validator-4.3.1.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/hsqldb-1.8.0.10.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/httpclient-4.2.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/httpcore-4.2.4.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/icu4j-2.6.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/identificationKeyAPI-1.0-SNAPSHOT-sources.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/identificationKeyAPI-1.0-SNAPSHOT.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/itextpdf-5.4.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jackson-core-asl-1.8.8.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jackson-mapper-asl-1.8.8.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jakarta-regexp-1.4.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/javassist-3.17.1-GA.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jaxb-api-2.2.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jaxb-impl-2.2-EA.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jaxb-xjc-2.2-EA.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jaxb1-impl-2.2-EA.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jaxen-1.1.4.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jboss-logging-3.1.3.GA.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jboss-transaction-api_1.1_spec-1.0.0.Final.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jdbc4-2.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jdom-1.1.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/joda-time-2.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/json-lib-2.4-jdk15.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jsr250-api-1.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jtds-1.3.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/junit-4.11.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/junit-benchmarks-0.5.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/log4j-1.2.17.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lsid-client-1.1.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lsid-server-1.1.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-analyzers-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-core-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-facet-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-grouping-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-highlighter-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-kuromoji-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-memory-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-misc-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-phonetic-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-queries-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-smartcn-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-spatial-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-spellchecker-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/lucene-stempel-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/mchange-commons-java-0.2.3.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/mysql-connector-java-5.1.24.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/objenesis-1.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/odfdom-java-0.8.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/ognl-2.6.9.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/opencsv-2.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.eclipse.equinox.common-3.6.0.v20110523.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.eclipse.osgi-3.7.2.v20120110-1415.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.osgi.core-1.0.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.aop-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.aspects-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.beans-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.context-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.core-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.expression-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.jdbc-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.orm-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.oxm-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.test-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.transaction-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.web-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/org.springframework.web.servlet-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/osgi-3.6.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/p6spy-1.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/paranamer-2.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/plexus-classworlds-1.2-alpha-9.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/plexus-container-default-1.0-alpha-30.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/plexus-utils-2.0.5.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/postgresql-9.1-901.jdbc4.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/sanselan-0.97-incubator.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/servlet-api-2.5.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/slf4j-api-1.7.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/slf4j-log4j12-1.7.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/snappy-java-1.0.4.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/solr-analysis-extras-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/solr-core-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/solr-solrj-3.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/spring-aop-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/spring-beans-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/spring-context-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/spring-context-support-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/spring-core-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/spring-expression-3.2.2.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/spring-modules-cache-0.7.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/spring-security-config-3.1.3.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/spring-security-core-3.1.3.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/stax-1.2.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/stax-api-1.0.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/unitils-core-3.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/unitils-database-3.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/unitils-dbmaintainer-3.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/unitils-dbunit-3.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/unitils-easymock-3.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/unitils-inject-3.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/unitils-mock-3.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/unitils-orm-3.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/unitils-spring-3.3.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/usertype.jodatime-2.0.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/usertype.spi-2.0.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/validation-api-1.0.0.GA.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/wsdl4j-1.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xalan-2.6.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xercesImpl-2.11.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xml-apis-1.0.b2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xml-apis-ext-1.3.04.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xml-resolver-1.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xmlgraphics-commons-1.5.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xmlParserAPIs-2.6.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xmlpull-1.1.3.1.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xmlunit-1.4.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xom-1.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xpp3_min-1.1.4c.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xpp3-1.1.4c.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xstream-1.4.4.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/yjp-controller-api-redist-9.0.8.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/google-api-translate-java-0.92.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/odfdom-0.8.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/h2mig_pagestore_addon.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/spring-security-remoting-3.1.3.RELEASE.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jena-core-2.11.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/jena-iri-1.0.2.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/poi-3.10-FINAL.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-3.10-FINAL.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/xmlbeans-2.3.0.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/poi-ooxml-schemas-3.10-FINAL.jar"/>\r
+ <classpathentry exported="true" kind="lib" path="lib/swagger-annotations-1.3.5.jar"/>\r
+ <classpathentry kind="output" path="target/classes"/>\r
+</classpath>\r
--- /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.editor.name.container;
+
+import java.util.Iterator;
+
+import org.apache.log4j.Logger;
+import org.eclipse.jface.text.BadLocationException;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.ITextListener;
+import org.eclipse.jface.text.ITextViewer;
+import org.eclipse.jface.text.ITextViewerExtension5;
+import org.eclipse.jface.text.IViewportListener;
+import org.eclipse.jface.text.JFaceTextUtil;
+import org.eclipse.jface.text.Position;
+import org.eclipse.jface.text.Region;
+import org.eclipse.jface.text.TextEvent;
+import org.eclipse.jface.text.source.Annotation;
+import org.eclipse.jface.text.source.IAnnotationAccess;
+import org.eclipse.jface.text.source.IAnnotationAccessExtension;
+import org.eclipse.jface.text.source.IAnnotationModel;
+import org.eclipse.jface.text.source.IAnnotationModelListener;
+import org.eclipse.jface.text.source.IAnnotationPresentation;
+import org.eclipse.jface.text.source.IVerticalRuler;
+import org.eclipse.jface.text.source.IVerticalRulerExtension;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.events.MouseEvent;
+import org.eclipse.swt.events.MouseListener;
+import org.eclipse.swt.events.PaintEvent;
+import org.eclipse.swt.events.PaintListener;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.GC;
+import org.eclipse.swt.graphics.Image;
+import org.eclipse.swt.graphics.Point;
+import org.eclipse.swt.graphics.Rectangle;
+import org.eclipse.swt.widgets.Canvas;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.forms.widgets.TableWrapData;
+
+/**
+ * 99% of the code in this class was copied from org.eclipse.jface.text.source.VerticalRuler,
+ * which allows neither access to its paint methods nor subclassing to do same.
+ * <p>
+ * Changes made in method doubleBufferPaint(doubleBufferPaint(GC dest)).
+ *
+ * @see org.eclipse.jface.text.source.VerticalRuler
+ * @author p.ciardelli
+ * @created 27.01.2009
+ * @version 1.0
+ */
+public class RulerWithIcon implements IVerticalRuler, IVerticalRulerExtension {
+ private static final Logger logger = Logger.getLogger(RulerWithIcon.class);
+
+ /**
+ * Internal listener class.
+ */
+ class InternalListener implements IViewportListener, IAnnotationModelListener, ITextListener {
+
+ /*
+ * @see IViewportListener#viewportChanged(int)
+ */
+ public void viewportChanged(int verticalPosition) {
+ if (verticalPosition != fScrollPos)
+ redraw();
+ }
+
+ /*
+ * @see IAnnotationModelListener#modelChanged(IAnnotationModel)
+ */
+ public void modelChanged(IAnnotationModel model) {
+ update();
+ }
+
+ /*
+ * @see ITextListener#textChanged(TextEvent)
+ */
+ public void textChanged(TextEvent e) {
+ if (fTextViewer != null && e.getViewerRedrawState())
+ redraw();
+ }
+ }
+
+ /** The vertical ruler's text viewer */
+ private ITextViewer fTextViewer;
+ /** The ruler's canvas */
+ private Canvas fCanvas;
+ /** The vertical ruler's model */
+ private IAnnotationModel fModel;
+ /** Cache for the actual scroll position in pixels */
+ private int fScrollPos;
+ /** The buffer for double buffering */
+ private Image fBuffer;
+ /** The line of the last mouse button activity */
+ private int fLastMouseButtonActivityLine= -1;
+ /** The internal listener */
+ private InternalListener fInternalListener= new InternalListener();
+ /** The width of this vertical ruler */
+ private int fWidth;
+ /**
+ * The annotation access of this vertical ruler
+ * @since 3.0
+ */
+ private IAnnotationAccess fAnnotationAccess;
+ private Image icon;
+
+ /**
+ * Constructs a vertical ruler with the given width.
+ *
+ * @param width the width of the vertical ruler
+ */
+ public RulerWithIcon(int width) {
+ this(width, null);
+ }
+
+ /**
+ * Constructs a vertical ruler with the given width and the given annotation
+ * access.
+ *
+ * @param width the width of the vertical ruler
+ * @param annotationAcccess the annotation access
+ * @since 3.0
+ */
+ public RulerWithIcon(int width, IAnnotationAccess annotationAcccess) {
+ fWidth= width;
+ fAnnotationAccess= annotationAcccess;
+ }
+
+ /*
+ * @see IVerticalRuler#getControl()
+ */
+ /**
+ * <p>getControl</p>
+ *
+ * @return a {@link org.eclipse.swt.widgets.Control} object.
+ */
+ public Control getControl() {
+ return fCanvas;
+ }
+
+ /*
+ * @see IVerticalRuler#createControl(Composite, ITextViewer)
+ */
+ /** {@inheritDoc} */
+ public Control createControl(Composite parent, ITextViewer textViewer) {
+
+ fTextViewer= textViewer;
+
+ fCanvas= new Canvas(parent, SWT.NO_BACKGROUND);
+
+ TableWrapData layout = new TableWrapData(TableWrapData.LEFT);
+ layout.heightHint = 20;
+ layout.maxWidth = fWidth;
+ fCanvas.setLayoutData(layout);
+
+ fCanvas.addPaintListener(new PaintListener() {
+ public void paintControl(PaintEvent event) {
+ if (fTextViewer != null)
+ doubleBufferPaint(event.gc);
+ }
+ });
+
+ fCanvas.addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(DisposeEvent e) {
+ handleDispose();
+ fTextViewer= null;
+ }
+ });
+
+ fCanvas.addMouseListener(new MouseListener() {
+ public void mouseUp(MouseEvent event) {
+ }
+
+ public void mouseDown(MouseEvent event) {
+ fLastMouseButtonActivityLine= toDocumentLineNumber(event.y);
+ }
+
+ public void mouseDoubleClick(MouseEvent event) {
+ fLastMouseButtonActivityLine= toDocumentLineNumber(event.y);
+ }
+ });
+
+ if (fTextViewer != null) {
+ fTextViewer.addViewportListener(fInternalListener);
+ fTextViewer.addTextListener(fInternalListener);
+ }
+
+ return fCanvas;
+ }
+
+ /**
+ * Disposes the ruler's resources.
+ */
+ private void handleDispose() {
+
+ if (fTextViewer != null) {
+ fTextViewer.removeViewportListener(fInternalListener);
+ fTextViewer.removeTextListener(fInternalListener);
+ fTextViewer= null;
+ }
+
+ if (fModel != null)
+ fModel.removeAnnotationModelListener(fInternalListener);
+
+ if (fBuffer != null) {
+ fBuffer.dispose();
+ fBuffer= null;
+ }
+ }
+
+
+ /**
+ * Double buffer drawing.
+ *
+ * @param dest the GC to draw into
+ */
+ private void doubleBufferPaint(GC dest) {
+
+ Point size= fCanvas.getSize();
+
+ if (size.x <= 0 || size.y <= 0)
+ return;
+
+ if (fBuffer != null) {
+ Rectangle r= fBuffer.getBounds();
+ if (r.width != size.x || r.height != size.y) {
+ fBuffer.dispose();
+ fBuffer= null;
+ }
+ }
+ if (fBuffer == null)
+ fBuffer= new Image(fCanvas.getDisplay(), size.x, size.y);
+
+ GC gc= new GC(fBuffer);
+ gc.setFont(fTextViewer.getTextWidget().getFont());
+ try {
+ gc.setBackground(fCanvas.getBackground());
+ gc.fillRectangle(0, 0, size.x, size.y);
+
+ // Code added to VerticalRuler starts here
+ if (icon != null) {
+
+ Rectangle r = icon.getBounds();
+
+ if (r.width > size.x || r.height > size.y) {
+ logger.warn(r.width + "x" + r.height + " icon too big for " + size.x + "x" + size.y + " Canvas.");
+ } else {
+
+ // Set destination coordinates to center icon
+ int x = (size.x - r.width) / 2;
+ int y = (size.y - r.height) / 2;
+
+ gc.drawImage(icon, 0, 0, r.width, r.height, x, y, r.width, r.height);
+ }
+ }
+ // Code added to VerticalRuler ends here
+
+ if (fTextViewer instanceof ITextViewerExtension5)
+ doPaint1(gc);
+ else
+ doPaint(gc);
+
+ } finally {
+ gc.dispose();
+ }
+
+ dest.drawImage(fBuffer, 0, 0);
+ }
+
+ /**
+ * Returns the document offset of the upper left corner of the
+ * widgets view port, possibly including partially visible lines.
+ *
+ * @return the document offset of the upper left corner including partially visible lines
+ * @since 2.0
+ */
+ private int getInclusiveTopIndexStartOffset() {
+
+ StyledText textWidget= fTextViewer.getTextWidget();
+ if (textWidget != null && !textWidget.isDisposed()) {
+ int top= JFaceTextUtil.getPartialTopIndex(fTextViewer);
+ try {
+ IDocument document= fTextViewer.getDocument();
+ return document.getLineOffset(top);
+ } catch (BadLocationException x) {
+ }
+ }
+
+ return -1;
+ }
+
+
+
+ /**
+ * Draws the vertical ruler w/o drawing the Canvas background.
+ *
+ * @param gc the GC to draw into
+ */
+ protected void doPaint(GC gc) {
+
+ if (fModel == null || fTextViewer == null)
+ return;
+
+ IAnnotationAccessExtension annotationAccessExtension= null;
+ if (fAnnotationAccess instanceof IAnnotationAccessExtension)
+ annotationAccessExtension= (IAnnotationAccessExtension) fAnnotationAccess;
+
+ StyledText styledText= fTextViewer.getTextWidget();
+ IDocument doc= fTextViewer.getDocument();
+
+ int topLeft= getInclusiveTopIndexStartOffset();
+ int bottomRight= fTextViewer.getBottomIndexEndOffset();
+ int viewPort= bottomRight - topLeft;
+
+ Point d= fCanvas.getSize();
+ fScrollPos= styledText.getTopPixel();
+
+ int topLine= -1, bottomLine= -1;
+ try {
+ IRegion region= fTextViewer.getVisibleRegion();
+ topLine= doc.getLineOfOffset(region.getOffset());
+ bottomLine= doc.getLineOfOffset(region.getOffset() + region.getLength());
+ } catch (BadLocationException x) {
+ return;
+ }
+
+ // draw Annotations
+ Rectangle r= new Rectangle(0, 0, 0, 0);
+ int maxLayer= 1; // loop at least once though layers.
+
+ for (int layer= 0; layer < maxLayer; layer++) {
+ Iterator<?> iter= fModel.getAnnotationIterator();
+ while (iter.hasNext()) {
+ IAnnotationPresentation annotationPresentation= null;
+ Annotation annotation= (Annotation) iter.next();
+
+ int lay= IAnnotationAccessExtension.DEFAULT_LAYER;
+ if (annotationAccessExtension != null)
+ lay= annotationAccessExtension.getLayer(annotation);
+ else if (annotation instanceof IAnnotationPresentation) {
+ annotationPresentation= (IAnnotationPresentation)annotation;
+ lay= annotationPresentation.getLayer();
+ }
+ maxLayer= Math.max(maxLayer, lay+1); // dynamically update layer maximum
+ if (lay != layer) // wrong layer: skip annotation
+ continue;
+
+ Position position= fModel.getPosition(annotation);
+ if (position == null)
+ continue;
+
+ if (!position.overlapsWith(topLeft, viewPort))
+ continue;
+
+ try {
+
+ int offset= position.getOffset();
+ int length= position.getLength();
+
+ int startLine= doc.getLineOfOffset(offset);
+ if (startLine < topLine)
+ startLine= topLine;
+
+ int endLine= startLine;
+ if (length > 0)
+ endLine= doc.getLineOfOffset(offset + length - 1);
+ if (endLine > bottomLine)
+ endLine= bottomLine;
+
+ startLine -= topLine;
+ endLine -= topLine;
+
+ r.x= 0;
+ r.y= JFaceTextUtil.computeLineHeight(styledText, 0, startLine, startLine) - fScrollPos;
+
+ r.width= d.x;
+ int lines= endLine - startLine;
+
+ r.height= JFaceTextUtil.computeLineHeight(styledText, startLine, endLine + 1, (lines+1));
+
+ if (r.y < d.y && annotationAccessExtension != null) // annotation within visible area
+ annotationAccessExtension.paint(annotation, gc, fCanvas, r);
+ else if (annotationPresentation != null)
+ annotationPresentation.paint(gc, fCanvas, r);
+
+ } catch (BadLocationException e) {
+ }
+ }
+ }
+ }
+
+ /**
+ * Draws the vertical ruler w/o drawing the Canvas background. Uses
+ * <code>ITextViewerExtension5</code> for its implementation. Will replace
+ * <code>doPaint(GC)</code>.
+ *
+ * @param gc the GC to draw into
+ */
+ protected void doPaint1(GC gc) {
+
+ if (fModel == null || fTextViewer == null)
+ return;
+
+ IAnnotationAccessExtension annotationAccessExtension= null;
+ if (fAnnotationAccess instanceof IAnnotationAccessExtension)
+ annotationAccessExtension= (IAnnotationAccessExtension) fAnnotationAccess;
+
+ ITextViewerExtension5 extension= (ITextViewerExtension5) fTextViewer;
+ StyledText textWidget= fTextViewer.getTextWidget();
+
+ fScrollPos= textWidget.getTopPixel();
+ Point dimension= fCanvas.getSize();
+
+ // draw Annotations
+ Rectangle r= new Rectangle(0, 0, 0, 0);
+ int maxLayer= 1; // loop at least once through layers.
+
+ for (int layer= 0; layer < maxLayer; layer++) {
+ Iterator<?> iter= fModel.getAnnotationIterator();
+ while (iter.hasNext()) {
+ IAnnotationPresentation annotationPresentation= null;
+ Annotation annotation= (Annotation) iter.next();
+
+ int lay= IAnnotationAccessExtension.DEFAULT_LAYER;
+ if (annotationAccessExtension != null)
+ lay= annotationAccessExtension.getLayer(annotation);
+ else if (annotation instanceof IAnnotationPresentation) {
+ annotationPresentation= (IAnnotationPresentation)annotation;
+ lay= annotationPresentation.getLayer();
+ }
+ maxLayer= Math.max(maxLayer, lay+1); // dynamically update layer maximum
+ if (lay != layer) // wrong layer: skip annotation
+ continue;
+
+ Position position= fModel.getPosition(annotation);
+ if (position == null)
+ continue;
+
+ IRegion widgetRegion= extension.modelRange2WidgetRange(new Region(position.getOffset(), position.getLength()));
+ if (widgetRegion == null)
+ continue;
+
+ int startLine= extension.widgetLineOfWidgetOffset(widgetRegion.getOffset());
+ if (startLine == -1)
+ continue;
+
+ int endLine= extension.widgetLineOfWidgetOffset(widgetRegion.getOffset() + Math.max(widgetRegion.getLength() -1, 0));
+ if (endLine == -1)
+ continue;
+
+ r.x= 0;
+ r.y= JFaceTextUtil.computeLineHeight(textWidget, 0, startLine, startLine) - fScrollPos;
+
+ r.width= dimension.x;
+ int lines= endLine - startLine;
+
+ r.height= JFaceTextUtil.computeLineHeight(textWidget, startLine, endLine + 1, lines+1);
+
+ if (r.y < dimension.y && annotationAccessExtension != null) // annotation within visible area
+ annotationAccessExtension.paint(annotation, gc, fCanvas, r);
+ else if (annotationPresentation != null)
+ annotationPresentation.paint(gc, fCanvas, r);
+ }
+ }
+ }
+
+ /**
+ * Thread-safe implementation.
+ * Can be called from any thread.
+ */
+ /*
+ * @see IVerticalRuler#update()
+ */
+ public void update() {
+ if (fCanvas != null && !fCanvas.isDisposed()) {
+ Display d= fCanvas.getDisplay();
+ if (d != null) {
+ d.asyncExec(new Runnable() {
+ public void run() {
+ redraw();
+ }
+ });
+ }
+ }
+ }
+
+ /**
+ * Redraws the vertical ruler.
+ */
+ private void redraw() {
+ if (fCanvas != null && !fCanvas.isDisposed()) {
+ GC gc= new GC(fCanvas);
+ doubleBufferPaint(gc);
+ gc.dispose();
+ }
+ }
+
+ /*
+ * @see IVerticalRuler#setModel(IAnnotationModel)
+ */
+ /** {@inheritDoc} */
+ public void setModel(IAnnotationModel model) {
+ if (model != fModel) {
+
+ if (fModel != null)
+ fModel.removeAnnotationModelListener(fInternalListener);
+
+ fModel= model;
+
+ if (fModel != null)
+ fModel.addAnnotationModelListener(fInternalListener);
+
+ update();
+ }
+ }
+
+ /*
+ * @see IVerticalRuler#getModel()
+ */
+ /**
+ * <p>getModel</p>
+ *
+ * @return a {@link org.eclipse.jface.text.source.IAnnotationModel} object.
+ */
+ public IAnnotationModel getModel() {
+ return fModel;
+ }
+
+ /*
+ * @see IVerticalRulerInfo#getWidth()
+ */
+ /**
+ * <p>getWidth</p>
+ *
+ * @return a int.
+ */
+ public int getWidth() {
+ return fWidth;
+ }
+
+ /*
+ * @see IVerticalRulerInfo#getLineOfLastMouseButtonActivity()
+ */
+ /**
+ * <p>getLineOfLastMouseButtonActivity</p>
+ *
+ * @return a int.
+ */
+ public int getLineOfLastMouseButtonActivity() {
+ return fLastMouseButtonActivityLine;
+ }
+
+ /*
+ * @see IVerticalRulerInfo#toDocumentLineNumber(int)
+ */
+ /** {@inheritDoc} */
+ public int toDocumentLineNumber(int y_coordinate) {
+ if (fTextViewer == null || y_coordinate == -1)
+ return -1;
+
+ StyledText text= fTextViewer.getTextWidget();
+ int line= text.getLineIndex(y_coordinate);
+
+ if (line == text.getLineCount() - 1) {
+ // check whether y_coordinate exceeds last line
+ if (y_coordinate > text.getLinePixel(line + 1))
+ return -1;
+ }
+
+ return widgetLine2ModelLine(fTextViewer, line);
+ }
+
+ /**
+ * Returns the line of the viewer's document that corresponds to the given widget line.
+ *
+ * @param viewer the viewer
+ * @param widgetLine the widget line
+ * @return the corresponding line of the viewer's document
+ * @since 2.1
+ */
+ protected final static int widgetLine2ModelLine(ITextViewer viewer, int widgetLine) {
+
+ if (viewer instanceof ITextViewerExtension5) {
+ ITextViewerExtension5 extension= (ITextViewerExtension5) viewer;
+ return extension.widgetLine2ModelLine(widgetLine);
+ }
+
+ try {
+ IRegion r= viewer.getVisibleRegion();
+ IDocument d= viewer.getDocument();
+ return widgetLine += d.getLineOfOffset(r.getOffset());
+ } catch (BadLocationException x) {
+ }
+ return widgetLine;
+ }
+
+ /*
+ * @see IVerticalRulerExtension#setFont(Font)
+ * @since 2.0
+ */
+ /** {@inheritDoc} */
+ public void setFont(Font font) {
+ }
+
+ /*
+ * @see IVerticalRulerExtension#setLocationOfLastMouseButtonActivity(int, int)
+ * @since 2.0
+ */
+ /** {@inheritDoc} */
+ public void setLocationOfLastMouseButtonActivity(int x, int y) {
+ fLastMouseButtonActivityLine= toDocumentLineNumber(y);
+ }
+
+ /**
+ * Adds the given mouse listener.
+ *
+ * @param listener the listener to be added
+ * @deprecated will be removed
+ * @since 2.0
+ */
+ public void addMouseListener(MouseListener listener) {
+ if (fCanvas != null && !fCanvas.isDisposed())
+ fCanvas.addMouseListener(listener);
+ }
+
+ /**
+ * Removes the given mouse listener.
+ *
+ * @param listener the listener to be removed
+ * @deprecated will be removed
+ * @since 2.0
+ */
+ public void removeMouseListener(MouseListener listener) {
+ if (fCanvas != null && !fCanvas.isDisposed())
+ fCanvas.removeMouseListener(listener);
+ }
+
+ /**
+ * <p>Setter for the field <code>icon</code>.</p>
+ *
+ * @param icon a {@link org.eclipse.swt.graphics.Image} object.
+ */
+ public void setIcon(Image icon) {
+ this.icon = icon;
+ redraw();
+ }
+}
+
Export-Package: eu.etaxonomy.taxeditor.editor,
eu.etaxonomy.taxeditor.editor.handler,
eu.etaxonomy.taxeditor.editor.internal,
+ eu.etaxonomy.taxeditor.editor.key.polytomous,
eu.etaxonomy.taxeditor.editor.name,
eu.etaxonomy.taxeditor.editor.name.handler,
eu.etaxonomy.taxeditor.editor.view.concept,
<reference
definitionId="isFeatureNodeContainer">
</reference>
- </or>
+ <reference
+ definitionId="isDescriptionElement">
+ </reference>
+ </or>
</visibleWhen>
</command>
<separator
</test>
</with>
</definition>
+ <definition
+ id="isSequence">
+ <with
+ variable="selection">
+ <test
+ property="eu.etaxonomy.taxeditor.editor.handler.SpecimenPropertyTester.isSequence">
+ </test>
+ </with>
+ </definition>
+ <definition
+ id="isSingleRead">
+ <with
+ variable="selection">
+ <test
+ property="eu.etaxonomy.taxeditor.editor.handler.SpecimenPropertyTester.isSingleRead">
+ </test>
+ </with>
+ </definition>
</extension>
<extension
point="org.eclipse.core.expressions.propertyTesters">
properties="isGroupEditor"
type="eu.etaxonomy.taxeditor.bulkeditor.BulkEditor">
</propertyTester>
+ <propertyTester
+ class="eu.etaxonomy.taxeditor.editor.handler.SpecimenPropertyTester"
+ id="eu.etaxonomy.taxeditor.editor.handler.SpecimenPropertyTester"
+ namespace="eu.etaxonomy.taxeditor.editor.handler.SpecimenPropertyTester"
+ properties="isSequence,isSingleRead"
+ type="org.eclipse.jface.viewers.IStructuredSelection">
+ </propertyTester>
</extension>
<extension
point="org.eclipse.ui.bindings">
}
TaxonEditorInput input = TaxonEditorInput
.NewInstanceFromTaxonBase(taxonBaseUuid);
- open(input);
+ if(input!=null){
+ open(input);
+ }
}
/**
super.dispose();
}
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.forms.editor.FormEditor#addPages()
- */
/** {@inheritDoc} */
@Override
protected void addPages() {
firePropertyChange(PROP_DIRTY);
}
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.part.MultiPageEditorPart#isDirty()
- */
- /**
- * <p>
- * isDirty
- * </p>
- *
- * @return a boolean.
- */
@Override
public boolean isDirty() {
return dirty;
}
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.forms.editor.FormEditor#editorDirtyStateChanged()
- */
/** {@inheritDoc} */
@Override
public void editorDirtyStateChanged() {
* place before passing property change along to
* <code>super.handlePropertyChange(int propertyId)</code>.
*/
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.ui.part.MultiPageEditorPart#handlePropertyChange(int)
- */
@Override
protected void handlePropertyChange(int propertyId) {
if (propertyId == PROP_DIRTY) {
setPartName();
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#forceDirty()
- */
@Override
public void forceDirty() {
changed(null);
return input.getTaxon();
}
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder
- * ()
- */
- /**
- * <p>
- * getConversationHolder
- * </p>
- *
- * @return a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
- * object.
- */
@Override
public ConversationHolder getConversationHolder() {
return conversation;
}
- /**
- * <p>
- * setConversationHolder
- * </p>
- *
- * @param conversation
- * a {@link eu.etaxonomy.cdm.api.conversation.ConversationHolder}
- * object.
- */
public void setConversationHolder(ConversationHolder conversation) {
this.conversation = conversation;
}
- /**
- * <p>
- * Getter for the field <code>undoContext</code>.
- * </p>
- *
- * @return a {@link org.eclipse.core.commands.operations.IUndoContext}
- * object.
- */
public IUndoContext getUndoContext() {
return undoContext;
}
- /**
- * <p>
- * Setter for the field <code>undoContext</code>.
- * </p>
- *
- * @param undoContext
- * a {@link org.eclipse.core.commands.operations.IUndoContext}
- * object.
- */
public void setUndoContext(IUndoContext undoContext) {
this.undoContext = undoContext;
}
getActiveEditor().setFocus();
}
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.cdm.persistence.hibernate.ICdmPostCrudObserver#update(eu
- * .etaxonomy.cdm.persistence.hibernate.CdmCrudEvent)
- */
- /** {@inheritDoc} */
+ /** {@inheritDoc} */
@Override
public void update(CdmDataChangeMap events) {
if (dataChangeBehavior == null) {
DataChangeBridge.handleDataChange(events, dataChangeBehavior);
}
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.taxeditor.store.operations.IPostOperationEnabled#postOperation
- * ()
- */
/** {@inheritDoc} */
@Override
public boolean postOperation(CdmBase objectAffectedByOperation) {
return editorPage != null && editorPage.redraw(focus);
}
- /**
- * <p>
- * onComplete
- * </p>
- *
- * @return a boolean.
- */
@Override
public boolean onComplete() {
return false;
}
return true;
}
+
+ @Override
+ public boolean canAttachMedia() {
+ return true;
+ }
}
-package eu.etaxonomy.taxeditor.molecular.handler;
+package eu.etaxonomy.taxeditor.editor.handler;
import org.eclipse.core.expressions.PropertyTester;
public SpecimenPropertyTester() {}
-
- /* (non-Javadoc)
- * @see org.eclipse.core.expressions.IPropertyTester#test(java.lang.Object, java.lang.String, java.lang.Object[], java.lang.Object)
- */
/** {@inheritDoc} */
@Override
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
return false;
}
-
private boolean isSequence(Object object) {
return (object instanceof Sequence);
}
-
private boolean isSingleReadAlignment(Object object) {
return (object instanceof SingleRead);
}
return defaultService.getPreviousAuditEvent(t);
}
- /**
- * @param classification
- * @param rank
- * @param limit
- * @param start
- * @param propertyPaths
- * @return
- * @deprecated
- * @see eu.etaxonomy.cdm.api.service.IClassificationService#loadRankSpecificRootNodes(eu.etaxonomy.cdm.model.taxon.Classification, eu.etaxonomy.cdm.model.name.Rank, java.lang.Integer, java.lang.Integer, java.util.List)
- */
- @Deprecated
- @Override
- public List<TaxonNode> loadRankSpecificRootNodes(Classification classification, Rank rank, Integer limit, Integer start, List<String> propertyPaths) {
- return defaultService.loadRankSpecificRootNodes(classification, rank, limit, start, propertyPaths);
- }
-
/**
* @param clazz
* @return
return defaultService.merge(arg0);
}
+
+
}
import eu.etaxonomy.cdm.api.facade.DerivedUnitFacadeNotSupportedException;
import eu.etaxonomy.cdm.api.service.DeleteResult;
import eu.etaxonomy.cdm.api.service.IOccurrenceService;
+import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.api.service.config.DeleteConfiguratorBase;
import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
import eu.etaxonomy.cdm.api.service.config.SpecimenDeleteConfigurator;
maxDepth, pageSize, pageNumber, orderHints, propertyPaths);
}
- @Override
- public boolean moveDerivate(SpecimenOrObservationBase<?> from, SpecimenOrObservationBase<?> to, DerivedUnit derivate) {
- return defaultService.moveDerivate(from, to, derivate);
- }
@Override
- public boolean moveSequence(DnaSample from, DnaSample to, Sequence sequence) {
+ public UpdateResult moveSequence(DnaSample from, DnaSample to, Sequence sequence) {
return defaultService.moveSequence(from, to, sequence);
}
return defaultService.deleteSingleRead(arg0, arg1);
}
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#moveDerivate(java.util.UUID, java.util.UUID, java.util.UUID)
+ */
+ @Override
+ public UpdateResult moveDerivate(UUID arg0, UUID arg1, UUID arg2) {
+ return defaultService.moveDerivate(arg0, arg1, arg2);
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#moveDerivate(eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase, eu.etaxonomy.cdm.model.occurrence.DerivedUnit)
+ */
+ @Override
+ public boolean moveDerivate(SpecimenOrObservationBase<?> from, SpecimenOrObservationBase<?> to, DerivedUnit derivate) {
+ return defaultService.moveDerivate(from, to, derivate);
+ }
+
+ /* (non-Javadoc)
+ * @see eu.etaxonomy.cdm.api.service.IOccurrenceService#moveSequence(java.util.UUID, java.util.UUID, java.util.UUID)
+ */
+ @Override
+ public UpdateResult moveSequence(UUID arg0, UUID arg1, UUID arg2) {
+ return defaultService.moveSequence(arg0, arg1, arg2);
+ }
+
}
public DerivateView() {
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
@Override
public void createPartControl(Composite parent) {
viewer = new TreeViewer(new Tree(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL | SWT.FULL_SELECTION));
viewer.addDropSupport(dndOperations, transfers, new DerivateDropListener(this));
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
public void doSave(IProgressMonitor monitor) {
String taskName = "Saving hierarchy";
refreshTree();
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#doSaveAs()
- */
@Override
public void doSaveAs() {
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#getTitleToolTip()
- */
@Override
public String getTitleToolTip() {
if(getEditorInput() instanceof DerivateViewEditorInput){
return "Derivative Editor";
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#init(org.eclipse.ui.IEditorSite, org.eclipse.ui.IEditorInput)
- */
@Override
public void init(IEditorSite site, IEditorInput input) throws PartInitException {
setSite(site);
}
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#isDirty()
- */
@Override
public boolean isDirty() {
return isDirty;
this.isDirty = isDirty;
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
- */
@Override
public boolean isSaveAsAllowed() {
return false;
}
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
- */
@Override
public void setFocus() {
viewer.getControl().setFocus();
}
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.cdm.persistence.hibernate.ICdmPostDataChangeObserver#update(eu.etaxonomy.cdm.persistence.hibernate.CdmDataChangeMap)
- */
@Override
public void update(CdmDataChangeMap changeEvents) {
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.cdm.api.conversation.IConversationEnabled#getConversationHolder()
- */
@Override
public ConversationHolder getConversationHolder() {
return conversation;
return viewer;
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#changed(java.lang.Object)
- */
@Override
public void changed(Object element) {
setDirty(true);
viewer.refresh();
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.model.IDirtyMarkableSelectionProvider#forceDirty()
- */
@Override
public void forceDirty() {
changed(null);
viewer.refresh();
}
-
private void generateMultiLinkSingleReads() {
Set<SingleRead> multiLinkSingleReads = new HashSet<SingleRead>();
for(Entry<SingleRead, Collection<Sequence>> entry:CdmStore.getService(ISequenceService.class).getSingleReadSequencesMap().entrySet()){
return this.multiLinkSingleReads;
}
- /* (non-Javadoc)
- * @see org.eclipse.jface.viewers.ISelectionChangedListener#selectionChanged(org.eclipse.jface.viewers.SelectionChangedEvent)
- */
@Override
public void selectionChanged(SelectionChangedEvent event) {
this.selection = event.getSelection();
return labelProvider;
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.operation.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
- */
@Override
public boolean postOperation(CdmBase objectAffectedByOperation) {
refreshTree();
return true;
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.operation.IPostOperationEnabled#onComplete()
- */
@Override
public boolean onComplete() {
return true;
}
+ @Override
+ public boolean canAttachMedia() {
+ return true;
+ }
+
}
*/
public class CreateDerivateContextMenu extends CompoundContributionItem {
- /* (non-Javadoc)
- * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
- */
@Override
protected IContributionItem[] getContributionItems() {
IContributionItem[] contributionItems = new IContributionItem[] {
MenuItem existingMediaItem = new MenuItem(mediaMenu, SWT.NONE);
existingMediaItem.setText("Media Specimen with existing media");
existingMediaItem.addSelectionListener(new SelectionAdapter() {
- /* (non-Javadoc)
- * @see org.eclipse.swt.events.SelectionAdapter#widgetSelected(org.eclipse.swt.events.SelectionEvent)
- */
@Override
public void widgetSelected(SelectionEvent e) {
//select media
this.derivationEventType = derivationEventType;
}
- /* (non-Javadoc)
- * @see org.eclipse.swt.events.SelectionListener#widgetSelected(org.eclipse.swt.events.SelectionEvent)
- */
@Override
public void widgetSelected(SelectionEvent e) {
DerivateView derivateView = null;
public class DerivateViewContextMenu extends CompoundContributionItem {
- /* (non-Javadoc)
- * @see org.eclipse.ui.actions.CompoundContributionItem#getContributionItems()
- */
@Override
protected IContributionItem[] getContributionItems() {
IContributionItem[] contributionItems = new IContributionItem[] {
else if(draggedNodeValue instanceof SingleRead && targetNodeValue instanceof Sequence){
SingleRead singleRead = (SingleRead) draggedNodeValue;
if(fromParentSpecimen instanceof Sequence){
- return CdmStore.getService(ISequenceService.class).moveSingleRead((Sequence)fromParentSpecimen, (Sequence)targetNodeValue, singleRead);
+ return CdmStore.getService(ISequenceService.class).moveSingleRead((Sequence)fromParentSpecimen, (Sequence)targetNodeValue, singleRead).isOk();
}
}
else if(draggedNodeValue instanceof Sequence && targetNodeValue instanceof DnaSample && ((SpecimenOrObservationBase<?>) targetNodeValue).getRecordBasis()==SpecimenOrObservationType.DnaSample){
Sequence sequence = (Sequence)draggedNodeValue;
if(fromParentSpecimen instanceof DnaSample && ((SpecimenOrObservationBase<?>) targetNodeValue).getRecordBasis()==SpecimenOrObservationType.DnaSample){
- return occurrenceService.moveSequence((DnaSample)fromParentSpecimen, (DnaSample)targetNodeValue, sequence);
+ return occurrenceService.moveSequence((DnaSample)fromParentSpecimen, (DnaSample)targetNodeValue, sequence).isOk();
}
}
return false;
// $Id$
/**
* 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.
*/
import org.eclipse.ui.handlers.HandlerUtil;
import eu.etaxonomy.cdm.api.service.IDescriptionService;
-import eu.etaxonomy.cdm.api.service.ITaxonService;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.Annotation;
import eu.etaxonomy.cdm.model.common.AnnotationType;
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.taxon.Classification;
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.MultiPageTaxonEditor;
import eu.etaxonomy.taxeditor.editor.Page;
import eu.etaxonomy.taxeditor.editor.name.TaxonNameEditor;
-import eu.etaxonomy.taxeditor.editor.view.descriptive.DescriptiveViewPart;
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.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.store.CdmStore;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonBaseSelectionDialog;
import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
*/
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
-
+
// ConversationHolder conversation = CdmStore.createConversation();
editor = (TaxonNameEditor) EditorUtil.getActiveEditorPage(Page.NAME);
ISelection selection = HandlerUtil.getCurrentSelection(event);
-
+ Taxon actualTaxon= null;
if(selection instanceof IStructuredSelection){
IStructuredSelection structuredSelection = (IStructuredSelection) selection;
-
+
List<DescriptionElementBase> elements = new ArrayList<DescriptionElementBase>();
-
+
for(Object element : structuredSelection.toArray()){
if(element instanceof DescriptionElementBase){
UUID uuid = ((DescriptionElementBase) element).getUuid();
-
+
elements.add(CdmStore.getService(IDescriptionService.class).loadDescriptionElement(uuid, null));
} else if(element instanceof FeatureNodeContainer){
for(DescriptionElementBase de : ((FeatureNodeContainer)element).getDescriptionElements()){
elements.add(
- (DescriptionElementBase)CdmStore.getService(IDescriptionService.class).loadDescriptionElement(de.getUuid(), null)
+ CdmStore.getService(IDescriptionService.class).loadDescriptionElement(de.getUuid(), null)
);
}
}
}
-
+
if(elements.size() == 0){
return null;
}
List<UUID> excludeTaxa = new ArrayList<UUID>();
if (description.isInstanceOf(TaxonDescription.class)){
TaxonDescription taxonDescription = HibernateProxyHelper.deproxy(description, TaxonDescription.class);
- Taxon actualTaxon = taxonDescription.getTaxon();
+ actualTaxon = taxonDescription.getTaxon();
excludeTaxa.add(actualTaxon.getUuid());
}
-
-
+ Classification classification = null;
+ if (actualTaxon != null){
+ if (!actualTaxon.getTaxonNodes().isEmpty() && actualTaxon.getTaxonNodes().size() ==1){
+ classification = actualTaxon.getTaxonNodes().iterator().next().getClassification();
+ }
+ }
TaxonNode newAcceptedTaxonNode = TaxonNodeSelectionDialog.select(HandlerUtil.getActiveShell(event),
editor.getConversationHolder(),
"Choose the accepted taxon",
excludeTaxa,
- null,
- null);
- Taxon targetTaxon = newAcceptedTaxonNode.getTaxon();
-
- if(targetTaxon == null){
- // canceled
- return null;
- }
- newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
- TaxonDescription targetDescription = TaxonDescription.NewInstance(targetTaxon);
- String moveMessage = String.format("Elements moved from %s", EditorUtil.getActiveMultiPageTaxonEditor().getTaxon());
- targetDescription.setTitleCache(moveMessage, true);
- Annotation annotation = Annotation.NewInstance(moveMessage, Language.getDefaultLanguage());
- annotation.setAnnotationType(AnnotationType.TECHNICAL());
- targetDescription.addAnnotation(annotation);
-
- try {
- AbstractPostOperation operation = new MoveDescriptionElementsOperation(
- event.getCommand().getName(), EditorUtil.getUndoContext(),
- targetDescription, elements, false, this);
-
- EditorUtil.executeOperation(operation);
-
- //CdmStore.getService(ITaxonService.class).saveOrUpdate(targetTaxon);
-
- } catch (NotDefinedException e) {
- MessagingUtils.error(getClass(), e);
+ null,classification
+ );
+ if (newAcceptedTaxonNode != null){
+ Taxon targetTaxon = newAcceptedTaxonNode.getTaxon();
+
+ if(targetTaxon == null){
+ // canceled
+ return null;
+ }
+ newAcceptedTaxonNodeUuid = newAcceptedTaxonNode.getUuid();
+ TaxonDescription targetDescription = TaxonDescription.NewInstance(targetTaxon);
+ String moveMessage = String.format("Elements moved from %s", EditorUtil.getActiveMultiPageTaxonEditor().getTaxon());
+ targetDescription.setTitleCache(moveMessage, true);
+ Annotation annotation = Annotation.NewInstance(moveMessage, Language.getDefaultLanguage());
+ annotation.setAnnotationType(AnnotationType.TECHNICAL());
+ targetDescription.addAnnotation(annotation);
+
+ try {
+ AbstractPostOperation operation = new MoveDescriptionElementsOperation(
+ event.getCommand().getName(), EditorUtil.getUndoContext(),
+ targetDescription, elements, false, this);
+
+ EditorUtil.executeOperation(operation);
+
+ //CdmStore.getService(ITaxonService.class).saveOrUpdate(targetTaxon);
+
+ } catch (NotDefinedException e) {
+ MessagingUtils.error(getClass(), e);
+ }
}
}
-
+
return null;
}
/** {@inheritDoc} */
@Override
public boolean postOperation(CdmBase objectAffectedByOperation) {
-
+
editor.getConversationHolder().bind();
editor.getConversationHolder().commit(true);
Display.getDefault().asyncExec(new Runnable(){
-
+
+ @Override
public void run() {
//AbstractUtility.close(editor.getMultiPageTaxonEditor());
// TODO Auto-generated method stub
return false;
}
-
+
}
return;
}
- if(part instanceof IPartContentHasMedia){
+ if(part instanceof IPartContentHasMedia && ((IPartContentHasMedia) part).canAttachMedia()){
if(part instanceof MultiPageTaxonEditor){
IEditorInput input = ((IEditorPart) part).getEditorInput();
showViewer(part, new StructuredSelection(input));
</activeWhen>
</handler>
</extension>
- <extension
- point="org.eclipse.core.expressions.definitions">
- <definition
- id="isSequence">
- <with
- variable="selection">
- <test
- property="eu.etaxonomy.taxeditor.molecular.SpecimenPropertyTester.isSequence">
- </test>
- </with>
- </definition>
- <definition
- id="isSingleRead">
- <with
- variable="selection">
- <test
- property="eu.etaxonomy.taxeditor.molecular.SpecimenPropertyTester.isSingleRead">
- </test>
- </with>
- </definition>
- </extension>
- <extension
- point="org.eclipse.core.expressions.propertyTesters">
- <propertyTester
- class="eu.etaxonomy.taxeditor.molecular.handler.SpecimenPropertyTester"
- id="eu.etaxonomy.taxeditor.molecular.SpecimenPropertyTester"
- namespace="eu.etaxonomy.taxeditor.molecular.SpecimenPropertyTester"
- properties="isSequence,isSingleRead"
- type="org.eclipse.jface.viewers.IStructuredSelection">
- </propertyTester>
- </extension>
<extension
point="org.eclipse.ui.bindings">
<scheme
commandId="eu.etaxonomy.taxeditor.navigation.command.create.taxonNode"
label="%command.label.2"
style="push">
+ <visibleWhen
+ checkEnabled="true">
+ <with
+ variable="selection">
+ <count
+ value="+">
+ </count>
+ </with>
+ </visibleWhen>
</command>
<separator
name="eu.etaxonomy.navigation.menu.new.separator1"
definitionId="isSynonymNode">
</reference>
</not>
+ <with
+ variable="selection">
+ <count
+ value="+">
+ </count>
+ </with>
</and>
</visibleWhen>
</command>
// $Id$
/**
* 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.
*/
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.core.commands.common.NotDefinedException;
import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.HandlerUtil;
import eu.etaxonomy.cdm.model.description.PolytomousKey;
+import eu.etaxonomy.taxeditor.editor.key.polytomous.PolytomousKeyEditorInput;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
import eu.etaxonomy.taxeditor.navigation.key.polytomous.PolytomousKeyViewPart;
*/
public class DeleteHandler extends AbstractHandler {
+ protected IWorkbenchPage activePage;
/* (non-Javadoc)
* @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
*/
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
IStructuredSelection selection = (IStructuredSelection) HandlerUtil.getCurrentSelection(event);
-
+ activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
List<PolytomousKey> keys = selection.toList();
-
+
if(keys.isEmpty()){
return null;
}
-
- boolean confirmation = MessagingUtils.confirmDialog("Confirm deletaion", "Do you want to delete the selected key" + (keys.size() == 1 ? "" : "s") + "?");
-
+ for (PolytomousKey key : keys){
+ closeObsoleteEditor(key);
+ }
+ boolean confirmation = MessagingUtils.confirmDialog("Confirm deletion", "Do you want to delete the selected key" + (keys.size() == 1 ? "" : "s") + "?");
+
if(confirmation){
-
+
for(PolytomousKey key : keys){
try {
AbstractPostOperation operation = new DeleteOperation(
event.getCommand().getName(),
- NavigationUtil.getUndoContext(), key,
+ NavigationUtil.getUndoContext(), key,
(PolytomousKeyViewPart) NavigationUtil.getView(PolytomousKeyViewPart.ID, false),
(PolytomousKeyViewPart) NavigationUtil.getView(PolytomousKeyViewPart.ID, false));
NavigationUtil.executeOperation(operation);
}
}
}
-
+
return null;
}
+
+ protected boolean closeObsoleteEditor(PolytomousKey key){
+ boolean result = true;
+ for (IEditorReference ref : activePage.getEditorReferences()) {
+ try {
+
+ IEditorInput input = ref.getEditorInput();
+ if (input instanceof PolytomousKeyEditorInput) {
+ PolytomousKey pKey = ((PolytomousKeyEditorInput)input).getKey();
+ //if node is a child of taxonNode then close the editor
+ if(key.equals(pKey)){
+ //if (taxonNode.equals(node)) {
+ result &= activePage.closeEditor(ref.getEditor(false), true);
+
+ }
+ }
+ } catch (PartInitException e) {
+ continue;
+ }
+ }
+ return result;
+ }
}
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
+import java.util.UUID;
import org.apache.log4j.Logger;
import org.eclipse.core.commands.operations.IUndoContext;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.IconAndMessageDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.TreeSelection;
-import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerDropAdapter;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.handlers.HandlerUtil;
-import org.eclipse.ui.navigator.CommonDropAdapter;
-import org.eclipse.ui.navigator.CommonDropAdapterAssistant;
-import org.eclipse.ui.navigator.CommonViewer;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.OrderedTermBase;
-import eu.etaxonomy.cdm.model.common.TermBase;
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.cdm.persistence.hibernate.permission.CRUD;
-import eu.etaxonomy.taxeditor.editor.definedterm.DefinedTermEditor;
import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
import eu.etaxonomy.taxeditor.navigation.navigator.operation.MoveTaxonOperation;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
protected TreeNodeDropAdapter(TaxonNavigatorViewer navigatorViewer) {
super(navigatorViewer);
this.navigatorViewer = navigatorViewer;
-
+
}
-
+
private final TaxonNavigatorViewer navigatorViewer;
private static final Logger logger = Logger.getLogger(TreeNodeDropAdapter.class);
public static final String ID = "eu.etaxonomy.taxeditor.navigation.navigator.dropassistant"; //$NON-NLS-1$
private static final EnumSet<CRUD> UPDATE = EnumSet.of(CRUD.UPDATE);
-
-
-
+
+
+
/* (non-Javadoc)
* @see org.eclipse.ui.navigator.CommonDropAdapterAssistant#handleDrop(org.eclipse.ui.navigator.CommonDropAdapter, org.eclipse.swt.dnd.DropTargetEvent, java.lang.Object)
*/
@Override
public boolean performDrop(Object target) {
-
+
if (target instanceof ITaxonTreeNode) {
Set<TaxonNode> taxonNodes = getSelectedTaxa();
ITaxonTreeNode targetTreeNode = (ITaxonTreeNode) target;
}
if(taxonNodes != null) {
if (taxonNodes.size() == 1){
- return moveTaxon(taxonNodes.iterator().next(), targetTreeNode);
+ return moveTaxon(taxonNodes, targetTreeNode);
} else{
if( MessageDialog.openConfirm(null, "Moving taxon", "The operation move accepted taxon to other parent is available only for a single taxon.")){
return true;
}
}
}
-
+
return false;
}
@Override
public boolean validateDrop(Object target, int operation,
TransferData transferType) {
-
+
if (target instanceof ITaxonTreeNode) {
-
+
// check users permissions with target taxonnode and taxon
if (target instanceof TaxonNode) {
TaxonNode targetNode = (TaxonNode)target;
* @param parentTaxon
* @return
*/
- private boolean moveTaxon(TaxonNode taxonNode, ITaxonTreeNode targetITaxonTreeNode) {
+ private boolean moveTaxon(Set<TaxonNode> taxonNodes, ITaxonTreeNode targetITaxonTreeNode) {
TaxonNavigator taxonNavigator;
taxonNavigator = (TaxonNavigator) NavigationUtil.showView(TaxonNavigator.ID);
}
}
+ Iterator<TaxonNode> taxIterator = taxonNodes.iterator();
+ Set<UUID> uuids = new HashSet<UUID>();
+ TaxonNode node = null;
+ while(taxIterator.hasNext()){
+ node = taxIterator.next();
+ uuids.add(node.getUuid());
+ }
if (!PreferencesUtil.getSortNodesNaturally()){
IUndoContext workspaceUndoContext = NavigationUtil.getWorkbenchUndoContext();
if (workspaceUndoContext == null) {
logger.error("Workspace undo context is null. DND operation cancelled");
return false;
}
-
+
AbstractPostOperation operation = new MoveTaxonOperation
- ("Move Taxon", workspaceUndoContext, taxonNode, targetITaxonTreeNode, this, taxonNavigator, true);
+ ("Move Taxon", workspaceUndoContext, uuids, targetITaxonTreeNode, this, taxonNavigator, true);
NavigationUtil.executeOperation(operation);
-
+
logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
return true;
}else{
logger.error("Workspace undo context is null. DND operation cancelled");
return false;
}
-
+
AbstractPostOperation operation = new MoveTaxonOperation
- ("Move Taxon", workspaceUndoContext, taxonNode, targetITaxonTreeNode, this, taxonNavigator, true);
+ ("Move Taxon", workspaceUndoContext, uuids, targetITaxonTreeNode, this, taxonNavigator, true);
NavigationUtil.executeOperation(operation);
-
+
logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
return true;
}else if (returnCode == 1){
logger.error("Workspace undo context is null. DND operation cancelled");
return false;
}
-
+ TaxonNode targetNode = (TaxonNode) targetITaxonTreeNode;
+
AbstractPostOperation operation = new MoveTaxonOperation
- ("Move Taxon", workspaceUndoContext, taxonNode, targetITaxonTreeNode, this, taxonNavigator, false);
+ ("Move Taxon", workspaceUndoContext, uuids, targetNode.getParent(), this, taxonNavigator, false);
NavigationUtil.executeOperation(operation);
-
+
logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
return true;
} else{
return false;
}
-
-
+
+
}
}
public void dragOver(DropTargetEvent event) {
super.dragOver(event);
event.feedback = DND.FEEDBACK_SELECT | DND.FEEDBACK_INSERT_AFTER;
-
+
}
-
+
}
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
+import java.util.UUID;
import org.apache.log4j.Logger;
import org.eclipse.core.commands.operations.IUndoContext;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
-import org.eclipse.jface.dialogs.IconAndMessageDialog;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.util.LocalSelectionTransfer;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.TreeSelection;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.TransferData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.handlers.HandlerUtil;
import org.eclipse.ui.navigator.CommonDropAdapter;
import org.eclipse.ui.navigator.CommonDropAdapterAssistant;
public IStatus handleDrop(CommonDropAdapter dropAdapter,
DropTargetEvent dropTargetEvent, Object target) {
-
+
if (target instanceof ITaxonTreeNode) {
Set<TaxonNode> taxonNodes = getSelectedTaxa();
ITaxonTreeNode targetTreeNode = (ITaxonTreeNode) target;
targetTreeNode = ((Classification)targetTreeNode).getRootNode();
targetTreeNode = HibernateProxyHelper.deproxy(targetTreeNode, TaxonNode.class);
}
- if(taxonNodes != null) {
- if (taxonNodes.size() == 1){
- return moveTaxon(taxonNodes.iterator().next(), targetTreeNode);
- } else{
+ //if(taxonNodes != null) {
+ if (taxonNodes.size() >= 1){
+ return moveTaxon(taxonNodes, targetTreeNode);
+ /*} else{
if( MessageDialog.openConfirm(null, "Moving taxon", "The operation move accepted taxon to other parent is available only for a single taxon.")){
return null;
}
- }
+ }*/
}
}
-
+
return Status.CANCEL_STATUS;
}
* @param parentTaxon
* @return
*/
- private IStatus moveTaxon(TaxonNode taxonNode, ITaxonTreeNode targetITaxonTreeNode) {
+ private IStatus moveTaxon(Set<TaxonNode> taxonNodes, ITaxonTreeNode targetITaxonTreeNode) {
TaxonNavigator taxonNavigator;
taxonNavigator = (TaxonNavigator) NavigationUtil.showView(TaxonNavigator.ID);
}
}
+ Iterator<TaxonNode> taxIterator = taxonNodes.iterator();
+ Set<UUID> uuids = new HashSet<UUID>();
+ TaxonNode node = null;
+ while(taxIterator.hasNext()){
+ node = taxIterator.next();
+ uuids.add(node.getUuid());
+ }
if (!PreferencesUtil.getSortNodesNaturally()){
IUndoContext workspaceUndoContext = NavigationUtil.getWorkbenchUndoContext();
if (workspaceUndoContext == null) {
logger.error("Workspace undo context is null. DND operation cancelled");
return Status.CANCEL_STATUS;
}
-
+
AbstractPostOperation operation = new MoveTaxonOperation
- ("Move Taxon", workspaceUndoContext, taxonNode, targetITaxonTreeNode, this, taxonNavigator, true);
+ ("Move Taxon", workspaceUndoContext, uuids, targetITaxonTreeNode, this, taxonNavigator, true);
NavigationUtil.executeOperation(operation);
-
+
logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
return Status.OK_STATUS;
}else{
logger.error("Workspace undo context is null. DND operation cancelled");
return Status.CANCEL_STATUS;
}
-
+
AbstractPostOperation operation = new MoveTaxonOperation
- ("Move Taxon", workspaceUndoContext, taxonNode, targetITaxonTreeNode, this, taxonNavigator, true);
+ ("Move Taxon", workspaceUndoContext, uuids, targetITaxonTreeNode, this, taxonNavigator, true);
NavigationUtil.executeOperation(operation);
-
+
logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
return Status.OK_STATUS;
}else if (returnCode == 1){
logger.error("Workspace undo context is null. DND operation cancelled");
return Status.CANCEL_STATUS;
}
-
+ TaxonNode targetNode = (TaxonNode) targetITaxonTreeNode;
AbstractPostOperation operation = new MoveTaxonOperation
- ("Move Taxon", workspaceUndoContext, taxonNode, targetITaxonTreeNode, this, taxonNavigator, false);
+ ("Move Taxon", workspaceUndoContext, uuids, targetNode.getParent(), this, taxonNavigator, false);
NavigationUtil.executeOperation(operation);
-
+
logger.info("Moved taxa to new parent " + targetITaxonTreeNode);
return Status.OK_STATUS;
} else{
return Status.CANCEL_STATUS;
}
-
-
+
+
}
}
}else{
if(!DeleteConfiguratorDialog.openConfirmWithConfigurator(configNodes, HandlerUtil.getActiveShell(event), "Confirm Deletion", "Do you really want to delete the selected node?")){
return null;
- }
+ }
config.setTaxonNodeConfig(configNodes);
}
}
} catch (NotDefinedException e) {
MessagingUtils.warn(getClass(), "Command name not set");
+ } catch (Exception e){
+ MessagingUtils.error(getClass(), e);
}
} else{
try{
}
}catch (NotDefinedException e) {
MessagingUtils.warn(getClass(), "Command name not set");
- }
+ } catch (Exception e){
+ MessagingUtils.error(getClass(), e);
+ }
}
return null;
}
/**
* 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.
*/
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
-import org.eclipse.core.expressions.EvaluationContext;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.TreeSelection;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
import org.eclipse.ui.handlers.HandlerUtil;
-import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
-import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
import eu.etaxonomy.cdm.model.common.CdmBase;
-import eu.etaxonomy.cdm.model.common.ITreeNode;
-import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
-import eu.etaxonomy.taxeditor.editor.TaxonEditorInput;
import eu.etaxonomy.taxeditor.navigation.NavigationUtil;
import eu.etaxonomy.taxeditor.navigation.navigator.TaxonNavigator;
import eu.etaxonomy.taxeditor.navigation.navigator.operation.MoveTaxonOperation;
import eu.etaxonomy.taxeditor.operation.AbstractPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
-import eu.etaxonomy.taxeditor.store.CdmStore;
import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionDialog;
-import eu.etaxonomy.taxeditor.ui.dialog.selection.TaxonNodeSelectionNaturalOrderDialog;
/**
* <p>MoveTaxonHandler class.</p>
* @see org.eclipse.core.commands.IHandler#execute(org.eclipse.core.commands.ExecutionEvent)
*/
/** {@inheritDoc} */
- public Object execute(ExecutionEvent event) throws ExecutionException {
+ @Override
+ public Object execute(ExecutionEvent event) throws ExecutionException {
activePage = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage();
TaxonNavigator taxonNavigator = (TaxonNavigator)NavigationUtil.showView(TaxonNavigator.ID);
-
+
TreeSelection selection = (TreeSelection) HandlerUtil.getCurrentSelection(event);
-
+
Iterator selectionIterator = selection.iterator();
- TaxonNode taxonNode = null;
- UUID taxonNodeUUID = null;
+ Set<TaxonNode> taxonNodes = new HashSet<TaxonNode>();
+ TaxonNode taxonNode= null;
+ Set<UUID> taxonNodeUUIDs = new HashSet<UUID>();
// do not show the current selection
List<UUID> excludeTaxa = new ArrayList<UUID>();
-
- if (selection.size() == 1){
+
+ //if (selection.size() == 1){
+
+ while (selectionIterator.hasNext()){
Object object = selectionIterator.next();
if(object instanceof TaxonNode){
- taxonNode = HibernateProxyHelper.deproxy(object,TaxonNode.class);
- taxonNodeUUID = taxonNode.getUuid();
+ taxonNode = HibernateProxyHelper.deproxy(object,TaxonNode.class);
+ taxonNodes.add(taxonNode);
+ taxonNodeUUIDs.add(taxonNode.getUuid());
excludeTaxa.add(taxonNode.getTaxon().getUuid());
}
- } else{
+ }
+ /*} else{
if( MessageDialog.openConfirm(HandlerUtil.getActiveShell(event), "Moving taxon", "The operation move accepted taxon to other parent is available only for a single taxon.")){
return null;
}
- }
-
-
+ }*/
+
+
// TaxonNode taxonNode = (TaxonNode) selection.getFirstElement();
- if (taxonNode != null){
- boolean moveToNewParent = true;
+ if (taxonNodes.size() >= 1){
+ boolean moveToNewParent = true;
if (PreferencesUtil.getSortNodesNaturally()){
if(!MessageDialog.openQuestion(null, "Target node", "The choosen target node should be the parent?")){
moveToNewParent = false;
"changes in the parent taxon. Please save first.");
return null;
}
-
+
AbstractPostOperation operation = new MoveTaxonOperation
("Move taxon to new parent", NavigationUtil.getUndoContext(),
- taxonNode, parentTaxonNode, taxonNavigator, taxonNavigator, moveToNewParent); //$NON-NLS-1$
+ taxonNodeUUIDs, parentTaxonNode, taxonNavigator, taxonNavigator, moveToNewParent); //$NON-NLS-1$
NavigationUtil.executeOperation(operation);
taxonNavigator.refresh();
-
+
}
}
return null;
* @see eu.etaxonomy.taxeditor.operations.IPostOperationEnabled#postOperation(eu.etaxonomy.cdm.model.common.CdmBase)
*/
/** {@inheritDoc} */
- public boolean postOperation(CdmBase objectAffectedByOperation) {
+ @Override
+ public boolean postOperation(CdmBase objectAffectedByOperation) {
return true;
}
*
* @return a boolean.
*/
- public boolean onComplete() {
+ @Override
+ public boolean onComplete() {
return false;
}
-
-
-
+
+
+
}
import eu.etaxonomy.cdm.model.taxon.Classification;
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
import eu.etaxonomy.cdm.model.taxon.TaxonNode;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
import eu.etaxonomy.taxeditor.store.CdmStore;
} else if (!result.getExceptions().isEmpty()){
String separator = ", ";
String exceptionString = "";
+ int count = 1;
for (Exception exception : result.getExceptions()) {
- exceptionString += exception.getLocalizedMessage()+separator;
+ exceptionString += exception.getLocalizedMessage();
+ if (count < result.getExceptions().size()){
+ exceptionString += separator;
+ }
}
- MessageDialog.openInformation(null, "Delete of the node was successful but the taxon could not be deleted.", exceptionString);
+ MessagingUtils.informationDialog("Delete of the node was successful but the taxon could not be deleted.", exceptionString);
}
DeleteResult result = CdmStore.getService(IClassificationService.class).delete(taxonomicTree);
if (result.isError() && !result.getExceptions().isEmpty()){
- //TODO:Error message!
- MessageDialog.openError(null, "Delete failed", result.getExceptions().iterator().next().getMessage());
+ String separator = ", ";
+ String exceptionString = "";
+ for (Exception exception : result.getExceptions()) {
+ exceptionString += exception.getLocalizedMessage()+separator;
+ }
+ MessagingUtils.error(null, exceptionString, result.getExceptions().iterator().next());
}
/*}else{
DeleteResult result =service.deleteTaxonNodes(treeNodes, config);
if (result.isError() && !result.getExceptions().isEmpty()){
- //TODO:Error message!
- MessageDialog.openError(null, "Delete failed", result.getExceptions().iterator().next().getMessage());
+ String separator = ", ";
+ String exceptionString = "";
+ for (Exception exception : result.getExceptions()) {
+ exceptionString += exception.getLocalizedMessage()+separator;
+ }
+ MessagingUtils.error(null, exceptionString, result.getExceptions().iterator().next());
}
}
package eu.etaxonomy.taxeditor.navigation.navigator.operation;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
import java.util.Set;
import java.util.UUID;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
-import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
import eu.etaxonomy.cdm.api.conversation.IConversationEnabled;
import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
import eu.etaxonomy.cdm.api.service.UpdateResult;
import eu.etaxonomy.cdm.model.taxon.ITaxonTreeNode;
-import eu.etaxonomy.cdm.model.taxon.IllegalAncestryException;
-import eu.etaxonomy.cdm.model.taxon.TaxonNode;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.operation.AbstractPersistentPostOperation;
import eu.etaxonomy.taxeditor.operation.IPostOperationEnabled;
/**
* A reference to the new taxonomical parent.
*/
- private ITaxonTreeNode newParentTreeNode;
+ private final ITaxonTreeNode newParentTreeNode;
/**
* A reference to the former taxonomical parents
*/
//private Map<TaxonNode, ITaxonTreeNode> oldParentTreeNodes;
- private TaxonNode taxonNode;
- private boolean moveToParentNode;
+ private final Set<UUID> taxonNodesUuid;
+ private final boolean moveToParentNode;
/**
* <p>Constructor for MoveTaxonOperation.</p>
*
* @param conversationEnabled a {@link eu.etaxonomy.cdm.api.conversation.IConversationEnabled} object.
*/
public MoveTaxonOperation(String label, IUndoContext undoContext,
- TaxonNode taxonNodeToMove, ITaxonTreeNode newParentTreeNode, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled, boolean moveToParentNode) {
+ Set<UUID> taxonNodesUUIDToMove, ITaxonTreeNode newParentTreeNode, IPostOperationEnabled postOperationEnabled, IConversationEnabled conversationEnabled, boolean moveToParentNode) {
super(label, undoContext, postOperationEnabled, conversationEnabled);
-
- this.taxonNode = taxonNodeToMove;
+
+ this.taxonNodesUuid = taxonNodesUUIDToMove;
/*for (TaxonNode node:taxonNodes){
this.taxonNodes.add(service.load(node.getUuid()));
}*/
-
+
this.newParentTreeNode = newParentTreeNode;
this.moveToParentNode = moveToParentNode;
// Save old parent ITaxonTreeNodes for undo
-
+
//this.parentNode = taxonNode.getParent();
}
bind();
monitor.worked(20);
- UpdateResult result = CdmStore.getService(ITaxonNodeService.class).moveTaxonNode(this.taxonNode.getUuid(),newParentTreeNode.getUuid(), moveToParentNode);
+ UpdateResult result = CdmStore.getService(ITaxonNodeService.class).moveTaxonNodes(this.taxonNodesUuid,newParentTreeNode.getUuid());
// try {
// for (TaxonNode taxonNode : taxonNodes){
// TaxonNode newTaxonNode = newParentTreeNode.addChildNode(taxonNode,
// newParentTreeNode.getReference(), newParentTreeNode.getMicroReference());
// //taxonNodes.add(newTaxonNode);
-//
+//
// monitor.worked(2);
// }
// } catch(IllegalAncestryException e) {
Bundle-Vendor = EDIT\r
Bundle-Name = DataStore Bundle\r
command.name.13 = delete\r
-command.name.14 = delete
\ No newline at end of file
+command.name.14 = delete\r
+page.name.32 = TaxonNavigator\r
+page.name.33 = Sort of Taxonnodes\r
+command.name.15 = Open
\ No newline at end of file
page.name.28 = Checklisten Editor
page.name.29 = Editor Profil
page.name.30 = Sprache
+page.name.32 = TaxonNavigator
+page.name.33 = Sortierung im TaxonNavigator
command.label.clone = Klonen
command.label.openInSpecimenEditor = \u00d6ffnen im Specimen-Editor
\ No newline at end of file
-CdmDataSourceViewPart_1=Datenquelle wird geladen\r
-CdmDataSourceViewPart_10=Server\r
-CdmDataSourceViewPart_11=Name\r
-CdmDataSourceViewPart_12=Verbunden\r
-CdmDataSourceViewPart_2=Notizen\r
-CdmDataSourceViewPart_3=Kompatibel\r
-CdmDataSourceViewPart_4=CDM Version\r
-CdmDataSourceViewPart_5=Erstellt\r
-CdmDataSourceViewPart_6=Nomenklaturcode\r
-CdmDataSourceViewPart_7=Datenquelle\r
-CdmDataSourceViewPart_8=Typ\r
-CdmDataSourceViewPart_9=Verf\u00FCgbar\r
-LanguageEditorPreferencePage_ChooseDefaultLanguage=Bitte wählen Sie die Standardsprache für den Taxonomischen Editor aus.\r
-LanguageEditorPreferencePage_EditorHasToRestart=Der Anwendung muss neu gestartet werden, um die Sprache zu wechseln.\nWollen Sie jetzt neu starten?\r
-LanguageEditorPreferencePage_PleaseRestart=Bitte neu starten\r
-LanguageEditorPreferencePage_RestartRequired=Nach dem Wechsel der Standardsprache ist ein Neustart erforderlich.\r
-OrderPreferencePage_NewNavigatorWindowRequired=Nach dem Ändern der Taxon Sortierung, ist das Schließen und erneute Öffnen des taxon Navigators erforderlich.\r
-UriWithLabelElement_URL_NOT_SAVED=URL wird nicht gespeichert\!\r
-UriWithLabelElement_COULD_NOT_OPEN_BROWSER=Externer Browser konnt nicht geöffnet werden. URL is ung\u00FCtlig.\r
-UriWithLabelElement_INVALID_URL=Ung\u00FCltiger URL\r
+CdmDataSourceViewPart_1=Datenquelle wird geladen
+CdmDataSourceViewPart_10=Server
+CdmDataSourceViewPart_11=Name
+CdmDataSourceViewPart_12=Verbunden
+CdmDataSourceViewPart_2=Notizen
+CdmDataSourceViewPart_3=Kompatibel
+CdmDataSourceViewPart_4=CDM Version
+CdmDataSourceViewPart_5=Erstellt
+CdmDataSourceViewPart_6=Nomenklaturcode
+CdmDataSourceViewPart_7=Datenquelle
+CdmDataSourceViewPart_8=Typ
+CdmDataSourceViewPart_9=Verf\u00FCgbar
+LanguageEditorPreferencePage_ChooseDefaultLanguage=Bitte wählen Sie die Standardsprache für den Taxonomischen Editor aus.
+LanguageEditorPreferencePage_EditorHasToRestart=Der Anwendung muss neu gestartet werden, um die Sprache zu wechseln.\nWollen Sie jetzt neu starten?
+LanguageEditorPreferencePage_PleaseRestart=Bitte neu starten
+LanguageEditorPreferencePage_RestartRequired=Nach dem Wechsel der Standardsprache ist ein Neustart erforderlich.
+OrderPreferencePage_NewNavigatorWindowRequired=Nach dem Ändern der Taxon Sortierung, ist das Schließen und erneute Öffnen des taxon Navigators erforderlich.
+UriWithLabelElement_URL_NOT_SAVED=URL wird nicht gespeichert\!
+UriWithLabelElement_COULD_NOT_OPEN_BROWSER=Externer Browser konnt nicht geöffnet werden. URL is ung\u00FCtlig.
+UriWithLabelElement_INVALID_URL=Ung\u00FCltiger URL
UriWithLabelElement_OPEN_EXTERNAL_BROWSER=Im Browser öffnen
\ No newline at end of file
id="eu.etaxonomy.taxeditor.preference.defaultlanguagepditorpreferencePage"
name="%page.name.30">
</page>
- <page
+ <page
category="eu.etaxonomy.taxeditor.preferences.general"
class="eu.etaxonomy.taxeditor.preference.OrderPreferences"
- id="eu.etaxonomy.taxeditor.preference.OrderPreferencesPage"
- name="%page.name.31">
+ id="eu.etaxonomy.taxeditor.preference.TaxonNavigator"
+ name="%page.name.32">
</page>
</extension>
<extension
<command
defaultHandler="eu.etaxonomy.taxeditor.handler.OpenHandler"
id="eu.etaxonomy.taxeditor.store.open"
- name="Open">
+ name="%command.name.15">
</command>
</extension>
<extension
// $Id$
/**
-* 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.
-*/
+ * 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.model;
-
/**
*
- * Clients implementing this interface indicate, that the data they present is suitable for the media view
- * and that the media view should handle selection from the implementing part.
+ * Clients implementing this interface indicate, that the data they present is
+ * suitable for the media view and that the media view should handle selection
+ * from the implementing part.
*
* @author pplitzner
* @date Sep 16, 2014
*/
public interface IPartContentHasMedia {
+ /**
+ * Return <code>true</code> if media can be attached to the editor input and
+ * <code>false</code> otherwise
+ *
+ * @return true or false depending on the input of the implementing part
+ */
+ public boolean canAttachMedia();
+
}
/**
- *
+ *
*/
package eu.etaxonomy.taxeditor.ui.dialog.selection;
* @author p.ciardelli
* @version $Id: $
*/
-public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelectionDialog<TaxonNode> implements SelectionListener{
-
+public class TaxonNodeSelectionDialog extends AbstractFilteredCdmResourceSelectionDialog<TaxonNode> implements SelectionListener{
+
/**
* <p>select</p>
*
* @return a {@link eu.etaxonomy.cdm.model.taxon.TaxonNode} object.
*/
public static TaxonNode select(Shell shell, ConversationHolder conversation, String title, List<UUID> excludeTaxa, TaxonNode node, Classification classification) {
- TaxonNodeSelectionDialog dialog = new TaxonNodeSelectionDialog(shell,
+ TaxonNodeSelectionDialog dialog = new TaxonNodeSelectionDialog(shell,
conversation,
title,
excludeTaxa,
private Combo classificationSelectionCombo;
private List<Classification> classifications;
-
- private Classification selectedClassification;
+
+ private Classification selectedClassification;
/**
* <p>Constructor for FilteredTaxonNodeSelectionDialog.</p>
*/
protected TaxonNodeSelectionDialog(Shell shell, ConversationHolder conversation, String title, List<UUID> excludeTaxa, boolean multi, TaxonNode node, Classification classification) {
super(shell, conversation, title, multi, TaxonNodeSelectionDialog.class.getCanonicalName(), node);
-
+
ILabelProvider labelProvider = new FilteredCdmResourceLabelProvider();
setListLabelProvider(labelProvider);
setDetailsLabelProvider(labelProvider);
-
+
if(classification != null){
selectedClassification = classification;
}
protected Control createExtendedContentArea(Composite parent) {
return createClassificationSelectionCombo(parent);
}
-
+
/*
* currently disabled tree selection composite
*/
private Control createClassificationSelectionCombo(Composite parent){
// classifications = CdmStore.getTaxonTreeService().list(null, null, null, null, null);
-
+
Composite classificationSelection = new Composite(parent, SWT.NULL);
classificationSelection.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
-
+
GridLayout layout = new GridLayout();
classificationSelection.setLayout(layout);
-
+
Label label = new Label(classificationSelection, SWT.NULL);
// TODO not working is not really true but leave it here to remind everyone that this is under construction
- label.setText("Select Classification (experimental)");
+ label.setText("Select Classification");
classificationSelectionCombo = new Combo(classificationSelection, SWT.BORDER | SWT.READ_ONLY);
classificationSelectionCombo.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, true));
-
+
for(Classification tree : classifications){
classificationSelectionCombo.add(tree.getName().getText(), classifications.indexOf(tree));
+
}
-
+
classificationSelectionCombo.select(classifications.indexOf(selectedClassification));
-
+
// TODO remember last selection
classificationSelectionCombo.addSelectionListener(this);
-
-
-
+
+
+
return classificationSelection;
}
if(taxonNode != null && taxonNode.getTaxon() != null){
return taxonNode.getTaxon().getTitleCache();
}
-
+
return "";
}
-
+
/* (non-Javadoc)
* @see eu.etaxonomy.taxeditor.dialogs.AbstractFilteredCdmResourceSelectionDialog#getPersistentObject(java.util.UUID)
*/
/** {@inheritDoc} */
@Override
protected void initModel() {
- // default to first tree
- // TODO this will be problematic and can only be seen as workaround
-
-
+ // default to first tree
+ // TODO this will be problematic and can only be seen as workaround
+
+
if(classifications == null){
classifications = CdmStore.getService(IClassificationService.class).list(null, null, null, null, null);
selectedClassification = classifications.iterator().next();
}
-
+
model = CdmStore.getService(IClassificationService.class).getTaxonNodeUuidAndTitleCacheOfAcceptedTaxaByClassification(selectedClassification);
}
protected String getNewWizardLinkText() {
return null;
}
-
+
/** {@inheritDoc} */
- public void widgetSelected(SelectionEvent e) {
+ @Override
+ public void widgetSelected(SelectionEvent e) {
selectedClassification = classifications.get(classificationSelectionCombo.getSelectionIndex());
-
+
// refresh();
setPattern(null);
}
/** {@inheritDoc} */
- public void widgetDefaultSelected(SelectionEvent e) {}
+ @Override
+ public void widgetDefaultSelected(SelectionEvent e) {}
}
//composite(uri + button)
Composite textAndButton = formFactory.createComposite(getLayoutComposite(), style);
+ addControl(textAndButton);
textAndButton.setLayout(LayoutConstants.LAYOUT(2, false));
textAndButton.setLayoutData(LayoutConstants.FILL_HORIZONTALLY());
private EntitySelectionElement<Reference> selection_SecRef;
private Taxon taxon;
-
+
private Reference secReference;
private TextWithLabelElement textNewTaxonName;
setTaxon(selection_reuseExistingTaxon.getEntity());
}
complete = !textNewTaxonName.getText().isEmpty();
-
-
+
+
} else if (eventSource == selection_reuseExistingName) {
boolean enabled = selection_reuseExistingName.getEntity() == null;
selection_reuseExistingTaxon.setEnabled(enabled);
textNewTaxonName.setEnabled(enabled);
setTaxon(selection_reuseExistingName.getEntity());
+ complete = !textNewTaxonName.getText().isEmpty();
} else if (eventSource == textNewTaxonName) {
- boolean enabled = CdmUtils.isEmpty(textNewTaxonName.getText());
+ boolean enabled = CdmUtils.isBlank(textNewTaxonName.getText());
selection_reuseExistingTaxon.setEnabled(enabled);
selection_reuseExistingName.setEnabled(enabled);
this.parentTreeNode = selection_classification.getEntity();
}
}
-
+
private void setSecReference(Reference secRef){
this.secReference = secRef;
setTaxon(textNewTaxonName.getText());
private void setTaxon(Taxon taxon) {
this.taxon = taxon;
textNewTaxonName.setText(taxon.getName().getTitleCache());
-
+ this.secReference = taxon.getSec();
}
private void setTaxon(String taxonNameString) {
try {
URI uri = text_uri.getUri();
getEntity().setUri(uri);
-
+ if(uri==null){
+ //buffer URI if parsing error occurred
+ MediaDetailElement parentMediaDetailElement = getParentMediaDetailElement();
+ if(parentMediaDetailElement!=null){
+ parentMediaDetailElement.setUriBuffer(text_uri.getText());
+ }
+ }
loadImage(getEntity().getUri(), true);
*/
package eu.etaxonomy.taxeditor.ui.section.media;
+import java.net.URI;
import java.util.List;
import java.util.Set;
import eu.etaxonomy.cdm.model.media.MediaRepresentation;
import eu.etaxonomy.cdm.model.media.MediaRepresentationPart;
import eu.etaxonomy.cdm.model.media.MediaUtils;
+import eu.etaxonomy.taxeditor.model.MessagingUtils;
import eu.etaxonomy.taxeditor.preference.IPreferenceKeys;
import eu.etaxonomy.taxeditor.preference.PreferencesUtil;
import eu.etaxonomy.taxeditor.ui.element.CdmFormFactory;
private ICdmFormElement parentFormElement;
private int style;
+ /**
+ * Used to store the URI even if it is invalid and thus cannot be stored in CDM
+ */
+ private String uriBuffer;
+
public MediaDetailElement(CdmFormFactory formFactory, ICdmFormElement formElement) {
super(formFactory, formElement);
}
public void handleEvent(Object eventSource){
if(eventSource==textUri){
textUri.setBackground(getPersistentBackground());
- singleMediaRepresentationPart.setUri(textUri.getUri());
+ URI uri = textUri.getUri();
+ singleMediaRepresentationPart.setUri(uri);
+ if(uri==null){
+ uriBuffer=textUri.getText();
+ }
}
}
- public void toggleAdvancedMediaView(){
+ public void toggleAdvancedMediaView() {
+ if (getEntity().getRepresentations() != null
+ && (getEntity().getRepresentations().size() > 1 ||
+ (getEntity().getRepresentations().size() == 1
+ && getEntity().getRepresentations().iterator().next().getParts().size() > 1))) {
+ MessagingUtils.informationDialog("Toggling not possible",
+ "Media has consists of multiple representations or representatio parts");
+ // toggling is only possible if there are no more than one
+ // MediaRepresentation resp. MediaRepresentationParts
+ return;
+ }
isAdvancedMediaView = !isAdvancedMediaView;
showAdvancedView();
reflowParentScrolledForm(true);
section_mediaRepresentation = formFactory.createMediaRepresentationSection(getConversationHolder(), parentFormElement, style);
section_mediaRepresentation.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
section_mediaRepresentation.setEntity(getEntity());
+ //set buffered uri as text if uri had parsing problems in simple view
+ if(uriBuffer!=null){
+ section_mediaRepresentation.getLayoutComposite().getChildren();
+ }
}
else{
if(section_mediaRepresentation!=null){
removeElementsAndControls(section_mediaRepresentation);
}
textUri = formFactory.createUriWithLabelElement(parentFormElement, "Media URI", null, style);
- textUri.setUri(singleMediaRepresentationPart.getUri());
+ URI uri = singleMediaRepresentationPart.getUri();
+ textUri.setUri(uri);
+ //set buffered uri as text if uri had parsing problems in advanced view
+ if(uri==null && uriBuffer!=null){
+ textUri.setText(uriBuffer);
+ textUri.getUri();
+ }
textUri.getLayoutComposite().layout();
}
}
return isAdvancedMediaView;
}
+ public void setUriBuffer(String uriBuffer) {
+ this.uriBuffer = uriBuffer;
+ }
+
+ public String getUriBuffer() {
+ return uriBuffer;
+ }
+
}
text_size.setText(FileUtils.byteCountToDisplaySize(entity.getSize()));
}
if(entity.getUri() != null){
- text_uri.setText(entity.getUri().toString());
- }
+ text_uri.setUri(entity.getUri());
+ } else {
+ String uriBuffer = getParentMediaDetailElement().getUriBuffer();
+ if(uriBuffer!=null){
+ text_uri.setText(uriBuffer);
+ text_uri.getUri();//just to update the error label
+ }
+ }
}
@Override
if(eventSource == text_uri){
URI uri = text_uri.getUri();
getEntity().setUri(uri);
+ if(uri==null){
+ //buffer URI if parsing error occurred
+ MediaDetailElement parentMediaDetailElement = getParentMediaDetailElement();
+ if(parentMediaDetailElement!=null){
+ parentMediaDetailElement.setUriBuffer(text_uri.getText());
+ }
+ }
+
firePropertyChangeEvent(this);
}
}
+ protected MediaDetailElement getParentMediaDetailElement() {
+ ICdmFormElement parentElement = getParentElement();
+ while(parentElement!=null){
+ parentElement = parentElement.getParentElement();
+ if(parentElement instanceof MediaDetailElement){
+ return (MediaDetailElement) parentElement;
+ }
+ }
+ return null;
+ }
+
}
import eu.etaxonomy.taxeditor.ui.section.AbstractIdentifiableEntityDetailElement;
/**
- * <p>
- * NonViralNameDetailElement class.
- * </p>
- *
* @author n.hoffmann
* @created May 20, 2010
* @version 1.0
private EnumComboElement<NomenclaturalCode> combo_nomenclaturalCode;
private HybridDetailSection section_hybrid;
- /**
- * <p>
- * Constructor for NonViralNameDetailElement.
- * </p>
- *
- * @param formFactory
- * a {@link eu.etaxonomy.taxeditor.ui.element.CdmFormFactory}
- * object.
- * @param formElement
- * a {@link eu.etaxonomy.taxeditor.ui.element.ICdmFormElement}
- * object.
- */
public NonViralNameDetailElement(CdmFormFactory formFactory,
ICdmFormElement formElement) {
super(formFactory, formElement);
}
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#createControls
- * (eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement,
- * eu.etaxonomy.cdm.model.common.AnnotatableEntity, int)
- */
/** {@inheritDoc} */
@Override
protected void createControls(ICdmFormElement formElement, final NonViralName entity, int style) {
- //name can be null in rare cases. Temporary solution for #4221. May be obsolete when
- //#4393 (Make changing name of a taxon possible in details view) is implemented.
- if(entity==null){
- formFactory.createEmptyElement(formElement, "No name associated with this taxon.");
+ toggleable_cache = formFactory.createToggleableTextField(formElement, "Cache", entity.getTitleCache(), entity.isProtectedTitleCache() || entity.isProtectedFullTitleCache(), style);
+
+ combo_nomenclaturalCode = formFactory.createEnumComboElement(NomenclaturalCode.class, formElement, style);
+ combo_nomenclaturalCode.setSelection(entity.getNomenclaturalCode());
+
+ //TODO RL
+ if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
+ toggleable_cache.setVisible(false);
+ combo_nomenclaturalCode.setVisible(false);
}
- else {
- toggleable_cache = formFactory.createToggleableTextField(formElement, "Cache", entity.getTitleCache(), entity.isProtectedTitleCache() || entity.isProtectedFullTitleCache(), style);
-
- combo_nomenclaturalCode = formFactory.createEnumComboElement(NomenclaturalCode.class, formElement, style);
- combo_nomenclaturalCode.setSelection(entity.getNomenclaturalCode());
-
- //TODO RL
- if(PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
- toggleable_cache.setVisible(false);
- combo_nomenclaturalCode.setVisible(false);
- }
-
- section_name = formFactory.createNameDetailSection(getConversationHolder(), formElement, null, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
- section_name.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
- addControl(section_name);
- addElement(section_name);
- section_author = formFactory.createAuthorshipDetailSection(getConversationHolder(), formElement, null, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
- section_author.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
- addControl(section_author);
- addElement(section_author);
-
- //TODO RL
- if(!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
- section_hybrid = formFactory.createHybridDetailSection(getConversationHolder(), formElement, null, ExpandableComposite.TWISTIE);
- section_hybrid.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
- addControl(section_hybrid);
- addElement(section_hybrid);
- }
+
+ section_name = formFactory.createNameDetailSection(getConversationHolder(), formElement, null, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
+ section_name.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+ addControl(section_name);
+ addElement(section_name);
+ section_author = formFactory.createAuthorshipDetailSection(getConversationHolder(), formElement, null, ExpandableComposite.TWISTIE | ExpandableComposite.EXPANDED);
+ section_author.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+ addControl(section_author);
+ addElement(section_author);
+
+ //TODO RL
+ if(!PreferencesUtil.getPreferenceStore().getBoolean(IPreferenceKeys.IS_RL)){
+ section_hybrid = formFactory.createHybridDetailSection(getConversationHolder(), formElement, null, ExpandableComposite.TWISTIE);
+ section_hybrid.setLayoutData(LayoutConstants.FILL_HORIZONTALLY(2, 1));
+ addControl(section_hybrid);
+ addElement(section_hybrid);
}
}
}
}
- /*
- * (non-Javadoc)
- *
- * @see
- * eu.etaxonomy.taxeditor.section.AbstractCdmDetailElement#handleEvent(java
- * .lang.Object)
- */
/** {@inheritDoc} */
@Override
public void handleEvent(Object eventSource) {
CdmStore.getContextManager().addContextListener(this);
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#createPartControl(org.eclipse.swt.widgets.Composite)
- */
@Override
public void createPartControl(Composite parent) {
derivateSearchCompositeController = new DerivateSearchCompositeController(parent, this);
control.setMenu(menu);
}
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.WorkbenchPart#setFocus()
- */
@Override
public void setFocus() {
derivateSearchCompositeController.setFocus();
}
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.model.IContextListener#contextAboutToStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
public void contextAboutToStop(IMemento memento, IProgressMonitor monitor) {
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStop(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
public void contextStop(IMemento memento, IProgressMonitor monitor) {
derivateSearchCompositeController.setEnabled(false);
derivateSearchCompositeController.reset();
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.model.IContextListener#contextStart(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
public void contextStart(IMemento memento, IProgressMonitor monitor) {
derivateSearchCompositeController.setEnabled(true);
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.model.IContextListener#contextRefresh(org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
public void contextRefresh(IProgressMonitor monitor) {
initConversation();
}
}
- /* (non-Javadoc)
- * @see eu.etaxonomy.taxeditor.model.IContextListener#workbenchShutdown(org.eclipse.ui.IMemento, org.eclipse.core.runtime.IProgressMonitor)
- */
@Override
public void workbenchShutdown(IMemento memento, IProgressMonitor monitor) {
}
- /**
- * @return the conversationHolder
- */
public ConversationHolder getConversationHolder() {
if(CdmStore.isActive() && conversationHolder==null){
initConversation();
}
return conversationHolder;
}
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public void dispose() {
+ if(conversationHolder!=null){
+ conversationHolder.close();
+ }
+ }
}
destroySections();
if (input instanceof TaxonBase) {
- createTaxonSections(rootElement);
+ if(((TaxonBase) input).getName()==null){
+ createEmptySection(rootElement);
+ }
+ else{
+ createTaxonSections(rootElement);
+ }
} else if (input instanceof NonViralName) {
createNameSections(rootElement);
<unit id="org.eclipse.rcp.sdk.id" version="3.7.2.M20120208-0800"/>
<unit id="org.eclipse.equinox.sdk.feature.group" version="3.7.1.R37x_v20110907-7M7W8i8eNV4WsRkue-4Vq4J6pCyW"/>
<unit id="org.eclipse.zest.sdk.feature.group" version="1.3.0.v20110425-2050-67C18COMPIAKSVKGQaRTQTiSN8WP"/>
+<unit id="org.eclipse.pde.feature.group" version="3.7.2.v20120120-1420-7b7rFUOFEx2Xnqafnpz0E--0"/>
<repository location="http://download.eclipse.org/releases/indigo"/>
</location>
<location includeAllPlatforms="true" includeConfigurePhase="false" includeMode="slicer" includeSource="true" type="InstallableUnit">