Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 166025

Summary: Move, Copy, Delete, Rename and Import/Export test assets.
Product: z_Archived Reporter: Jerome Gout <jerome.gout>
Component: TPTPAssignee: Bozier jerome <jerome.bozier>
Status: CLOSED FIXED QA Contact:
Severity: enhancement    
Priority: P1 CC: alexberns, dkhodges, hoppea, i.am.brs, jerome.bozier, jkubasta, kurtism, paulslau, slavescu
Version: unspecifiedKeywords: plan
Target Milestone: ---Flags: paulslau: review+
Hardware: PC   
OS: All   
URL: http://www.eclipse.org/tptp/groups/Architecture/documents/features/hf_166025.html
Whiteboard:
Bug Depends on: 160485, 187823, 215236, 216958, 220555    
Bug Blocks: 69805, 123833, 142244, 171561, 222822, 228241, 228259, 232081    
Attachments:
Description Flags
partial patch covering move/rename/delete
none
patch. see description bellow
none
micro conception about copy/paste/delete/remove/rename
none
see below
none
see below
none
stable patch
none
Patch Version 6
none
Patch version 7
none
latest patch
none
patch V9
none
Screen capture #1.
none
Screen capture #2.
none
patch V10
none
patch V11
none
patch V12
none
howto about this feature
none
micro patch
none
manual test case to check rename policy
none
little patch, see below
none
little patch, see below
none
little patch, see below
none
manual test for deployment bugs
none
fix for external copy paste none

Description Jerome Gout CLA 2006-11-28 04:13:39 EST
We need to provide to way to keep references contained inside test assets models when performing actions such as Rename, Move and Delete.
Comment 1 Jerome Gout CLA 2006-11-28 04:19:05 EST
*** Bug 83087 has been marked as a duplicate of this bug. ***
Comment 2 Paul Slauenwhite CLA 2006-11-28 07:47:38 EST
Reassigning to Jerome.
Comment 3 Paul Slauenwhite CLA 2006-11-28 07:51:09 EST
Test cases for this new functionality:

1) https://bugs.eclipse.org/bugs/show_bug.cgi?id=158323#c0

2) https://bugs.eclipse.org/bugs/show_bug.cgi?id=83087#c0
Comment 4 Paul Slauenwhite CLA 2006-11-28 07:51:50 EST
*** Bug 158323 has been marked as a duplicate of this bug. ***
Comment 5 Paul Slauenwhite CLA 2006-11-28 08:03:07 EST
The design should be reviewed by the broader project to ensure correctness and extensibility/reusability for the other TPTP models.
Comment 6 Paul Slauenwhite CLA 2006-11-28 08:38:48 EST
Use cases:
-Moving items inside of the workspace (when Eclipse is running). This is the most common use case.
-Moving items outside of the workspace (when Eclipse is not running). This is not the most common use case.
-Import / Export of partial projects that do not have all their references available (e.g. test suites are exported to file system and imported to a new workspace but not related data pools).
-Copy/Paste and Drag and Drop. Question: how often users do this? Answer: this is not uncommon. Copy/Paste is used to duplicate a schedule and make slight modifications to it.
-Users also need to reorganize assets (moving a set of test logs to a folder for instance), using Cut/Paste or drag and drop.
-Rename the physical (file) name of the test resources as opposed to the logical (or model) name.  Having two file names are a problem.
-Test log also have references to deployments.
-Deletion of test resources that are referenced by other test assets.
Comment 7 Paul Slauenwhite CLA 2006-11-28 08:40:06 EST
(In reply to comment #5)
> The design should be reviewed by the broader project to ensure correctness and
> extensibility/reusability for the other TPTP models.

For example, see https://bugs.eclipse.org/bugs/show_bug.cgi?id=144950.

Comment 8 Paul Slauenwhite CLA 2006-11-29 10:06:29 EST
Meeting minutes from Test Project discussion:

http://dev.eclipse.org/mhonarc/lists/tptp-testing-tools-dev/msg00870.html

Meeting minutes from follow-on AG discussion:

http://dev.eclipse.org/mhonarc/lists/tptp-testing-tools-dev/msg00872.html
Comment 9 Paul Slauenwhite CLA 2007-03-14 14:28:01 EDT
Updating target to future as requested by the PMC.  

Enhancements are targeted to future if not in plan for the current release.
Comment 10 Jerome Gout CLA 2007-05-03 12:52:53 EDT
*** Bug 182623 has been marked as a duplicate of this bug. ***
Comment 11 Paul Slauenwhite CLA 2007-06-29 07:47:00 EDT
*** Bug 83087 has been marked as a duplicate of this bug. ***
Comment 12 Paul Slauenwhite CLA 2007-06-29 07:47:46 EDT
*** Bug 158323 has been marked as a duplicate of this bug. ***
Comment 13 Paul Slauenwhite CLA 2007-08-17 12:10:34 EDT
Updating sizing.
Comment 14 Paul Slauenwhite CLA 2007-09-17 13:05:22 EDT
AG Review Comments:

Need to consider support to rename or fix broken link to a new target, as well as deal with incomplete project checkout.

Jerome, can you integrate these comments into the Description Document and check in the new version?  Thanks.
Comment 15 Paul Slauenwhite CLA 2007-10-04 11:50:35 EDT
Approved by the AG.
Comment 16 Paul Slauenwhite CLA 2007-10-21 21:17:32 EDT
(In reply to comment #15)

For TPTP 4.5.
Comment 17 Paul Slauenwhite CLA 2007-11-26 12:08:11 EST
Retargetting to feature freeze iteration.
Comment 18 Bozier jerome CLA 2008-01-10 11:41:46 EST
Created attachment 86571 [details]
partial patch covering move/rename/delete

this patch contains the original work of Jerome Gout, merged with actual source head.
covered feature :
. move
. rename
. delete
+ all the tools needed to deal with link beetwen ressources proxy

remaining work :
. huge testing (!!!!) to check that nothing has been broke
. implement copy/paste feature
Comment 19 Paul Slauenwhite CLA 2008-01-11 10:53:51 EST
Meeting minutes for this enhancement:

October 25, 2007:
http://wiki.eclipse.org/TPTP-Test-Tools-Design-Review-166025-10252007

January 11, 2008:
http://wiki.eclipse.org/TPTP-Test-Tools-Design-Review-166025-01112008
Comment 20 Bozier jerome CLA 2008-01-15 10:41:25 EST
Created attachment 86939 [details]
patch. see description bellow

fix some problems comming from merging with 4.5 source (especially persistance bug). 
this patch replace previous one
Comment 21 Bozier jerome CLA 2008-01-16 09:10:53 EST
Created attachment 87044 [details]
micro conception about copy/paste/delete/remove/rename
Comment 22 Paul Slauenwhite CLA 2008-01-17 08:54:40 EST
(In reply to comment #21)
> Created an attachment (id=87044) [details]
> micro conception about copy/paste/delete/remove/rename
> 

Thanks Jerome for summarizing these use cases.  A couple of comments/questions:

1) As we have maintained throughout the design of this enhancement, we want to keep the design/implementation as generic as possible to allow reuse in the other TPTP models (trace/statistical/log).  Other TPTP models (log, trace, and statistical) do use references between resources, for example, the references between monitors/nodes/processes/agents in the trace model.  Can we separate the implementation that updates the proxies from the implementation that handles the event (e.g. copy/move/delete/rename) and updates to the EMF resource(s) so the other sub projects could reuse this faction?  If so, does the implementation that handles the event (e.g. copy/move/delete/rename) require the Test Perspective?

2) We need to ask the user to confirm when deleting and pasting referenced resources.  The confirmation should consist of a standard Eclipse confirmation dialog that allows the user to continue with the operation and if the choice should be saved as a preference.

3) Should updateLink(B->A,C) in row 1 of table 3 should be updateTargetLink(B->A,C) (or vise versa), as in the description for the table?

