Fixed: couldn't launch linked files nor launch files under a linked folder when local...
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.quantum.sql / src / com / quantum / QuantumPlugin.java
index 2ef70c3..ab4f399 100644 (file)
@@ -5,31 +5,21 @@ import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileWriter;
 import java.io.IOException;
+import java.net.MalformedURLException;
 import java.net.URL;
 
 import javax.xml.parsers.DocumentBuilder;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
 
-import com.quantum.model.BookmarkCollection;
-import com.quantum.util.xml.XMLHelper;
-import com.quantum.view.subset.SubsetContentProvider;
-
-import org.eclipse.core.resources.ISaveContext;
-import org.eclipse.core.resources.ISaveParticipant;
 import org.eclipse.core.resources.ISavedState;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IPluginDescriptor;
 import org.eclipse.core.runtime.Path;
-import org.eclipse.jface.preference.IPreferenceStore;
-import org.eclipse.jface.preference.PreferenceConverter;
-import org.eclipse.jface.resource.ImageDescriptor;
+import org.eclipse.jface.resource.ImageRegistry;
 import org.eclipse.swt.dnd.Clipboard;
-import org.eclipse.swt.graphics.FontData;
-import org.eclipse.swt.graphics.Image;
-import org.eclipse.swt.graphics.RGB;
 import org.eclipse.ui.IViewPart;
 import org.eclipse.ui.IWorkbench;
 import org.eclipse.ui.IWorkbenchPage;
@@ -37,22 +27,40 @@ import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 import org.xml.sax.SAXException;
 
