X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPUnitEditor.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPUnitEditor.java deleted file mode 100644 index 37f9bbe..0000000 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/PHPUnitEditor.java +++ /dev/null @@ -1,1421 +0,0 @@ -package net.sourceforge.phpeclipse.phpeditor; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import net.sourceforge.phpdt.internal.compiler.parser.Scanner; -import net.sourceforge.phpdt.internal.ui.text.ContentAssistPreference; -import net.sourceforge.phpdt.internal.ui.text.PHPPairMatcher; -import net.sourceforge.phpdt.internal.ui.text.link.LinkedPositionManager; -import net.sourceforge.phpdt.internal.ui.text.link.LinkedPositionUI; -import net.sourceforge.phpdt.internal.ui.text.link.LinkedPositionUI.ExitFlags; -import net.sourceforge.phpdt.ui.PreferenceConstants; -import net.sourceforge.phpdt.ui.text.JavaTextTools; -import net.sourceforge.phpeclipse.PHPCore; -import net.sourceforge.phpeclipse.PHPeclipsePlugin; -import net.sourceforge.phpeclipse.phpeditor.php.IPHPPartitionScannerConstants; - -import org.eclipse.core.resources.IFile; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.Preferences; -import org.eclipse.core.runtime.Preferences.IPropertyChangeListener; -import org.eclipse.jface.action.IMenuManager; -import org.eclipse.jface.preference.IPreferenceStore; -import org.eclipse.jface.preference.PreferenceConverter; -import org.eclipse.jface.text.AbstractHoverInformationControlManager; -import org.eclipse.jface.text.BadLocationException; -import org.eclipse.jface.text.DocumentCommand; -import org.eclipse.jface.text.IDocument; -import org.eclipse.jface.text.ILineTracker; -import org.eclipse.jface.text.IRegion; -import org.eclipse.jface.text.ITextSelection; -import org.eclipse.jface.text.ITextViewerExtension; -import org.eclipse.jface.text.ITypedRegion; -import org.eclipse.jface.text.IWidgetTokenKeeper; -import org.eclipse.jface.text.contentassist.ContentAssistant; -import org.eclipse.jface.text.contentassist.IContentAssistant; -import org.eclipse.jface.text.source.IAnnotationModel; -import org.eclipse.jface.text.source.ISourceViewer; -import org.eclipse.jface.text.source.IVerticalRuler; -import org.eclipse.jface.text.source.SourceViewer; -import org.eclipse.jface.text.source.SourceViewerConfiguration; -import org.eclipse.jface.util.PropertyChangeEvent; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.StyledText; -import org.eclipse.swt.custom.VerifyKeyListener; -import org.eclipse.swt.events.VerifyEvent; -import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.graphics.RGB; -import org.eclipse.swt.graphics.Rectangle; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Layout; -import org.eclipse.ui.IEditorInput; -import org.eclipse.ui.IFileEditorInput; -import org.eclipse.ui.actions.ActionContext; -import org.eclipse.ui.help.WorkbenchHelp; -import org.eclipse.ui.texteditor.IDocumentProvider; - -/********************************************************************** -Copyright (c) 2000, 2002 IBM Corp. and others. -All rights reserved. This program and the accompanying materials -are made available under the terms of the Common Public License v1.0 -which accompanies this distribution, and is available at -http://www.eclipse.org/legal/cpl-v10.html - -Contributors: - IBM Corporation - Initial implementation - Klaus Hartlage - www.eclipseproject.de -**********************************************************************/ -/** - * PHP specific text editor. - */ -public class PHPUnitEditor extends PHPEditor { - - interface ITextConverter { - void customizeDocumentCommand(IDocument document, DocumentCommand command); - }; - - class AdaptedRulerLayout extends Layout { - - protected int fGap; - protected AdaptedSourceViewer fAdaptedSourceViewer; - - protected AdaptedRulerLayout(int gap, AdaptedSourceViewer asv) { - fGap = gap; - fAdaptedSourceViewer = asv; - } - - protected Point computeSize(Composite composite, int wHint, int hHint, boolean flushCache) { - Control[] children = composite.getChildren(); - Point s = children[children.length - 1].computeSize(SWT.DEFAULT, SWT.DEFAULT, flushCache); - if (fAdaptedSourceViewer.isVerticalRulerVisible()) - s.x += fAdaptedSourceViewer.getVerticalRuler().getWidth() + fGap; - return s; - } - - protected void layout(Composite composite, boolean flushCache) { - Rectangle clArea = composite.getClientArea(); - if (fAdaptedSourceViewer.isVerticalRulerVisible()) { - - StyledText textWidget = fAdaptedSourceViewer.getTextWidget(); - Rectangle trim = textWidget.computeTrim(0, 0, 0, 0); - int scrollbarHeight = trim.height; - - IVerticalRuler vr = fAdaptedSourceViewer.getVerticalRuler(); - int vrWidth = vr.getWidth(); - - int orWidth = 0; - if (fAdaptedSourceViewer.isOverviewRulerVisible()) { - OverviewRuler or = fAdaptedSourceViewer.getOverviewRuler(); - orWidth = or.getWidth(); - or.getControl().setBounds(clArea.width - orWidth, scrollbarHeight, orWidth, clArea.height - 3 * scrollbarHeight); - } - - textWidget.setBounds(vrWidth + fGap, 0, clArea.width - vrWidth - orWidth - 2 * fGap, clArea.height); - vr.getControl().setBounds(0, 0, vrWidth, clArea.height - scrollbarHeight); - - } else { - StyledText textWidget = fAdaptedSourceViewer.getTextWidget(); - textWidget.setBounds(0, 0, clArea.width, clArea.height); - } - } - }; - - class AdaptedSourceViewer extends SourceViewer { // extends JavaCorrectionSourceViewer { - - private List fTextConverters; - - private OverviewRuler fOverviewRuler; - private boolean fIsOverviewRulerVisible; - /** The viewer's overview ruler hovering controller */ - private AbstractHoverInformationControlManager fOverviewRulerHoveringController; - - private boolean fIgnoreTextConverters = false; - - private IVerticalRuler fCachedVerticalRuler; - private boolean fCachedIsVerticalRulerVisible; - - public AdaptedSourceViewer(Composite parent, IVerticalRuler ruler, int styles) { - super(parent, ruler, styles); //, CompilationUnitEditor.this); - - fCachedVerticalRuler = ruler; - fCachedIsVerticalRulerVisible = (ruler != null); - fOverviewRuler = new OverviewRuler(VERTICAL_RULER_WIDTH); - - delayedCreateControl(parent, styles); - } - - /* - * @see ISourceViewer#showAnnotations(boolean) - */ - public void showAnnotations(boolean show) { - fCachedIsVerticalRulerVisible = (show && fCachedVerticalRuler != null); - // super.showAnnotations(show); - } - - public IContentAssistant getContentAssistant() { - return fContentAssistant; - } - - /* - * @see ITextOperationTarget#doOperation(int) - */ - public void doOperation(int operation) { - - if (getTextWidget() == null) - return; - - switch (operation) { - case CONTENTASSIST_PROPOSALS : - String msg = fContentAssistant.showPossibleCompletions(); - setStatusLineErrorMessage(msg); - return; - case UNDO : - fIgnoreTextConverters = true; - break; - case REDO : - fIgnoreTextConverters = true; - break; - } - - super.doOperation(operation); - } - - public void insertTextConverter(ITextConverter textConverter, int index) { - throw new UnsupportedOperationException(); - } - - public void addTextConverter(ITextConverter textConverter) { - if (fTextConverters == null) { - fTextConverters = new ArrayList(1); - fTextConverters.add(textConverter); - } else if (!fTextConverters.contains(textConverter)) - fTextConverters.add(textConverter); - } - - public void removeTextConverter(ITextConverter textConverter) { - if (fTextConverters != null) { - fTextConverters.remove(textConverter); - if (fTextConverters.size() == 0) - fTextConverters = null; - } - } - - /* - * @see TextViewer#customizeDocumentCommand(DocumentCommand) - */ - protected void customizeDocumentCommand(DocumentCommand command) { - super.customizeDocumentCommand(command); - if (!fIgnoreTextConverters && fTextConverters != null) { - for (Iterator e = fTextConverters.iterator(); e.hasNext();) - ((ITextConverter) e.next()).customizeDocumentCommand(getDocument(), command); - } - fIgnoreTextConverters = false; - } - - public IVerticalRuler getVerticalRuler() { - return fCachedVerticalRuler; - } - - public boolean isVerticalRulerVisible() { - return fCachedIsVerticalRulerVisible; - } - - public OverviewRuler getOverviewRuler() { - return fOverviewRuler; - } - - /* - * @see TextViewer#createControl(Composite, int) - */ - protected void createControl(Composite parent, int styles) { - // do nothing here - } - - protected void delayedCreateControl(Composite parent, int styles) { - //create the viewer - super.createControl(parent, styles); - - Control control = getControl(); - if (control instanceof Composite) { - Composite composite = (Composite) control; - composite.setLayout(new AdaptedRulerLayout(GAP_SIZE, this)); - fOverviewRuler.createControl(composite, this); - } - } - - protected void ensureOverviewHoverManagerInstalled() { - if (fOverviewRulerHoveringController == null && fAnnotationHover != null && fHoverControlCreator != null) { - fOverviewRulerHoveringController = - new OverviewRulerHoverManager(fOverviewRuler, this, fAnnotationHover, fHoverControlCreator); - fOverviewRulerHoveringController.install(fOverviewRuler.getControl()); - } - } - - public void hideOverviewRuler() { - fIsOverviewRulerVisible = false; - Control control = getControl(); - if (control instanceof Composite) { - Composite composite = (Composite) control; - composite.layout(); - } - if (fOverviewRulerHoveringController != null) { - fOverviewRulerHoveringController.dispose(); - fOverviewRulerHoveringController = null; - } - } - - public void showOverviewRuler() { - fIsOverviewRulerVisible = true; - Control control = getControl(); - if (control instanceof Composite) { - Composite composite = (Composite) control; - composite.layout(); - } - ensureOverviewHoverManagerInstalled(); - } - - public boolean isOverviewRulerVisible() { - return fIsOverviewRulerVisible; - } - - /* - * @see ISourceViewer#setDocument(IDocument, IAnnotationModel, int, int) - */ - public void setDocument( - IDocument document, - IAnnotationModel annotationModel, - int visibleRegionOffset, - int visibleRegionLength) { - super.setDocument(document, annotationModel, visibleRegionOffset, visibleRegionLength); - fOverviewRuler.setModel(annotationModel); - } - - // http://dev.eclipse.org/bugs/show_bug.cgi?id=19270 - public void updateIndentationPrefixes() { - SourceViewerConfiguration configuration = getSourceViewerConfiguration(); - String[] types = configuration.getConfiguredContentTypes(this); - for (int i = 0; i < types.length; i++) { - String[] prefixes = configuration.getIndentPrefixes(this, types[i]); - if (prefixes != null && prefixes.length > 0) - setIndentPrefixes(prefixes, types[i]); - } - } - - /* - * @see IWidgetTokenOwner#requestWidgetToken(IWidgetTokenKeeper) - */ - public boolean requestWidgetToken(IWidgetTokenKeeper requester) { - if (WorkbenchHelp.isContextHelpDisplayed()) - return false; - return super.requestWidgetToken(requester); - } - - /* - * @see org.eclipse.jface.text.source.ISourceViewer#configure(org.eclipse.jface.text.source.SourceViewerConfiguration) - */ - public void configure(SourceViewerConfiguration configuration) { - super.configure(configuration); - // prependAutoEditStrategy(new SmartBracesAutoEditStrategy(this), IDocument.DEFAULT_CONTENT_TYPE); - } - - protected void handleDispose() { - fOverviewRuler = null; - - if (fOverviewRulerHoveringController != null) { - fOverviewRulerHoveringController.dispose(); - fOverviewRulerHoveringController = null; - } - - super.handleDispose(); - } - - }; - - static class TabConverter implements ITextConverter { - - private int fTabRatio; - private ILineTracker fLineTracker; - - public TabConverter() { - } - - public void setNumberOfSpacesPerTab(int ratio) { - fTabRatio = ratio; - } - - public void setLineTracker(ILineTracker lineTracker) { - fLineTracker = lineTracker; - } - - private int insertTabString(StringBuffer buffer, int offsetInLine) { - - if (fTabRatio == 0) - return 0; - - int remainder = offsetInLine % fTabRatio; - remainder = fTabRatio - remainder; - for (int i = 0; i < remainder; i++) - buffer.append(' '); - return remainder; - } - - public void customizeDocumentCommand(IDocument document, DocumentCommand command) { - String text = command.text; - if (text == null) - return; - - int index = text.indexOf('\t'); - if (index > -1) { - - StringBuffer buffer = new StringBuffer(); - - fLineTracker.set(command.text); - int lines = fLineTracker.getNumberOfLines(); - - try { - - for (int i = 0; i < lines; i++) { - - int offset = fLineTracker.getLineOffset(i); - int endOffset = offset + fLineTracker.getLineLength(i); - String line = text.substring(offset, endOffset); - - int position = 0; - if (i == 0) { - IRegion firstLine = document.getLineInformationOfOffset(command.offset); - position = command.offset - firstLine.getOffset(); - } - - int length = line.length(); - for (int j = 0; j < length; j++) { - char c = line.charAt(j); - if (c == '\t') { - position += insertTabString(buffer, position); - } else { - buffer.append(c); - ++position; - } - } - - } - - command.text = buffer.toString(); - - } catch (BadLocationException x) { - } - } - } - }; - - private static class ExitPolicy implements LinkedPositionUI.ExitPolicy { - - final char fExitCharacter; - - public ExitPolicy(char exitCharacter) { - fExitCharacter = exitCharacter; - } - - /* - * @see org.phpeclipse.phpdt.internal.ui.text.link.LinkedPositionUI.ExitPolicy#doExit(org.phpeclipse.phpdt.internal.ui.text.link.LinkedPositionManager, org.eclipse.swt.events.VerifyEvent, int, int) - */ - public ExitFlags doExit(LinkedPositionManager manager, VerifyEvent event, int offset, int length) { - - if (event.character == fExitCharacter) { - if (manager.anyPositionIncludes(offset, length)) - return new ExitFlags(LinkedPositionUI.COMMIT | LinkedPositionUI.UPDATE_CARET, false); - else - return new ExitFlags(LinkedPositionUI.COMMIT, true); - } - - switch (event.character) { - case '\b' : - if (manager.getFirstPosition().length == 0) - return new ExitFlags(0, false); - else - return null; - - case '\n' : - case '\r' : - return new ExitFlags(LinkedPositionUI.COMMIT, true); - - default : - return null; - } - } - - } - private class BracketInserter implements VerifyKeyListener, LinkedPositionUI.ExitListener { - - private boolean fCloseBracketsPHP = true; - private boolean fCloseStringsPHP = true; - private boolean fCloseBracketsHTML = true; - private boolean fCloseStringsHTML = true; - - private int fOffset; - private int fLength; - - public void setCloseBracketsPHPEnabled(boolean enabled) { - fCloseBracketsPHP = enabled; - } - - public void setCloseStringsPHPEnabled(boolean enabled) { - fCloseStringsPHP = enabled; - } - - public void setCloseBracketsHTMLEnabled(boolean enabled) { - fCloseBracketsHTML = enabled; - } - - public void setCloseStringsHTMLEnabled(boolean enabled) { - fCloseStringsHTML = enabled; - } - - private boolean hasIdentifierToTheRight(IDocument document, int offset) { - try { - int end = offset; - IRegion endLine = document.getLineInformationOfOffset(end); - int maxEnd = endLine.getOffset() + endLine.getLength(); - while (end != maxEnd && Character.isWhitespace(document.getChar(end))) - ++end; - - return end != maxEnd && Scanner.isPHPIdentifierPart(document.getChar(end)); - - } catch (BadLocationException e) { - // be conservative - return true; - } - } - - private boolean hasIdentifierToTheLeft(IDocument document, int offset) { - try { - int start = offset; - IRegion startLine = document.getLineInformationOfOffset(start); - int minStart = startLine.getOffset(); - while (start != minStart && Character.isWhitespace(document.getChar(start - 1))) - --start; - - return start != minStart && Scanner.isPHPIdentifierPart(document.getChar(start - 1)); - - } catch (BadLocationException e) { - return true; - } - } - - private boolean hasCharacterToTheRight(IDocument document, int offset, char character) { - try { - int end = offset; - IRegion endLine = document.getLineInformationOfOffset(end); - int maxEnd = endLine.getOffset() + endLine.getLength(); - while (end != maxEnd && Character.isWhitespace(document.getChar(end))) - ++end; - - return end != maxEnd && document.getChar(end) == character; - - } catch (BadLocationException e) { - // be conservative - return true; - } - } - - /* - * @see org.eclipse.swt.custom.VerifyKeyListener#verifyKey(org.eclipse.swt.events.VerifyEvent) - */ - public void verifyKey(VerifyEvent event) { - - if (!event.doit) - return; - - final ISourceViewer sourceViewer = getSourceViewer(); - IDocument document = sourceViewer.getDocument(); - - final Point selection = sourceViewer.getSelectedRange(); - final int offset = selection.x; - final int length = selection.y; - - try { - ITypedRegion partition = document.getPartition(offset); - String type = partition.getType(); - if (type.equals(IPHPPartitionScannerConstants.PHP)) { - switch (event.character) { - case '(' : - if (hasCharacterToTheRight(document, offset + length, '(')) - return; - - // fall through - - case '[' : - if (!fCloseBracketsPHP) - return; - if (hasIdentifierToTheRight(document, offset + length)) - return; - - // fall through - - case '"' : - if (event.character == '"') { - if (!fCloseStringsPHP) - return; - // changed for statements like echo "" print "" - // if (hasIdentifierToTheLeft(document, offset) || hasIdentifierToTheRight(document, offset + length)) - if (hasIdentifierToTheRight(document, offset + length)) - return; - } - - // ITypedRegion partition= document.getPartition(offset); - // if (! IDocument.DEFAULT_CONTENT_TYPE.equals(partition.getType()) && (partition.getOffset() != offset)) - // return; - - final char character = event.character; - final char closingCharacter = getPeerCharacter(character); - final StringBuffer buffer = new StringBuffer(); - buffer.append(character); - buffer.append(closingCharacter); - - document.replace(offset, length, buffer.toString()); - - LinkedPositionManager manager = new LinkedPositionManager(document); - manager.addPosition(offset + 1, 0); - - fOffset = offset; - fLength = 2; - - LinkedPositionUI editor = new LinkedPositionUI(sourceViewer, manager); - editor.setCancelListener(this); - editor.setExitPolicy(new ExitPolicy(closingCharacter)); - editor.setFinalCaretOffset(offset + 2); - editor.enter(); - - IRegion newSelection = editor.getSelectedRegion(); - sourceViewer.setSelectedRange(newSelection.getOffset(), newSelection.getLength()); - - event.doit = false; - } - } else if (type.equals(IPHPPartitionScannerConstants.HTML) || type.equals(IDocument.DEFAULT_CONTENT_TYPE)) { - switch (event.character) { - case '(' : - if (hasCharacterToTheRight(document, offset + length, '(')) - return; - - // fall through - - case '[' : - if (!fCloseBracketsHTML) - return; - if (hasIdentifierToTheRight(document, offset + length)) - return; - - // fall through - - case '"' : - if (event.character == '"') { - if (!fCloseStringsHTML) - return; - - if (hasIdentifierToTheLeft(document, offset) || hasIdentifierToTheRight(document, offset + length)) - return; - } - - // ITypedRegion partition= document.getPartition(offset); - // if (! IDocument.DEFAULT_CONTENT_TYPE.equals(partition.getType()) && (partition.getOffset() != offset)) - // return; - - final char character = event.character; - final char closingCharacter = getPeerCharacter(character); - final StringBuffer buffer = new StringBuffer(); - buffer.append(character); - buffer.append(closingCharacter); - - document.replace(offset, length, buffer.toString()); - - LinkedPositionManager manager = new LinkedPositionManager(document); - manager.addPosition(offset + 1, 0); - - fOffset = offset; - fLength = 2; - - LinkedPositionUI editor = new LinkedPositionUI(sourceViewer, manager); - editor.setCancelListener(this); - editor.setExitPolicy(new ExitPolicy(closingCharacter)); - editor.setFinalCaretOffset(offset + 2); - editor.enter(); - - IRegion newSelection = editor.getSelectedRegion(); - sourceViewer.setSelectedRange(newSelection.getOffset(), newSelection.getLength()); - - event.doit = false; - } - } - } catch (BadLocationException e) { - } - - } - - /* - * @see org.phpeclipse.phpdt.internal.ui.text.link.LinkedPositionUI.ExitListener#exit(boolean) - */ - public void exit(boolean accept) { - if (accept) - return; - - // remove brackets - try { - final ISourceViewer sourceViewer = getSourceViewer(); - IDocument document = sourceViewer.getDocument(); - document.replace(fOffset, fLength, null); - } catch (BadLocationException e) { - } - } - - } - /** The editor's paint manager */ - private PaintManager fPaintManager; - /** The editor's bracket painter */ - private BracketPainter fBracketPainter; - /** The editor's bracket matcher */ - private PHPPairMatcher fBracketMatcher; - /** The editor's line painter */ - private LinePainter fLinePainter; - /** The editor's print margin ruler painter */ - private PrintMarginPainter fPrintMarginPainter; - /** The editor's problem painter */ - private ProblemPainter fProblemPainter; - /** The editor's tab converter */ - private TabConverter fTabConverter; - /** History for structure select action */ - //private SelectionHistory fSelectionHistory; - - /** The preference property change listener for php core. */ - private IPropertyChangeListener fPropertyChangeListener = new PropertyChangeListener(); - /** The remembered selection */ - private ITextSelection fRememberedSelection; - /** The remembered php element offset */ - private int fRememberedElementOffset; - /** The bracket inserter. */ - private BracketInserter fBracketInserter = new BracketInserter(); - - private class PropertyChangeListener implements IPropertyChangeListener { - /* - * @see IPropertyChangeListener#propertyChange(PropertyChangeEvent) - */ - public void propertyChange(org.eclipse.core.runtime.Preferences.PropertyChangeEvent event) { - handlePreferencePropertyChanged(event); - } - } - /* Preference key for code formatter tab size */ - private final static String CODE_FORMATTER_TAB_SIZE = PHPCore.FORMATTER_TAB_SIZE; - /** Preference key for matching brackets */ - private final static String MATCHING_BRACKETS = PreferenceConstants.EDITOR_MATCHING_BRACKETS; - /** Preference key for matching brackets color */ - private final static String MATCHING_BRACKETS_COLOR = PreferenceConstants.EDITOR_MATCHING_BRACKETS_COLOR; - /** Preference key for highlighting current line */ - private final static String CURRENT_LINE = PreferenceConstants.EDITOR_CURRENT_LINE; - /** Preference key for highlight color of current line */ - private final static String CURRENT_LINE_COLOR = PreferenceConstants.EDITOR_CURRENT_LINE_COLOR; - /** Preference key for showing print marging ruler */ - private final static String PRINT_MARGIN = PreferenceConstants.EDITOR_PRINT_MARGIN; - /** Preference key for print margin ruler color */ - private final static String PRINT_MARGIN_COLOR = PreferenceConstants.EDITOR_PRINT_MARGIN_COLOR; - /** Preference key for print margin ruler column */ - private final static String PRINT_MARGIN_COLUMN = PreferenceConstants.EDITOR_PRINT_MARGIN_COLUMN; - /** Preference key for inserting spaces rather than tabs */ - private final static String SPACES_FOR_TABS = PreferenceConstants.EDITOR_SPACES_FOR_TABS; - /** Preference key for error indication */ - private final static String ERROR_INDICATION = PreferenceConstants.EDITOR_PROBLEM_INDICATION; - /** Preference key for error color */ - private final static String ERROR_INDICATION_COLOR = PreferenceConstants.EDITOR_PROBLEM_INDICATION_COLOR; - /** Preference key for warning indication */ - private final static String WARNING_INDICATION = PreferenceConstants.EDITOR_WARNING_INDICATION; - /** Preference key for warning color */ - private final static String WARNING_INDICATION_COLOR = PreferenceConstants.EDITOR_WARNING_INDICATION_COLOR; - /** Preference key for task indication */ - private final static String TASK_INDICATION = PreferenceConstants.EDITOR_TASK_INDICATION; - /** Preference key for task color */ - private final static String TASK_INDICATION_COLOR = PreferenceConstants.EDITOR_TASK_INDICATION_COLOR; - /** Preference key for bookmark indication */ - private final static String BOOKMARK_INDICATION = PreferenceConstants.EDITOR_BOOKMARK_INDICATION; - /** Preference key for bookmark color */ - private final static String BOOKMARK_INDICATION_COLOR = PreferenceConstants.EDITOR_BOOKMARK_INDICATION_COLOR; - /** Preference key for search result indication */ - private final static String SEARCH_RESULT_INDICATION = PreferenceConstants.EDITOR_SEARCH_RESULT_INDICATION; - /** Preference key for search result color */ - private final static String SEARCH_RESULT_INDICATION_COLOR = PreferenceConstants.EDITOR_SEARCH_RESULT_INDICATION_COLOR; - /** Preference key for unknown annotation indication */ - private final static String UNKNOWN_INDICATION = PreferenceConstants.EDITOR_UNKNOWN_INDICATION; - /** Preference key for unknown annotation color */ - private final static String UNKNOWN_INDICATION_COLOR = PreferenceConstants.EDITOR_UNKNOWN_INDICATION_COLOR; - /** Preference key for linked position color */ - private final static String LINKED_POSITION_COLOR = PreferenceConstants.EDITOR_LINKED_POSITION_COLOR; - /** Preference key for shwoing the overview ruler */ - private final static String OVERVIEW_RULER = PreferenceConstants.EDITOR_OVERVIEW_RULER; - - /** Preference key for error indication in overview ruler */ - private final static String ERROR_INDICATION_IN_OVERVIEW_RULER = PreferenceConstants.EDITOR_ERROR_INDICATION_IN_OVERVIEW_RULER; - /** Preference key for warning indication in overview ruler */ - private final static String WARNING_INDICATION_IN_OVERVIEW_RULER = - PreferenceConstants.EDITOR_WARNING_INDICATION_IN_OVERVIEW_RULER; - /** Preference key for task indication in overview ruler */ - private final static String TASK_INDICATION_IN_OVERVIEW_RULER = PreferenceConstants.EDITOR_TASK_INDICATION_IN_OVERVIEW_RULER; - /** Preference key for bookmark indication in overview ruler */ - private final static String BOOKMARK_INDICATION_IN_OVERVIEW_RULER = - PreferenceConstants.EDITOR_BOOKMARK_INDICATION_IN_OVERVIEW_RULER; - /** Preference key for search result indication in overview ruler */ - private final static String SEARCH_RESULT_INDICATION_IN_OVERVIEW_RULER = - PreferenceConstants.EDITOR_SEARCH_RESULT_INDICATION_IN_OVERVIEW_RULER; - /** Preference key for unknown annotation indication in overview ruler */ - private final static String UNKNOWN_INDICATION_IN_OVERVIEW_RULER = - PreferenceConstants.EDITOR_UNKNOWN_INDICATION_IN_OVERVIEW_RULER; - /** Preference key for automatically closing strings */ - private final static String CLOSE_STRINGS_PHP = PreferenceConstants.EDITOR_CLOSE_STRINGS_PHP; - /** Preference key for automatically wrapping Java strings */ - private final static String WRAP_STRINGS = PreferenceConstants.EDITOR_WRAP_STRINGS; - /** Preference key for automatically closing brackets and parenthesis */ - private final static String CLOSE_BRACKETS_PHP = PreferenceConstants.EDITOR_CLOSE_BRACKETS_PHP; - /** Preference key for automatically closing phpdocs and comments */ - private final static String CLOSE_JAVADOCS = PreferenceConstants.EDITOR_CLOSE_JAVADOCS; - /** Preference key for automatically adding phpdoc tags */ - private final static String ADD_JAVADOC_TAGS = PreferenceConstants.EDITOR_ADD_JAVADOC_TAGS; - /** Preference key for automatically formatting phpdocs */ - private final static String FORMAT_JAVADOCS = PreferenceConstants.EDITOR_FORMAT_JAVADOCS; - /** Preference key for automatically closing strings */ - private final static String CLOSE_STRINGS_HTML = PreferenceConstants.EDITOR_CLOSE_STRINGS_HTML; - /** Preference key for automatically closing brackets and parenthesis */ - private final static String CLOSE_BRACKETS_HTML = PreferenceConstants.EDITOR_CLOSE_BRACKETS_HTML; - - /** Preference key for smart paste */ - private final static String SMART_PASTE = PreferenceConstants.EDITOR_SMART_PASTE; - private final static class AnnotationInfo { - public String fColorPreference; - public String fOverviewRulerPreference; - public String fEditorPreference; - }; - - private final static Map ANNOTATION_MAP; - static { - - AnnotationInfo info; - ANNOTATION_MAP = new HashMap(); - - info = new AnnotationInfo(); - info.fColorPreference = TASK_INDICATION_COLOR; - info.fOverviewRulerPreference = TASK_INDICATION_IN_OVERVIEW_RULER; - info.fEditorPreference = TASK_INDICATION; - ANNOTATION_MAP.put(AnnotationType.TASK, info); - - info = new AnnotationInfo(); - info.fColorPreference = ERROR_INDICATION_COLOR; - info.fOverviewRulerPreference = ERROR_INDICATION_IN_OVERVIEW_RULER; - info.fEditorPreference = ERROR_INDICATION; - ANNOTATION_MAP.put(AnnotationType.ERROR, info); - - info = new AnnotationInfo(); - info.fColorPreference = WARNING_INDICATION_COLOR; - info.fOverviewRulerPreference = WARNING_INDICATION_IN_OVERVIEW_RULER; - info.fEditorPreference = WARNING_INDICATION; - ANNOTATION_MAP.put(AnnotationType.WARNING, info); - - info = new AnnotationInfo(); - info.fColorPreference = BOOKMARK_INDICATION_COLOR; - info.fOverviewRulerPreference = BOOKMARK_INDICATION_IN_OVERVIEW_RULER; - info.fEditorPreference = BOOKMARK_INDICATION; - ANNOTATION_MAP.put(AnnotationType.BOOKMARK, info); - - info = new AnnotationInfo(); - info.fColorPreference = SEARCH_RESULT_INDICATION_COLOR; - info.fOverviewRulerPreference = SEARCH_RESULT_INDICATION_IN_OVERVIEW_RULER; - info.fEditorPreference = SEARCH_RESULT_INDICATION; - ANNOTATION_MAP.put(AnnotationType.SEARCH_RESULT, info); - - info = new AnnotationInfo(); - info.fColorPreference = UNKNOWN_INDICATION_COLOR; - info.fOverviewRulerPreference = UNKNOWN_INDICATION_IN_OVERVIEW_RULER; - info.fEditorPreference = UNKNOWN_INDICATION; - ANNOTATION_MAP.put(AnnotationType.UNKNOWN, info); - }; - - private final static AnnotationType[] ANNOTATION_LAYERS = - new AnnotationType[] { - AnnotationType.UNKNOWN, - AnnotationType.BOOKMARK, - AnnotationType.TASK, - AnnotationType.SEARCH_RESULT, - AnnotationType.WARNING, - AnnotationType.ERROR }; - /** - * Creates a new php unit editor. - */ - public PHPUnitEditor() { - super(); - setDocumentProvider(PHPeclipsePlugin.getDefault().getCompilationUnitDocumentProvider()); - setEditorContextMenuId("#PHPEditorContext"); //$NON-NLS-1$ - setRulerContextMenuId("#PHPRulerContext"); //$NON-NLS-1$ - - } - - public void createPartControl(Composite parent) { - super.createPartControl(parent); - - fPaintManager = new PaintManager(getSourceViewer()); - - LinePainter linePainter; - linePainter = new LinePainter(getSourceViewer()); - - linePainter.setHighlightColor(new Color(Display.getCurrent(), 225, 235, 224)); - - fPaintManager.addPainter(linePainter); - - if (isBracketHighlightingEnabled()) - startBracketHighlighting(); - if (isLineHighlightingEnabled()) - startLineHighlighting(); - if (isPrintMarginVisible()) - showPrintMargin(); - - Iterator e = ANNOTATION_MAP.keySet().iterator(); - while (e.hasNext()) { - AnnotationType type = (AnnotationType) e.next(); - if (isAnnotationIndicationEnabled(type)) - startAnnotationIndication(type); - } - - if (isTabConversionEnabled()) - startTabConversion(); - - if (isOverviewRulerVisible()) - showOverviewRuler(); - - Preferences preferences = PHPeclipsePlugin.getDefault().getPluginPreferences(); - preferences.addPropertyChangeListener(fPropertyChangeListener); - - IPreferenceStore preferenceStore = getPreferenceStore(); - boolean closeBracketsPHP = preferenceStore.getBoolean(CLOSE_BRACKETS_PHP); - boolean closeStringsPHP = preferenceStore.getBoolean(CLOSE_STRINGS_PHP); - boolean closeBracketsHTML = preferenceStore.getBoolean(CLOSE_BRACKETS_HTML); - boolean closeStringsHTML = preferenceStore.getBoolean(CLOSE_STRINGS_HTML); - - fBracketInserter.setCloseBracketsPHPEnabled(closeBracketsPHP); - fBracketInserter.setCloseStringsPHPEnabled(closeStringsPHP); - fBracketInserter.setCloseBracketsHTMLEnabled(closeBracketsHTML); - fBracketInserter.setCloseStringsHTMLEnabled(closeStringsHTML); - - ISourceViewer sourceViewer = getSourceViewer(); - if (sourceViewer instanceof ITextViewerExtension) - ((ITextViewerExtension) sourceViewer).prependVerifyKeyListener(fBracketInserter); - - } - - private static char getPeerCharacter(char character) { - switch (character) { - case '(' : - return ')'; - - case ')' : - return '('; - - case '[' : - return ']'; - - case ']' : - return '['; - - case '"' : - return character; - - default : - throw new IllegalArgumentException(); - } - } - - /* - * @see AbstractTextEditor#doSetInput(IEditorInput) - */ - protected void doSetInput(IEditorInput input) throws CoreException { - super.doSetInput(input); - configureTabConverter(); - } - - private void startBracketHighlighting() { - if (fBracketPainter == null) { - ISourceViewer sourceViewer = getSourceViewer(); - fBracketPainter = new BracketPainter(sourceViewer); - fBracketPainter.setHighlightColor(getColor(MATCHING_BRACKETS_COLOR)); - fPaintManager.addPainter(fBracketPainter); - } - } - - private void stopBracketHighlighting() { - if (fBracketPainter != null) { - fPaintManager.removePainter(fBracketPainter); - fBracketPainter.deactivate(true); - fBracketPainter.dispose(); - fBracketPainter = null; - } - } - - private boolean isBracketHighlightingEnabled() { - IPreferenceStore store = getPreferenceStore(); - return store.getBoolean(MATCHING_BRACKETS); - } - - private void startLineHighlighting() { - if (fLinePainter == null) { - ISourceViewer sourceViewer = getSourceViewer(); - fLinePainter = new LinePainter(sourceViewer); - fLinePainter.setHighlightColor(getColor(CURRENT_LINE_COLOR)); - fPaintManager.addPainter(fLinePainter); - } - } - - private void stopLineHighlighting() { - if (fLinePainter != null) { - fPaintManager.removePainter(fLinePainter); - fLinePainter.deactivate(true); - fLinePainter.dispose(); - fLinePainter = null; - } - } - - private boolean isLineHighlightingEnabled() { - IPreferenceStore store = getPreferenceStore(); - return store.getBoolean(CURRENT_LINE); - } - - private void showPrintMargin() { - if (fPrintMarginPainter == null) { - fPrintMarginPainter = new PrintMarginPainter(getSourceViewer()); - fPrintMarginPainter.setMarginRulerColor(getColor(PRINT_MARGIN_COLOR)); - fPrintMarginPainter.setMarginRulerColumn(getPreferenceStore().getInt(PRINT_MARGIN_COLUMN)); - fPaintManager.addPainter(fPrintMarginPainter); - } - } - - private void hidePrintMargin() { - if (fPrintMarginPainter != null) { - fPaintManager.removePainter(fPrintMarginPainter); - fPrintMarginPainter.deactivate(true); - fPrintMarginPainter.dispose(); - fPrintMarginPainter = null; - } - } - - private boolean isPrintMarginVisible() { - IPreferenceStore store = getPreferenceStore(); - return store.getBoolean(PRINT_MARGIN); - } - - private void startAnnotationIndication(AnnotationType annotationType) { - if (fProblemPainter == null) { - fProblemPainter = new ProblemPainter(this, getSourceViewer()); - fPaintManager.addPainter(fProblemPainter); - } - fProblemPainter.setColor(annotationType, getColor(annotationType)); - fProblemPainter.paintAnnotations(annotationType, true); - fProblemPainter.paint(IPainter.CONFIGURATION); - } - - private void shutdownAnnotationIndication() { - if (fProblemPainter != null) { - - if (!fProblemPainter.isPaintingAnnotations()) { - fPaintManager.removePainter(fProblemPainter); - fProblemPainter.deactivate(true); - fProblemPainter.dispose(); - fProblemPainter = null; - } else { - fProblemPainter.paint(IPainter.CONFIGURATION); - } - } - } - - private void stopAnnotationIndication(AnnotationType annotationType) { - if (fProblemPainter != null) { - fProblemPainter.paintAnnotations(annotationType, false); - shutdownAnnotationIndication(); - } - } - - private boolean isAnnotationIndicationEnabled(AnnotationType annotationType) { - IPreferenceStore store = getPreferenceStore(); - AnnotationInfo info = (AnnotationInfo) ANNOTATION_MAP.get(annotationType); - if (info != null) - return store.getBoolean(info.fEditorPreference); - return false; - } - - private boolean isAnnotationIndicationInOverviewRulerEnabled(AnnotationType annotationType) { - IPreferenceStore store = getPreferenceStore(); - AnnotationInfo info = (AnnotationInfo) ANNOTATION_MAP.get(annotationType); - if (info != null) - return store.getBoolean(info.fOverviewRulerPreference); - return false; - } - - private void showAnnotationIndicationInOverviewRuler(AnnotationType annotationType, boolean show) { - AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer(); - OverviewRuler ruler = asv.getOverviewRuler(); - if (ruler != null) { - ruler.setColor(annotationType, getColor(annotationType)); - ruler.showAnnotation(annotationType, show); - ruler.update(); - } - } - - private void setColorInOverviewRuler(AnnotationType annotationType, Color color) { - AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer(); - OverviewRuler ruler = asv.getOverviewRuler(); - if (ruler != null) { - ruler.setColor(annotationType, color); - ruler.update(); - } - } - - private void configureTabConverter() { - if (fTabConverter != null) { - IDocumentProvider provider = getDocumentProvider(); - if (provider instanceof PHPDocumentProvider) { - PHPDocumentProvider cup = (PHPDocumentProvider) provider; - fTabConverter.setLineTracker(cup.createLineTracker(getEditorInput())); - } - } - } - - private int getTabSize() { - Preferences preferences = PHPeclipsePlugin.getDefault().getPluginPreferences(); - return preferences.getInt(CODE_FORMATTER_TAB_SIZE); - } - - private void startTabConversion() { - if (fTabConverter == null) { - fTabConverter = new TabConverter(); - configureTabConverter(); - fTabConverter.setNumberOfSpacesPerTab(getTabSize()); - AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer(); - asv.addTextConverter(fTabConverter); - // http://dev.eclipse.org/bugs/show_bug.cgi?id=19270 - asv.updateIndentationPrefixes(); - } - } - - private void stopTabConversion() { - if (fTabConverter != null) { - AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer(); - asv.removeTextConverter(fTabConverter); - // http://dev.eclipse.org/bugs/show_bug.cgi?id=19270 - asv.updateIndentationPrefixes(); - fTabConverter = null; - } - } - - private boolean isTabConversionEnabled() { - IPreferenceStore store = getPreferenceStore(); - return store.getBoolean(SPACES_FOR_TABS); - } - - private void showOverviewRuler() { - AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer(); - asv.showOverviewRuler(); - - OverviewRuler overviewRuler = asv.getOverviewRuler(); - if (overviewRuler != null) { - for (int i = 0; i < ANNOTATION_LAYERS.length; i++) { - AnnotationType type = ANNOTATION_LAYERS[i]; - overviewRuler.setLayer(type, i); - if (isAnnotationIndicationInOverviewRulerEnabled(type)) - showAnnotationIndicationInOverviewRuler(type, true); - } - } - } - - private void hideOverviewRuler() { - AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer(); - asv.hideOverviewRuler(); - } - - private boolean isOverviewRulerVisible() { - IPreferenceStore store = getPreferenceStore(); - return store.getBoolean(OVERVIEW_RULER); - } - - private Color getColor(String key) { - RGB rgb = PreferenceConverter.getColor(getPreferenceStore(), key); - return getColor(rgb); - } - - private Color getColor(RGB rgb) { - JavaTextTools textTools = PHPeclipsePlugin.getDefault().getJavaTextTools(); - return textTools.getColorManager().getColor(rgb); - } - - private Color getColor(AnnotationType annotationType) { - AnnotationInfo info = (AnnotationInfo) ANNOTATION_MAP.get(annotationType); - if (info != null) - return getColor(info.fColorPreference); - return null; - } - - public void dispose() { - ISourceViewer sourceViewer = getSourceViewer(); - if (sourceViewer instanceof ITextViewerExtension) - ((ITextViewerExtension) sourceViewer).removeVerifyKeyListener(fBracketInserter); - - if (fPropertyChangeListener != null) { - Preferences preferences = PHPeclipsePlugin.getDefault().getPluginPreferences(); - preferences.removePropertyChangeListener(fPropertyChangeListener); - fPropertyChangeListener = null; - } - - // if (fJavaEditorErrorTickUpdater != null) { - // fJavaEditorErrorTickUpdater.dispose(); - // fJavaEditorErrorTickUpdater= null; - // } - // - // if (fSelectionHistory != null) - // fSelectionHistory.dispose(); - - if (fPaintManager != null) { - fPaintManager.dispose(); - fPaintManager = null; - } - - if (fActionGroups != null) - fActionGroups.dispose(); - - super.dispose(); - } - - protected AnnotationType getAnnotationType(String preferenceKey) { - Iterator e = ANNOTATION_MAP.keySet().iterator(); - while (e.hasNext()) { - AnnotationType type = (AnnotationType) e.next(); - AnnotationInfo info = (AnnotationInfo) ANNOTATION_MAP.get(type); - if (info != null) { - if (preferenceKey.equals(info.fColorPreference) - || preferenceKey.equals(info.fEditorPreference) - || preferenceKey.equals(info.fOverviewRulerPreference)) - return type; - } - } - return null; - } - - /* - * @see AbstractTextEditor#handlePreferenceStoreChanged(PropertyChangeEvent) - */ - protected void handlePreferenceStoreChanged(PropertyChangeEvent event) { - - try { - - AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer(); - if (asv != null) { - - String p = event.getProperty(); - - if (CLOSE_BRACKETS_PHP.equals(p)) { - fBracketInserter.setCloseBracketsPHPEnabled(getPreferenceStore().getBoolean(p)); - return; - } - - if (CLOSE_STRINGS_PHP.equals(p)) { - fBracketInserter.setCloseStringsPHPEnabled(getPreferenceStore().getBoolean(p)); - return; - } - - if (CLOSE_BRACKETS_HTML.equals(p)) { - fBracketInserter.setCloseBracketsHTMLEnabled(getPreferenceStore().getBoolean(p)); - return; - } - - if (CLOSE_STRINGS_HTML.equals(p)) { - fBracketInserter.setCloseStringsHTMLEnabled(getPreferenceStore().getBoolean(p)); - return; - } - - if (SPACES_FOR_TABS.equals(p)) { - if (isTabConversionEnabled()) - startTabConversion(); - else - stopTabConversion(); - return; - } - - if (MATCHING_BRACKETS.equals(p)) { - if (isBracketHighlightingEnabled()) - startBracketHighlighting(); - else - stopBracketHighlighting(); - return; - } - - if (MATCHING_BRACKETS_COLOR.equals(p)) { - if (fBracketPainter != null) - fBracketPainter.setHighlightColor(getColor(MATCHING_BRACKETS_COLOR)); - return; - } - - if (CURRENT_LINE.equals(p)) { - if (isLineHighlightingEnabled()) - startLineHighlighting(); - else - stopLineHighlighting(); - return; - } - - if (CURRENT_LINE_COLOR.equals(p)) { - if (fLinePainter != null) { - stopLineHighlighting(); - startLineHighlighting(); - } - return; - } - - if (PRINT_MARGIN.equals(p)) { - if (isPrintMarginVisible()) - showPrintMargin(); - else - hidePrintMargin(); - return; - } - - if (PRINT_MARGIN_COLOR.equals(p)) { - if (fPrintMarginPainter != null) - fPrintMarginPainter.setMarginRulerColor(getColor(PRINT_MARGIN_COLOR)); - return; - } - - if (PRINT_MARGIN_COLUMN.equals(p)) { - if (fPrintMarginPainter != null) - fPrintMarginPainter.setMarginRulerColumn(getPreferenceStore().getInt(PRINT_MARGIN_COLUMN)); - return; - } - - if (OVERVIEW_RULER.equals(p)) { - if (isOverviewRulerVisible()) - showOverviewRuler(); - else - hideOverviewRuler(); - return; - } - - AnnotationType type = getAnnotationType(p); - if (type != null) { - - AnnotationInfo info = (AnnotationInfo) ANNOTATION_MAP.get(type); - if (info.fColorPreference.equals(p)) { - Color color = getColor(type); - if (fProblemPainter != null) { - fProblemPainter.setColor(type, color); - fProblemPainter.paint(IPainter.CONFIGURATION); - } - setColorInOverviewRuler(type, color); - return; - } - - if (info.fEditorPreference.equals(p)) { - if (isAnnotationIndicationEnabled(type)) - startAnnotationIndication(type); - else - stopAnnotationIndication(type); - return; - } - - if (info.fOverviewRulerPreference.equals(p)) { - if (isAnnotationIndicationInOverviewRulerEnabled(type)) - showAnnotationIndicationInOverviewRuler(type, true); - else - showAnnotationIndicationInOverviewRuler(type, false); - return; - } - } - - IContentAssistant c = asv.getContentAssistant(); - if (c instanceof ContentAssistant) - ContentAssistPreference.changeConfiguration((ContentAssistant) c, getPreferenceStore(), event); - } - - } finally { - super.handlePreferenceStoreChanged(event); - } - } - - /** - * Handles a property change event describing a change - * of the php core's preferences and updates the preference - * related editor properties. - * - * @param event the property change event - */ - protected void handlePreferencePropertyChanged(org.eclipse.core.runtime.Preferences.PropertyChangeEvent event) { - AdaptedSourceViewer asv = (AdaptedSourceViewer) getSourceViewer(); - if (asv != null) { - String p = event.getProperty(); - if (CODE_FORMATTER_TAB_SIZE.equals(p)) { - asv.updateIndentationPrefixes(); - if (fTabConverter != null) - fTabConverter.setNumberOfSpacesPerTab(getTabSize()); - } - } - } - - /* - * @see PHPEditor#createJavaSourceViewer(Composite, IVerticalRuler, int) - */ - protected ISourceViewer createJavaSourceViewer(Composite parent, IVerticalRuler ruler, int styles) { - return new AdaptedSourceViewer(parent, ruler, styles); - } - - private boolean isValidSelection(int offset, int length) { - IDocumentProvider provider = getDocumentProvider(); - if (provider != null) { - IDocument document = provider.getDocument(getEditorInput()); - if (document != null) { - int end = offset + length; - int documentLength = document.getLength(); - return 0 <= offset && offset <= documentLength && 0 <= end && end <= documentLength; - } - } - return false; - } - - /* - * @see AbstractTextEditor#canHandleMove(IEditorInput, IEditorInput) - */ - protected boolean canHandleMove(IEditorInput originalElement, IEditorInput movedElement) { - - String oldExtension = ""; //$NON-NLS-1$ - if (originalElement instanceof IFileEditorInput) { - IFile file = ((IFileEditorInput) originalElement).getFile(); - if (file != null) { - String ext = file.getFileExtension(); - if (ext != null) - oldExtension = ext; - } - } - - String newExtension = ""; //$NON-NLS-1$ - if (movedElement instanceof IFileEditorInput) { - IFile file = ((IFileEditorInput) movedElement).getFile(); - if (file != null) - newExtension = file.getFileExtension(); - } - - return oldExtension.equals(newExtension); - } - - /* - * @see AbstractTextEditor#editorContextMenuAboutToShow(IMenuManager) - */ - public void editorContextMenuAboutToShow(IMenuManager menu) { - super.editorContextMenuAboutToShow(menu); - - ActionContext context= new ActionContext(getSelectionProvider().getSelection()); - fContextMenuGroup.setContext(context); - fContextMenuGroup.fillContextMenu(menu); - fContextMenuGroup.setContext(null); - } -}