4) In 5.1, we will need to regenerate the IDs in the test asset.

5) When renaming, we need to update both the physical and logical name of the resource.

6) For row 6 of table 5.1, should there be a call to if(explicit(A<-B)) then updateSelfReference(C,B,A)?

7) In 5.2, a copy outside of the Test Perspective would add one or more file pointers to the clipboard instead of file names.  In addition, how do you propose to get a handle to the copy event when not in the Test Perspective?  Finally, we will need UC5 (see http://wiki.eclipse.org/TPTP-Test-Tools-Design-Review-166025-01112008#Core_Use_Cases) to fully handle the scenario when the user does a copy/paste on the file system/Resource Navigator.

8) Again, for 6 we will need UC5 (see http://wiki.eclipse.org/TPTP-Test-Tools-Design-Review-166025-01112008#Core_Use_Cases) to fully handle the import/export scenario.  This may be out of scope for this feature but lets access later early in I6.
Comment 23 Bozier jerome CLA 2008-01-30 08:06:12 EST
Created attachment 88264 [details]
see below

evolution since last patch :
. copy/paste completed and simplified following last meeting decision (no recursive copy of owned elements)
. fixed : NPE on delete
. fixed : copy of directory
. fixed : copy of things when target already exists : automatic rename of copied resource (foo => copy of foo, copy (1) of foo, etc....)
. fixed : update of resource name when an automatic rename is performed
. fixed : copy of heterogeneous selection (proxy + not proxy resourse)

remaining things to do :
. fix an error inside error log that appear sometime after a delete refactoring
. make copy/paste retro-compatible with old pasting mecanism
. enhance wizard for copy/paste ????
. continue testing/fixing....
Comment 24 Bozier jerome CLA 2008-01-30 11:34:36 EST
Created attachment 88300 [details]
see below

done :
. simplified a lot paste wizard to be more intuitive (now use current folder as paste folder)
. re-plugged retro-compatibility with older paster

remaining :
. fix error that appear in error log when you delete a referenced item (as a testsuite when logs still exists)
. even more testing
Comment 25 Bozier jerome CLA 2008-02-01 12:40:59 EST
Created attachment 88607 [details]
stable patch

a cleaned version of previous patch + some minor fix (as automatic rename of not test elements and directory when target already exists)

seems to works quite fine, outside the error raised by property view during update of deleted reference
Comment 26 jkubasta CLA 2008-02-20 08:48:43 EST
Hi Jerome, is the patch ready for review?
Comment 27 Paul Slauenwhite CLA 2008-02-20 12:52:39 EST
(In reply to comment #26)
> Hi Jerome, is the patch ready for review?
> 

This is a milestone patch with not all of the implementation work for this enhancement.  I am in the process of reviewing this patch while Jerome temporarily resumes work on his internal responsibilities  (Jerome worked 100% for 3 weeks to complete this patch and will work 3 weeks on his internal responsibilities, ending  Feb 25.).
Comment 28 Paul Slauenwhite CLA 2008-02-25 11:52:12 EST
Joe, can you review this patch if you have the time?
Comment 29 Paul Slauenwhite CLA 2008-02-26 07:26:33 EST
(In reply to comment #25)

Patch/UI reviewed with the following comments:

-All new APIs in non-internal packaged require the @provisional JavaDoc tag
(see
http://www.eclipse.org/tptp/home/documents/process/development/api_contract.html).

-Extension point IDs (and probably names) should be prefixed with the plug-in ID.

-Please make sure you add the copyright statement to each new file with the
year set to 2008.

-Please make sure the copyright end date is updated on each modified file to
2008.

-Please make sure author and version tags are added to the class JavaDoc
comments for each new/modified file.  For example:

@author  Jerome Bozier
@version February 26, 2008

-Please remove any commented code from the patch that is no longer required.

-To increase readability, can you add an underscore ('_') between the work of
uppercase constants.

-TPTP follows the Java naming conventions for classes and methods (see
http://wiki.eclipse.org/index.php/Naming_Conventions).  

-Complete and remote all //TODO: comments (4).

-//$NON-NLS-1$ should be added at the end of lines with quoted strings.  Two
quoted strings would have //$NON-NLS-1$ //$NON-NLS-2$, and so on.  To find
these easily, select one or more projects in the package explorer, right click,
Source, and Externalize Strings.

-Please comment all public APIs with class and method JavaDoc comments.

-There are several places where variables, imports, and methods are never used
and need to be removed.  

-There are several places where deprecated APIs are used.  Please use their replacements.

-The files in the patch contained in the org.eclipse.hyades.test.tools.core plug-in should not be included in the patch.  These are ANT build and JAR files that we do not store in CVS.  I removed them from the V6 patch.

-Right click an execution result in the root of a plug-in project, select Move, and select the src folder of the plug-in project renders the following exception:

java.lang.reflect.InvocationTargetException
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:388)
at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.run(RefactoringWizardDialog2.java:317)
at org.eclipse.ltk.ui.refactoring.RefactoringWizard.internalPerformFinish(RefactoringWizard.java:554)
at org.eclipse.ltk.ui.refactoring.UserInputWizardPage.performFinish(UserInputWizardPage.java:154)
at org.eclipse.ltk.ui.refactoring.RefactoringWizard.performFinish(RefactoringWizard.java:618)
at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.okPressed(RefactoringWizardDialog2.java:446)
at org.eclipse.jface.dialogs.Dialog.buttonPressed(Dialog.java:471)
at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:623)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation$1.run(RefactoringWizardOpenOperation.java:142)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:154)
at org.eclipse.hyades.test.ui.internal.navigator.action.MoveAction.run(MoveAction.java:45)
at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:168)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:582)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:499)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:410)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222)
at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1251)
at org.eclipse.equinox.launcher.Main.main(Main.java:1227)
Caused by: java.lang.NullPointerException
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RefactoringContext.internalGetRefactoringTransaction(RefactoringContext.java:127)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RefactoringContext.getRefactoringTransaction(RefactoringContext.java:89)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.MoveModelChange.<init>(MoveModelChange.java:42)
at org.eclipse.hyades.test.ui.navigator.EObjectProxyNode.createMoveChange(EObjectProxyNode.java:230)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.MoveRefactoring.createShallowMoveProxyChange(MoveRefactoring.java:108)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.MoveRefactoring.createMoveReferencerChange(MoveRefactoring.java:119)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.MoveRefactoring.createMoveProxyChange(MoveRefactoring.java:96)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.MoveRefactoring.createChange(MoveRefactoring.java:69)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.ReorgRefactoring.checkFinalConditions(ReorgRefactoring.java:64)
at org.eclipse.ltk.core.refactoring.CheckConditionsOperation.run(CheckConditionsOperation.java:83)
at org.eclipse.ltk.core.refactoring.CreateChangeOperation.run(CreateChangeOperation.java:119)
at org.eclipse.ltk.core.refactoring.PerformChangeOperation.run(PerformChangeOperation.java:209)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
Root exception:
java.lang.NullPointerException
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RefactoringContext.internalGetRefactoringTransaction(RefactoringContext.java:127)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RefactoringContext.getRefactoringTransaction(RefactoringContext.java:89)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.MoveModelChange.<init>(MoveModelChange.java:42)
at org.eclipse.hyades.test.ui.navigator.EObjectProxyNode.createMoveChange(EObjectProxyNode.java:230)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.MoveRefactoring.createShallowMoveProxyChange(MoveRefactoring.java:108)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.MoveRefactoring.createMoveReferencerChange(MoveRefactoring.java:119)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.MoveRefactoring.createMoveProxyChange(MoveRefactoring.java:96)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.MoveRefactoring.createChange(MoveRefactoring.java:69)
at org.eclipse.hyades.test.ui.internal.navigator.refactoring.ReorgRefactoring.checkFinalConditions(ReorgRefactoring.java:64)
at org.eclipse.ltk.core.refactoring.CheckConditionsOperation.run(CheckConditionsOperation.java:83)
at org.eclipse.ltk.core.refactoring.CreateChangeOperation.run(CreateChangeOperation.java:119)
at org.eclipse.ltk.core.refactoring.PerformChangeOperation.run(PerformChangeOperation.java:209)
at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)

