/*
* 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.ui.common.text;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.jface.text.TextViewer;
/**
* TextFontManager
*
* @since 8.0
*/
public class TextFontManager implements ScaledFont {
private TextViewer viewer;
private ScaledFontManager sfmManager;
private List listeners = new ArrayList();
/**
* Construct an instance of TextFontManager.
*
*/
public TextFontManager( TextViewer viewer, ScaledFontManager sfmManager ) {
super();
this.viewer = viewer;
this.sfmManager = sfmManager;
}
/* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.actions.ScaledFont#increase()
*/
@Override
public void increase() {
if ( sfmManager.canIncrease() ) {
sfmManager.increase();
updateTextWidget();
}
}
/* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.actions.ScaledFont#decrease()
*/
@Override
public void decrease() {
if ( sfmManager.canDecrease() ) {
sfmManager.decrease();
updateTextWidget();
}
}
public void updateTextWidget() {
if ( sfmManager != null && viewer.getTextWidget() != null ) {
viewer.getTextWidget()
.setFont( sfmManager.createFontOfSize( sfmManager.getSize() ) );
viewer.getTextWidget().update();
fireFontChanged();
}
}
/* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.actions.ScaledFont#canIncrease()
*/
@Override
public boolean canIncrease() {
return sfmManager.canIncrease();
}
/* (non-Javadoc)
* @See org.teiid.designer.diagram.ui.actions.ScaledFont#canDecrease()
*/
@Override
public boolean canDecrease() {
return sfmManager.canDecrease();
}
/**
* 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() {
// System.out.println("[TextFontManager.fireFontChanged]"); //$NON-NLS-1$
Iterator iter = listeners.iterator();
while (iter.hasNext())
((IFontChangeListener)iter.next()).fontChanged();
}
public void setViewer( TextViewer viewer ) {
this.viewer = viewer;
}
}