package com.liferay.ide.velocity.vaulttec.ui.editor.actions; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.text.IRegion; import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.ui.texteditor.TextEditorAction; import com.liferay.ide.velocity.vaulttec.ui.IPreferencesConstants; import com.liferay.ide.velocity.vaulttec.ui.VelocityPlugin; import com.liferay.ide.velocity.vaulttec.ui.VelocityPluginImages; /** * A toolbar action which toggles the presentation model of the connected text * editor. The editor shows either the highlight range only or always the whole * document. * <p> * Adopted from <code>org.eclipse.jdt.internal.ui.javaeditor.*</code> */ public class TogglePresentationAction extends TextEditorAction { /** * Constructs and updates the action. */ public TogglePresentationAction() { super(VelocityPlugin.getDefault().getResourceBundle(), "VelocityEditor.TogglePresentation.", null); VelocityPluginImages.setToolImageDescriptors(this, "segment_edit.gif"); setToolTipText(VelocityPlugin.getMessage("VelocityEditor.TogglePresentation.tooltip")); update(); } /** * @see org.eclipse.jface.action.IAction#run() */ public void run() { ITextEditor editor = getTextEditor(); if (editor != null) { IRegion remembered = editor.getHighlightRange(); editor.resetHighlightRange(); boolean showAll = !editor.showsHighlightRangeOnly(); setChecked(showAll); editor.showHighlightRangeOnly(showAll); if (remembered != null) { editor.setHighlightRange(remembered.getOffset(), remembered.getLength(), true); } IPreferenceStore store = VelocityPlugin.getDefault().getPreferenceStore(); store.setValue(IPreferencesConstants.EDITOR_SHOW_SEGMENTS, showAll); } } /** * @see org.eclipse.ui.texteditor.IUpdate#update() */ public void update() { ITextEditor editor = getTextEditor(); boolean checked = ((editor != null) && editor.showsHighlightRangeOnly()); setChecked(checked); setEnabled(editor != null); } /** * @see org.eclipse.ui.texteditor.TextEditorAction#setEditor(org.eclipse.ui.texteditor.ITextEditor) */ public void setEditor(ITextEditor anEditor) { super.setEditor(anEditor); if (anEditor != null) { IPreferenceStore store = VelocityPlugin.getDefault().getPreferenceStore(); boolean showSegments = store.getBoolean(IPreferencesConstants.EDITOR_SHOW_SEGMENTS); if (anEditor.showsHighlightRangeOnly() != showSegments) { IRegion remembered = anEditor.getHighlightRange(); anEditor.resetHighlightRange(); anEditor.showHighlightRangeOnly(showSegments); if (remembered != null) { anEditor.setHighlightRange(remembered.getOffset(), remembered.getLength(), true); } } update(); } } }