-Right click an execution result in the root of a plug-in project, select Copy, right click the src folder of the plug-in project, and select Paste will copy the execution result but the link to the test suite is not updated.

-Renaming a test suite causes teh following exceptions:

java.lang.reflect.InvocationTargetException
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:388)
	at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.run(RefactoringWizardDialog2.java:317)
	at org.eclipse.ltk.ui.refactoring.RefactoringWizard.internalPerformFinish(RefactoringWizard.java:554)
	at org.eclipse.ltk.ui.refactoring.UserInputWizardPage.performFinish(UserInputWizardPage.java:154)
	at org.eclipse.ltk.ui.refactoring.RefactoringWizard.performFinish(RefactoringWizard.java:618)
	at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.okPressed(RefactoringWizardDialog2.java:446)
	at org.eclipse.jface.dialogs.Dialog.buttonPressed(Dialog.java:471)
	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:623)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
	at org.eclipse.jface.window.Window.open(Window.java:801)
	at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation$1.run(RefactoringWizardOpenOperation.java:142)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:154)
	at org.eclipse.hyades.test.ui.internal.navigator.action.RenameAction.performRefactoringRename(RenameAction.java:409)
	at org.eclipse.hyades.test.ui.internal.navigator.action.RenameAction.performProxyRefactoringRename(RenameAction.java:397)
	at org.eclipse.hyades.test.ui.internal.navigator.action.RenameAction.run(RenameAction.java:355)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:582)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:499)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:410)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222)
	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1251)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1227)
Caused by: java.lang.NullPointerException
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RefactoringContext.internalGetRefactoringTransaction(RefactoringContext.java:127)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RefactoringContext.getRefactoringTransaction(RefactoringContext.java:89)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.MoveModelChange.<init>(MoveModelChange.java:42)
	at org.eclipse.hyades.test.ui.navigator.CMNNamedElementProxyNode$RenameModelChange.<init>(CMNNamedElementProxyNode.java:266)
	at org.eclipse.hyades.test.ui.navigator.CMNNamedElementProxyNode.createRenameChange(CMNNamedElementProxyNode.java:220)
	at org.eclipse.hyades.test.ui.navigator.DefaultTestSuiteProxyNode.createRenameChange(DefaultTestSuiteProxyNode.java:279)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RenameRefactoring.createShallowRenameProxyChange(RenameRefactoring.java:87)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RenameRefactoring.createRenameModelChange(RenameRefactoring.java:99)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RenameRefactoring.createRenameProxyNodeChange(RenameRefactoring.java:76)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RenameRefactoring.createChange(RenameRefactoring.java:59)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.ReorgRefactoring.checkFinalConditions(ReorgRefactoring.java:64)
	at org.eclipse.ltk.core.refactoring.CheckConditionsOperation.run(CheckConditionsOperation.java:83)
	at org.eclipse.ltk.core.refactoring.CreateChangeOperation.run(CreateChangeOperation.java:119)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.run(PerformChangeOperation.java:209)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
	at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
