Project

General

Profile

feature request #6694

feature request #6565: [MASTER] Eclipse 4 Migration

Migrate FeatureTreeEditor

Added by Patrick Plitzner over 1 year ago. Updated about 1 year ago.

Status:
Closed
Priority:
Highest
Category:
taxeditor
Target version:
Start date:
06/06/2017
Due date:
% Done:

100%

Severity:
critical
Tags:

Description

This should also be implemented or moved outside of the preferences


Related issues

Related to Edit - bug #6726: NPE in FactualDataView and feature selection does not show any entries in Factual Data View Closed 06/14/2017
Related to Edit - feature request #6805: Implement drag and drop from Term Editor (Feature) to FeatureTreeEditor Resolved 07/12/2017
Related to Edit - feature request #6806: Add context menu to FeatureTreeEditor Resolved 07/12/2017
Related to Edit - bug #6838: Implement i18n for FeatureTreeEditor Closed 07/21/2017
Related to Edit - bug #6844: New feature tree selection does not allow "no save" Rejected 07/22/2017
Related to Edit - bug #6845: dirty button does not work in feature tree editor Worksforme 07/22/2017
Precedes Edit - bug #6786: Remaining feature tree editor issues Closed 07/12/2017

Associated revisions

Revision 5ce82a07 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Implement Feature Tree Editor

