Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [atf-dev] ATF 0.2.2. usage

Robert, David,

I'll follow up on this action item by splitting all of these individual changes into appropriate new bugzilla entries.  Then we can continue the discussion through documentation/bugzilla entries as needed.  I was originally just going to start by posting new bugzilla entries, but I thought it would be better to summarize all of the changes first so when the individual entries start getting added, everyone knows where all of these patches are for.

Thanks for your quick response,
Greg

On 10/31/07, Robert Goodman <goodmanr@xxxxxxxxxx> wrote:

Greg

I did a quick skim of the description of your changes. For some of the changes it looks like a better understanding of why the change was made is needed and then do some architecture work to find the best way solve the problem. For instance, we had never intended for people to subclass JSDebugThread.  That is why it has "internal" in its package name. Given that there are there functions in the class like getLabel(), I can image why you may want to subclass JSDebugThread. The ATF Team would appreciate long-term focused help in defining what is API and how all adopters could take advantage of it. This will, probably, take several iterations to "get right" and arrive at Eclipse quality APIs. One question, for example, is how does it work if two plugins extend the framework and are both installed in the same environment ... which subclass is used, and how is this controlled by the user or the product adopters? Therefore, one thing that would be needed for such "API related patches" is some amount of design or architecture documentation that would allow proper review by adopters and Eclipse API experts. But, hopefully that is not surprising nor prohibitive. It sounds like you've had some good "real life" experience extending ATF so would be in a good position to contribute. You might even start off contributing the documentation (attached to a bugzilla) and then, based on discussion and iteration of that, contribute the code to support the documentation.

  Thanks
     Bob

Robert Goodman
goodmanr@xxxxxxxxxx




"Greg Amerson" <greg@xxxxxxxxxxxx>
Sent by: atf-dev-bounces@xxxxxxxxxxx

10/29/2007 05:11 PM

Please respond to
AJAX Toolkit Framework discussion <atf-dev@xxxxxxxxxxx>

To
"AJAX Toolkit Framework discussion" <atf-dev@xxxxxxxxxxx>
cc

Subject
[atf-dev] ATF 0.2.2. usage







Hello ATF team,

Recently, Genuitec related MyEclipse 6.0 which includes a subset of the ATF project, specifically version 0.2.2 (v20070703100).  During our dev cycle we made some changes to the ATF plugins to allow for better integration and adoption into MyEclipse.  Because of our tight delivery timeline we decided to focus on making the exact changes we needed to the ATF plugins, and then sometime soon after that release we would followup with the ATF team to discuss our changes and get some feedback.  So I'm posting a summary our changes that we made to the ATF plugins for our latest release.

>From the ATF team I'd like to get feedback on the patches I've submitted and possible start a conversation about opening up portions of the codebase for more extensibility.  Also, I'm looking for advice from the team on how we could our usage of ATF plugins so we could better accomplish our objectives if some of our changes made in our patchset are not really required. I've made just the patches that we made to ATF to make it more extensible available in a zip file that can be downloaded here:

http://downloads.myeclipseide.com/downloads/products/eworkbench/public-src/atf_v0.2.2_patches.zip

In the referenced zip file, there are 6 patch files that were diffed against ATF 0.2.2 release or (v200707031000).  I'd like to summarize the changes made in each patch file to help your team better understand our reasons behind the change.

Patch file: 01.web_launch_configuration_patches.txt