Comment 30 Paul Slauenwhite CLA 2008-02-26 07:27:40 EST
(In reply to comment #28)
> Joe, can you review this patch if you have the time?
> 

Joe, please hold off on reviewing until the final patch is available.
Comment 31 Paul Slauenwhite CLA 2008-02-26 07:28:19 EST
Created attachment 90738 [details]
Patch Version 6
Comment 32 Bozier jerome CLA 2008-02-27 10:04:26 EST
Created attachment 90861 [details]
Patch version 7

. fix exceptions raised by previous patch (they came because patch was missing "plugin.xml", and then, most of copy/paste feature was not plugged)
. updated copyright on all modified/created source file
. updated author/version on all modified/created file
. updated not internationalized string
. cleaned up code to remove debugging code / commented code
. fixed exception raised when you copy an empty folder inside another empty folder
Comment 33 Bozier jerome CLA 2008-03-03 13:16:55 EST
Created attachment 91404 [details]
latest patch

previous patch had some conflict with base (mostly copyright date updated in both side at same time)
should be fixed
Comment 34 Paul Slauenwhite CLA 2008-03-03 15:51:00 EST
(In reply to comment #32)
> Created an attachment (id=90861) [details]
> Patch version 7
> 
> . fix exceptions raised by previous patch (they came because patch was missing
> "plugin.xml", and then, most of copy/paste feature was not plugged)

Looks good.

> . updated copyright on all modified/created source file

Please use <start year>,  <end year> for the copyright years instead of <start year> - <end year>

> . updated author/version on all modified/created file

Looks good.  Might be better to use your full name instead of jbozier.

> . updated not internationalized string

Looks good.

> . cleaned up code to remove debugging code / commented code

Looks good.  A couple of more exist:

-ReferenceRegistry:
//- Map (project, ProjectReferenceRegistry)

-ProjectReferenceRegistry:
//- (proxy, Set(Reference))

> . fixed exception raised when you copy an empty folder inside another empty
> folder

Looks good.

Additional comments:

-The implementation is working great!

-The first move operation after the workbench is opened typically takes 5 times more time than any subsequent move operations.  Why?

-A move operation (or even the preview) with a large workspace takes too long (e.g. moving /org.eclipse.hyades.test.java.tests/manual/regressionTests/Test.Execution.JUnitPluginRunner.testsuite to the root folder of the plug-in with org.eclipse.hyades.use.cases and org.eclipse.hyades.test.java.tests checked out from CVS takes about 45 seconds).

-The following exception is thrown when opening (e.g. double-click)/moving a test asset in the Test Navigator:

java.lang.NullPointerException
at org.eclipse.birt.chart.util.ChartUtil.pruneInvisibleSedsFromEList(ChartUtil.java:834)
at org.eclipse.birt.chart.util.ChartUtil.pruneInvisibleSeries(ChartUtil.java:875)
at org.eclipse.birt.chart.factory.Generator.build(Generator.java:864)
at org.eclipse.hyades.test.ui.forms.base.VerdictSummaryChart.paintControl(VerdictSummaryChart.java:243)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:216)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1006)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:991)
at org.eclipse.swt.widgets.Composite.WM_PAINT(Composite.java:1402)
at org.eclipse.swt.widgets.Control.windowProc(Control.java:3831)
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:334)
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4473)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2333)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3369)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222)
at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:615)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1251)
at org.eclipse.equinox.launcher.Main.main(Main.java:1227)

-The Delete button does not work in the Test Navigator.

-Deleting a moved test suite causes the following errors:

org.eclipse.hyades.models.common.interactions.impl.BVRExecutionOccurrenceImpl incompatible with org.eclipse.hyades.models.common.facades.behavioral.ITestSuite
Comment 35 Paul Slauenwhite CLA 2008-03-03 15:54:38 EST
*** Bug 216958 has been marked as a duplicate of this bug. ***
Comment 36 Paul Slauenwhite CLA 2008-03-03 16:03:15 EST
(In reply to comment #34)

In addition, we need to start verifying the dependent defects in this patch:

123833
171561
220555
160485
Comment 37 Paul Slauenwhite CLA 2008-03-06 09:05:00 EST
We need to write enablement and TVT test cases for any new function by March 14:

Writing translation verification test cases:  http://www.eclipse.org/tptp/home/documents/process/test/tvt.html

Writing enablement test cases:
http://www.eclipse.org/tptp/home/documents/process/test/enablement.html


Comment 38 Alex Bernstein CLA 2008-03-06 09:59:27 EST
Sorry for the late addition, just got this myself. Are you planning on supporting/addressing the following issue:
-----
Two tests are permitted to have the same name
To reproduce:
Create two tests with different names.
Rename one test by doing one of the following:
* Select the test in the Test Navigator, press F2, enter a duplicate name, and press Enter.
* Open the test in the test editor, click Properties from the context menu, and enter a duplicate name..
 
Two tests (or any two artifact types) should not be permitted to have the same name. This is confusing to the user. 
------------
Thank you
Comment 39 Bozier jerome CLA 2008-03-11 10:38:34 EDT
>-The first move operation after the workbench is opened typically takes 5 times
>more time than any subsequent move operations.  Why?

proxy have to be builded for paste/move/delete/rename operations, in order to be able to update links between ressources. 
so, the first paste/move/delete/rename will build up the proxy if it have never been done, and it can take a little time. 

>-A move operation (or even the preview) with a large workspace takes too long
prolly same thing as previous comment. the proxy building is been made before the preview step because it is needed to be able to know what have to be updated

>-The following exception is thrown when opening (e.g. double-click)/moving a
test asset in the Test Navigator:
>java.lang.NullPointerException
>at
>org.eclipse.birt.chart.util.ChartUtil.pruneInvisibleSedsFromEList(ChartUtil.java:834)
>at
>org.eclipse.birt.chart.util.ChartUtil.pruneInvisibleSeries(ChartUtil.java:875)
i am unable to reproduce it, tested with theses kind of test assets :
. artifact
. deployment
. location
. workbench location
. datapool

>-The Delete button does not work in the Test Navigator.
looking what's happening, i admit i always used contextual menu

>-Deleting a moved test suite causes the following errors:
>org.eclipse.hyades.models.common.interactions.impl.BVRExecutionOccurrenceImpl
>incompatible with
>org.eclipse.hyades.models.common.facades.behavioral.ITestSuite
i am unable to reproduce it


Comment 40 Bozier jerome CLA 2008-03-12 12:39:41 EDT
Created attachment 92336 [details]
patch V9

Code cleaning :
. cleaned last comments remaining inside code
. cleaned copyright header to be in line with existing

Fix :
. when trying to rename a resource, the "OK" button stay greyed if target already exists

Remaining problem :
. "delete" shortcut is disable (but still avalaible inside contextual menu)
Comment 41 Paul Slauenwhite CLA 2008-03-12 16:01:15 EDT
(In reply to comment #40)
> Created an attachment (id=92336) [details]
> patch V9
> 
> Code cleaning :
> . cleaned last comments remaining inside code
> . cleaned copyright header to be in line with existing
> 
> Fix :
> . when trying to rename a resource, the "OK" button stay greyed if target
> already exists
> 
> Remaining problem :
> . "delete" shortcut is disable (but still avalaible inside contextual menu)
> 

Reviewed with comments:

Comment #39:

-For my first two comments, can we rebuild the proxies on a separate non-UI thread when Eclipse starts or the Test Perspective opens?

-For my third comment, this appears to be a BIRT issue with the pie chart in the Test Log view.  Using a newer BIRT driver resolves the problem.

-For my fourth comment, I was referring to the Delete key on the user's keyboard.

-For my fifth comment, I am still seeing the following exception when deleting a moved test suite (see screen capture 2):

java.lang.ClassCastException: org.eclipse.hyades.models.common.interactions.impl.BVRExecutionOccurrenceImpl incompatible with org.eclipse.hyades.models.common.facades.behavioral.ITestSuite
	at org.eclipse.hyades.models.common.facades.behavioral.impl.TptpBVRExecutionOccurrenceAdapter.notifyChanged(TptpBVRExecutionOccurrenceAdapter.java:65)
	at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:247)
	at org.eclipse.hyades.models.common.interactions.impl.BVRExecutionOccurrenceImpl.setOtherBehavior(BVRExecutionOccurrenceImpl.java:268)
	at org.eclipse.hyades.models.common.interactions.impl.BVRExecutionOccurrenceImpl.eUnset(BVRExecutionOccurrenceImpl.java:359)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eUnset(BasicEObjectImpl.java:1153)
	at org.eclipse.hyades.models.hierarchy.util.EMFUtil.unsetAllFeatures(EMFUtil.java:395)
	at org.eclipse.hyades.models.hierarchy.util.EMFUtil.delete(EMFUtil.java:121)
	at org.eclipse.hyades.models.hierarchy.util.EMFUtil.delete(EMFUtil.java:86)
	at org.eclipse.hyades.models.hierarchy.util.EMFUtil.delete(EMFUtil.java:136)
	at org.eclipse.hyades.test.core.util.EMFUtil.remove(EMFUtil.java:576)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.DeleteModelElementChange.perform(DeleteModelElementChange.java:72)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:278)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:278)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:278)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RefactoringTransactionRootChange.access$0(RefactoringTransactionRootChange.java:1)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RefactoringTransactionRootChange$SaveResourceSetRunnable.run(RefactoringTransactionRootChange.java:42)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1782)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RefactoringTransactionRootChange.perform(RefactoringTransactionRootChange.java:63)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:278)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation$1.run(PerformChangeOperation.java:258)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.executeChange(PerformChangeOperation.java:306)
	at org.eclipse.ltk.internal.ui.refactoring.UIPerformChangeOperation.access$1(UIPerformChangeOperation.java:1)
	at org.eclipse.ltk.internal.ui.refactoring.UIPerformChangeOperation$1.run(UIPerformChangeOperation.java:66)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.ltk.internal.ui.refactoring.UIPerformChangeOperation$2.run(UIPerformChangeOperation.java:84)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:130)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3737)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3374)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:165)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:360)
	at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.run(RefactoringWizardDialog2.java:317)
	at org.eclipse.ltk.ui.refactoring.RefactoringWizard.internalPerformFinish(RefactoringWizard.java:554)
	at org.eclipse.ltk.internal.ui.refactoring.PreviewWizardPage.performFinish(PreviewWizardPage.java:387)
	at org.eclipse.ltk.ui.refactoring.RefactoringWizard.performFinish(RefactoringWizard.java:618)
	at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.okPressed(RefactoringWizardDialog2.java:446)
	at org.eclipse.jface.dialogs.Dialog.buttonPressed(Dialog.java:471)
	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:623)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
	at org.eclipse.jface.window.Window.open(Window.java:801)
	at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation$1.run(RefactoringWizardOpenOperation.java:142)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:154)
	at org.eclipse.hyades.test.ui.internal.navigator.action.DeleteAction.run(DeleteAction.java:53)
	at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:168)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:582)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:499)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:410)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222)
	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1251)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1227)

