0ac931d938c3b5549bd9690383918038da035b24
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / ui / text / template / SQLProposal.java
1 /*
2  * (c) Copyright IBM Corp. 2000, 2001.
3  * All Rights Reserved.
4  */
5 package net.sourceforge.phpdt.internal.ui.text.template;
6 import net.sourceforge.phpdt.internal.corext.template.TemplateContext;
7 import net.sourceforge.phpdt.internal.corext.template.php.PHPUnitContext;
8 import net.sourceforge.phpdt.internal.ui.text.link.LinkedPositionManager;
9 import net.sourceforge.phpdt.internal.ui.text.link.LinkedPositionUI;
10 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
11
12 import org.eclipse.jface.text.BadLocationException;
13 import org.eclipse.jface.text.IDocument;
14 import org.eclipse.jface.text.IRegion;
15 import org.eclipse.jface.text.ITextViewer;
16 import org.eclipse.jface.text.contentassist.IContextInformation;
17 import org.eclipse.swt.graphics.Image;
18 /**
19  * A PHP identifier proposal.
20  */
21 public class SQLProposal extends AbstractProposal { //implements
22   // IPHPCompletionProposal
23   // {
24   private final TemplateContext fContext;
25   private final Image fImage_var;
26   private final IRegion fRegion;
27   private final String fColumnName;
28   private final String fTableName;
29   
30   private int fRelevance;
31   /**
32    * Creates a template proposal with a template and its context.
33    * 
34    * @param template
35    *            the template
36    * @param context
37    *            the context in which the template was requested.
38    * @param image
39    *            the icon of the proposal.
40    */
41   public SQLProposal(String tableName, TemplateContext context, IRegion region,
42       ITextViewer viewer, Image image_var) {
43     super(viewer);
44     fTableName = tableName;
45     fColumnName = null;
46     fContext = context;
47     fImage_var = image_var;
48     fRegion = region;
49     fRelevance = 0;
50   }
51   
52   public SQLProposal(String tableName, String columnName, TemplateContext context, IRegion region,
53       ITextViewer viewer, Image image_var) {
54     super(viewer);
55     fTableName = tableName;
56     fColumnName = columnName;
57     fContext = context;
58     fImage_var = image_var;
59     fRegion = region;
60     fRelevance = 0;
61   }
62   /*
63    * @see ICompletionProposal#apply(IDocument)
64    */
65   public void apply(IDocument document) {
66     try {
67       //                    if (fTemplateBuffer == null)
68       //                                fTemplateBuffer= fContext.evaluate(fTemplate);
69       int start = fRegion.getOffset();
70       int end = fRegion.getOffset() + fRegion.getLength();
71       String resultString = fTableName;
72       if (fColumnName!=null) {
73         resultString = fColumnName;
74       }
75       // insert template string
76       //  String templateString = fTemplate; // fTemplateBuffer.getString();
77       document.replace(start, end - start, resultString);
78       // translate positions
79       LinkedPositionManager manager = new LinkedPositionManager(document);
80       //                        TemplatePosition[] variables= fTemplateBuffer.getVariables();
81       //                        for (int i= 0; i != variables.length; i++) {
82       //                                TemplatePosition variable= variables[i];
83       //
84       //                                if (variable.isResolved())
85       //                                        continue;
86       //                                
87       //                                int[] offsets= variable.getOffsets();
88       //                                int length= variable.getLength();
89       //                                
90       //                                for (int j= 0; j != offsets.length; j++)
91       //                                        manager.addPosition(offsets[j] + start, length);
92       //                        }
93       LinkedPositionUI editor = new LinkedPositionUI(fViewer, manager);
94       editor.setFinalCaretOffset(resultString.length() + start);
95       //   editor.setFinalCaretOffset(getCaretOffset(fTemplateBuffer) + start);
96       editor.enter();
97       fSelectedRegion = editor.getSelectedRegion();
98     } catch (BadLocationException e) {
99       PHPeclipsePlugin.log(e);
100       openErrorDialog(e);
101     }
102     //      catch (CoreException e) {
103     //                  handleException(e);
104     //      }
105   }
106   /*
107    * @see ICompletionProposal#getAdditionalProposalInfo()
108    */
109   public String getAdditionalProposalInfo() {
110     if (fColumnName==null) {
111       return textToHTML(fTableName);  
112     }
113     return fColumnName+" (Table: "+fTableName+")";
114   }
115   
116   /*
117    * @see ICompletionProposal#getContextInformation()
118    */
119   public IContextInformation getContextInformation() {
120     return null;
121   }
122   /*
123    * @see ICompletionProposal#getDisplayString()
124    */
125   public String getDisplayString() {
126     if (fColumnName==null) {
127       return fTableName;  
128     }
129     return fColumnName+" (Table: "+fTableName+")"; // $NON-NLS-1$
130   }
131   /*
132    * @see ICompletionProposal#getImage()
133    */
134   public Image getImage() {
135     return fImage_var;
136   }
137   /*
138    * @see IJavaCompletionProposal#getRelevance()
139    */
140   public int getRelevance() {
141     return fRelevance;
142   }
143   /**
144    * @param relevance The relevance to set.
145    */
146   public void setRelevance(int relevance) {
147     fRelevance = relevance;
148   }
149 }