--- /dev/null
+package com.quantum.view;
+
+import com.quantum.Messages;
+import com.quantum.QuantumPlugin;
+
+import org.eclipse.jface.action.Action;
+import org.eclipse.jface.action.IToolBarManager;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.StyleRange;
+import org.eclipse.swt.custom.StyledText;
+import org.eclipse.swt.custom.StyledTextContent;
+import org.eclipse.swt.events.DisposeEvent;
+import org.eclipse.swt.events.DisposeListener;
+import org.eclipse.swt.graphics.Color;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.ui.IActionBars;
+import org.eclipse.ui.IWorkbenchActionConstants;
+import org.eclipse.ui.part.ViewPart;
+
+public class SQLLogView extends ViewPart implements LogConstants {
+ private Color QUERY_COLOR;
+ private Color WARNING_COLOR;
+ private Color DEFAULT_COLOR;
+ private Color ERROR_COLOR;
+ private Color RESULTS_COLOR;
+ private StyledText widget;
+ private static SQLLogView instance = null;
+ private static final String newLine = "\n"; //$NON-NLS-1$
+ public static SQLLogView getInstance() {
+ return instance;
+ }
+
+ public void createPartControl(Composite parent) {
+ instance = this;
+ QUERY_COLOR = new Color(parent.getShell().getDisplay(), 0, 255, 0);
+ ERROR_COLOR = new Color(parent.getShell().getDisplay(), 255, 0, 0);
+ RESULTS_COLOR = new Color(parent.getShell().getDisplay(), 0, 0, 255);
+ DEFAULT_COLOR = new Color(parent.getShell().getDisplay(), 0, 0, 0);
+ WARNING_COLOR = new Color(parent.getShell().getDisplay(), 255, 127, 0);
+ widget = new StyledText(parent, SWT.H_SCROLL | SWT.V_SCROLL);
+ IActionBars bars = this.getViewSite().getActionBars();
+ bars.setGlobalActionHandler(IWorkbenchActionConstants.COPY, copyAction);
+ bars.setGlobalActionHandler(IWorkbenchActionConstants.SELECT_ALL, selectAllAction);
+
+ IToolBarManager toolBar = getViewSite().getActionBars().getToolBarManager();
+ clearAction.setImageDescriptor(QuantumPlugin.getImageDescriptor("clear.gif")); //$NON-NLS-1$
+ clearAction.setToolTipText(Messages.getString("SQLLogView.ClearLog")); //$NON-NLS-1$
+ toolBar.add(clearAction);
+
+ widget.setEditable(false);
+
+ widget.addDisposeListener(new DisposeListener() {
+ public void widgetDisposed(DisposeEvent e) {
+ instance = null;
+ }
+ });
+ }
+
+ public void addText(int style, String text) {
+ text = text + newLine;
+ int start = widget.getText().length();
+ StyleRange styleRange = new StyleRange();
+ styleRange.start = start;
+ styleRange.length = text.length();
+ if (style == QUERY) {
+ styleRange.foreground = QUERY_COLOR;
+ } else if (style == ERROR) {
+ styleRange.foreground = ERROR_COLOR;
+ } else if (style == RESULTS) {
+ styleRange.foreground = RESULTS_COLOR;
+ } else if (style == WARNING) {
+ styleRange.foreground = WARNING_COLOR;
+ } else {
+ styleRange.foreground = DEFAULT_COLOR;
+ }
+ widget.append(text);
+ widget.setStyleRange(styleRange);
+ revealEndOfDocument();
+ }
+
+ protected void revealEndOfDocument() {
+ StyledTextContent doc= widget.getContent();
+ int docLength= doc.getCharCount();
+ if (docLength > 0) {
+ widget.setCaretOffset(docLength);
+ widget.showSelection();
+ }
+ }
+
+ public void setFocus() {
+ widget.setFocus();
+ }
+
+ private Action copyAction = new Action() {
+ public void run() {
+ widget.copy();
+ }
+ };
+ private Action selectAllAction = new Action() {
+ public void run() {
+ widget.selectAll();
+ }
+ };
+ private Action clearAction = new Action() {
+ public void run() {
+ widget.setText(""); //$NON-NLS-1$
+ }
+ };
+}