org.eclipse.core.runtime.CoreException: org.eclipse.hyades.models.common.interactions.impl.BVRExecutionOccurrenceImpl incompatible with org.eclipse.hyades.models.common.facades.behavioral.ITestSuite
	at org.eclipse.ltk.internal.ui.refactoring.UIPerformChangeOperation.executeChange(UIPerformChangeOperation.java:100)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.run(PerformChangeOperation.java:223)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
	at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:119)
org.eclipse.core.runtime.CoreException[4]: java.lang.ClassCastException: org.eclipse.hyades.models.common.interactions.impl.BVRExecutionOccurrenceImpl incompatible with org.eclipse.hyades.models.common.facades.behavioral.ITestSuite
	at org.eclipse.hyades.models.common.facades.behavioral.impl.TptpBVRExecutionOccurrenceAdapter.notifyChanged(TptpBVRExecutionOccurrenceAdapter.java:65)
	at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:247)
	at org.eclipse.hyades.models.common.interactions.impl.BVRExecutionOccurrenceImpl.setOtherBehavior(BVRExecutionOccurrenceImpl.java:268)
	at org.eclipse.hyades.models.common.interactions.impl.BVRExecutionOccurrenceImpl.eUnset(BVRExecutionOccurrenceImpl.java:359)
	at org.eclipse.emf.ecore.impl.BasicEObjectImpl.eUnset(BasicEObjectImpl.java:1153)
	at org.eclipse.hyades.models.hierarchy.util.EMFUtil.unsetAllFeatures(EMFUtil.java:395)
	at org.eclipse.hyades.models.hierarchy.util.EMFUtil.delete(EMFUtil.java:121)
	at org.eclipse.hyades.models.hierarchy.util.EMFUtil.delete(EMFUtil.java:86)
	at org.eclipse.hyades.models.hierarchy.util.EMFUtil.delete(EMFUtil.java:136)
	at org.eclipse.hyades.test.core.util.EMFUtil.remove(EMFUtil.java:576)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.DeleteModelElementChange.perform(DeleteModelElementChange.java:72)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:278)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:278)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:278)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RefactoringTransactionRootChange.access$0(RefactoringTransactionRootChange.java:1)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RefactoringTransactionRootChange$SaveResourceSetRunnable.run(RefactoringTransactionRootChange.java:42)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1782)
	at org.eclipse.hyades.test.ui.internal.navigator.refactoring.RefactoringTransactionRootChange.perform(RefactoringTransactionRootChange.java:63)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java:278)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation$1.run(PerformChangeOperation.java:258)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
	at org.eclipse.ltk.core.refactoring.PerformChangeOperation.executeChange(PerformChangeOperation.java:306)
	at org.eclipse.ltk.internal.ui.refactoring.UIPerformChangeOperation.access$1(UIPerformChangeOperation.java:1)
	at org.eclipse.ltk.internal.ui.refactoring.UIPerformChangeOperation$1.run(UIPerformChangeOperation.java:66)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
	at org.eclipse.ltk.internal.ui.refactoring.UIPerformChangeOperation$2.run(UIPerformChangeOperation.java:84)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:130)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3737)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3374)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:165)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:360)
	at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.run(RefactoringWizardDialog2.java:317)
	at org.eclipse.ltk.ui.refactoring.RefactoringWizard.internalPerformFinish(RefactoringWizard.java:554)
	at org.eclipse.ltk.internal.ui.refactoring.PreviewWizardPage.performFinish(PreviewWizardPage.java:387)
	at org.eclipse.ltk.ui.refactoring.RefactoringWizard.performFinish(RefactoringWizard.java:618)
	at org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.okPressed(RefactoringWizardDialog2.java:446)
	at org.eclipse.jface.dialogs.Dialog.buttonPressed(Dialog.java:471)
	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:623)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
	at org.eclipse.jface.window.Window.open(Window.java:801)
	at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation$1.run(RefactoringWizardOpenOperation.java:142)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:154)
	at org.eclipse.hyades.test.ui.internal.navigator.action.DeleteAction.run(DeleteAction.java:53)
	at org.eclipse.ui.actions.BaseSelectionListenerAction.runWithEvent(BaseSelectionListenerAction.java:168)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:582)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:499)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:410)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:982)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3760)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3371)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2392)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2356)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2222)
	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:474)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:288)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:469)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:193)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:362)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:175)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:564)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1251)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1227)

