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
[EMAIL PROTECTED]




"Greg Amerson" <[EMAIL PROTECTED]> 
Sent by: [EMAIL PROTECTED]
10/29/2007 05:11 PM
Please respond to
AJAX Toolkit Framework discussion <[email protected]>


To
"AJAX Toolkit Framework discussion" <[email protected]>
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.      JavaScriptConsolePage.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
[email protected]
https://dev.eclipse.org/mailman/listinfo/atf-dev

_______________________________________________
atf-dev mailing list
[email protected]
https://dev.eclipse.org/mailman/listinfo/atf-dev

Reply via email to