diff options
Diffstat (limited to 'bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/typing/AbstractCharacterPairInserter.java')
-rw-r--r-- | bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/typing/AbstractCharacterPairInserter.java | 144 |
1 files changed, 0 insertions, 144 deletions
diff --git a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/typing/AbstractCharacterPairInserter.java b/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/typing/AbstractCharacterPairInserter.java deleted file mode 100644 index c26afbae3a..0000000000 --- a/bundles/org.eclipse.wst.sse.ui/src/org/eclipse/wst/sse/ui/typing/AbstractCharacterPairInserter.java +++ /dev/null @@ -1,144 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2009 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM Corporation - initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.sse.ui.typing; - -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.link.ILinkedModeListener; -import org.eclipse.jface.text.link.LinkedModeModel; -import org.eclipse.jface.text.link.LinkedModeUI; -import org.eclipse.jface.text.link.LinkedPosition; -import org.eclipse.jface.text.link.LinkedPositionGroup; -import org.eclipse.jface.text.link.LinkedModeUI.ExitFlags; -import org.eclipse.jface.text.link.LinkedModeUI.IExitPolicy; -import org.eclipse.jface.text.source.ISourceViewer; -import org.eclipse.swt.events.VerifyEvent; -import org.eclipse.swt.graphics.Point; -import org.eclipse.wst.sse.ui.internal.Logger; - -abstract public class AbstractCharacterPairInserter { - - class ExitPolicy implements IExitPolicy { - - private char fExit; - private char fEscape; - private IDocument fDocument; - - public ExitPolicy(char exit, char escape, IDocument document) { - fExit = exit; - fEscape = escape; - fDocument = document; - } - - public ExitFlags doExit(LinkedModeModel model, VerifyEvent event, int offset, int length) { - if(!isMasked(offset)) { - if (event.character == fExit) - return new ExitFlags(ILinkedModeListener.UPDATE_CARET, false); - } - return null; - } - - private boolean isMasked(int offset) { - try { - return fEscape == fDocument.getChar(offset - 1); - } catch (BadLocationException e) { - } - return false; - } - } - - /** - * Pair the character <code>c</code> in the source viewer <code>viewer</code>. - * Positions are linked before and after the inserted character. - * - * @param viewer the source viewer to add the linked mode to - * @param c the character to pair with - * @return true if the character was successfully paired; false otherwise - */ - public boolean pair(final ISourceViewer viewer, final char c) { - if (!shouldPair(viewer, c)) - return false; - - final char mc = getPair(c); - final char[] chars = new char[2]; - chars[0] = c; - chars[1] = mc; - - IDocument document = viewer.getDocument(); - - final Point selection= viewer.getSelectedRange(); - final int offset= selection.x; - final int length= selection.y; - - boolean paired = false; - try { - document.replace(offset, length, new String(chars)); - LinkedModeModel model = new LinkedModeModel(); - LinkedPositionGroup group = new LinkedPositionGroup(); - group.addPosition(new LinkedPosition(document, offset + 1, 0, LinkedPositionGroup.NO_STOP)); - model.addGroup(group); - model.forceInstall(); - - LinkedModeUI ui = new LinkedModeUI(model, viewer); - ui.setCyclingMode(LinkedModeUI.CYCLE_NEVER); - ui.setExitPosition(viewer, offset + 2, 0, Integer.MAX_VALUE); - ui.setExitPolicy(new ExitPolicy(mc, getEscapeChar(c), document)); - ui.setSimpleMode(true); - ui.enter(); - - paired = true; - } catch (BadLocationException e) { - Logger.logException(e); - } - return paired; - } - - /** - * Hook to evaluate if the character should be paired. Clients may override - * to evaluate the case. - * @param viewer the source viewer where the character would be paired - * @param c the character to pair - * @return true if the character should have its pair character inserted; false otherwise - */ - protected boolean shouldPair(ISourceViewer viewer, char c) { - return true; - } - - /** - * Can the character be paired by the inserter - * @param c the character of interest - * @return true if the character can be paired by the inserter; false otherwise - */ - abstract public boolean hasPair(char c); - - /** - * Get the paired character for <code>c</code> - * @param c the character to find the pair of - * @return the pair character - */ - abstract protected char getPair(char c); - - /** - * Gets the escape character for <code>c</code> in case <code>c</code> is to be used - * within the paired characters - * @param c the character to find the escape character of - * @return the escape character - */ - protected char getEscapeChar(char c) { - return 0; - } - - public void initialize() { - } - - public void dispose() { - } -} |