-When deleting a test asset, can we change the check box message from:

Delete owned referenced assets as well (forces preview).

to

Delete any referenced test assets as well (forces preview).

-When deleting a test log, the referenced test suites do not appear in the preview dialog, despite checking the dialog box.

-When the link from a test log to a test suite is broken, the Test Navigator does not display the time stamp for the test log (see attached screen capture).
Comment 42 Paul Slauenwhite CLA 2008-03-12 16:03:10 EDT
In addition, we need to start verifying the dependent defects in this patch:

123833
171561
220555
160485

Also, can we accommodate Alex's request (see comment #38)?
Comment 43 Paul Slauenwhite CLA 2008-03-12 16:05:59 EDT
Created attachment 92365 [details]
Screen capture #1.
Comment 44 Paul Slauenwhite CLA 2008-03-12 16:06:14 EDT
Created attachment 92366 [details]
Screen capture #2.
Comment 45 Paul Slauenwhite CLA 2008-03-12 16:07:07 EDT
Please update the number of hours worked on this enhancement.
Comment 46 Paul Slauenwhite CLA 2008-03-12 16:08:16 EDT
Joe, can you please test the patch and provide your comments?
Comment 47 Bozier jerome CLA 2008-03-13 10:54:51 EDT
Created attachment 92444 [details]
patch V10

Fix :
. when copy/paste/move/rename of a test log is made outside test view (so link to test suite is broken), test navigator now show time stamp
. updated text when deleting test asset

Remaining stuff to do :
>-For my first two comments, can we rebuild the proxies on a separate non-UI
>thread when Eclipse starts or the Test Perspective opens?
i talked with Jerome on this topic, seems i was wrong on the explanation : the proxy are already builded. but what can happend is that their loading take time. i will try to make a performance check to see what's happening

>-For my fourth comment, I was referring to the Delete key on the user's
>keyboard.
on it, trying to figure where this damn key listener is plugged....

>-For my fifth comment, I am still seeing the following exception when deleting
>a moved test suite (see screen capture 2):
>java.lang.ClassCastException:
>org.eclipse.hyades.models.common.interactions.impl.BVRExecutionOccurrenceImpl
>...
on it, trying to reproduce it

Comment :
>-When deleting a test log, the referenced test suites do not appear in the
>preview dialog, despite checking the dialog box.
test suite does not contain link to its test log. 
so no update are performed

>Also, can we accommodate Alex's request (see comment #38)?
done since patch V9, we can no longer rename a test to a name that already exists (ok button stay greyed in this case)
Comment 48 Bozier jerome CLA 2008-03-17 06:35:42 EDT
Created attachment 92684 [details]
patch V11

fix remaining problems about renaming a resource inside the editor :

when saving a resource inside the editor, a consistency check is performed. let's take an example :
     physical name           logical name
       a.datapool                a
       b.datapool                b
let's rename a into c inside the editor :
     physical name           logical name
       a.datapool                c
       b.datapool                b