Revision 880044bc (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Handle dirty state when adding/removing features

Revision cc4535d4 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Improve UI and feature tree creation

Revision d455719e (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Set pattern when creating a new feature tree

Revision 4aca5046 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Remove wizard pages and plugin configurations

Revision f716539d (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Set FeatureTree editor dirty after drag and drop

Revision 4d98dfd9 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Implement selection propagation in feature tree editor

Revision f08ae629 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Remove moved feature node after drag and drop

Revision 94681750 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Beautify alignment of feature tree editor

Revision bc00fbdf (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Move menu item to "Term Editor"

Revision 34fd7a1c (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Extract composite and Listeners from FeatureTreeEditor

Revision 229af84a (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Add separator to term menu

Revision cfbd89d6 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Make text field editable only when feature tree is selected

Revision 4cab9405 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Extract composite and Listeners from FeatureTreeEditor

Conflicts:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/featuretree/e4/FeatureTreeEditor.java

Revision 489923b4 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Add service method to move FeatureNodes

Revision 50c9803d (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Fix session handling when moving feature nodes

Revision 8b0c4c63 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Fix drag and drop behavior

Revision 0196a8bf (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Fix moving of feature nodes

Revision 02fbce4a (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 l10n of FeatureTreeEditor

Revision fbc64294 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Add service method to add child features

  • also add parent of deleted feature node to DeleteResult

Revision 0343d833 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Add CdmEntitySessionHandling to feature tree editor

Revision 17502849 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Use service methods to add and remove features

Revision 21fbfba9 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Always add new features to root node

Revision 349c3582 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Adapt to service method changes

Revision 607cfd81 (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Refactor shell access

Revision fe7208bf (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Fix typo in method name

Revision 1ac1ab0b (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Remove cascading to FeatureNodes from Character

Revision da270d9c (diff)
Added by Patrick Plitzner over 1 year ago

ref #6694 Fix javadoc

Revision 25af2145 (diff)
Added by Patrick Plitzner about 1 year ago

ref #6694 Fix potential NPE

History

#1 Updated by Patrick Plitzner over 1 year ago

  • Status changed from New to Resolved
  • Assignee changed from Patrick Plitzner to Andreas Müller
  • Target version changed from Unassigned CDM tickets to Release 4.8
  • % Done changed from 0 to 80

#2 Updated by Andreas Müller over 1 year ago

  • Related to bug #6726: NPE in FactualDataView and feature selection does not show any entries in Factual Data View added

#3 Updated by Andreas Müller over 1 year ago

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

Please check #6726 if these bugs are related to the changes in this ticket.

#4 Updated by Andreas Müller over 1 year ago

Please move the menu entry to "Term Editor" and there below "Others" separated with 2 separators; and call in "Feature Tree", not "Feature Tree Editor".

@Katja: Could you try to implement this already?

#5 Updated by Andreas Müller over 1 year ago

  • Severity changed from normal to critical

When moving the Edtior with in the UI I got an IllegalAurgumentException (Message: null). Title: "Could not get conversatoin for AbstractFormSection". Description: "There is an error in the implementation. There should have been an active editor but wasn't".

The error occurred recursively. Showing up in 2 dialogs. One with Details/Error trace, one without (this should not happen). I needed to close it at least 10x to make it go away completely. The element getting the focus afterwards was a synonym in Name Editor.

java.lang.IllegalArgumentException
  login : admin
  editor version : 4.8.0.201706140848
  server : test.e-taxonomy.eu (edit-test) / rem_conf_am
  schema version : 4.7.0.0.201710040000
  os : Windows Server 2012 R2 6.3 amd64
  java : 1.8.0_121
    at eu.etaxonomy.taxeditor.ui.element.AbstractFormSection.getConversationHolder(AbstractFormSection.java:591)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.getConversationHolder(AbstractCdmDetailElement.java:277)
    at eu.etaxonomy.taxeditor.ui.element.AbstractFormSection.getConversationHolder(AbstractFormSection.java:587)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.getConversationHolder(AbstractCdmDetailElement.java:277)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.createControls(AuthorshipDetailElement.java:101)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.createControls(AuthorshipDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.updateContent(AbstractCdmDetailElement.java:107)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.updateContent(AuthorshipDetailElement.java:125)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.setEntity(AbstractCdmDetailElement.java:94)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:125)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement.setEntity(NonViralNameDetailElement.java:127)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement.setEntity(NonViralNameDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:125)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection.setTaxonBase(NonViralNameDetailSection.java:129)
    at eu.etaxonomy.taxeditor.view.detail.CdmSectionPart.setFormInput(CdmSectionPart.java:91)
    at org.eclipse.ui.forms.ManagedForm.setInput(ManagedForm.java:210)
    at eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer.refresh(AbstractCdmDataViewer.java:123)
    at eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer.setInput(AbstractCdmDataViewer.java:109)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewer.setInput(DetailsViewer.java:161)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewPart.showViewer(DetailsViewPart.java:268)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewPart.selectionChanged_internal(DetailsViewPart.java:136)
    at eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart$DelaySelection.run(AbstractCdmEditorViewPart.java:52)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
    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)

Setting to critical because of this bug.

#6 Updated by Andreas Müller over 1 year ago

If entering text into the "Title" search box has no effect, the text box should be disabled for entering text.

#7 Updated by Andreas Müller over 1 year ago

Layout: The search box is longer then the textbox for the data. It should be aligned.

#8 Updated by Andreas Müller over 1 year ago

If moving nodes in the tree everything seems to be saved immediately. This is unexpected behavior as users are used to have to save results of editing. If this is wanted there should be a warning at least.
Is it necessary that we do not use "save" and set the save button dirty?

#9 Updated by Andreas Müller over 1 year ago

Sometimes there is a bug when moving nodes. The node does not get deleted at the old position but is added at the new position at the same time.

At the same time I also got a never ending resursion as "Conservation" & "Habitat" iterated as being children of each other.

This is difficult to reproduce but similar problems occurred in the old Feature Treee Editor already.

#10 Updated by Patrick Plitzner over 1 year ago

  • Assignee changed from Patrick Plitzner to Andreas Müller

Andreas Müller wrote:

If moving nodes in the tree everything seems to be saved immediately. This is unexpected behavior as users are used to have to save results of editing. If this is wanted there should be a warning at least.
Is it necessary that we do not use "save" and set the save button dirty?

This has been fixed

#11 Updated by Patrick Plitzner over 1 year ago

  • Assignee changed from Andreas Müller to Patrick Plitzner

Andreas Müller wrote:

When moving the Edtior with in the UI I got an IllegalAurgumentException (Message: null). Title: "Could not get conversatoin for AbstractFormSection". Description: "There is an error in the implementation. There should have been an active editor but wasn't".

The error occurred recursively. Showing up in 2 dialogs. One with Details/Error trace, one without (this should not happen). I needed to close it at least 10x to make it go away completely. The element getting the focus afterwards was a synonym in Name Editor.

java.lang.IllegalArgumentException
  login : admin
  editor version : 4.8.0.201706140848
  server : test.e-taxonomy.eu (edit-test) / rem_conf_am
  schema version : 4.7.0.0.201710040000
  os : Windows Server 2012 R2 6.3 amd64
  java : 1.8.0_121
    at eu.etaxonomy.taxeditor.ui.element.AbstractFormSection.getConversationHolder(AbstractFormSection.java:591)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.getConversationHolder(AbstractCdmDetailElement.java:277)
    at eu.etaxonomy.taxeditor.ui.element.AbstractFormSection.getConversationHolder(AbstractFormSection.java:587)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.getConversationHolder(AbstractCdmDetailElement.java:277)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.createControls(AuthorshipDetailElement.java:101)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.createControls(AuthorshipDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.updateContent(AbstractCdmDetailElement.java:107)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.updateContent(AuthorshipDetailElement.java:125)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.setEntity(AbstractCdmDetailElement.java:94)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:125)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement.setEntity(NonViralNameDetailElement.java:127)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement.setEntity(NonViralNameDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:125)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection.setTaxonBase(NonViralNameDetailSection.java:129)
    at eu.etaxonomy.taxeditor.view.detail.CdmSectionPart.setFormInput(CdmSectionPart.java:91)
    at org.eclipse.ui.forms.ManagedForm.setInput(ManagedForm.java:210)
    at eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer.refresh(AbstractCdmDataViewer.java:123)
    at eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer.setInput(AbstractCdmDataViewer.java:109)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewer.setInput(DetailsViewer.java:161)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewPart.showViewer(DetailsViewPart.java:268)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewPart.selectionChanged_internal(DetailsViewPart.java:136)
    at eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart$DelaySelection.run(AbstractCdmEditorViewPart.java:52)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
    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)

Setting to critical because of this bug.

This should be fixed by propagating the selection of the editor so that the Details view is emptied.

#12 Updated by Patrick Plitzner over 1 year ago

Andreas Müller wrote:

If entering text into the "Title" search box has no effect, the text box should be disabled for entering text.

This is not for searching but for editing the label (titleCache) of the feature tree.

#13 Updated by Patrick Plitzner over 1 year ago

Andreas Müller wrote:

Sometimes there is a bug when moving nodes. The node does not get deleted at the old position but is added at the new position at the same time.

At the same time I also got a never ending resursion as "Conservation" & "Habitat" iterated as being children of each other.

This is difficult to reproduce but similar problems occurred in the old Feature Treee Editor already.

This should also be fixed now. I do not know how to reproduce the recursion but maybe it is fixed as well.

#14 Updated by Patrick Plitzner over 1 year ago

  • Assignee changed from Patrick Plitzner to Andreas Müller

Andreas Müller wrote:

Please move the menu entry to "Term Editor" and there below "Others" separated with 2 separators; and call in "Feature Tree", not "Feature Tree Editor".

@Katja: Could you try to implement this already?

All issues mentioned above should be fixed now

#15 Updated by Andreas Müller over 1 year ago

  • Status changed from Feedback to Resolved
  • Priority changed from New to Highest

#16 Updated by Andreas Müller over 1 year ago

  • Status changed from Resolved to Feedback

Patrick Plitzner wrote:

Andreas Müller wrote:

When moving the Edtior with in the UI I got an IllegalAurgumentException (Message: null). Title: "Could not get conversatoin for AbstractFormSection". Description: "There is an error in the implementation. There should have been an active editor but wasn't".

The error occurred recursively. Showing up in 2 dialogs. One with Details/Error trace, one without (this should not happen). I needed to close it at least 10x to make it go away completely. The element getting the focus afterwards was a synonym in Name Editor.

java.lang.IllegalArgumentException
  login : admin
  editor version : 4.8.0.201706140848
  server : test.e-taxonomy.eu (edit-test) / rem_conf_am
  schema version : 4.7.0.0.201710040000
  os : Windows Server 2012 R2 6.3 amd64
  java : 1.8.0_121
    at eu.etaxonomy.taxeditor.ui.element.AbstractFormSection.getConversationHolder(AbstractFormSection.java:591)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.getConversationHolder(AbstractCdmDetailElement.java:277)
    at eu.etaxonomy.taxeditor.ui.element.AbstractFormSection.getConversationHolder(AbstractFormSection.java:587)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.getConversationHolder(AbstractCdmDetailElement.java:277)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.createControls(AuthorshipDetailElement.java:101)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.createControls(AuthorshipDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.updateContent(AbstractCdmDetailElement.java:107)
    at eu.etaxonomy.taxeditor.ui.section.name.AuthorshipDetailElement.updateContent(AuthorshipDetailElement.java:125)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailElement.setEntity(AbstractCdmDetailElement.java:94)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:125)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement.setEntity(NonViralNameDetailElement.java:127)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailElement.setEntity(NonViralNameDetailElement.java:1)
    at eu.etaxonomy.taxeditor.ui.section.AbstractCdmDetailSection.setEntity(AbstractCdmDetailSection.java:125)
    at eu.etaxonomy.taxeditor.ui.section.name.NonViralNameDetailSection.setTaxonBase(NonViralNameDetailSection.java:129)
    at eu.etaxonomy.taxeditor.view.detail.CdmSectionPart.setFormInput(CdmSectionPart.java:91)
    at org.eclipse.ui.forms.ManagedForm.setInput(ManagedForm.java:210)
    at eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer.refresh(AbstractCdmDataViewer.java:123)
    at eu.etaxonomy.taxeditor.view.AbstractCdmDataViewer.setInput(AbstractCdmDataViewer.java:109)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewer.setInput(DetailsViewer.java:161)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewPart.showViewer(DetailsViewPart.java:268)
    at eu.etaxonomy.taxeditor.view.detail.DetailsViewPart.selectionChanged_internal(DetailsViewPart.java:136)
    at eu.etaxonomy.taxeditor.view.AbstractCdmEditorViewPart$DelaySelection.run(AbstractCdmEditorViewPart.java:52)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
    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)

Setting to critical because of this bug.

This should be fixed by propagating the selection of the editor so that the Details view is emptied.

The problem still exists. I moved the Feature Tree Editor from one place to another and then clicked on any feature and it happened (editor version 4.8.0.201706190848)

#17 Updated by Andreas Müller over 1 year ago

  • Assignee changed from Andreas Müller to Patrick Plitzner

Patrick Plitzner wrote:

Andreas Müller wrote:

Please move the menu entry to "Term Editor" and there below "Others" separated with 2 separators; and call in "Feature Tree", not "Feature Tree Editor".

@Katja: Could you try to implement this already?

All issues mentioned above should be fixed now

The menu is at the right position now, but the 2 separators are still missing

#18 Updated by Andreas Müller over 1 year ago

Patrick Plitzner wrote:

Andreas Müller wrote:

If entering text into the "Title" search box has no effect, the text box should be disabled for entering text.

This is not for searching but for editing the label (titleCache) of the feature tree.

2 problems:

  • even if NO feature tree is selected the field can still be edited (this does not make sense)
  • if the search dialog button is just beside the field it is not intuitive that this is an editing field. Search and editing should be clearly separated. Can we have a search section and an editing section which are separated? Also the search part should have an according label "Search"

#19 Updated by Andreas Müller over 1 year ago

Can you provide according translations for the tab title and the title lable. Something like "Merkmals Baum Editor" und "Merkmals Baum"?

#20 Updated by Andreas Müller over 1 year ago

Patrick Plitzner wrote:

Andreas Müller wrote:

Sometimes there is a bug when moving nodes. The node does not get deleted at the old position but is added at the new position at the same time.

At the same time I also got a never ending resursion as "Conservation" & "Habitat" iterated as being children of each other.

This is difficult to reproduce but similar problems occurred in the old Feature Treee Editor already.

This should also be fixed now. I do not know how to reproduce the recursion but maybe it is fixed as well.

I still managed to create 3 nodes for IndividualsAssociations in the same feature tree just by moving around FeatureNodes. This time no recursion appeared. Still I can't say how to reproduce except for "move nodes often enough, it will occur sooner or later.

#21 Updated by Andreas Müller over 1 year ago

Andreas Müller wrote:

Patrick Plitzner wrote:

Andreas Müller wrote:

Sometimes there is a bug when moving nodes. The node does not get deleted at the old position but is added at the new position at the same time.

At the same time I also got a never ending resursion as "Conservation" & "Habitat" iterated as being children of each other.

This is difficult to reproduce but similar problems occurred in the old Feature Treee Editor already.

This should also be fixed now. I do not know how to reproduce the recursion but maybe it is fixed as well.

I still managed to create 3 nodes for IndividualsAssociations in the same feature tree just by moving around FeatureNodes. This time no recursion appeared. Still I can't say how to reproduce except for "move nodes often enough, it will occur sooner or later.

Now I also managed to create recursion. Afterwards I tried to save but pressing the save button had no result. Also trying to close the tab had no result, no matter if I answered the save request with "save" or cancel".

#22 Updated by Patrick Plitzner over 1 year ago

Andreas Müller wrote:

Patrick Plitzner wrote:

Andreas Müller wrote:

Please move the menu entry to "Term Editor" and there below "Others" separated with 2 separators; and call in "Feature Tree", not "Feature Tree Editor".

@Katja: Could you try to implement this already?

All issues mentioned above should be fixed now

The menu is at the right position now, but the 2 separators are still missing

I added a separator. It seems that RCP will not render two separator after each other by default so there is only one.

#23 Updated by Andreas Müller over 1 year ago

Patrick Plitzner wrote:

Andreas Müller wrote:

Patrick Plitzner wrote:
The menu is at the right position now, but the 2 separators are still missing

I added a separator. It seems that RCP will not render two separator after each other by default so there is only one.

This is strange as I know for sure that I already saw double separators (and usually didn't like them). Can it be that they came up because there were menu items in between which where set to invisible in certain surroundings. Is this maybe a work around to add an extra menu item in between and set it always to invisible?
However, this issue is not release critical, so please first try to solve those issues which are critical.

#24 Updated by Patrick Plitzner over 1 year ago

  • Assignee changed from Patrick Plitzner to Andreas Müller
  • % Done changed from 80 to 90

#25 Updated by Andreas Müller over 1 year ago

  • Assignee changed from Andreas Müller to Patrick Plitzner

Now, when trying to add a new feature in the feature tree I always get an LIE

login : admin
editor version : 4.8.0.201706201949
server : test.e-taxonomy.eu (edit-test) / rem_conf_am
schema version : 4.7.0.0.201710040000
os : Windows Server 2012 R2 6.3 amd64
java : 1.8.0_121
org.hibernate.LazyInitializationException: could not initialize proxy - no Session
    at org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializer.java:148)
    at org.hibernate.Hibernate.initialize(Hibernate.java:62)
    at eu.etaxonomy.cdm.hibernate.HibernateProxyHelper.deproxy(HibernateProxyHelper.java:45)
    at eu.etaxonomy.cdm.model.common.CdmBase.deproxy(CdmBase.java:304)
    at eu.etaxonomy.cdm.persistence.hibernate.CdmPreDataChangeListener.generateCaches(CdmPreDataChangeListener.java:110)
    at eu.etaxonomy.cdm.persistence.hibernate.CacheStrategyGenerator.saveOrUpdateOrMerge(CacheStrategyGenerator.java:48)
    at eu.etaxonomy.cdm.persistence.hibernate.CacheStrategyGenerator.onSaveOrUpdate(CacheStrategyGenerator.java:33)
    at org.hibernate.internal.SessionImpl.fireSaveOrUpdate(SessionImpl.java:648)
    at org.hibernate.internal.SessionImpl.saveOrUpdate(SessionImpl.java:640)
    at org.hibernate.engine.spi.CascadingActions$5.cascade(CascadingActions.java:218)
    at org.hibernate.engine.internal.Cascade.cascadeToOne(Cascade.java:398)
    at org.hibernate.engine.internal.Cascade.cascadeAssociation(Cascade.java:323)
    at org.hibernate.engine.internal.Cascade.cascadeProperty(Cascade.java:162)
    at org.hibernate.engine.internal.Cascade.cascade(Cascade.java:111)
    at org.hibernate.event.internal.AbstractSaveEventListener.cascadeBeforeSave(AbstractSaveEventListener.java:425)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:249)
    at org.hibernate.event.internal.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:178)
    at org.hibernate.event.internal.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:192)
    at org.hibernate.event.internal.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:38)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:177)
    at org.hibernate.event.internal.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:32)
    at org.hibernate.event.internal.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:73)
    at org.hibernate.internal.SessionImpl.fireSave(SessionImpl.java:679)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:671)
    at org.hibernate.internal.SessionImpl.save(SessionImpl.java:666)
    at eu.etaxonomy.cdm.persistence.dao.hibernate.common.CdmEntityDaoBase.save(CdmEntityDaoBase.java:327)
    at eu.etaxonomy.cdm.api.service.ServiceBase.save(ServiceBase.java:268)
    at eu.etaxonomy.cdm.api.service.ServiceBase.save(ServiceBase.java:35)
    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.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
    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.$Proxy697.save(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.$Proxy983.save(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.$Proxy49.save(Unknown Source)
    at eu.etaxonomy.taxeditor.featuretree.e4.FeatureTreeEditor$AddButtonListener.widgetSelected(FeatureTreeEditor.java:166)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:249)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4418)
...

After reloading the feature tree the new feature exists. However, the error pops up and without reloading the new feature is not shown in the tree.

#26 Updated by Andreas Müller over 1 year ago

and when deleting a feature I get an NPE:

login : admin
editor version : 4.8.0.201706201949
server : test.e-taxonomy.eu (edit-test) / rem_conf_am
schema version : 4.7.0.0.201710040000
os : Windows Server 2012 R2 6.3 amd64
java : 1.8.0_121
java.lang.NullPointerException
    at eu.etaxonomy.cdm.api.service.FeatureNodeServiceImpl.isDeletable(FeatureNodeServiceImpl.java:103)
    at eu.etaxonomy.cdm.api.service.FeatureNodeServiceImpl.deleteFeatureNode(FeatureNodeServiceImpl.java:56)
    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.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:99)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:281)
 ...

