package tk.eclipse.plugin.htmleditor.assist; import java.util.HashMap; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.jdt.core.IBuffer; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jface.fieldassist.IContentProposal; import org.eclipse.swt.layout.GridLayout; /** * Provides utility methods about the field assist. * * @author Naoki Takezoe */ public class FieldAssistUtils { private static HashMap<IJavaProject, ICompilationUnit> unitMap = new HashMap<IJavaProject, ICompilationUnit>(); /** * Set contents of the compilation unit to the translated jsp text. * * @param unit the ICompilationUnit on which to set the buffer contents * @param value Java source code */ public static void setContentsToCU(ICompilationUnit unit, String value){ if (unit == null) return; synchronized (unit) { IBuffer buffer; try { buffer = unit.getBuffer(); } catch (JavaModelException e) { e.printStackTrace(); buffer = null; } if (buffer != null) buffer.setContents(value); } } /** * Creates the <code>ICompilationUnit</code> to use temporary. * * @param project the java project * @return the temporary <code>ICompilationUnit</code> * @throws JavaModelException */ public synchronized static ICompilationUnit getTemporaryCompilationUnit( IJavaProject project) throws JavaModelException { if(unitMap.get(project) != null){ return unitMap.get(project); } IPackageFragment root = project.getPackageFragments()[0]; ICompilationUnit unit = root.getCompilationUnit("_xxx.java").getWorkingCopy( new NullProgressMonitor()); unitMap.put(project, unit); return unit; } public static class ContentProposalImpl implements IContentProposal { private String content; private int position; public ContentProposalImpl(String content, int position){ this.content = content; this.position = position; } public String getContent() { return content.substring(position); } public int getCursorPosition() { return content.length() - position; } public String getDescription() { return null; } public String getLabel() { return content; } } // /** // * Creates the <code>Composite</code> for the fields which don't need decoration. // * // * @param parent the parent composite // * @param white whether it should paint out the background // * @return the created <code>Composite</code> object // */ // public static Composite createNullDecoratedPanel(Composite parent, boolean white){ // Composite composite = new Composite(parent, SWT.NULL); // GridLayout layout = createNoMarginGridLayout(); // layout.horizontalSpacing = 0; // layout.verticalSpacing = 0; // composite.setLayout(layout); // if(white){ // composite.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); // } // Label space = new Label(composite, SWT.NULL); // GridData gd = new GridData(); // gd.widthHint = 5; // space.setLayoutData(gd); // if(white){ // space.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); // } // return composite; // } /** * Creates <code>GridLayout</code> that has no margin. * * @return created <code>GridLayout</code> that has no margin */ public static GridLayout createNoMarginGridLayout(){ GridLayout layout = new GridLayout(2, false); layout.marginBottom = 0; layout.marginTop = 0; layout.marginLeft = 0; layout.marginRight = 0; layout.marginWidth = 0; layout.marginHeight = 0; return layout; } }