now, let's rename b :
. we can't put an empty name for 'b' (trivial name checking)
. we can't rename 'b' into 'c' (logical name check)
. we can't rename 'b' into 'a' (physical name check, to avoid ambiguity)
an error message will appear in any of theses 3 case, and the test element won't be saved and stay dirty
to change this behaviour, the user have to overwrite the method "protected boolean isValidToSave()" from "BaseEditorExtension.java" (just return true for a basic short circuit, of put your own save consistency checking instead)
Comment 49 Alex Bernstein CLA 2008-03-17 09:47:03 EDT
As for the method "protected boolean isValidToSave()" from "BaseEditorExtension.java", is it called before or after 'isOkToSave()' ?
Comment 50 Bozier jerome CLA 2008-03-17 10:54:03 EDT
is is called just before "isOkToSave()"
code sniplet :

		if (!isValidToSave()) {
			return;
		}
		if (this.isOkToSave()) {
...

i could have use the isOkToSave() method but i thought it could have been used by users already, so i prefered to separate this checking
Comment 51 Bozier jerome CLA 2008-03-18 12:51:03 EDT
Created attachment 92820 [details]
patch V12

fix : implement same criteria for name validation either on editor rename or on contextual menu rename

test to check if all is ok :
1. create an empty project
2. in this project, create two artifact, named 'a' and 'b'
3. open editor of artifact 'a'. rename it (via editor) into 'c'
4. open editor of artifact 'b'. put an empty name and try to save. check that an error message appear and that save is not performed (editor stay in "dirty" mode)
5. open editor of artifact 'b'. put an as name 'a' and try to save. check that another error message appear and that save is not performed (editor stay in "dirty" mode)
6. open editor of artifact 'b'. put an as name 'c' and try to save. check that another error message appear and that save is not performed (editor stay in "dirty" mode)
7. open editor of artifact 'b'. put an as name 'd' and try to save. it should work without any error message
8. open editor of artifact 'b'. put an as name 'b' and try to save. it should work without any error message
9. select 'b' artifact in test navigator. right click and select rename. an text box should appear
10. put 'a' as name. 'ok' button should stay greyed
11. put 'c' as name. 'ok' button should stay greyed
12. put 'b' as name. 'ok' button should stay greyed
13. put an empty name. 'ok' button should stay greyed
14. put 'd'. 'ok' button should become active. select it : check that artifact is now named 'd' and that physical resource is 'd.artifact'
Comment 52 Paul Slauenwhite CLA 2008-03-20 11:37:34 EDT
Joe, we need to get this patch integrated today (last day of I6 development and API freeze) so I have removed you as a mandatory reviewer.  That said, if you want to test a build containing this enhancement, please add any comments to this enhancement.
Comment 53 Alex Bernstein CLA 2008-03-20 12:19:28 EDT
Is there a javadoc or other documentation on how to use the enhancement? Which public APIs/extension points exist? And so on?
Comment 54 Paul Slauenwhite CLA 2008-03-20 15:46:30 EDT
(In reply to comment #47)
> >-When deleting a test log, the referenced test suites do not appear in the
> >preview dialog, despite checking the dialog box.
> test suite does not contain link to its test log. 
> so no update are performed

Correct.  But the test log contains a reference to the test suite so deleting the  test log should delete (or at least preview) the reference when checking the check box in the dialog box.
Comment 55 Paul Slauenwhite CLA 2008-03-20 15:49:48 EDT
The latest patch has been reviewed, refactored (e.g. remove unused imports, add copyright statements, fix copyright year range (<first year>, <last year>, add class comments, @provisional tags, etc.), and checked in to CVS (HEAD).  

Outstanding items for this enhancement:

1) Dependent defects:

-220555
-160485

2) Create manual, JUnit/JUnit Plug-in, or AGR test cases to test this function (see comment #51 for a start).

3) Document the APIs and extension points for consuming products to extend.
Comment 56 Paul Slauenwhite CLA 2008-03-20 15:50:30 EDT
Hours worked for the review.

Jerome: Please update the hours worked for this enhancement.
Comment 57 Bozier jerome CLA 2008-03-21 10:03:17 EDT
I am working on a documentation, to explain how to use/extends implemented mechanisms. i'll publish it when done

for estimated time worked, hard to be precise. i'd say around 5 weeks full time

Comment 58 Bozier jerome CLA 2008-03-26 14:02:21 EDT
Created attachment 93654 [details]
howto about this feature

This document explain delete/rename/move/copy/paste : how it works, and how to extend the default behavior : extensions points to add new kind of proxy/proxy relations, interface to implement (or method to overwrite) if you want to overwrite default behavior
Comment 59 Bozier jerome CLA 2008-03-26 14:03:36 EDT
hours worked for whole bug (outside Jerome G. work) : around 5 weeks full time
Comment 60 Paul Slauenwhite CLA 2008-03-26 14:14:33 EDT
(In reply to comment #59)
> hours worked for whole bug (outside Jerome G. work) : around 5 weeks full time
> 

Hours updated.
Comment 61 Paul Slauenwhite CLA 2008-04-02 07:55:24 EDT
Deferring to I7 as approved on the latest AG call (http://wiki.eclipse.org/TPTP-AG-20080331#Test_Project).
Comment 62 Alex Bernstein CLA 2008-04-09 09:48:18 EDT
I have installed M6 driver. There seems to be a small issue related to the fact that org.eclipse.ltk.core.refactoring.Change reference cannot be resolved from my org.eclipse.hyades.test.ui.navigator.DefaultTestSuiteProxyNode-based class. It seems that the "Change" class is used because of this Bugzilla, but the dependency is not re-exported. I think it should be to avoid every downstream plugin having to modify their plugin.xml to add org.eclipse.ltk.core.refactoring dependency.
Comment 63 Bozier jerome CLA 2008-04-09 10:05:56 EDT
Created attachment 95363 [details]
micro patch

. fix export dependencies so that plugins that use test.ui also depends on refectoring plugin
. fix a null pointer exception in case we try to paste without copy before (empty clipboard)
Comment 64 Bozier jerome CLA 2008-04-09 10:25:50 EDT
Created attachment 95370 [details]
manual test case to check rename policy
Comment 65 Alex Bernstein CLA 2008-04-15 16:20:07 EDT
Finally I got to read the "how-to" guide (better late than never), so I have few questions:

1) It was unclear to me how the cross-matching of different test assets is done? In other words, there is a 'org.eclipse.hyades.test.ui.testNavigatorReferenceTypes' extension point, but the document also mentions the addBidirectionalReference("TestInvoker2TestInvoked", (IReferencerProxyNode) invokedProxy, "TestInvoked2TestInvoker") method. Who is calling this method?

2) Could not get a clear picture how Export function is addressed. Is this new behavior plugged into Export wizards? Or is there a utility method that allows to get all references for a given asset?

Thank you
Comment 66 Bozier jerome CLA 2008-04-16 06:01:03 EDT
Created attachment 96228 [details]
little patch, see below

this patch fix an UI exception that was raised by deployment editor when one of the element of a pair (artifact or location) was deleted
Comment 67 Bozier jerome CLA 2008-04-16 11:46:03 EDT
additional bug : 
rename a location or an artifact used in a deployment : the deployment is not corectly updated.
Comment 68 Bozier jerome CLA 2008-04-16 13:25:37 EDT
Created attachment 96287 [details]
little patch, see below

this patch contains 2 fix
. first is for the exception that was raised in deployment editor when artifact was deleted
. second : add an external entry point to let user able to retrieve explicit dependencies of a resource :

in :
org.eclipse.hyades.test.ui.util.TestUIUtil

public static List getExplicitDependencies(IFile file);

this static method return the list of explicit emf dependecies (list of IFile) if the parameter is the resource of an EMF object, return null else
Comment 69 Bozier jerome CLA 2008-04-16 13:27:20 EDT
complement on little bug noted before :
it seems that location proxy are not referenced inside deployment proxy
it explains why deployment is not updated when location is renamed
working on a fix....
Comment 70 Alex Bernstein CLA 2008-04-16 14:06:14 EDT
The patch looks good, except for one thing:

+	public static List getExplicitDependencies(IFile file) {
+		if (file == null) {
+			return null;
+		}
+		// get active proxy manager
+		IFileProxyManager proxManager = null;
+		if(PlatformUI.getWorkbench() != null) {
+			TestNavigator nav = TestNavigator.getTestNavigator(PlatformUI.getWorkbench().getActiveWorkbenchWindow());
+			if (nav != null) {
+				proxManager = nav.getCurrentFileProxyManager();
+			}
+		}
+		IProxyNode prox = proxManager.getProxy(file, null);
+		if (prox == null) {
+			return  null; // no proxy for this resource
+		}

It looks that there are cases when 'proxManager' variable can be null. The 'getProxy' method is called on proxManager later which can be a problem.

Another question:
TestNavigator.getTestNavigator method can possibly return null. When can this happen? When the View is closed? When not in test perspective? If so we should require users to be in test perspective and have test nav view open before they can do export?
Comment 71 Bozier jerome CLA 2008-04-17 03:35:24 EDT
you right, i forgot to test if proxManager is null and return null in this case. I will fix this in next patch, this morning i hope, while fixing dependency problem beetwen deployment and location

for the call to TestNavigator.getTestnavigator, you are right another time, test perspective have to be openned to be not null.

remind that all this code was originally done especially for test navigator utilitities, and then, is only usable in this context. 
if test perspective have never been opened, the proxy are not build, and then, no dependencies calculation beetwen them can be performed
Comment 72 Alex Bernstein CLA 2008-04-17 11:32:53 EDT
I would like to ask for another small enhancement. 

If the process of getting all references can be time-consuming operation in large projects, can we add an IProgressMonitor argument to this method, and update it (and check for cancellations) while iterating over proxies? This will enable me to keep UI responsive.
Comment 73 Bozier jerome CLA 2008-04-21 09:17:43 EDT
Created attachment 96841 [details]
little patch, see below

this patch fix 2 problems :
. UI exception in deployment editor in case a referenced artifact was deleted
. location used in deployment where not registered as references, and then, deployment was not updated if location was deleted/renamed
this patch also add an entry point to calcultate dependencies of EMF file (usable only when test navigator view is created and proxies are build)

it replaces the 2 previous little patch
Comment 74 Paul Slauenwhite CLA 2008-04-21 09:21:37 EDT
[See https://bugs.eclipse.org/bugs/show_bug.cgi?id=162407#c17]:

Jerome, if the user is renaming the physical name of a test asset, we should not rename the logical name, since they are separate names.  Maybe we could ask the user if they would like the rename the logical name at the same time, but we should not assume they want them to be the same.
Comment 75 Paul Slauenwhite CLA 2008-04-21 09:34:49 EDT
[See https://bugs.eclipse.org/bugs/show_bug.cgi?id=220555#c4]:

Jerome, we need to refresh the open editors when removing referenced test assets.
Comment 76 Alex Bernstein CLA 2008-04-21 09:38:36 EDT
Would be great if open editor could be notified when a change occur, so that the refresh can be made in memore, instead of having to reload the file.
Comment 77 Bozier jerome CLA 2008-04-21 09:53:46 EDT
for point #74 :
it's doable, by adding a line in "refactoring" page of rename wizard saying "updating logical name" and checked by default

it was not done before because idea was to minimize the ability of user to put a logical name different than physical one (a huge source of confusion)

for point #75
in theory, open editors perform a reload because the resource they oppened have changed. 

for point #76
it's a bit complex to implement, because not only we have to notify editors that something changed, but also what, and each editor must udate its information for each kind of change (resource disapeared, renamed, etc)
it's not a trivial change....
Comment 78 Bozier jerome CLA 2008-04-21 10:32:20 EDT
Created attachment 96860 [details]
manual test for deployment bugs

this manual test cover the two fixes concerning the deployment 
. UI exception when deleting artifact / location
. deployment updating when artifact / location is renamed
Comment 79 Paul Slauenwhite CLA 2008-04-21 10:56:44 EDT
(In reply to comment #78)
> Created an attachment (id=96860) [details]
> manual test for deployment bugs
> 
> this manual test cover the two fixes concerning the deployment 
> . UI exception when deleting artifact / location
> . deployment updating when artifact / location is renamed
> 

Checked-in to CVS (HEAD).
Comment 80 Paul Slauenwhite CLA 2008-04-21 10:57:14 EDT
(In reply to comment #64)
> Created an attachment (id=95370) [details]
> manual test case to check rename policy
> 

Checked-in to CVS (HEAD).
Comment 81 Paul Slauenwhite CLA 2008-04-22 14:46:21 EDT
(In reply to comment #73)
> Created an attachment (id=96841) [details]
> little patch, see below
> 
> this patch fix 2 problems :
> . UI exception in deployment editor in case a referenced artifact was deleted
> . location used in deployment where not registered as references, and then,
> deployment was not updated if location was deleted/renamed
> this patch also add an entry point to calcultate dependencies of EMF file
> (usable only when test navigator view is created and proxies are build)
> 
> it replaces the 2 previous little patch
> 

Will open defects for this issue and additional requests in comment #77.

Resolving as fixed.
Comment 82 Paul Slauenwhite CLA 2008-04-22 14:49:27 EDT
(In reply to comment #65)
> Finally I got to read the "how-to" guide (better late than never), so I have
> few questions:
> 
> 1) It was unclear to me how the cross-matching of different test assets is
> done? In other words, there is a
> 'org.eclipse.hyades.test.ui.testNavigatorReferenceTypes' extension point, but
> the document also mentions the
> addBidirectionalReference("TestInvoker2TestInvoked", (IReferencerProxyNode)
> invokedProxy, "TestInvoked2TestInvoker") method. Who is calling this method?
> 
> 2) Could not get a clear picture how Export function is addressed. Is this new
> behavior plugged into Export wizards? Or is there a utility method that allows
> to get all references for a given asset?
> 
> Thank you
> 

Alex, please see https://bugs.eclipse.org/bugs/show_bug.cgi?id=228241#c2.
Comment 83 Paul Slauenwhite CLA 2008-04-22 15:06:31 EDT
(In reply to comment #77)
> for point #74 :
> it's doable, by adding a line in "refactoring" page of rename wizard saying
> "updating logical name" and checked by default
> 
> it was not done before because idea was to minimize the ability of user to put
> a logical name different than physical one (a huge source of confusion)

See https://bugs.eclipse.org/bugs/show_bug.cgi?id=228260.

> for point #75
> in theory, open editors perform a reload because the resource they oppened have
> changed. 
> 
> for point #76
> it's a bit complex to implement, because not only we have to notify editors
> that something changed, but also what, and each editor must udate its
> information for each kind of change (resource disapeared, renamed, etc)
> it's not a trivial change....

See https://bugs.eclipse.org/bugs/show_bug.cgi?id=228262.

Comment 84 Alex Bernstein CLA 2008-04-25 10:47:49 EDT
Saving file fails with message "test element name is the same as existing element name". Apart from the fact that this message should not be even here (should skip compare with self), its meaning is unclear. Test element is something that lives inside a test. You are talking about files or test assets. This is in i7 patched version.
Comment 85 Paul Slauenwhite CLA 2008-04-29 08:38:50 EDT
(In reply to comment #84)
> Saving file fails with message "test element name is the same as existing
> element name". Apart from the fact that this message should not be even here
> (should skip compare with self), its meaning is unclear. Test element is
> something that lives inside a test. You are talking about files or test assets.
> This is in i7 patched version.
> 

Alex, since this enhancement is now resolved, please open a new defect for this issue.
Comment 86 Bozier jerome CLA 2008-04-29 14:14:29 EDT
Created attachment 98036 [details]
fix for external copy paste

this patch fix the copy paste feature in case copy was external to eclipse (in windows explorer for example)
Comment 87 Paul Slauenwhite CLA 2008-04-29 19:38:26 EDT
(In reply to comment #86)
> Created an attachment (id=98036) [details]
> fix for external copy paste
> 
> this patch fix the copy paste feature in case copy was external to eclipse (in
> windows explorer for example)
> 

Jerome, this defect has been resolved.  Please attach this patch and comment to https://bugs.eclipse.org/bugs/show_bug.cgi?id=228991.
Comment 88 jkubasta CLA 2008-08-15 12:48:05 EDT
Closing, verified by consumer