#27 Updated by Andreas Müller over 1 year ago

  • % Done changed from 90 to 70

#28 Updated by Andreas Müller over 1 year ago

Andreas Müller wrote:

and when deleting a feature I get an NPE:

login : admin
...

This only happens for NON top level feature (feature which do have a parent).

#29 Updated by Andreas Müller over 1 year ago

Adding a new top level feature is not possible once a feature node is selected

#30 Updated by Andreas Müller over 1 year ago

Supplemental data are not yet shown (view is grey). It will not show many data but created, id and uuid might be very helpful, at least for debugging.

Also the details view might be needed for editing "inapplicableIf" and "onlyApplicableIf". Feel free to open new tickets for these issues.

#31 Updated by Andreas Müller over 1 year ago

Andreas Müller wrote:

Patrick Plitzner wrote:

2 problems:

  • even if NO feature tree is selected the field can still be edited (this does not make sense)
  • if the search dialog button is just beside the field it is not intuitive that this is an editing field. Search and editing should be clearly separated. Can we have a search section and an editing section which are separated? Also the search part should have an according label "Search"

The search button is still beside the titleCache button

#32 Updated by Andreas Müller over 1 year ago

Also for the trees themselves no supplemental data and details view is available, but might be a nice feature.

#33 Updated by Patrick Plitzner over 1 year ago

