Project

General

Profile

Actions

feature request #8146

closed

Adapt taxeditor UI to structure and property term type

Added by Patrick Plitzner almost 4 years ago. Updated almost 4 years ago.

Status:
Closed
Priority:
Highest
Assignee:
Patrick Plitzner
Category:
taxeditor
Target version:
Start date:
Due date:
% Done:

100%

Estimated time:
Severity:
normal
Tags:

Description

  1. Add term editor menu for each
  2. Restrict tree selection in CharacterEditor
  3. Restrict context menu, selection dialogs, drag&drop functionality
  4. Adapt DetailsView (if necessary)

remaining issues:

  • There is no TermType.Character. The character tree selection in the character editor is still unfiltered

Files

picture937-1.png (97.5 KB) picture937-1.png Patrick Plitzner, 04/04/2019 07:45 AM

Related issues

Related to EDIT - feature request #8012: Add termType for Structure and PropertyClosedAndreas Müller

Actions
Related to EDIT - feature request #6794: Improve term structureIn ProgressAndreas Müller

Actions
Related to EDIT - feature request #8153: Adapt cdmlib to FeatureNode/FeatureTree model changesClosedPatrick Plitzner

Actions
Related to EDIT - feature request #8235: Create separate menu for term tree editors for each term tree typeClosedPatrick Plitzner

Actions
Actions #1

Updated by Patrick Plitzner almost 4 years ago

Actions #2

Updated by Patrick Plitzner almost 4 years ago

Actions #3

Updated by Patrick Plitzner almost 4 years ago

  • Description updated (diff)
Actions #4

Updated by Patrick Plitzner almost 4 years ago

  • Description updated (diff)
Actions #5

Updated by Patrick Plitzner almost 4 years ago

  • Description updated (diff)
Actions #6

Updated by Patrick Plitzner almost 4 years ago

  • Description updated (diff)
Actions #7

Updated by Patrick Plitzner almost 4 years ago

  • Description updated (diff)
Actions #8

Updated by Patrick Plitzner almost 4 years ago

Add character to term menu with 2c98dda6165033a58c7df8c06b21518d380307b3

Actions #9

Updated by Patrick Plitzner almost 4 years ago

  • Priority changed from New to Highest
Actions #10

Updated by Patrick Plitzner almost 4 years ago

  • Description updated (diff)
  • Priority changed from Highest to New
Actions #11

Updated by Patrick Plitzner almost 4 years ago

  • Priority changed from New to Highest
Actions #12

Updated by Patrick Plitzner almost 4 years ago

  • Status changed from New to Resolved
  • % Done changed from 0 to 50
Actions #13

Updated by Patrick Plitzner almost 4 years ago

  • Assignee changed from Patrick Plitzner to Katja Luther

For review check the points in the description and play around with vocabularies and trees of different term types.

Check if the type check is correct:
*Vocabulary can only contain terms of their own type.
*TermTrees can only contain TermNodes of their type. The term of the TermNode can, however, be a subtype of the node's type

Actions #14

Updated by Katja Luther almost 4 years ago

deleting a feature from termTree throws an exception but removing is successful


login : admin
editor version : 5.6.0.qualifier
server : test.e-taxonomy.eu (edit-test) / rem_conf_am
schema version : 5.5.0.0.20190221
os : Windows 7 6.1 amd64
java : 1.8.0_171
org.eclipse.swt.SWTException: Failed to execute runnable (org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement)
    at org.eclipse.swt.SWT.error(SWT.java:4533)
    at org.eclipse.swt.SWT.error(SWT.java:4448)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4211)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3827)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1121)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1022)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:150)
    at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:693)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:610)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
    at eu.etaxonomy.taxeditor.Application.start(Application.java:24)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1492)
