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