X-Git-Url: http://secure.phpeclipse.com diff --git a/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/PHPEclipseSQLPlugin.java b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/PHPEclipseSQLPlugin.java new file mode 100644 index 0000000..5b66482 --- /dev/null +++ b/archive/net.sourceforge.phpeclipse.sql/src/net/sourceforge/phpdt/sql/PHPEclipseSQLPlugin.java @@ -0,0 +1,172 @@ +package net.sourceforge.phpdt.sql; + +import java.io.File; +import java.net.URL; +import java.util.ResourceBundle; + +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.swt.graphics.FontData; +import org.eclipse.swt.graphics.Image; +import org.eclipse.swt.graphics.RGB; +import org.eclipse.ui.plugin.AbstractUIPlugin; + +import net.sourceforge.phpdt.sql.sql.MultiSQLServer; +import net.sourceforge.phpdt.sql.view.bookmark.BookmarkContentProvider; + +/** + * @author + */ +public class PHPEclipseSQLPlugin extends AbstractUIPlugin { + private static final String BUNDLE_NAME = + "net.sourceforge.phpdt.sql.PHPEclipseSQLResources"; + private static final ResourceBundle RESOURCE_BUNDLE = + ResourceBundle.getBundle(BUNDLE_NAME); + + private static PHPEclipseSQLPlugin plugin; + public final static String PLUGIN_ID = "net.sourceforge.phpeclipse.sql"; + + public PHPEclipseSQLPlugin(IPluginDescriptor descriptor) { + super(descriptor); + plugin = this; + } + + public static PHPEclipseSQLPlugin getDefault() { + return plugin; + } + protected void readStateFrom(File target) { + BookmarkContentProvider.getInstance().load(target); + } + + public void startup() throws CoreException { + super.startup(); + ISaveParticipant saveParticipant = new QuantumSaveParticipant(); + ISavedState lastState = + ResourcesPlugin.getWorkspace().addSaveParticipant(this, saveParticipant); + if (lastState == null) + return; + IPath location = lastState.lookup(new Path("save")); + if (location == null) + return; + // the plugin instance should read any important state from the file. + File f = getStateLocation().append(location).toFile(); + readStateFrom(f); + } + protected void writeImportantState(File target) { + BookmarkContentProvider.getInstance().save(target); + } + public static ImageDescriptor getImageDescriptor(String name) { + ImageDescriptor descriptor = null; + try { + URL installURL = + PHPEclipseSQLPlugin.getDefault().getDescriptor().getInstallURL(); + URL url = new URL(installURL, "icons/" + name); + descriptor = ImageDescriptor.createFromURL(url); + } catch (Exception e) { + e.printStackTrace(); + } + return descriptor; + } + public static Image getImage(String name) { + return getImageDescriptor(name).createImage(); + } + + public void dispose() throws CoreException { + MultiSQLServer.getInstance().shutdown(); + } + + protected void initializeDefaultPluginPreferences() { + RGB BACKGROUND = new RGB(255, 255, 255); + RGB COMMENT = new RGB(88, 148, 64); + RGB IDENTIFIER = new RGB(0, 0, 0); + 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); + PreferenceConverter.setDefault(store, "quantum.text.color", DEFAULT); + PreferenceConverter.setDefault(store, "quantum.keyword.color", KEYWORD); + PreferenceConverter.setDefault(store, "quantum.comment.color", COMMENT); + PreferenceConverter.setDefault(store, "quantum.string.color", STRING); + PreferenceConverter.setDefault(store, "quantum.numeric.color", NUMERIC); + getPreferenceStore().setDefault("quantum.text.bold", false); + getPreferenceStore().setDefault("quantum.keyword.bold", true); + getPreferenceStore().setDefault("quantum.string.bold", false); + getPreferenceStore().setDefault("quantum.comment.bold", false); + getPreferenceStore().setDefault("quantum.numeric.bold", false); + PreferenceConverter.setDefault( + getPreferenceStore(), + "quantum.font", + (FontData) null); + } + +} +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 : + PHPEclipseSQLPlugin quantumPluginInstance = PHPEclipseSQLPlugin.getDefault(); + // save the plug in state + if (BookmarkContentProvider.getInstance().hasChanged()) { + int saveNumber = context.getSaveNumber(); + String saveFileName = "save " + Integer.toString(saveNumber); + 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("save"), new Path(saveFileName)); + context.needSaveNumber(); + } else { + System.out.println("Not saving unchanged bookmarks"); + } + 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; + } + } +}