Importing the XDebugProxy code in the HEAD. The repo was tagged with T_BEFORE_XDEBUGP...
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.core / src / net / sourceforge / phpeclipse / xdebug / core / XDebugCorePlugin.java
index a7ffee0..bbba27c 100644 (file)
@@ -1,28 +1,34 @@
 package net.sourceforge.phpeclipse.xdebug.core;
 
-import net.sourceforge.phpeclipse.xdebug.php.launching.IXDebugConstants;
 
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
+import net.sourceforge.phpeclipse.xdebug.php.launching.IXDebugConstants;
+//import org.eclipse.ui.plugin.AbstractUIPlugin;// *;
+import org.eclipse.ui.preferences.ScopedPreferenceStore;
+//import org.eclipse.core.resources.IWorkspace;
+//import org.eclipse.core.resources.ResourcesPlugin;
+//import org.eclipse.core.resources.IWorkspace;
+//import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Plugin;
+//import org.eclipse.core.runtime.Plugin;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.preferences.InstanceScope;
 import org.eclipse.debug.core.DebugPlugin;
 import org.eclipse.debug.core.IBreakpointManager;
 import org.eclipse.debug.core.model.IBreakpoint;
-import org.eclipse.jface.resource.ImageDescriptor;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.eclipse.jface.preference.IPreferenceStore;
+//import org.eclipse.jface.resource.ImageDescriptor;
 import org.osgi.framework.BundleContext;
 
-/**
- * The main plugin class to be used in the desktop.
- */
-public class XDebugCorePlugin extends AbstractUIPlugin {
-
-       // The shared instance.
+public class XDebugCorePlugin extends Plugin {
        private static XDebugCorePlugin plugin;
-
        public static final String PLUGIN_ID = "net.sourceforge.phpeclipse.xdebug.core"; //$NON-NLS-1$
+       
+       private XDebugProxy fXDebugProxy;
+
+       private ScopedPreferenceStore preferenceStore;
 
+       
        /**
         * The constructor.
         */
@@ -42,6 +48,8 @@ public class XDebugCorePlugin extends AbstractUIPlugin {
         */
        public void stop(BundleContext context) throws Exception {
                super.stop(context);
+               if (fXDebugProxy != null)
+                       fXDebugProxy.stop();
                plugin = null;
        }
 
@@ -51,33 +59,22 @@ public class XDebugCorePlugin extends AbstractUIPlugin {
        public static XDebugCorePlugin getDefault() {
                return plugin;
        }
-
+       
+       /*public static IWorkspace getWorkspace() {
+               return ResourcesPlugin.getWorkspace();
+       }*/
+                  
        public static IBreakpoint[] getBreakpoints() {
-               return getBreakpointManager().getBreakpoints(
-                               IXDebugConstants.ID_PHP_DEBUG_MODEL);
+               return getBreakpointManager().getBreakpoints(IXDebugConstants.ID_PHP_DEBUG_MODEL);
        }
-
-       public static IBreakpointManager getBreakpointManager() {
+       
+       public static /*static*/ IBreakpointManager getBreakpointManager() {
                return DebugPlugin.getDefault().getBreakpointManager();
        }
 
-       /**
-        * Returns an image descriptor for the image file at the given plug-in
-        * relative path.
-        * 
-        * @param path
-        *            the path
-        * @return the image descriptor
-        */
-       public static ImageDescriptor getImageDescriptor(String path) {
-               return AbstractUIPlugin.imageDescriptorFromPlugin(
-                               "net.sourceforge.phpeclipse.xdebug.core", path);
-       }
-
        public static void log(int severity, String message) {
-               Status status = new Status(severity, PLUGIN_ID, IStatus.OK, message,
-                               null);
-               XDebugCorePlugin.log(status);
+               Status status = new Status(severity, PLUGIN_ID, IStatus.OK, message, null) ;
+               XDebugCorePlugin.log(status) ;
        }
 
        public static void log(IStatus status) {
@@ -85,15 +82,38 @@ public class XDebugCorePlugin extends AbstractUIPlugin {
        }
 
        public static void log(Throwable e) {
-               log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR,
-                               "PHPLaunchingPlugin.internalErrorOccurred", e)); //$NON-NLS-1$
+               log(new Status(IStatus.ERROR, PLUGIN_ID, IStatus.ERROR, "PHPLaunchingPlugin.internalErrorOccurred", e)); //$NON-NLS-1$
        }
-
-       /**
-        * Returns the workspace instance.
-        */
-       public static IWorkspace getWorkspace() {
-               return ResourcesPlugin.getWorkspace();
+       
+       public static String getUniqueIdentifier() {
+               return PLUGIN_ID;
+       }
+       
+       public void setProxyPort(int port) {
+               if(fXDebugProxy!=null) {
+                       if (fXDebugProxy.isRunning()) {
+                               fXDebugProxy.stop();
+                       }
+                       fXDebugProxy=null;
+               }
        }
 
-}
+       public XDebugProxy getXDebugProxy() {
+               if (fXDebugProxy == null) {
+                       int debugPort=getPreferenceStore().getInt(IXDebugPreferenceConstants.DEBUGPORT_PREFERENCE);
+                       if (debugPort<1024)
+                               debugPort=IXDebugPreferenceConstants.DEFAULT_DEBUGPORT;
+                       fXDebugProxy= new XDebugProxy(debugPort);
+               }
+               return fXDebugProxy;
+       }
+       
+    public IPreferenceStore getPreferenceStore() {
+        // Create the preference store lazily.
+        if (preferenceStore == null) {
+            preferenceStore = new ScopedPreferenceStore(new InstanceScope(),getBundle().getSymbolicName());
+
+        }
+        return preferenceStore;
+    }
+}
\ No newline at end of file