1) Improvements for the XDebug plugin.
[phpeclipse.git] / net.sourceforge.phpeclipse.xdebug.core / src / net / sourceforge / phpeclipse / xdebug / core / XDebugCorePlugin.java
index 716b582..10f7582 100644 (file)
@@ -2,32 +2,31 @@ package net.sourceforge.phpeclipse.xdebug.core;
 
 
 import net.sourceforge.phpeclipse.xdebug.php.launching.IXDebugConstants;
-
-import org.eclipse.ui.plugin.*;
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.ui.preferences.ScopedPreferenceStore;
 import org.eclipse.core.runtime.IStatus;
+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.jface.preference.IPreferenceStore;
 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.
         */
        public XDebugCorePlugin() {
+               super();
                plugin = this;
        }
 
@@ -43,6 +42,8 @@ public class XDebugCorePlugin extends AbstractUIPlugin {
         */
        public void stop(BundleContext context) throws Exception {
                super.stop(context);
+               if (fXDebugProxy != null)
+                       fXDebugProxy.stop();
                plugin = null;
        }
 
@@ -54,24 +55,13 @@ public class XDebugCorePlugin extends AbstractUIPlugin {
        }
        
        public static IBreakpoint[] getBreakpoints() {
-               return getBreakpointManager().getBreakpoints(IXDebugConstants.ID_PHP_DEBUG_MODEL);
+               return getBreakpointManager().getBreakpoints(IXDebugConstants.ID_PHP_BREAKPOINT_MODEL);
        }
        
        public 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) ;
@@ -85,12 +75,35 @@ public class XDebugCorePlugin extends AbstractUIPlugin {
                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