Andreas Müller wrote:

Adding a new top level feature is not possible once a feature node is selected

To do this you have to de-select the current feature (CTRL+Click on the selected item) or just move it to root after having added it

#34 Updated by Patrick Plitzner over 1 year ago

Andreas Müller wrote:

Supplemental data are not yet shown (view is grey). It will not show many data but created, id and uuid might be very helpful, at least for debugging.

Also the details view might be needed for editing "inapplicableIf" and "onlyApplicableIf". Feel free to open new tickets for these issues.

Added new ticket: #6746

#35 Updated by Andreas Müller over 1 year ago

Patrick Plitzner wrote:

Andreas Müller wrote:

Adding a new top level feature is not possible once a feature node is selected

To do this you have to de-select the current feature (CTRL+Click on the selected item) or just move it to root after having added it

As adding top level elements makes 98% of the work you do in the feature tree editor this is not an acceptable solution. CTRL+Click is hidden knowledge which we can't expect the user to have. Moving it to root is a workaround users may find, but not very nice.

There might be different solutions: my preferred one is to have a right click menu like in the term editor and in many other editors and views. This would be more consistent throughout the application. It was ok to have "+" Button when the FeatureTree Editor was still in the preferences as most preferences work with "+". But now it is an "editor" and should follow the look and feel of editors.
We can still keep the buttons but additionally could have a right click menu.