1.        WebLaunchConfigurationTab.java
1.        Changed 3 buttons and DebugPreferencesGroup from private to protected so they could be accessed from our subclass
2.        Added boolean field "showServerOption" so in our subclass we could turn off the display of the "Load from Server" button
3.        Modified to UI creation to respect the new "showServerOption" boolean field
4.        Added protected method "createFileSelectionDialog".  This allows us to override in a subclass and provide MyEclipse specific Project file selection dialog
5.        Added protected method "getWebContentRelativePath".  This allows us to override in a subclass and provide MyEclipse specific lookup into MyEclipse webprojects
2.        WebLaunchConfigurationDelegate.java - dded protected method "createDebugJobForURL(url)".  This allows us to provide a subclass that overrides this method and creates a MyEclipse subclass of MozillaDebugJob instead of the normal MozillaDebugJob.
3.        WebLaunchShortcut.java - Added protected method "launchConfiguration(...)" so that in a subclass we could add some MyEclipse specific runtime checks before we actually launch the configuration.
4.        DebugPreferencesGroup.java - Added a public method "setEnabled(boolean)".  For our WebLaunchConfigurationTab subclass we have conditions where we need to disable all controls on the UI.
Patch file: 02.debug_patches.txt
1.        MozillaDebugJob.java
1.        Added new constructor so that subclasses can be created that has less parameters
2.        Added protected method "getDebugBrowser".  This method allows us to provide a MozillaBrowser that may already be running
2.        MozillaDebugPlugin.java - Added null check for appPath because in some MyEclipse configurations appPath can be null and it seems that it will work just fine even when appPath is null.
3.        MozillaDebugUIPlugin.java
1.        Added static method "setJSDebugViews" which allows us to set MyEclipse views to be apart of the JSDEBUGVIEWS array which is used for to open debug related views on various events.
2.        Enhanced a for loop that goes through open editors in the workbench to close MozillaBrowserEditor.  The enhanced for loop will go through multiple workbenches instead of just the active workbench.  In MyEclipse sometimes the Mozilla Browser Editor may be open in a 2nd workbench.
4.        plugin.xml
1.        Had to comment out the debugMozillaPresentation declaration so we could redeclare it in our plugin.  We needed to provide a subclass of the MozillaDebugModelPresentation class.  We needed to create our own subclass of the sourceDisplayUtil field.  Our sourceDisplayUtil subclass does some MyEclipse specific actions.
5.        JSDebugThread.java
1.        Added support for scriptListeners to the JSDebugThread.   In MyEclipse we needed to be notified when scripts were created or destroyed so we added this into the JSDebugThread class.
2.        Added IScriptListener interface that is used in the JSDebugThread class.
6.        JSDebugTarget.java
1.        Added a call to a new static class JSDebugTargetUtil, which only has one method to create the JSDebugThread.  We needed a way to provide a way that our own subclass of JSDebugThread would be used instead.  In our subclass we sometimes want to display things a little different in the scripts view.
2.        Added 2 null checks for debuggerService field.  In our internal tests we were running into some cases where the debuggerService was null, so we added the checks.
7.        JSDebugTargetUtil.java - This is a new static class that was created so we could override and create our own subclass of JSDebugThread.
Patch file: 03.source_lookup_patches.txt
1.        JSSourceLocator.java - Added protected method "findLocalResource" that we can override in our own subclass of JSSourceLocator.  We needed to add some MyEclipse specific resources lookup to this method.
2.        SourceDisplayUtil.java - Added protected method "createStorageEditorInput" so that in our own subclass we could create a StorageEditorInput that would be specific to the MyEclipse browser editor.
3.        SourceLocatorUtil.java
1.        Added static method to set the instance of the SourceLocatorUtil.  This way we could provide our own subclass instance of a SourceLocatorUtil that overrides several methods for finding resources.  
2.        Also we needed to provide our own Subclass for the URLStorage inner class which has MyEclipse specific options.
4.        JSDebugScriptElementSourceDisplayAdapter.java
1.        Made sourceLookupJob field protected so it can be set from subclass
2.        Added public method to inner class SourceLookupJob to allow setting of the sourceDisplayUtil field externally.  We set this to an instance of our own subclass of the sourceDisplayUtil to do MyEclipse specific tasks
3.        Made sourceDisplayJob field protected to so it can be set from subclass
4.        Added public method to inner class SoureDisplayJob to allow setting of the sourceDisplayUtil field externally.  We set this to an instance of our own subclass of the sourceDisplayUtil to do MyEclipse specific tasks.
5.        DebuggerSourceDisplayUtil.java - Added protected method "createURLStorage" to that we can create our own subclass of the URLStorage class that does MyEclipse specific tasks.
Patch file: 04.mozilla_browser_editor_patches.txt
1.        MozBrowserEditor.java
1.        Added protected method "createNavigationBar" so that we could override this method in our own subclass of MozBrowserEditor that will create another subclass of NavigationBar.
2.        Added 2 protected methods: "addMenuExtensionActions" and "addExtensionActions" so that we could override this methed in our own subclass of MozBrowserEditor.  In our subclass we add some additional actions to the toolbar.
3.        Added protected method "performGoAction".  This method we override in our subclass of MozBrowserEditor to do some MyEclipse specific tasks just prior to executing the real GO action.
2.        NavigationBar.java
1.        Made location field more generalized and protected so it could be accessed in our subclass.
2.        Added protected method "createlocationControl" that we could override in our subclass to add a MyEclipse specific feature.
3.        PopupWindowBrowserListener.java - Changed the declaration modifier for the class from default to public so that we could create a subclass.  In our subclass we need to create a MyEclipse specific subclass of the MozBrowserEditor for popups.
Patch file: 05.views_patches.txt
1.        ScriptView.java - Added protected method "getViewUnavailableMessage".  This way we can provide our own message that is display in the script view whenever the view is inactive.  
2.        _javascript_ConsolePage.java - Added protected method "createMessageFilter" that allows us to override that method in a subclass.  In our subclass we create our own subclass of ConsoleMessageFilter that filters some MyEclipse specific messages that were appearing in the _javascript_ console.
Patch file: 06.manifest_patches.txt
1.        This patch contains some changes we had to make in order to open up access to some internal classes.  
2.        Also, there are a few places that we made dependencies to org.eclipse.atf.core optional because we didn't include this plugin in our MyEclipse IDE.
If anyone is having trouble seeing the patches as attachements let me know and I can make them available another way.

I'd like to hear some feedback from the ATF team on these changes.  If there are some changes that do make sense for the ATF team to adopt let me know and I can enter bugzilla reports that request a specific API or extension enhancement.  But I'd like to get some direction from the ATF team before I just go opening bug reports that don't make sense.  You can either reply to the mailing list or if anyone wants to contact me directly to continue a discussion anything off of the newgroup my contact info is: greg_at_genuitec_dot_com

Thanks for your reply in advanced.

Best regards,
Greg Amerson
Genuitec
_______________________________________________
atf-dev mailing list
atf-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/atf-dev


_______________________________________________
atf-dev mailing list
atf-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/atf-dev



Back to the top