Depends what version you need it for. The standard practice for this project is to release the source along with the binaries. They are generally right there next to each other on the main download page. The exception to this is a couple of releases this summer which did not include a source release. This occurred due to problems migrating to the maven 2 build.

The only current release with no source on the download page is Tomahawk. But I understand that the next release will have it.

Regards,

Jeff Bischoff
Kenneth L Kurz & Associates, Inc.

monkeyden wrote:
I wouldn't say it's "very accessible" unless:

[1] There is a link to it on the download page (right next to the link to
the binaries, I might add)
[2] I can download it as a zip file, to allow me to step through it in my
debugger.

and I don't have to:
[3] View Java code from my browser (icky!)
[4] Rebuild the source tree myself, to step through it.

Disclaimer: Square brackets ([]) provided not for sarcasm, but readability. :)


Jeff Bischoff wrote:
Oh please don't waste your time decompiling! The source is very accessible. :)

[1] Is the project website
[2] Is the download page, with source code for *some* of the releases
[3] Is the SVN repository (online access) for getting the source code directly

Now you can see what's at line 82! :D

[1] http://myfaces.apache.org/
[2] http://myfaces.apache.org/download.html
[3] http://svn.apache.org/repos/asf/myfaces/

Regards,

Jeff Bischoff
Kenneth L Kurz & Associates

monkeyden wrote:
I decompiled the class file for this tag (tomahawk v1.1.3) and found that
there are only two places where casting is done (don't know the line
numbers
as it's decompiled code).
1.  TabChangeListener listener =
(TabChangeListener)ClassUtils.newInstance(className);
2.  ((HtmlPanelTabbedPane)component).addTabChangeListener(listener);

Clearly my tab listener won't result in a ClassCastException, because it
implements TabChangeListener, which leaves the HtmlPanelTabbedPane cast. This doesn't appear possible either since the following code is being
used:

<t:panelTabbedPane id="tabbedPane" width="650" serverSideTabSwitch="true"
selectedIndex="#{editProfileAction.selectedTab}" >
    ...
    <t:tabChangeListener
type="com.nemoves.pipeline.util.EditUserRecordTabListener"/>
</t:panelTabbedPane>




monkeyden wrote:
Thanks for the reply Jeff.
I am currently trying this but getting a ClassCastException when the
tabChangeListener tag is encountered.  Does anyone know where I can find
the source for tomahawk, so I can step through int he debugger?  Only
bin
is available here:  http://www.wmwweb.com/apache/myfaces/
http://www.wmwweb.com/apache/myfaces/
java.lang.ClassCastException: com.site.util.EditUserRecordTabListener
        at
org.apache.myfaces.custom.tabbedpane.TabChangeListenerTag.doStartTag(TabChangeListenerTag.java:82)

Here is the code:

package com.site.util;

import javax.faces.context.FacesContext;
import javax.faces.el.ValueBinding;
import javax.faces.event.AbortProcessingException;

import org.apache.myfaces.custom.tabbedpane.TabChangeEvent;
import org.apache.myfaces.custom.tabbedpane.TabChangeListener;

import com.site.actions.EditUserRecordAction;

public class EditUserRecordTabListener implements TabChangeListener {

    public void processTabChange(TabChangeEvent event) throws
AbortProcessingException {
        int newIndex = event.getNewTabIndex();
        int oldIndex = event.getNewTabIndex();
        EditUserRecordAction action =
(EditUserRecordAction)getManagedBean("editProfileAction");
        action.setSelectedTab(newIndex);
    }
public static Object getManagedBean(String ref) {
        // Find or create the web-tier data object
        // ref like "#{myBean}"
        FacesContext context = FacesContext.getCurrentInstance();
        ValueBinding binding =
context.getApplication().createValueBinding(ref);
        Object result = binding.getValue(context);
        return result;
}
}


Jeff Bischoff wrote:
Monkeyden,

See [1]. This is from the front page of the wiki.

Alternatively, all managed beans can be accessed directly from the appropriate scope (i.e. request, session).

I found the following utility method (based on the wiki page) useful in my application:

/**
* Look up a managed bean by JSP-EL value-binding expression
* @param ref a value-binding expression to lookup
* @return the managed bean referenced by the expression
*/
public static Object getManagedBean(String ref) {
        // Find or create the web-tier data object
        // ref like "#{myBean}"
        FacesContext context = FacesContext.getCurrentInstance();
        ValueBinding binding =
context.getApplication().createValueBinding(ref);
        return binding.getValue(context);
}

[1] http://wiki.apache.org/myfaces/AccessingOneManagedBeanFromAnother

Regards,

Jeff Bischoff
Kenneth L Kurz & Associates, Inc.

monkeyden wrote:
Im using a Tomahawk tabbedPane in my JSP

<t:panelTabbedPane id="tabbedPane" bgcolor="#ffffff" width="650"
serverSideTabSwitch="true"
selectedIndex="#{myBackingBean.selectedTab}">

I want to implement a TabChangeListener, to set the "selectedTab"
value
of
the backing bean.  I don't need to change the view of the component at
all,
since that's handled automatically.  I just need to know what the
currently
selected tab is.  Looking at the hierarchy, there doesn't seem to be a
way
to get my backing bean instance from session to set the value.  This
is
how
I would expect this to be done.  Please tell me if I'm way off base or
not.

processTabChange(TabChangeEvent tabChangeEvent){
    MyBackingBean myBean = [get the bean somehow];
    myBean.setSelectedTab(tabChangeEvent.getNewTabIndex());
}








Reply via email to