X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/JavaSourcePreviewerUpdater.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/JavaSourcePreviewerUpdater.java new file mode 100644 index 0000000..ef785ae --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/preferences/JavaSourcePreviewerUpdater.java @@ -0,0 +1,91 @@ +/******************************************************************************* + * Copyright (c) 2000, 2004 IBM Corporation 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 API and implementation + *******************************************************************************/ + +package net.sourceforge.phpdt.internal.ui.preferences; + +import net.sourceforge.phpdt.ui.PreferenceConstants; +import net.sourceforge.phpdt.ui.text.PHPSourceViewerConfiguration; + +import org.eclipse.jface.preference.IPreferenceStore; +import org.eclipse.jface.resource.JFaceResources; +import org.eclipse.jface.text.source.SourceViewer; +//incastrix +//import org.eclipse.jface.text.Assert; +import org.eclipse.core.runtime.Assert; +import org.eclipse.jface.util.IPropertyChangeListener; +import org.eclipse.jface.util.PropertyChangeEvent; +import org.eclipse.swt.events.DisposeEvent; +import org.eclipse.swt.events.DisposeListener; +import org.eclipse.swt.graphics.Font; + +/** + * Handles Java editor font changes for Java source preview viewers. + * + * @since 3.0 + */ +class JavaSourcePreviewerUpdater { + + /** + * Creates a Java source preview updater for the given viewer, configuration + * and preference store. + * + * @param viewer + * the viewer + * @param configuration + * the configuration + * @param preferenceStore + * the preference store + */ + JavaSourcePreviewerUpdater(final SourceViewer viewer, + final PHPSourceViewerConfiguration configuration, + final IPreferenceStore preferenceStore) { + Assert.isNotNull(viewer); + Assert.isNotNull(configuration); + Assert.isNotNull(preferenceStore); + final IPropertyChangeListener fontChangeListener = new IPropertyChangeListener() { + /* + * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) + */ + public void propertyChange(PropertyChangeEvent event) { + if (event.getProperty().equals( + PreferenceConstants.EDITOR_TEXT_FONT)) { + Font font = JFaceResources + .getFont(PreferenceConstants.EDITOR_TEXT_FONT); + viewer.getTextWidget().setFont(font); + } + } + }; + final IPropertyChangeListener propertyChangeListener = new IPropertyChangeListener() { + /* + * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent) + */ + public void propertyChange(PropertyChangeEvent event) { + if (configuration.affectsTextPresentation(event)) { + configuration.handlePropertyChangeEvent(event); + viewer.invalidateTextPresentation(); + } + } + }; + viewer.getTextWidget().addDisposeListener(new DisposeListener() { + /* + * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent) + */ + public void widgetDisposed(DisposeEvent e) { + preferenceStore + .removePropertyChangeListener(propertyChangeListener); + JFaceResources.getFontRegistry().removeListener( + fontChangeListener); + } + }); + JFaceResources.getFontRegistry().addListener(fontChangeListener); + preferenceStore.addPropertyChangeListener(propertyChangeListener); + } +}