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
atf-dev@eclipse.org
https://dev.eclipse.org/mailman/listinfo/atf-dev

Reply via email to