/** * This file Copyright (c) 2005-2008 Aptana, Inc. This program is * dual-licensed under both the Aptana Public License and the GNU General * Public license. You may elect to use one or the other of these licenses. * * This program is distributed in the hope that it will be useful, but * AS-IS and WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, TITLE, or * NONINFRINGEMENT. Redistribution, except as permitted by whichever of * the GPL or APL you select, is prohibited. * * 1. For the GPL license (GPL), you can redistribute and/or modify this * program under the terms of the GNU General Public License, * Version 3, as published by the Free Software Foundation. You should * have received a copy of the GNU General Public License, Version 3 along * with this program; if not, write to the Free Software Foundation, Inc., 51 * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Aptana provides a special exception to allow redistribution of this file * with certain other free and open source software ("FOSS") code and certain additional terms * pursuant to Section 7 of the GPL. You may view the exception and these * terms on the web at http://www.aptana.com/legal/gpl/. * * 2. For the Aptana Public License (APL), this program and the * accompanying materials are made available under the terms of the APL * v1.0 which accompanies this distribution, and is available at * http://www.aptana.com/legal/apl/. * * You may view the GPL, Aptana's exception and additional terms, and the * APL in the file titled license.html at the root of the corresponding * plugin containing this source file. * * Any modifications to this file must keep this entire header intact. */ package com.aptana.ide.editor.html.contentassist; import org.eclipse.jface.text.contentassist.IContextInformation; import org.eclipse.swt.graphics.Image; import com.aptana.ide.editors.unified.IUnifiedViewer; import com.aptana.ide.editors.unified.contentassist.UnifiedCompletionProposal; /** * */ public class HTMLCompletionProposal extends UnifiedCompletionProposal//, ICompletionProposalExtension2 { /** * HTMLCompletionProposal * * @param replacementString * @param replacementOffset * @param replacementLength * @param cursorPosition * @param image * @param displayString * @param contextInformation * @param additionalProposalInfo * @param objectType * @param unifiedViewer * @param userAgentImages */ public HTMLCompletionProposal(String replacementString, int replacementOffset, int replacementLength, int cursorPosition, Image image, String displayString, IContextInformation contextInformation, String additionalProposalInfo, int objectType, IUnifiedViewer unifiedViewer, Image[] userAgentImages) { super(replacementString, replacementOffset, replacementLength, cursorPosition, image, displayString, contextInformation, additionalProposalInfo, objectType, unifiedViewer, userAgentImages); } // /** // * Returns the type of object this proposal contains (class, method, etc).This is used for sorting. // * @return Returns the type of object this proposal contains (class, method, etc).This is used for sorting. // */ // public int getObjectType() { // return fObjectType; // } // /** // * @see ICompletionProposal#apply(IDocument) // */ // public void apply(IDocument document) { // try { // document.replace(fReplacementOffset, fReplacementLength, fReplacementString); // } catch (BadLocationException x) { // // ignore // } // } // // /** // * apply // * // * @param viewer // * @param trigger // * @param stateMask // * @param offset // */ // public void apply(ITextViewer viewer, char trigger, int stateMask, int offset) // { // apply(viewer.getDocument()); // // try { // setUpLinkedMode(viewer, offset); // } catch(BadLocationException x) { // // ignore // } // } // // private void setUpLinkedMode(ITextViewer viewer, int offset) throws BadLocationException // { // LinkedPositionGroup group = new LinkedPositionGroup(); // group.addPosition(new LinkedPosition(viewer.getDocument(), offset + 1, 0, LinkedPositionGroup.NO_STOP)); // // LinkedModeModel model = new LinkedModeModel(); // model.addGroup(group); // model.forceInstall(); // // LinkedModeUI ui = new LinkedModeUI(model, viewer); // ui.setSimpleMode(true); // ui.setExitPolicy(new ExitPolicy('>')); // ui.setExitPosition(viewer, offset + 1, 0, Integer.MAX_VALUE); // ui.setCyclingMode(LinkedModeUI.CYCLE_NEVER); // ui.enter(); // } // /** // * @see ICompletionProposal#getSelection(IDocument) // */ // public Point getSelection(IDocument document) { // return new Point(fReplacementOffset + fCursorPosition, 0); // } // // /** // * @see ICompletionProposal#getContextInformation() // */ // public IContextInformation getContextInformation() { // return fContextInformation; // } // // /** // * @see ICompletionProposal#getImage() // */ // public Image getImage() { // return fImage; // } // // /** // * @see ICompletionProposal#getDisplayString() // */ // public String getDisplayString() { // if (fDisplayString != null) // return fDisplayString; // return fReplacementString; // } // // /** // * @see ICompletionProposal#getAdditionalProposalInfo() // */ // public String getAdditionalProposalInfo() { // return fAdditionalProposalInfo; // } // // /** // * @author Robin Debreuil // */ // protected static class ExitPolicy implements IExitPolicy { // // final char fExitCharacter; // // /** // * ExitPolicy // * // * @param exitCharacter // */ // public ExitPolicy(char exitCharacter) { // fExitCharacter= exitCharacter; // } // // /** // * @see org.eclipse.jface.text.link.LinkedModeUI.IExitPolicy#doExit(org.eclipse.jface.text.link.LinkedModeModel, org.eclipse.swt.events.VerifyEvent, int, int) // */ // public ExitFlags doExit(LinkedModeModel environment, VerifyEvent event, int offset, int length) { // // if (event.character == fExitCharacter) { // if (environment.anyPositionContains(offset)) // return new ExitFlags(ILinkedModeListener.UPDATE_CARET, false); // else // return new ExitFlags(ILinkedModeListener.UPDATE_CARET, true); // } // // switch (event.character) { // case ';': // return new ExitFlags(ILinkedModeListener.NONE, true); // // case '\r': // return new ExitFlags(ILinkedModeListener.NONE, true); // // default: // return null; // } // } // // } // // // /** // * selected // * // * @param viewer // * @param smartToggle // */ // public void selected(ITextViewer viewer, boolean smartToggle) // { // // TODO Auto-generated method stub // // } // // /** // * unselected // * // * @param viewer // */ // public void unselected(ITextViewer viewer) // { // // TODO Auto-generated method stub // // } // // /** // * validate // * // * @param document // * @param offset // * @param event // * @return boolean // */ // public boolean validate(IDocument document, int offset, DocumentEvent event) // { // if (offset < this.fReplacementOffset) // return false; // // /* // * See http://dev.eclipse.org/bugs/show_bug.cgi?id=17667 // String word= fReplacementString; // */ // boolean validated= startsWith(document, offset, getDisplayString()); // TODO remove early display string reference // // if (validated && event != null) { // // adapt replacement range to document change // int delta= (event.fText == null ? 0 : event.fText.length()) - event.fLength; // final int newLength= Math.max(this.fReplacementLength + delta, 0); // fReplacementLength = newLength; // } // // return validated; // } // // /** // * Returns <code>true</code> if a words starts with the code completion prefix in the document, // * <code>false</code> otherwise. // * @param document // * @param offset // * @param word // * @return boolean // */ // protected final boolean startsWith(IDocument document, int offset, String word) { // int wordLength= word == null ? 0 : word.length(); // if (offset > fReplacementOffset + wordLength) // return false; // // try { // int length= offset - fReplacementOffset; // String start= document.get(fReplacementOffset, length); // return word.substring(0, length).equalsIgnoreCase(start); // } catch (BadLocationException x) { // } // // return false; // } // // /** // * defaultSelection // */ // public boolean defaultSelection = false; // // /** // * @return Returns the defaultSelection. // */ // public boolean isDefaultSelection() // { // return defaultSelection; // } // // /** // * @param defaultSelection The defaultSelection to set. // */ // public void setDefaultSelection(boolean defaultSelection) // { // this.defaultSelection = defaultSelection; // } }