/* * JBoss, Home of Professional Open Source. * * See the LEGAL.txt file distributed with this work for information regarding copyright ownership and licensing. * * See the AUTHORS.txt file distributed with this work for a full listing of individual contributors. */ package org.teiid.designer.diagram.ui.actions; import org.eclipse.core.runtime.ListenerList; import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.PreferenceConverter; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.teiid.designer.diagram.ui.DiagramUiPlugin; import org.teiid.designer.diagram.ui.PluginConstants; import org.teiid.designer.diagram.ui.editor.DiagramViewer; import org.teiid.designer.diagram.ui.part.DiagramEditPart; import org.teiid.designer.ui.common.util.UiUtil; /** * DiagramFontManager * * @since 8.0 */ public class DiagramFontManager implements ScaledFont { private DiagramViewer viewer; private ListenerList listeners = new ListenerList(ListenerList.IDENTITY); /** * Construct an instance of DiagramFontManager. * */ public DiagramFontManager(DiagramViewer viewer) { super(); setFontFromPreferences(); this.viewer = viewer; } public void setFontFromPreferences() { IPreferenceStore preferenceStore = DiagramUiPlugin.getDefault().getPreferenceStore(); FontData fontData = PreferenceConverter.getFontData(preferenceStore, PluginConstants.Prefs.Appearance.FONT); String currentName = fontData.getName(); int currentSize = fontData.getHeight(); int currentStyle = fontData.getStyle(); ScaledFontManager.setFont(currentName, currentSize, currentStyle); } /* (non-Javadoc) * @See org.teiid.designer.diagram.ui.actions.ScaledFont#increase() */ @Override public void increase() { ScaledFontManager.increase(); // System.out.println(" ===>>> [DiagramFontManager.increase()] WOOOOOO WOOOOO!!!! "); //$NON-NLS-1$ DiagramEditPart diagram = (DiagramEditPart)viewer.getContents(); diagram.refreshFont(true); // viewer.setContents(diagram.getModel()); diagram = (DiagramEditPart)viewer.getContents(); diagram.layout(); fireFontChanged(); } /* (non-Javadoc) * @See org.teiid.designer.diagram.ui.actions.ScaledFont#decrease() */ @Override public void decrease() { ScaledFontManager.decrease(); // System.out.println(" ===>>> [DiagramFontManager.decrease()] WOOOOOO WOOOOO!!!! "); //$NON-NLS-1$ DiagramEditPart diagram = (DiagramEditPart)viewer.getContents(); diagram.refreshFont(true); // viewer.setContents(diagram.getModel()); diagram = (DiagramEditPart)viewer.getContents(); diagram.layout(); fireFontChanged(); } /* (non-Javadoc) * @See org.teiid.designer.diagram.ui.actions.ScaledFont#canIncrease() */ @Override public boolean canIncrease() { return ScaledFontManager.canIncrease(); } /* (non-Javadoc) * @See org.teiid.designer.diagram.ui.actions.ScaledFont#canDecrease() */ @Override public boolean canDecrease() { return ScaledFontManager.canDecrease(); } /* (non-Javadoc) * @See org.teiid.designer.diagram.ui.actions.ScaledFont#getFont() */ @Override public Font getFont() { return ScaledFontManager.getFont(); } /* (non-Javadoc) * @See org.teiid.designer.diagram.ui.actions.ScaledFont#getName() */ @Override public String getName() { return ScaledFontManager.getName(); } /* (non-Javadoc) * @See org.teiid.designer.diagram.ui.actions.ScaledFont#getSize() */ @Override public int getSize() { return ScaledFontManager.getSize(); } /* (non-Javadoc) * @See org.teiid.designer.diagram.ui.actions.ScaledFont#getStyle() */ @Override public int getStyle() { return ScaledFontManager.getStyle(); } /* (non-Javadoc) * @See org.teiid.designer.diagram.ui.actions.ScaledFont#setFont(org.eclipse.swt.graphics.Font) */ @Override public void setFont(Font newFont) { ScaledFontManager.setFont(newFont); } @Override public void setFont(String typeName, int size, int style) { ScaledFontManager.setFont(typeName, size, style); } /* (non-Javadoc) * @See org.teiid.designer.diagram.ui.actions.ScaledFont#setSize(int) */ @Override public void setSize(int newSize) { ScaledFontManager.setSize(newSize); fireFontChanged(); } /** * Adds the given IFontChangeListener to this ZoomManager's list of listeners. * @param listener the IFontChangeListener to be added */ @Override public void addFontChangeListener(IFontChangeListener listener) { listeners.add(listener); } /** * Removes the given IFontChangeListener from this ZoomManager's list of listeners. * @param listener the IFontChangeListener to be removed */ @Override public void removeFontChangeListener(IFontChangeListener listener) { listeners.remove(listener); } /** * Notifies listeners that the zoom level has changed. */ @Override public void fireFontChanged() { final Object[] handlers = this.listeners.getListeners(); UiUtil.runInSwtThread(new Runnable() { @Override public void run() { for (Object handler : handlers) { ((IFontChangeListener)handler).fontChanged(); } } }, false); } /* (non-Javadoc) * @See org.teiid.designer.diagram.ui.actions.ScaledFont#getFont(int) */ @Override public Font getFont(int style) { return ScaledFontManager.getFont(style); } }