Caused by: org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [null]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
    at org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:164)
    at org.springframework.orm.hibernate5.HibernateTransactionManager.convertHibernateAccessException(HibernateTransactionManager.java:741)
    at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:589)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:761)
    at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:730)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.commitTransactionAfterReturning(TransactionAspectSupport.java:485)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:291)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:96)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
    at com.sun.proxy.$Proxy695.deleteFeatureNode(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:302)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:190)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:157)
    at org.springframework.remoting.support.RemoteInvocationTraceInterceptor.invoke(RemoteInvocationTraceInterceptor.java:78)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
    at com.sun.proxy.$Proxy982.deleteFeatureNode(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.springframework.remoting.support.RemoteInvocation.invoke(RemoteInvocation.java:212)
    at org.springframework.remoting.support.DefaultRemoteInvocationExecutor.invoke(DefaultRemoteInvocationExecutor.java:39)
    at org.springframework.remoting.support.RemoteInvocationBasedExporter.invoke(RemoteInvocationBasedExporter.java:78)
    at org.springframework.remoting.support.RemoteInvocationBasedExporter.invokeAndCreateResult(RemoteInvocationBasedExporter.java:114)
    at org.springframework.remoting.httpinvoker.HttpInvokerServiceExporter.handleRequest(HttpInvokerServiceExporter.java:74)
    at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:51)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:893)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:969)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:871)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:845)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:808)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:316)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:126)
    at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:90)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:114)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:122)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:169)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:48)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:213)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:120)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:64)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:91)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:53)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:330)
    at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:213)
    at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:176)
    at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
    at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:262)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:121)
    at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:577)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:215)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97)
    at org.eclipse.jetty.server.Server.handle(Server.java:497)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:310)
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257)
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:540)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:635)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:555)
    at java.lang.Thread.run(Thread.java:748)
    at org.springframework.remoting.support.RemoteInvocationUtils.fillInClientStackTraceIfPossible(RemoteInvocationUtils.java:45)
    at org.springframework.remoting.support.RemoteInvocationResult.recreate(RemoteInvocationResult.java:149)
    at org.springframework.remoting.support.RemoteInvocationBasedAccessor.recreateRemoteInvocationResult(RemoteInvocationBasedAccessor.java:85)
    at org.springframework.remoting.httpinvoker.HttpInvokerClientInterceptor.invoke(HttpInvokerClientInterceptor.java:150)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:208)
    at com.sun.proxy.$Proxy55.deleteFeatureNode(Unknown Source)
    at eu.etaxonomy.taxeditor.featuretree.e4.operation.RemoveFeatureOperation.execute(RemoveFeatureOperation.java:40)
    at eu.etaxonomy.taxeditor.model.AbstractUtility.lambda$3(AbstractUtility.java:147)
    at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:162)
    at org.eclipse.ui.internal.UISynchronizer$3.run(UISynchronizer.java:154)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
    ... 24 more
Caused by: org.hibernate.exception.ConstraintViolationException: could not execute statement
    at org.hibernate.exception.internal.SQLExceptionTypeDelegate.convert(SQLExceptionTypeDelegate.java:59)
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:42)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:109)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:95)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:207)
    at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:45)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2886)
    at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3386)
    at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:89)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:560)
    at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:434)
    at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:337)
    at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:39)
    at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1282)
    at org.hibernate.envers.internal.synchronization.AuditProcess.doBeforeTransactionCompletion(AuditProcess.java:156)
    at org.hibernate.envers.internal.synchronization.AuditProcessManager$1.doBeforeTransactionCompletion(AuditProcessManager.java:46)
    at org.hibernate.engine.spi.ActionQueue$BeforeTransactionCompletionProcessQueue.beforeTransactionCompletion(ActionQueue.java:899)
    at org.hibernate.engine.spi.ActionQueue.beforeTransactionCompletion(ActionQueue.java:481)
    at org.hibernate.internal.SessionImpl.beforeTransactionCompletion(SessionImpl.java:2340)
    at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.beforeTransactionCompletion(JdbcCoordinatorImpl.java:485)
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.beforeCompletionCallback(JdbcResourceLocalTransactionCoordinatorImpl.java:147)
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl.access$100(JdbcResourceLocalTransactionCoordinatorImpl.java:38)
    at org.hibernate.resource.transaction.backend.jdbc.internal.JdbcResourceLocalTransactionCoordinatorImpl$TransactionDriverControlImpl.commit(JdbcResourceLocalTransactionCoordinatorImpl.java:231)
    at org.hibernate.engine.transaction.internal.TransactionImpl.commit(TransactionImpl.java:65)
    at org.springframework.orm.hibernate5.HibernateTransactionManager.doCommit(HibernateTransactionManager.java:581)
    ... 126 more
Caused by: java.sql.SQLIntegrityConstraintViolationException: Column 'termType' cannot be null
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:117)
    at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:970)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1109)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1057)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1377)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1042)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:384)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:204)
    ... 146 more
Actions #15

Updated by Katja Luther almost 4 years ago

  • restricting tree selection seems to work
  • drag&drop of terms into a term tree works as expected
Actions #16

Updated by Patrick Plitzner almost 4 years ago

Katja Luther wrote:

deleting a feature from termTree throws an exception but removing is successful

This exception is only thrown due to legacy data. TermTrees and -Nodes without termType set should not exist anymore. On which DB did you test? Maybe the update script did not run completely.

Actions #17

Updated by Andreas Müller almost 4 years ago

  • Status changed from Resolved to Feedback
  • Assignee changed from Katja Luther to Andreas Müller

Patrick Plitzner wrote:

Katja Luther wrote:

deleting a feature from termTree throws an exception but removing is successful

This exception is only thrown due to legacy data. TermTrees and -Nodes without termType set should not exist anymore. On which DB did you test? Maybe the update script did not run completely.

DB you find in log. cdm_rem_conf_am.
I guess the reason is FeatureNode_AUD.termType which is NOT NULL. This is probably an issue in the update script. I take this ticket to further investigate.

Actions #18

Updated by Andreas Müller almost 4 years ago

Actions #19

Updated by Andreas Müller almost 4 years ago

  • Status changed from Feedback to Resolved
  • Assignee changed from Andreas Müller to Katja Luther

