package org.panlab.software.fstoolkit.commands;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import org.eclipse.core.commands.AbstractHandler;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.commands.ExecutionException;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.browser.IWebBrowser;
import org.eclipse.ui.browser.IWorkbenchBrowserSupport;
import org.eclipse.ui.handlers.HandlerUtil;
import FederationOffice.federationscenarios.RequestedFederationScenario;
import FederationOffice.federationscenarios.ResourceRequest;
import FederationOffice.providersite.Site;
import FederationOffice.uiObjects.ui_TaxonomyTreeItem;
import FederationOffice.users.ResourcesProvider;
public class ShowResourcesMap extends AbstractHandler {
class myMarker {
Site site;
String descriptions;
}
@Override
public Object execute(ExecutionEvent event) throws ExecutionException {
ISelection selection = HandlerUtil.getActiveWorkbenchWindow(event).getActivePage().getSelection();
if (selection != null & selection instanceof IStructuredSelection) {
IStructuredSelection strucSelection = (IStructuredSelection) selection;
for (Object obj : strucSelection.toArray()) {
System.out.println("Object =" + obj.toString() );
if (obj instanceof ui_TaxonomyTreeItem){
if ( (((ui_TaxonomyTreeItem)obj).getOfficeElement() instanceof RequestedFederationScenario) ){
//http://nam.ece.upatras.gr/fstoolkit/utils/resourcesmap.php?x[0]=38.288291,21.788884
String req="";
RequestedFederationScenario scenario = (RequestedFederationScenario)((ui_TaxonomyTreeItem)obj).getOfficeElement();
ArrayList<myMarker> sitelist = new ArrayList<myMarker>();
for (ResourceRequest resReq : scenario.getInfrastructureRequest().getReqOfferedResources() ) {
if (resReq.getRefOfferedResource()!=null){
System.out.println("resReq.getRefOfferedResource() = "+ resReq.getRefOfferedResource().getName());
Site site = (Site)resReq.getRefOfferedResource().eContainer();
if ( (site!=null) && (!sitelist.contains(site) ) ){
myMarker mymarker = null;
for (myMarker m : sitelist) {
if (m.site.equals(site))
mymarker = m;
}
if (mymarker==null){
mymarker = new myMarker();
mymarker.site = site;
mymarker.descriptions = "";
sitelist.add(mymarker);
}
mymarker.descriptions +=
resReq.getName() +" : <i>"+
resReq.getRefOfferedResource().getName() +"</i></br>";
}
}
}
int i=0;
for (myMarker mymarker : sitelist) {
if (mymarker.site.getLocatedAt()!=null){
ResourcesProvider r = (ResourcesProvider)mymarker.site.eContainer();
req=req+"x["+i+"]="+mymarker.site.getLocatedAt().getGeocoords()+"&";
req=req+"c["+i+"]=<b>"+r.getName()+"</b><br>"+
"<small>"+mymarker.descriptions +"</small>" +
"&";
}
i++;
}
req = req.substring(0, req.length()-1);
req= "http://nam.ece.upatras.gr/fstoolkit/utils/resourcesmap.php?"+req;
System.out.println("req = "+ req);
IWorkbenchBrowserSupport support = PlatformUI.getWorkbench().getBrowserSupport();
IWebBrowser browser;
try {
browser = support. createBrowser(IWorkbenchBrowserSupport.AS_VIEW,
((ui_TaxonomyTreeItem)obj).getOfficeElement().getName() +".webbrowser.fstoolkit",
"Map for "+((ui_TaxonomyTreeItem)obj).getOfficeElement().getName(),
"A world map for "+((ui_TaxonomyTreeItem)obj).getOfficeElement().getName());
browser.openURL(new URL(req));
} catch (PartInitException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
}
}
}
return null;
}
}