f26f6a83f730abc8186cc2f22238cd3c47857f5d
[phpeclipse.git] /
1 /*
2  * (c) Copyright IBM Corp. 2000, 2001.
3  * All Rights Reserved.
4  */
5 package net.sourceforge.phpdt.internal.ui.text.template;
6
7 import net.sourceforge.phpdt.internal.corext.template.TemplateMessages;
8 import net.sourceforge.phpdt.internal.ui.text.java.IPHPCompletionProposal;
9 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
10
11 import org.eclipse.core.runtime.CoreException;
12 import org.eclipse.jface.dialogs.MessageDialog;
13 import org.eclipse.jface.text.BadLocationException;
14 import org.eclipse.jface.text.IDocument;
15 import org.eclipse.jface.text.IRegion;
16 import org.eclipse.jface.text.ITextViewer;
17 import org.eclipse.swt.graphics.Point;
18 import org.eclipse.swt.widgets.Shell;
19 //import net.sourceforge.phpdt.internal.ui.text.link.LinkedPositionManager;
20 //import net.sourceforge.phpdt.internal.ui.text.link.LinkedPositionUI;
21 //import net.sourceforge.phpdt.internal.ui.util.ExceptionHandler;
22
23 /**
24  * A PHP identifier proposal.
25  */
26 public abstract class AbstractProposal implements IPHPCompletionProposal {
27         protected IRegion fSelectedRegion; // initialized by apply()
28         protected final ITextViewer fViewer;
29         
30         public AbstractProposal(ITextViewer viewer) {
31                 fViewer = viewer;
32         }
33         protected static String textToHTML(String string) {
34     StringBuffer buffer = new StringBuffer(string.length());
35     buffer.append("<pre>"); //$NON-NLS-1$
36
37     for (int i = 0; i != string.length(); i++) {
38       char ch = string.charAt(i);
39
40       switch (ch) {
41         case '&' :
42           buffer.append("&amp;"); //$NON-NLS-1$
43           break;
44
45         case '<' :
46           buffer.append("&lt;"); //$NON-NLS-1$
47           break;
48
49         case '>' :
50           buffer.append("&gt;"); //$NON-NLS-1$
51           break;
52
53         case '\t' :
54           buffer.append("    "); //$NON-NLS-1$
55           break;
56
57         case '\n' :
58           buffer.append("<br>"); //$NON-NLS-1$
59           break;
60
61         default :
62           buffer.append(ch);
63           break;
64       }
65     }
66
67     buffer.append("</pre>"); //$NON-NLS-1$
68     return buffer.toString();
69   }
70
71         /*
72          * @see ICompletionProposal#getSelection(IDocument)
73          */
74         public Point getSelection(IDocument document) {
75                 return new Point(fSelectedRegion.getOffset(), fSelectedRegion.getLength());
76         }
77
78         protected void handleException(CoreException e) {
79                 Shell shell = fViewer.getTextWidget().getShell();
80                 PHPeclipsePlugin.log(e);
81                 //              ExceptionHandler.handle(e, shell, ObfuscatorMessages.getString("TemplateEvaluator.error.title"), null); //$NON-NLS-1$
82         }
83
84         protected void openErrorDialog(BadLocationException e) {
85                 Shell shell = fViewer.getTextWidget().getShell();
86                 MessageDialog.openError(shell, TemplateMessages.getString("TemplateEvaluator.error.title"), e.getMessage()); //$NON-NLS-1$
87         }
88 }