package org.eclipse.ptp.internal.remote.terminal; import java.util.Set; import javax.swing.text.html.HTMLDocument.Iterator; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.commands.HandlerEvent; import org.eclipse.core.commands.IHandler; import org.eclipse.core.commands.IHandlerListener; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProjectNature; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ptp.rdt.sync.core.SyncConfig; import org.eclipse.ptp.rdt.sync.core.SyncConfigManager; import org.eclipse.ptp.rdt.sync.core.exceptions.MissingConnectionException; //import org.eclipse.ptp.rdt.sync.core.SynchronizedResource; //import org.eclipse.ptp.rdt.sync.core.serviceproviders.ISyncServiceProvider; import org.eclipse.ptp.remote.core.IRemoteConnection; import org.eclipse.ptp.remote.core.IRemoteServices; //import org.eclipse.ptp.remote.core.PTPRemoteCorePlugin; //import org.eclipse.ptp.remote.internal.terminal.RemoteToolsConnector; //import org.eclipse.ptp.remote.ui.PTPRemoteUIPlugin; //import org.eclipse.ptp.remotetools.environment.EnvironmentPlugin; import org.eclipse.ptp.services.core.IService; import org.eclipse.ptp.services.core.IServiceConfiguration; import org.eclipse.ptp.services.core.ServiceModelManager; import org.eclipse.swt.widgets.Shell; import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; import org.eclipse.tm.internal.terminal.provisional.api.provider.TerminalConnectorImpl; import org.eclipse.tm.internal.terminal.view.ITerminalView; import org.eclipse.tm.internal.terminal.view.TerminalView; //import org.eclipse.tm.internal.terminal.provisional.api.ITerminalConnector; //import org.eclipse.tm.internal.terminal.provisional.api.ITerminalControl; //import org.eclipse.tm.internal.terminal.view.TerminalView; import org.eclipse.ui.IViewPart; import org.eclipse.ui.PartInitException; import org.eclipse.ui.PlatformUI; import org.eclipse.ui.handlers.HandlerUtil; import org.eclipse.ui.views.IViewDescriptor; import org.eclipse.ui.views.IViewRegistry; public class Handler extends AbstractHandler { public Object execute(ExecutionEvent event) throws ExecutionException { // TODO Auto-generated method stub // TODO Auto-generated method stub //org.eclipse.cdt. // org.eclipse.core.resources.IResource.PROJECT.projectNature Shell shell = HandlerUtil.getActiveShell(event); ISelection sel = HandlerUtil.getActiveMenuSelection(event); IStructuredSelection selection = (IStructuredSelection) sel; IProject prj = ((IProject) selection.getFirstElement()).getProject(); fixProject(); connector(prj); // MessageDialog.openInformation(shell, "INFO", prj.getName() ); // ((IResource)selection.getFirstElement()).getProject().toString() // Object firstElement = selection.getFirstElement(); // IResource r = (IResource) firstElement; // try { // if(r.getProject().hasNature("org.eclipse.ptp.rdt.sync.core.remoteSyncNature")) // System.out.println(" The selected item is remote project"); // } catch (CoreException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // IProject[] p = ResourcesPlugin.getWorkspace().getRoot().getProjects(); // for(int i =0 ;i < p.length; i++ ){ // System.out.println(" p name is "+p[i].getName()); // try { // System.out.println(" p nature is "+p[i].hasNature("org.eclipse.ptp.rdt.core.remoteNature")); // } catch (CoreException e) { // // TODO Auto-generated catch block // System.out.println(" remote project but unopened connection"); // // e.printStackTrace(); // } // System.out.println(" location is "+p[i].getLocationURI().toString()); // } // IProject prj = ((IResource)selection.getFirstElement()).getProject(); // IProjectNature pn = null; // try { // pn = prj.getNature("org.eclipse.ptp.rdt.sync.core.remoteSyncNature"); // } catch (CoreException e1) { // // TODO Auto-generated catch block // e1.printStackTrace(); // } // ServiceModelManager smm = ServiceModelManager.getInstance(); // Set sis = smm.getServices(prj); // IServiceConfiguration icfg = smm.getActiveConfiguration(prj); // java.util.Iterator it = sis.iterator(); // ISyncServiceProvider issp = null; // while(it.hasNext()){ // IService s = (IService)it.next(); // if(s.getId().equals("org.eclipse.ptp.rdt.sync.core.SyncService")){ // // issp = (ISyncServiceProvider) s; // issp = (ISyncServiceProvider) icfg.getServiceProvider(s); // // issp = (ISyncServiceProvider) smm.getServiceProvider(s.getProviderDescriptor("org.eclipse.ptp.rdt.sync.git.core.GitServiceProvider")); // System.out.println("issp location is "+issp.getLocation()); // } // } // IRemoteConnection irc = issp.getRemoteConnection(); // System.out.println("connection is "+irc.getName()); // MessageDialog.openInformation(shell,"Info",pn.toString()); // try { // TerminalView tv = (TerminalView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("org.eclipse.tm.terminal.view.TerminalView"); // ITerminalControl itcl; // // RemoteToolsConnector rc = new RemoteToolsConnector(); // // rc.rc = irc; // // ITerminalConnector itc=(ITerminalConnector)rc ; // // } catch (PartInitException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } return null; } private void fixProject() { // TODO Auto-generated method stub IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); for(int i = 0; i< projects.length;i++){ IProject prj = projects[i]; IProjectNature pn = null; // System.out.println("project name is "+prj.getName()); try { pn = prj.getNature("org.eclipse.ptp.rdt.sync.core.remoteSyncNature"); ServiceModelManager smm = ServiceModelManager.getInstance(); SyncConfig scfg = SyncConfigManager.getActive(prj); // System.out.println(" scfg is "+scfg.getConnectionName()); IRemoteConnection irc = null; irc = scfg.getRemoteConnection(); ProjectConfig pf = new ProjectConfig(prj.getName(),prj,scfg.getLocation().toString(),irc.getAddress().toString()); ProjectDB.prjDB.add(pf); } catch (CoreException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (NullPointerException e2){ e2.printStackTrace(); } catch (MissingConnectionException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } private void connector(IProject prj) { // TODO Auto-generated method stub IProjectNature pn = null; try { pn = prj.getNature("org.eclipse.ptp.rdt.sync.core.remoteSyncNature"); System.out.println(" project "+ prj.getName()+ " has remote sync nature"); ServiceModelManager smm = ServiceModelManager.getInstance(); SyncConfig scfg = SyncConfigManager.getActive(prj); if(scfg == null) System.out.println("scfg is null"); System.out.println(" scfg is "+scfg.getConnectionName()); IRemoteConnection irc = null; try { irc = scfg.getRemoteConnection(); System.out.println("Connection address is "+irc.getAddress()); ITerminalView tvr = (ITerminalView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("org.eclipse.tm.terminal.view.TerminalView"); tvr.onTerminalNewView(); // TerminalView tv = (TerminalView) PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().showView("org.eclipse.tm.terminal.view.TerminalView"); // tv; RemoteToolsSettings rts = new RemoteToolsSettings(); // String irs = irc.getRemoteServices().getId(); // rts.setConnectionName(scfg.getConnectionName()); // rts.setRemoteServices(irs); TerminalConnectorImpl tci = new RemoteToolsConnector(rts); // ITerminalControl tc; ITerminalConnector itc; // tv.newTerminal(rtc); // tv.setFocus(); } catch (MissingConnectionException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (CoreException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } catch (NullPointerException e2){ e2.printStackTrace(); } } }