*** empty log message ***
[phpeclipse.git] / archive / net.sourceforge.phpeclipse.sql / src / net / sourceforge / phpdt / sql / PHPEclipseSQLPlugin.java
1 package net.sourceforge.phpdt.sql;
2
3 import java.io.File;
4 import java.net.URL;
5 import java.util.ResourceBundle;
6
7 import org.eclipse.core.resources.ISaveContext;
8 import org.eclipse.core.resources.ISaveParticipant;
9 import org.eclipse.core.resources.ISavedState;
10 import org.eclipse.core.resources.ResourcesPlugin;
11 import org.eclipse.core.runtime.CoreException;
12 import org.eclipse.core.runtime.IPath;
13 import org.eclipse.core.runtime.IPluginDescriptor;
14 import org.eclipse.core.runtime.Path;
15 import org.eclipse.jface.preference.IPreferenceStore;
16 import org.eclipse.jface.preference.PreferenceConverter;
17 import org.eclipse.jface.resource.ImageDescriptor;
18 import org.eclipse.swt.graphics.FontData;
19 import org.eclipse.swt.graphics.Image;
20 import org.eclipse.swt.graphics.RGB;
21 import org.eclipse.ui.plugin.AbstractUIPlugin;
22
23 import net.sourceforge.phpdt.sql.sql.MultiSQLServer;
24 import net.sourceforge.phpdt.sql.view.bookmark.BookmarkContentProvider;
25
26 /**
27  * @author 
28  */
29 public class PHPEclipseSQLPlugin extends AbstractUIPlugin {
30   private static final String BUNDLE_NAME =
31     "net.sourceforge.phpdt.sql.PHPEclipseSQLResources";
32   private static final ResourceBundle RESOURCE_BUNDLE =
33     ResourceBundle.getBundle(BUNDLE_NAME);
34
35   private static PHPEclipseSQLPlugin plugin;
36   public final static String PLUGIN_ID = "net.sourceforge.phpeclipse.sql";
37
38   public PHPEclipseSQLPlugin(IPluginDescriptor descriptor) {
39     super(descriptor);
40     plugin = this;
41   }
42
43   public static PHPEclipseSQLPlugin getDefault() {
44     return plugin;
45   }
46   protected void readStateFrom(File target) {
47     BookmarkContentProvider.getInstance().load(target);
48   }
49
50   public void startup() throws CoreException {
51     super.startup();
52     ISaveParticipant saveParticipant = new QuantumSaveParticipant();
53     ISavedState lastState =
54       ResourcesPlugin.getWorkspace().addSaveParticipant(this, saveParticipant);
55     if (lastState == null)
56       return;
57     IPath location = lastState.lookup(new Path("save"));
58     if (location == null)
59       return;
60     // the plugin instance should read any important state from the file. 
61     File f = getStateLocation().append(location).toFile();
62     readStateFrom(f);
63   }
64   protected void writeImportantState(File target) {
65     BookmarkContentProvider.getInstance().save(target);
66   }
67   public static ImageDescriptor getImageDescriptor(String name) {
68     ImageDescriptor descriptor = null;
69     try {
70       URL installURL =
71         PHPEclipseSQLPlugin.getDefault().getDescriptor().getInstallURL();
72       URL url = new URL(installURL, "icons/" + name);
73       descriptor = ImageDescriptor.createFromURL(url);
74     } catch (Exception e) {
75       e.printStackTrace();
76     }
77     return descriptor;
78   }
79   public static Image getImage(String name) {
80     return getImageDescriptor(name).createImage();
81   }
82
83   public void dispose() throws CoreException {
84     MultiSQLServer.getInstance().shutdown();
85   }
86
87   protected void initializeDefaultPluginPreferences() {
88     RGB BACKGROUND = new RGB(255, 255, 255);
89     RGB COMMENT = new RGB(88, 148, 64);
90     RGB IDENTIFIER = new RGB(0, 0, 0);
91     RGB KEYWORD = new RGB(126, 0, 75);
92     RGB STRING = new RGB(0, 0, 255);
93     RGB NUMERIC = new RGB(255, 0, 0);
94     RGB DEFAULT = new RGB(0, 0, 0);
95     IPreferenceStore store = getPreferenceStore();
96     PreferenceConverter.setDefault(
97       store,
98       "quantum.background.color",
99       BACKGROUND);
100     PreferenceConverter.setDefault(store, "quantum.text.color", DEFAULT);
101     PreferenceConverter.setDefault(store, "quantum.keyword.color", KEYWORD);
102     PreferenceConverter.setDefault(store, "quantum.comment.color", COMMENT);
103     PreferenceConverter.setDefault(store, "quantum.string.color", STRING);
104     PreferenceConverter.setDefault(store, "quantum.numeric.color", NUMERIC);
105     getPreferenceStore().setDefault("quantum.text.bold", false);
106     getPreferenceStore().setDefault("quantum.keyword.bold", true);
107     getPreferenceStore().setDefault("quantum.string.bold", false);
108     getPreferenceStore().setDefault("quantum.comment.bold", false);
109     getPreferenceStore().setDefault("quantum.numeric.bold", false);
110     PreferenceConverter.setDefault(
111       getPreferenceStore(),
112       "quantum.font",
113       (FontData) null);
114   }
115
116 }
117 class QuantumSaveParticipant implements ISaveParticipant {
118   /**
119    * @see org.eclipse.core.resources.ISaveParticipant#doneSaving(ISaveContext)
120    */
121   public void doneSaving(ISaveContext context) {
122   }
123
124   /**
125    * @see org.eclipse.core.resources.ISaveParticipant#prepareToSave(ISaveContext)
126    */
127   public void prepareToSave(ISaveContext context) throws CoreException {
128   }
129
130   /**
131    * @see org.eclipse.core.resources.ISaveParticipant#rollback(ISaveContext)
132    */
133   public void rollback(ISaveContext context) {
134   }
135
136   /**
137    * @see org.eclipse.core.resources.ISaveParticipant#saving(ISaveContext)
138    */
139   public void saving(ISaveContext context) throws CoreException {
140     switch (context.getKind()) {
141       case ISaveContext.FULL_SAVE :
142         PHPEclipseSQLPlugin quantumPluginInstance = PHPEclipseSQLPlugin.getDefault();
143         // save the plug in state 
144         if (BookmarkContentProvider.getInstance().hasChanged()) {
145           int saveNumber = context.getSaveNumber();
146           String saveFileName = "save " + Integer.toString(saveNumber);
147           File f =
148             quantumPluginInstance
149               .getStateLocation()
150               .append(saveFileName)
151               .toFile();
152           // if we fail to write, an exception is thrown and we do not update the path 
153           quantumPluginInstance.writeImportantState(f);
154           context.map(new Path("save"), new Path(saveFileName));
155           context.needSaveNumber();
156         } else {
157           System.out.println("Not saving unchanged bookmarks");
158         }
159         break;
160       case ISaveContext.PROJECT_SAVE :
161         // get the project related to this save operation 
162         //IProject project = context.getProject(); 
163         // save its information, if necessary 
164         break;
165       case ISaveContext.SNAPSHOT :
166         // This operation needs to be really fast because 
167         // snapshots can be requested frequently by the 
168         // workspace. 
169         break;
170     }
171   }
172 }