Hello Sandip,
Yes, I have seen this link.
I could write few lines to handle event inside .java file as follows. But my requirement is that I should get current navigation path using NavigationHelperService API inside a custom event fired by another component.
I have written below code in MyPortalComponent.java file, but I am noticing that it is showing only navigation path which was loaded when portal was loaded first time.
I need to get current selected navigation path everytime this event is fired.
Following are the code extract I am using: -
public void doContent(IPortalComponentRequest request, IPortalComponentResponse response){
Writer responseWriter = response.getWriter();
responseWriter.write("<script>");
responseWriter.write("EPCM.subscribeEvent(\"urn:com.sapportals:navigation\", \"Navigate\", NavigationEvent);");
responseWriter.write("function NavigationEvent(evntInput)");
responseWriter.write("{");
ArrayList<String> navPathList = mGetCurrentNavigationPath(request);
String navPathStr = navPathList.toString();
responseWriter.write("alert('"+navPathStr+"');");
responseWriter.write("}");
responseWriter.write("</script>");
responseWriter.flush();
}
private ArrayList<String> mGetCurrentNavigationPath(IPortalComponentRequest request){
ArrayList<String> navPathArrayList = new ArrayList<String>();
NavigationEventsHelperService navEventHelperServ = (NavigationEventsHelperService) PortalRuntime.getRuntimeResources().getService(NavigationEventsHelperService.KEY);
INavigationNode navTargetNode = navEventHelperServ.getCurrentLaunchNavNode(request);
navPathArrayList.add(navTargetNode.getTitle(Locale.ENGLISH));
INavigationNode aParent = navEventHelperServ.getParentNode(navTargetNode, request);
while (aParent != null && !aParent.getTitle(Locale.ENGLISH).equals("")) {
navPathArrayList.add(aParent.getTitle(Locale.ENGLISH));
aParent = navEventHelperServ.getParentNode(aParent, request);
}
return navPathArrayList;
}