X-Git-Url: http://git.phpeclipse.com

diff --git a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/SQLQueryView.java b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/SQLQueryView.java
index efdac83..a438d7f 100644
--- a/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/SQLQueryView.java
+++ b/archive/net.sourceforge.phpeclipse.quantum.sql/src/com/quantum/view/SQLQueryView.java
@@ -1,51 +1,63 @@
 package com.quantum.view;
 
-import java.sql.Connection;
 import java.sql.SQLException;
+import java.util.ArrayList;
 import java.util.LinkedList;
+import java.util.List;
 import java.util.NoSuchElementException;
-import java.util.Vector;
 
 import org.eclipse.jface.action.Action;
 import org.eclipse.jface.action.IToolBarManager;
 import org.eclipse.jface.action.Separator;
+import org.eclipse.jface.preference.IPreferenceStore;
+import org.eclipse.jface.preference.PreferenceConverter;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.viewers.ILabelProvider;
+import org.eclipse.jface.viewers.ILabelProviderListener;
+import org.eclipse.jface.viewers.IStructuredContentProvider;
+import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.custom.ExtendedModifyEvent;
 import org.eclipse.swt.custom.ExtendedModifyListener;
 import org.eclipse.swt.custom.StyleRange;
 import org.eclipse.swt.custom.StyledText;
-import org.eclipse.swt.events.SelectionEvent;
-import org.eclipse.swt.events.SelectionListener;
 import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.graphics.Font;
+import org.eclipse.swt.graphics.FontData;
+import org.eclipse.swt.graphics.Image;
 import org.eclipse.swt.layout.GridData;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.ToolBar;
-import org.eclipse.swt.widgets.ToolItem;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IActionBars;
-import org.eclipse.ui.IKeyBindingService;
 import org.eclipse.ui.IWorkbenchActionConstants;
 import org.eclipse.ui.part.ViewPart;
 
+import com.quantum.ImageStore;
 import com.quantum.Messages;
+import com.quantum.PluginPreferences;
 import com.quantum.QuantumPlugin;
 import com.quantum.actions.ExecuteAction;
 import com.quantum.actions.ExportQueryAction;
 import com.quantum.actions.ImportQueryAction;
+import com.quantum.editors.ColorManager;
 import com.quantum.model.Bookmark;
+import com.quantum.model.BookmarkCollection;
 import com.quantum.model.NotConnectedException;
 import com.quantum.sql.MultiSQLServer;
+import com.quantum.sql.SQLGrammar;
 import com.quantum.sql.parser.SQLLexx;
 import com.quantum.sql.parser.Token;
+import com.quantum.ui.dialog.ExceptionDisplayDialog;
+import com.quantum.ui.dialog.SQLExceptionDialog;
 import com.quantum.util.versioning.VersioningHelper;