+import com.quantum.model.BookmarkCollection;
+import com.quantum.util.xml.XMLHelper;
+import com.quantum.view.subset.SubsetContentProvider;
+
 /**
- * @author root
  * Main class of the quantum plugin, sets defaults, saves and recovers state.
+ * @author root
  */
 public class QuantumPlugin extends AbstractUIPlugin {
-    public final static String PLUGIN_ID = "net.sourceforge.phpeclipse.quantum.sql";
+    public final static String PLUGIN_ID = "net.sourceforge.phpeclipse.quantum.sql"; 
        private static QuantumPlugin plugin;
        private Clipboard sysClip;
 
-       
+       /**
+        * 
+        * TODO: BCH - this constructor has changed in Eclipse 3.0.  This
+        * old version of the constructor is still necessary for running under
+        * Eclipse 2.x.
+        * 
+        * @param descriptor
+        */
        public QuantumPlugin(IPluginDescriptor descriptor) {
-               super(descriptor);
+               this();
+       }
+       /**
+        * This version is recommended for eclipse3.0 and above
+        */
+       public QuantumPlugin(){ 
+               super();
                plugin = this;
        }
 
@@ -104,14 +112,27 @@ public class QuantumPlugin extends AbstractUIPlugin {
 
        /* (non-Javadoc)
         * @see org.eclipse.core.runtime.Plugin#startup()
+        * This method is deprecated in Eclipse3.0 we must use start(BundleContext context): 
+        * Migration completed.
         */
        public void startup() throws CoreException {
                super.startup();
-               ISaveParticipant saveParticipant = new QuantumSaveParticipant();
+               startupMigrationTempMethod(); // To be removed later
+       }
+       
+       /**
+        * Used during startup Eclipse3.0 compatible
+        */
+       public void start(BundleContext bundleContext) throws Exception {
+               super.start(bundleContext); 
+               startupMigrationTempMethod(); // To be removed later
+       }
+       private void startupMigrationTempMethod() throws CoreException {
+               // the contents of this.startup() is moved to here to avoid code duplication - see this.start(BundleContext) 
                ISavedState lastState =
                        ResourcesPlugin.getWorkspace().addSaveParticipant(
                                this,
-                               saveParticipant);
+                               new QuantumSaveParticipant());
                if (lastState != null) {
                IPath location = lastState.lookup(new Path(Messages.getString("QuantumPlugin.saveDir"))); //$NON-NLS-1$
                if (location != null) {
@@ -124,14 +145,7 @@ public class QuantumPlugin extends AbstractUIPlugin {
         sysClip = new Clipboard(null);
        }
 
-       /* (non-Javadoc)
-        * @see org.eclipse.core.runtime.Plugin#shutdown()
-        */
-       public void shutdown() throws CoreException {
-               super.shutdown();
-//             sysClip.dispose();
-       }
-
+    
        /**
         * Write the bookmarks and subsets to a file, saving them for next use of the quantum plugin
         * @param target
@@ -159,57 +173,10 @@ public class QuantumPlugin extends AbstractUIPlugin {
         }
        }
        
-       /**
-        *  Gets an image descriptof from a file in the icons directory 
-        * @param name of the file to get
-        * @return ImageDescriptor or null if not found
-        */
-       public static ImageDescriptor getImageDescriptor(String name) {
-               ImageDescriptor descriptor = null;
-               try {
-                       URL installURL =
-                               QuantumPlugin.getDefault().getDescriptor().getInstallURL();
-                       URL url = new URL(installURL, Messages.getString("QuantumPlugin.iconsDir") + name); //$NON-NLS-1$
-                       descriptor = ImageDescriptor.createFromURL(url);
-               } catch (Exception e) {
-                       e.printStackTrace();
-               }
-               return descriptor;
-       }
-       public static Image getImage(String name) {
-        ImageDescriptor imageDescriptor = getImageDescriptor(name);
-               return imageDescriptor == null ? null : imageDescriptor.createImage();
-       }
-
        protected void initializeDefaultPluginPreferences() {
-               RGB BACKGROUND = new RGB(255, 255, 255);
-               RGB COMMENT = new RGB(88, 148, 64);
-               RGB KEYWORD = new RGB(126, 0, 75);
-               RGB STRING = new RGB(0, 0, 255);
-               RGB NUMERIC = new RGB(255, 0, 0);
-               RGB DEFAULT = new RGB(0, 0, 0);
-               IPreferenceStore store = getPreferenceStore();
-               PreferenceConverter.setDefault(store,
-                       "quantum.background.color", BACKGROUND); //$NON-NLS-1$
-               PreferenceConverter.setDefault(store,
-                       "quantum.text.color", DEFAULT); //$NON-NLS-1$
-               PreferenceConverter.setDefault(store,
-                       "quantum.keyword.color", KEYWORD); //$NON-NLS-1$
-               PreferenceConverter.setDefault(store,
-                       "quantum.comment.color", COMMENT); //$NON-NLS-1$
-               PreferenceConverter.setDefault(store,
-                       "quantum.string.color", STRING); //$NON-NLS-1$
-               PreferenceConverter.setDefault(store,
-                       "quantum.numeric.color", NUMERIC); //$NON-NLS-1$
-               getPreferenceStore().setDefault("quantum.text.bold", false); //$NON-NLS-1$
-               getPreferenceStore().setDefault("quantum.keyword.bold", true); //$NON-NLS-1$
-               getPreferenceStore().setDefault("quantum.string.bold", false); //$NON-NLS-1$
-               getPreferenceStore().setDefault("quantum.comment.bold", false); //$NON-NLS-1$
-               getPreferenceStore().setDefault("quantum.numeric.bold", false); //$NON-NLS-1$
-               PreferenceConverter.setDefault(getPreferenceStore(), "quantum.font", (FontData) null); //$NON-NLS-1$
-        getPreferenceStore().setDefault("com.quantum.model.Bookmark.queryHistorySize", 20); //$NON-NLS-1$
-        
-        getPreferenceStore().setDefault(
+               PluginPreferences.initialize(getPreferenceStore());
+               
+               getPreferenceStore().setDefault(
             "phpeclipse.sql.select.template",
             "$results = mysql_query(\"SELECT {0} FROM {1} WHERE {2} \");");
 
@@ -269,66 +236,28 @@ public class QuantumPlugin extends AbstractUIPlugin {
 
 
 
-       class QuantumSaveParticipant implements ISaveParticipant {
-               /**
-               * @see org.eclipse.core.resources.ISaveParticipant#doneSaving(ISaveContext)
-               */
-               public void doneSaving(ISaveContext context) {
-               }
-               /**
-                * @see org.eclipse.core.resources.ISaveParticipant#prepareToSave(ISaveContext)
-                */
-               public void prepareToSave(ISaveContext context) throws CoreException {
-               }
-
-               /**
-                * @see org.eclipse.core.resources.ISaveParticipant#rollback(ISaveContext)
-                */
-               public void rollback(ISaveContext context) {
-               }
-
-               /**
-                * @see org.eclipse.core.resources.ISaveParticipant#saving(ISaveContext)
-                */
-               public void saving(ISaveContext context) throws CoreException {
-                       switch (context.getKind()) {
-                               case ISaveContext.FULL_SAVE :
-                                       QuantumPlugin quantumPluginInstance = QuantumPlugin.getDefault();
-                                       // save the plug in state 
-                                       if (BookmarkCollection.getInstance().isAnythingChanged()
-                                               || SubsetContentProvider.getInstance().hasChanged()) {
-
-                                               int saveNumber = context.getSaveNumber();
-                                               String saveFileName = Messages.getString("QuantumPlugin.saveDir") + "-" + Integer.toString(saveNumber) + Messages.getString("QuantumPlugin.saveFileExtension"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
-                                               File f = quantumPluginInstance.getStateLocation().append(saveFileName).toFile();
-
-                                               // if we fail to write, an exception is thrown and we do not update the path 
-                                               quantumPluginInstance.writeImportantState(f);
-
-                                               context.map(new Path(Messages.getString("QuantumPlugin.saveDir")), new Path(saveFileName)); //$NON-NLS-1$
-                                               context.needSaveNumber();
-
-                                       } else {
-                                               System.out.println("Not saving unchanged bookmarks"); //$NON-NLS-1$
-                                       }
-                                       break;
-                               case ISaveContext.PROJECT_SAVE :
-                                       // get the project related to this save operation 
-                                       //IProject project = context.getProject(); 
-                                       // save its information, if necessary 
-                                       break;
-                               case ISaveContext.SNAPSHOT :
-                                       // This operation needs to be really fast because 
-                                       // snapshots can be requested frequently by the 
-                                       // workspace. 
-                                       break;
-                       }
-               }
-       }
        /**
         * @return
         */
        public Clipboard getSysClip() {
                return sysClip;
        }
+       protected void initializeImageRegistry(ImageRegistry registry) {
+               super.initializeImageRegistry(registry);
+               try {
+                       ImageStore.initialize(this, registry, getIconLocation());
+               } catch (MalformedURLException e) {
+                       // this should never happen, but if it does, we don't get images.
+               }
+       }
+
+       /**
+        * @return
+        * @throws MalformedURLException
+        */
+       private URL getIconLocation() throws MalformedURLException {
+//             URL installURL = getDescriptor().getInstallURL();
+               URL installURL = getBundle().getEntry("/");
+               return new URL(installURL, "icons/");
+       }
 }
\ No newline at end of file