01: /*******************************************************************************
02: * Copyright (c) 2000, 2006 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.jdt.internal.ui.preferences;
11:
12: import org.eclipse.core.runtime.Assert;
13:
14: import org.eclipse.swt.events.DisposeEvent;
15: import org.eclipse.swt.events.DisposeListener;
16: import org.eclipse.swt.graphics.Font;
17:
18: import org.eclipse.jface.preference.IPreferenceStore;
19: import org.eclipse.jface.resource.JFaceResources;
20: import org.eclipse.jface.util.IPropertyChangeListener;
21: import org.eclipse.jface.util.PropertyChangeEvent;
22:
23: import org.eclipse.jface.text.source.SourceViewer;
24:
25: import org.eclipse.jdt.ui.PreferenceConstants;
26: import org.eclipse.jdt.ui.text.JavaSourceViewerConfiguration;
27:
28: /**
29: * Handles Java editor font changes for Java source preview viewers.
30: *
31: * @since 3.0
32: */
33: class JavaSourcePreviewerUpdater {
34:
35: /**
36: * Creates a Java source preview updater for the given viewer, configuration and preference store.
37: *
38: * @param viewer the viewer
39: * @param configuration the configuration
40: * @param preferenceStore the preference store
41: */
42: JavaSourcePreviewerUpdater(final SourceViewer viewer,
43: final JavaSourceViewerConfiguration configuration,
44: final IPreferenceStore preferenceStore) {
45: Assert.isNotNull(viewer);
46: Assert.isNotNull(configuration);
47: Assert.isNotNull(preferenceStore);
48: final IPropertyChangeListener fontChangeListener = new IPropertyChangeListener() {
49: /*
50: * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
51: */
52: public void propertyChange(PropertyChangeEvent event) {
53: if (event.getProperty().equals(
54: PreferenceConstants.EDITOR_TEXT_FONT)) {
55: Font font = JFaceResources
56: .getFont(PreferenceConstants.EDITOR_TEXT_FONT);
57: viewer.getTextWidget().setFont(font);
58: }
59: }
60: };
61: final IPropertyChangeListener propertyChangeListener = new IPropertyChangeListener() {
62: /*
63: * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
64: */
65: public void propertyChange(PropertyChangeEvent event) {
66: if (configuration.affectsTextPresentation(event)) {
67: configuration.handlePropertyChangeEvent(event);
68: viewer.invalidateTextPresentation();
69: }
70: }
71: };
72: viewer.getTextWidget().addDisposeListener(
73: new DisposeListener() {
74: /*
75: * @see org.eclipse.swt.events.DisposeListener#widgetDisposed(org.eclipse.swt.events.DisposeEvent)
76: */
77: public void widgetDisposed(DisposeEvent e) {
78: preferenceStore
79: .removePropertyChangeListener(propertyChangeListener);
80: JFaceResources.getFontRegistry()
81: .removeListener(fontChangeListener);
82: }
83: });
84: JFaceResources.getFontRegistry()
85: .addListener(fontChangeListener);
86: preferenceStore
87: .addPropertyChangeListener(propertyChangeListener);
88: }
89: }
|