-import com.quantum.view.bookmark.BookmarkNode;
-import com.quantum.view.bookmark.BookmarkView;
 
 public class SQLQueryView extends ViewPart {
 	private class ClearAction extends Action {
 		
 		public ClearAction() {
-			setImageDescriptor(QuantumPlugin.getImageDescriptor("clear.gif"));
+			setImageDescriptor(ImageStore.getImageDescriptor(ImageStore.CLEAR));
 			setToolTipText(Messages.getString("sqlqueryview.clear"));
 		}
 
@@ -57,80 +69,127 @@ public class SQLQueryView extends ViewPart {
 	private class AutoCommitPreferenceAction extends Action {
 		
 		public AutoCommitPreferenceAction() {
-			super(Messages.getString("SQLQueryView.AutoCommit"), SWT.CHECK);
+			super(Messages.getString("SQLQueryView.AutoCommit"));
 			setToolTipText(Messages.getString("SQLQueryView.AutoCommit"));
-			setImageDescriptor(QuantumPlugin.getImageDescriptor("autocommit.gif"));
+			setImageDescriptor(ImageStore.getImageDescriptor(ImageStore.AUTOCOMMIT));
 		}
 		
 		public void run() {
-			Connection connection = null; 
-			try { 
-				// Get the connection
-				connection = getBookmark().getConnection();
-				// If connected (else will throw exception and jump out) switchs the state of the
-				// autoCommit option of the JDBC driver
-				MultiSQLServer.getInstance().setAutoCommit(	connection, isChecked());
-            } catch (NotConnectedException e) {
-            	//Doesn't matter
-            }
-            // Update the bookmark and the buttons
-			updateAutoCommitState(getBookmark(), connection);
+			setAutoCommitPreference(isChecked());
+		}
+	}
+	
+	private class RollbackAction extends Action {
+		public RollbackAction() {
+			setText(Messages.getString("SQLQueryView.RollBack"));
+			setToolTipText(Messages.getString("SQLQueryView.RollBack"));
+		}
+		
+		public void run() {
+        	Bookmark[] bookmarks = BookmarkCollection.getInstance().getBookmarks();
+        	for (int i = 0, length = bookmarks == null ? 0 : bookmarks.length; i < length; i++) {
+        		try {
+					if (bookmarks[i].isConnected() && !bookmarks[i].getConnection().getAutoCommit()) {
+						MultiSQLServer.getInstance().rollback(bookmarks[i].getConnection());
+					}
+	            } catch (SQLException e) {
+	            	SQLExceptionDialog.openException(getSite().getShell(), bookmarks[i], e);
+	            } catch (NotConnectedException e) {
+	            	ExceptionDisplayDialog.openError(getSite().getShell(), null, null, e);
+	            }
+			}
 		}
 	}
 	
 	
+	private class CommitAction extends Action {
+		public CommitAction() {
+			setText(Messages.getString("SQLQueryView.Commit"));
+			setToolTipText(Messages.getString("SQLQueryView.Commit"));
+		}
+		
+		public void run() {
+        	Bookmark[] bookmarks = BookmarkCollection.getInstance().getBookmarks();
+        	for (int i = 0, length = bookmarks == null ? 0 : bookmarks.length; i < length; i++) {
+        		try {
+					if (bookmarks[i].isConnected() && !bookmarks[i].getConnection().getAutoCommit()) {
+						MultiSQLServer.getInstance().commit(bookmarks[i].getConnection());
+					}
+	            } catch (SQLException e) {
+	            	SQLExceptionDialog.openException(getSite().getShell(), bookmarks[i], e);
+	            } catch (NotConnectedException e) {
+	            	ExceptionDisplayDialog.openError(getSite().getShell(), null, null, e);
+	            }
+			}
+		}
+	}
+	
+	
+	public class LabelProviderImpl implements ILabelProvider {
+		public Image getImage(Object element) {
+			return ImageStore.getImage(ImageStore.BOOKMARK);
+		}
+		public String getText(Object element) {
+			if (element instanceof Bookmark) {
+				return ((Bookmark) element).getName();
+			} else {
+				return null;
+			}
+		}
+		public void addListener(ILabelProviderListener listener) {
+		}
+		public void dispose() {
+		}
+		public boolean isLabelProperty(Object element, String property) {
+			return false;
+		}
+		public void removeListener(ILabelProviderListener listener) {
+		}
+	}
+	public class ContentProviderImpl implements IStructuredContentProvider {
+		public Object[] getElements(Object inputElement) {
+			if (inputElement instanceof BookmarkCollection) {
+				return ((BookmarkCollection) inputElement).getBookmarks();
+			} else {
+				return null;
+			}
+		}
+		public void dispose() {
+		}
+		public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+		}
+	}
+	
 	private ExecuteAction executeAction;
 	private ImportQueryAction importQueryAction;
 	private ExportQueryAction exportQueryAction;
 	private StyledText widget;
-	private ToolItem autoCommitItem;
-	private ToolItem commitItem;
-	private ToolItem rollbackItem;
-	private Color STRING_LITERAL;
-	private Color KEYWORD;
-	private Color COMMENT;
-	private Color NUMERIC;
-	private Color DEFAULT;
 	private AutoCommitPreferenceAction autoCommitPreferenceAction;
+	private RollbackAction rollbackAction;
+	private CommitAction commitAction;
+	private boolean autoCommitPreference = true;
+	private IPropertyChangeListener listener;
+	private ColorManager colorManager = new ColorManager();
+
+	private SyntaxHighlighter textUpdater = new SyntaxHighlighter(this.colorManager);
+	
 	
 	public SQLQueryView() {
 		super();
-	}
-	public void setFocus() {
-		
-		String title = "Quantum SQL Query Editor";
-		Bookmark bookmark = null;
-		Connection con = null;
-		if (BookmarkView.getInstance() != null ) {
-			bookmark = getBookmark();
-		}
-		if (bookmark != null) {		
-			title = bookmark.getName() + " (" + title + ")";
-			VersioningHelper.setPartName(this, title);
-//			setPartName("fred");
-			try {
-				con = bookmark.getConnection();
-			} catch (NotConnectedException e) {
-				// Doesn't matter, "con" remains null
+		this.listener = new IPropertyChangeListener() {
+			public void propertyChange(PropertyChangeEvent event) {
+				setFont();
 			}
-		}
-		
-		updateAutoCommitState(bookmark, con);
-
-		widget.setFocus();
-
+		};
+		QuantumPlugin.getDefault().getPreferenceStore().addPropertyChangeListener(listener);
 	}
-	/**
-	 * @return
-	 */
-	private Bookmark getBookmark() {
-		if (BookmarkView.getInstance() != null ) {
-			BookmarkNode node = BookmarkView.getInstance().getCurrentBookmark();
-			return node == null ? null : node.getBookmark();
-		} else {
-			return null;
-		}
+	
+	public void dispose() {
+		QuantumPlugin.getDefault().getPreferenceStore().removePropertyChangeListener(this.listener);
+		this.colorManager.dispose();
+		super.dispose();
 	}
+	
 	public static SQLQueryView getInstance() {
 		return (SQLQueryView) QuantumPlugin.getDefault().getView("com.quantum.view.sqlqueryview");
 
@@ -139,97 +198,18 @@ public class SQLQueryView extends ViewPart {
 	public void createPartControl(org.eclipse.swt.widgets.Composite parent) {
 		initActions();
 		
-	   	KEYWORD = new Color(parent.getShell().getDisplay(), 126, 0, 75);
-	   	STRING_LITERAL = new Color(parent.getShell().getDisplay(), 0, 0, 255);
-	   	COMMENT = new Color(parent.getShell().getDisplay(), 88, 148, 64);
-	   	NUMERIC = new Color(parent.getShell().getDisplay(), 255, 0, 0);
-	    DEFAULT = new Color(parent.getShell().getDisplay(), 0, 0, 0);
-		Composite main = new Composite(parent, SWT.NONE);
+	   	initializeColours(parent);
 		GridLayout layout = new GridLayout(1, false);
 		layout.horizontalSpacing = 0;
 		layout.verticalSpacing = 0;
-		main.setLayout(layout);
-		ToolBar toolbar = new ToolBar(main, SWT.HORIZONTAL);
-
-		commitItem = new ToolItem(toolbar, SWT.PUSH);
-		commitItem.setImage(QuantumPlugin.getImage("commit.gif")); //$NON-NLS-1$
-		commitItem.setToolTipText(Messages.getString("SQLQueryView.Commit")); //$NON-NLS-1$
-		commitItem.addSelectionListener(new SelectionListener() {
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-			public void widgetSelected(SelectionEvent event) {
-                try {
-    				BookmarkNode node = BookmarkView.getInstance().getCurrentBookmark();
-    				if (node != null) MultiSQLServer.getInstance().commit(
-                        node.getBookmark().getConnection());
-                } catch (NotConnectedException e) {
-                    e.printStackTrace();
-                }
-			}
-		});
+		layout.marginHeight = 0;
+		layout.marginWidth = 0;
+		parent.setLayout(layout);
+		parent.setLayoutData(new GridData(GridData.FILL_BOTH));
 		
-		rollbackItem = new ToolItem(toolbar, SWT.PUSH);
-		rollbackItem.setImage(QuantumPlugin.getImage("rollback.gif")); //$NON-NLS-1$
-		rollbackItem.setToolTipText(Messages.getString("SQLQueryView.RollBack")); //$NON-NLS-1$
-		rollbackItem.addSelectionListener(new SelectionListener() {
-			public void widgetDefaultSelected(SelectionEvent event) {
-			}
-			public void widgetSelected(SelectionEvent event) {
-                try {
-                    BookmarkNode node = BookmarkView.getInstance().getCurrentBookmark();
-                    if (node != null) MultiSQLServer.getInstance().rollback(
-                        node.getBookmark().getConnection());
-                } catch (NotConnectedException e) {
-                    e.printStackTrace();
-                }
-			}
-		});
+		widget = new StyledText(parent, SWT.H_SCROLL | SWT.V_SCROLL);
 		
-		autoCommitItem = new ToolItem(toolbar, SWT.CHECK);
-		autoCommitItem.setImage(QuantumPlugin.getImage("autocommit.gif")); //$NON-NLS-1$
-		autoCommitItem.setToolTipText(Messages.getString("SQLQueryView.AutoCommit")); //$NON-NLS-1$
-		autoCommitItem.addSelectionListener(new SelectionListener() {
-			public void widgetDefaultSelected(SelectionEvent e) {
-			}
-			public void widgetSelected(SelectionEvent event) {
-				BookmarkNode node = BookmarkView.getInstance().getCurrentBookmark();
-				if (node == null) return;
-				Connection con = null; 
-				try { 
-					// Get the connection
-					con = node.getBookmark().getConnection();
-					// If connected (else will throw exception and jump out) switchs the state of the
-					// autoCommit option of the JDBC driver
-					MultiSQLServer.getInstance().setAutoCommit(	con, autoCommitItem.getSelection());
-                } catch (NotConnectedException e) {
-                	//Doesn't matter
-                }
-                // Update the bookmark and the buttons
-				updateAutoCommitState(node.getBookmark(), con);
-				
-			}
-		});
-
-		// TODO: BCH -- this is causing some problems during start-up
-		Bookmark bookmark = null;
-		try {
-			bookmark = getBookmark();
-		} catch (NullPointerException e) {
-		}
-		
-		if (bookmark == null) {
-			autoCommitItem.setSelection(true); 
-		} else {
-			autoCommitItem.setSelection(bookmark.isAutoCommit());
-		}
-		if (autoCommitItem.getSelection()) {
-			commitItem.setEnabled(false);
-			rollbackItem.setEnabled(false);
-		} else {
-			commitItem.setEnabled(true);
-			rollbackItem.setEnabled(true);
-		}
-		widget = new StyledText(main, SWT.H_SCROLL | SWT.V_SCROLL);
+		setFont();
 
 		IActionBars bars = this.getViewSite().getActionBars();
 		bars.setGlobalActionHandler(IWorkbenchActionConstants.CUT, cutAction);
@@ -240,64 +220,38 @@ public class SQLQueryView extends ViewPart {
 		widget.setEditable(true);
 		widget.addExtendedModifyListener(modifyListener);
 
-		GridData gridData = new GridData();
-		gridData.horizontalAlignment = GridData.FILL;
-		gridData.verticalAlignment = GridData.FILL;
-		gridData.grabExcessHorizontalSpace = true;
-		gridData.grabExcessVerticalSpace = true;
-		widget.setLayoutData(gridData);
+		widget.setLayoutData(new GridData(GridData.FILL_BOTH));
 
-        IKeyBindingService keyBindingService = getSite().getKeyBindingService();
-        // TODO: check the version numbers for this method
-        keyBindingService.setScopes(new String[] {
-            "org.eclipse.ui.globalScope",
-            "com.quantum.view.sql"
-        });
-        keyBindingService.registerAction(this.executeAction);
+		VersioningHelper.registerActionToKeyBindingService(getSite(), 
+				new String[] { "org.eclipse.ui.globalScope", "com.quantum.view.sql" }, 
+		        this.executeAction);
 	}
 
+	private void setFont() {
+		FontData font = PreferenceConverter.getFontData(
+				QuantumPlugin.getDefault().getPreferenceStore(), 
+				"quantum.font"); //$NON-NLS-1$
+		if (font != null && this.widget != null) {
+			this.widget.setFont(new Font(Display.getCurrent(), font));
+		}
+	}
 	/**
-	 * Sets the state of the "Commit", "Rollback" and "autoCommit" buttons
-	 * to reflect the situation in the connection
+	 * @param parent
 	 */
-	protected void updateAutoCommitState(Bookmark bookmark, Connection connection) {
-		boolean autoCommit = true;
-		// Calculate the state of the autoCommit option
-		if (connection != null)
-		{
-			// If we have a connection, the autoCommit state is that of the connection
-			try {
-				autoCommit = connection.getAutoCommit();
-			} catch (SQLException e) {
-				// Doesn't matter, we take default
-			}
-		} else {
-			// if no connection, we try the autoCommit of the bookmark, or else the default
-			if (bookmark != null) autoCommit = bookmark.isAutoCommit();
-		}
-		// Set the autoCommit state of the bookmark to the calculated
-		if (bookmark != null) bookmark.setAutoCommit(autoCommit);
-		// Set the state of the buttons to the correct autoCommit state
-		autoCommitItem.setSelection(autoCommit);
-		this.autoCommitPreferenceAction.setChecked(autoCommit);
-		if (autoCommitItem.getSelection()) {
-			commitItem.setEnabled(false);
-			rollbackItem.setEnabled(false);
-		} else {
-			commitItem.setEnabled(true);
-			rollbackItem.setEnabled(true);
-		}
+	private void initializeColours(Composite parent) {
+	    IPreferenceStore store = QuantumPlugin.getDefault().getPreferenceStore();
+
+		parent.setBackground(this.colorManager.getColor(
+				PreferenceConverter.getColor(store, PluginPreferences.BACKGROUND_COLOR)));
+		this.textUpdater.initializeColours();
 	}
+	
 	private void initActions() {
 
-		executeAction = new ExecuteAction();
-		executeAction.init(this);
-
 		IToolBarManager toolBar = getViewSite().getActionBars().getToolBarManager();
+
+		executeAction = new ExecuteAction(this);
 		toolBar.add(this.executeAction);
-//		toolBar.add(this.importQueryAction);
-//		toolBar.add(this.exportQueryAction);
-		
 		toolBar.add(new ClearAction());
 		
         IActionBars actionBars = getViewSite().getActionBars();
@@ -309,45 +263,37 @@ public class SQLQueryView extends ViewPart {
         actionBars.getMenuManager().add(this.exportQueryAction);
         actionBars.getMenuManager().add(new Separator());
         this.autoCommitPreferenceAction = new AutoCommitPreferenceAction();
+        this.autoCommitPreferenceAction.setChecked(this.autoCommitPreference);
         actionBars.getMenuManager().add(this.autoCommitPreferenceAction);
-	}
 
+        this.rollbackAction = new RollbackAction();
+        actionBars.getMenuManager().add(this.rollbackAction);
+
+        this.commitAction = new CommitAction();
+        actionBars.getMenuManager().add(this.commitAction);
+}
+
+	/**
+	 * Returns the query to be executed. The query is either 1) the 
+	 * text currently highlighted/selected in the editor or 2) all of 
+     * the text in the editor. 
+	 * @return query string to be executed
+	 */
 	public String getQuery() {
-		return widget.getText();
+	    String query; 
+	    
+	    if (widget.getSelectionText().length() > 0)
+	        query = widget.getSelectionText();
+	    else    
+	        query = widget.getText();
+	    
+		return query;
 	}
 	
 	public void setQuery(String text) {
 		widget.setText(text);
 	}
 	
-	private String[] keywords = {
-	"ADD", "ALL", "ALTER", "AND", "ANY",
-	"AS", "ASC", "AUTOINCREMENT", "AVA", "BETWEEN",
-	"BINARY", "BIT", "BOOLEAN", "BY", "CREATE",
-	"BYTE", "CHAR", "CHARACTER", "COLUMN", "CONSTRAINT",
-	"COUNT", "COUNTER", "CURRENCY", "DATABASE", "DATE",
-	"DATETIME", "DELETE", "DESC", "DISALLOW", "DISTINCT",
-	"DISTINCTROW", "DOUBLE", "DROP", "EXISTS", "FROM",
-	"FLOAT", "FLOAT4", "FLOAT8", "FOREIGN", "GENERAL",
-	"GROUP", "GUID", "HAVING", "INNER", "INSERT",
-	"IGNORE", "IMP", "IN", "INDEX", "INT", 
-	"INTEGER", "INTEGER1", "INTEGER2", "INTEGER4", "INTO",
-	"IS", "JOIN", "KEY", "LEFT", "LEVEL", 
-	"LIKE", "LOGICAL", "LONG", "LONGBINARY", "LONGTEXT",
-	"MAX", "MEMO", "MIN", "MOD", "MONEY", 
-	"NOT", "NULL", "NUMBER", "NUMERIC", "OLEOBJECT",
-	"ON", "PIVOT", "OPTION", "PRIMARY", "ORDER",
-	"OUTER", "OWNERACCESS", "PARAMETERS", "PERCENT", "REAL",
-	"REFERENCES", "RIGHT", "SELECT", "SET", "SHORT",
-	"SINGLE", "SMALLINT", "SOME", "STDEV", "STDEVP",
-	"STRING", "SUM", "TABLE", "TABLEID", "TEXT", 
-	"TIME",	"TIMESTAMP", "TOP", "TRANSFORM", "UNION",
-	"UNIQUE", "UPDATE", "VALUE", "VALUES", "VAR",
-	"VARBINARY", "VARCHAR", "VARP", "WHERE", "WITH",
-	"YESNO" };
-	
-	SyntaxHighlighter textUpdater = new SyntaxHighlighter();
-	
 	private class UpdateRequest {
 		public UpdateRequest(String text, int start, int length) {
 			this.text = text;
@@ -360,21 +306,42 @@ public class SQLQueryView extends ViewPart {
 	}
 	
 	private class SyntaxHighlighter extends Thread {
+		
+		private Color STRING_LITERAL;
+		private Color KEYWORD;
+		private Color COMMENT;
+		private Color NUMERIC;
+		private Color DEFAULT;
+		
 		private boolean running = true;
 		private LinkedList requests = new LinkedList();
-		public SyntaxHighlighter() {
+		private final ColorManager colorManager;
+		public SyntaxHighlighter(ColorManager colorManager) {
 			super();
+			this.colorManager = colorManager;
+			
 			setPriority(Thread.MIN_PRIORITY);
 			start();
 		}
+		public void initializeColours() {
+		    IPreferenceStore store = QuantumPlugin.getDefault().getPreferenceStore();
+
+			this.DEFAULT = this.colorManager.getColor(
+					PreferenceConverter.getColor(store, PluginPreferences.TEXT_COLOR));
+			this.KEYWORD = this.colorManager.getColor(
+					PreferenceConverter.getColor(store, PluginPreferences.KEYWORD_COLOR)); 
+			this.STRING_LITERAL = this.colorManager.getColor(
+					PreferenceConverter.getColor(store, PluginPreferences.STRING_COLOR));
+			this.COMMENT = this.colorManager.getColor(
+					PreferenceConverter.getColor(store, PluginPreferences.COMMENT_COLOR));
+			this.NUMERIC = this.colorManager.getColor(
+					PreferenceConverter.getColor(store, PluginPreferences.NUMERIC_COLOR));
+			
+		}
 		public synchronized void updateText(String text, int start, int length) {
 			requests.add(new UpdateRequest(text, start, length));
 			notify();
 		}
-		public synchronized void shutdown() {
-			running = false;
-			interrupt();
-		}
 		public void run() {
 			while (running) {
 				try {
@@ -390,12 +357,12 @@ public class SQLQueryView extends ViewPart {
 					//int dirtyStart = request.start;
 					//int dirtyEnd = request.start + request.length;
 					StyleRange styleRange;
-					Vector tokens = SQLLexx.parse(text);
-					Vector styles = new Vector();
+					List tokens = SQLLexx.parse(text);
+					List styles = new ArrayList();
 					int min = Integer.MAX_VALUE;
 					int max = 0;
 					for (int i = 0; i < tokens.size(); i++) {
-						Token t = (Token) tokens.elementAt(i);
+						Token t = (Token) tokens.get(i);
 						String value = t.getValue();
 						int start = t.getStart();
 						int length = t.getEnd() - t.getStart();
@@ -413,8 +380,8 @@ public class SQLQueryView extends ViewPart {
 							max = Math.max(max, start + length);
 							if (t.getType() == Token.IDENTIFIER) {
 								boolean keyword = false;
-								for (int index = 0; index < keywords.length; index++) {
-									if (value.equals(keywords[index])) {
+								for (int index = 0; index < SQLGrammar.KEYWORDS.length; index++) {
+									if (value.equals(SQLGrammar.KEYWORDS[index])) {
 										keyword = true;
 									}
 								}
@@ -424,25 +391,23 @@ public class SQLQueryView extends ViewPart {
 								} else {
 									styleRange.foreground = DEFAULT;
 								}
-								styles.addElement(styleRange);
+								styles.add(styleRange);
 							} else if (t.getType() == Token.COMMENT) {
 								styleRange.foreground = COMMENT;
-								styles.addElement(styleRange);
+								styles.add(styleRange);
 							} else if (t.getType() == Token.LITERAL) {
 								styleRange.foreground = STRING_LITERAL;
-								styles.addElement(styleRange);
+								styles.add(styleRange);
 							} else if (t.getType() == Token.NUMERIC) {
 								styleRange.foreground = NUMERIC;
-								styles.addElement(styleRange);
+								styles.add(styleRange);
 							} else {
-								styles.addElement(styleRange);
+								styles.add(styleRange);
 							}
 						}
 					}
-					StyleRange[] ranges = new StyleRange[styles.size()];
-					for (int k = 0; k < ranges.length; k++) {
-						ranges[k] = (StyleRange) styles.elementAt(k);
-					}
+					StyleRange[] ranges = 
+							(StyleRange[]) styles.toArray(new StyleRange[styles.size()]);
 					if (max >= 0 && ranges.length > 0) {
 						setStyles(ranges, min, max - min);
 					}
@@ -495,4 +460,13 @@ public class SQLQueryView extends ViewPart {
 			widget.selectAll();
 		}
 	};
+
+	public void setFocus() {
+	}
+	public boolean isAutoCommitPreference() {
+		return this.autoCommitPreference;
+	}
+	public void setAutoCommitPreference(boolean autoCommitPreference) {
+		this.autoCommitPreference = autoCommitPreference;
+	}
 }