Another solution could be to allow toggle focus without having CTRL pressed (only by clicking). This makes it a bit easier to find. But still this is not really intuitive.

A third solution could be to always add features as top level elements and move them manually to the place were you need them. For the current use cases this is absolutely enough as it is very seldom that users really build trees. Usually they build lists. But for use cases like "additivity" this might be different.

Another solution could be 2 different button, one for top level one for children, but this is also not consistent with other editors (and maybe not intuitive)

#36 Updated by Patrick Plitzner over 1 year ago

  • Assignee changed from Patrick Plitzner to Andreas Müller

Andreas Müller wrote:

Patrick Plitzner wrote:

Andreas Müller wrote:

Adding a new top level feature is not possible once a feature node is selected

To do this you have to de-select the current feature (CTRL+Click on the selected item) or just move it to root after having added it

As adding top level elements makes 98% of the work you do in the feature tree editor this is not an acceptable solution. CTRL+Click is hidden knowledge which we can't expect the user to have. Moving it to root is a workaround users may find, but not very nice.

There might be different solutions: my preferred one is to have a right click menu like in the term editor and in many other editors and views. This would be more consistent throughout the application. It was ok to have "+" Button when the FeatureTree Editor was still in the preferences as most preferences work with "+". But now it is an "editor" and should follow the look and feel of editors.
We can still keep the buttons but additionally could have a right click menu.

