refactory: added UI removed from core plugin.
[phpeclipse.git] / net.sourceforge.phpeclipse.ui / src / net / sourceforge / phpdt / internal / ui / preferences / JavaSourcePreviewerUpdater.java
diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/preferences/JavaSourcePreviewerUpdater.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/internal/ui/preferences/JavaSourcePreviewerUpdater.java
new file mode 100644 (file)
index 0000000..5fedc3a
--- /dev/null
@@ -0,0 +1,89 @@
+/*******************************************************************************
+ * 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;
+import org.eclipse.jface.util.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);
+       }
+}