I adjusted the update script. To test if the script works correctly now we should take a production database and move it to test or to localhost and test the update. Test if TaxonNode_AUD.termType is set to allow NULL as it should.

On rem_conf_am (and all other databases on test) I updated manually so you can continue testing this ticket.

Actions #20

Updated by Patrick Plitzner almost 4 years ago

  • Assignee changed from Katja Luther to Patrick Plitzner
Actions #21

Updated by Patrick Plitzner almost 4 years ago

I copied additivity_ontology to my local DBs and connected with the taxeditor. Seems like it worked.

Actions #22

Updated by Katja Luther almost 4 years ago

  • Status changed from Resolved to Feedback
  • Assignee changed from Katja Luther to Patrick Plitzner

tested on nightly:

open term editor for structures, create a new vocabulary, try drag&drop from one vocabulary to the another -> works
open term editor for properties try to drag&drop a term of type structure to a vocabulary of properties -> message box that the term hast not the same type as the vocabulary

in character editor:
selection dialogs show only the correct vocabularies.

in term tree editor:
tried to add features to different term trees and only the correct vocabularies are available to select a term

Maybe it would be nice to have a possibility to distinguish between the term tree types. neither in details view nor in term tree editor it is shown which type of terms are allowed.

Actions #23

Updated by Patrick Plitzner almost 4 years ago

Katja Luther wrote:

Maybe it would be nice to have a possibility to distinguish between the term tree types. neither in details view nor in term tree editor it is shown which type of terms are allowed.

We could add the termtype to the label of term trees and terms and maybe make it toggleable in the preferences. Also in the details view it should be shown

Actions #24

Updated by Patrick Plitzner almost 4 years ago

  • Status changed from Feedback to Resolved
  • Assignee changed from Patrick Plitzner to Katja Luther

I added the term type for feature trees to the details view. Is this ok?
We may think about further options in the next release.

Actions #25

Updated by Katja Luther almost 4 years ago

  • Status changed from Resolved to Feedback
  • Assignee changed from Katja Luther to Patrick Plitzner

Patrick Plitzner wrote:

I added the term type for feature trees to the details view. Is this ok?
We may think about further options in the next release.

I would put the termtype above the name, because it is more like an description.

Actions #26

Updated by Patrick Plitzner almost 4 years ago

  • Status changed from Feedback to Resolved
  • Assignee changed from Patrick Plitzner to Katja Luther
  • % Done changed from 50 to 80

Katja Luther wrote:

Patrick Plitzner wrote:

I added the term type for feature trees to the details view. Is this ok?
We may think about further options in the next release.

I would put the termtype above the name, because it is more like an description.

I moved the termType to the top

Actions #27

Updated by Katja Luther almost 4 years ago

  • Assignee changed from Katja Luther to Andreas Müller

Patrick Plitzner wrote:

I added the term type for feature trees to the details view. Is this ok?
We may think about further options in the next release.

@Patrick: Please open a new ticket for this discussion,
@Andreas M. Then we can close this ticket?

Actions #28

Updated by Patrick Plitzner almost 4 years ago

Katja Luther wrote:

Patrick Plitzner wrote:

I added the term type for feature trees to the details view. Is this ok?
We may think about further options in the next release.

@Patrick: Please open a new ticket for this discussion,
@Andreas M. Then we can close this ticket?

new ticket #8235

Actions #29

Updated by Patrick Plitzner almost 4 years ago

  • Related to feature request #8235: Create separate menu for term tree editors for each term tree type added
Actions #30

Updated by Andreas Müller almost 4 years ago

Why not using the term type in the label, e.g. instead of FeatureTree => Structure Tree. Then users must not think about what a term type means if the label says "Feature Tree". Also it is not consistent to have term type structure under the label "FeatureTree". However, this is a minor issue and if we implement the term type specific Term Tree editors soon we may keep it as it is for now.

Actions #31

Updated by Andreas Müller almost 4 years ago

  • Status changed from Resolved to Feedback
  • Assignee changed from Andreas Müller to Patrick Plitzner

Generally it should be possible to move a Character subtree to a Feature tree as Character is a subtype. But of course then all term nodes need to change its term type to the more general term type "Feature". We have discussed this already on cdmlib level for the "add" method. Please open a new ticket for this issue as probably it is not simple enough to be implemented still in this ticket.

Also the other way round we need to discuss. Feature nodes may be moved to character trees if and only if all the feature nodes contain characters. This is important to make the operation reversable. But it requires an additional check if the condition holds and user feedback if the operation is not possible.

Actions #32

Updated by Andreas Müller almost 4 years ago

All the rest seems to work and ticket can be closed then.

Actions #33

Updated by Patrick Plitzner almost 4 years ago

  • Status changed from Feedback to Closed
  • % Done changed from 80 to 100

Added #8146#note-30 to #8235

Created #8238 for #8146#note-31

Closing this ticket

Actions

Also available in: Atom PDF