Another solution could be to allow toggle focus without having CTRL pressed (only by clicking). This makes it a bit easier to find. But still this is not really intuitive.

A third solution could be to always add features as top level elements and move them manually to the place were you need them. For the current use cases this is absolutely enough as it is very seldom that users really build trees. Usually they build lists. But for use cases like "additivity" this might be different.

Another solution could be 2 different button, one for top level one for children, but this is also not consistent with other editors (and maybe not intuitive)

Now new features are added to root always. Also the other session issues should be fixed now. But there were also cdmlib changes so you have to wait for the build if you test on the test DB

#37 Updated by Andreas Müller over 1 year ago

  • Precedes bug #6786: Remaining feature tree editor issues added

#38 Updated by Andreas Müller over 1 year ago

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

I close this ticket as there was a release and open a new one with remaining issues: #6786

Also some new issues were found. The most important issues are marked as critical and should be handled soon.

#39 Updated by Andreas Müller over 1 year ago

  • Related to feature request #6805: Implement drag and drop from Term Editor (Feature) to FeatureTreeEditor added

#40 Updated by Andreas Müller over 1 year ago

#41 Updated by Andreas Müller over 1 year ago

  • Related to bug #6838: Implement i18n for FeatureTreeEditor added

#42 Updated by Andreas Müller over 1 year ago

  • Related to bug #6844: New feature tree selection does not allow "no save" added

#43 Updated by Andreas Müller over 1 year ago

  • Related to bug #6845: dirty button does not work in feature tree editor added

#44 Updated by Patrick Plitzner about 1 year ago

  • % Done changed from 70 to 100

Also available in: Atom PDF

Add picture from clipboard (Maximum size: 40 MB)