org.eclipse.tcf.internal.debug.ui.model.TCFModelFonts.java Source code

Java tutorial

Introduction

Here is the source code for org.eclipse.tcf.internal.debug.ui.model.TCFModelFonts.java

Source

/*******************************************************************************
 * Copyright (c) 2012 Wind River Systems, Inc. and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     Wind River Systems - initial API and implementation
 *******************************************************************************/
package org.eclipse.tcf.internal.debug.ui.model;

import java.util.HashMap;

import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.tcf.protocol.Protocol;

public class TCFModelFonts {

    private static IPropertyChangeListener listener;
    private static final HashMap<String, FontData> fd_normal = new HashMap<String, FontData>();
    private static final HashMap<String, FontData> fd_italic = new HashMap<String, FontData>();
    private static final HashMap<String, FontData> fd_monospaced = new HashMap<String, FontData>();

    public static FontData getNormalFontData(String view_id) {
        FontData fd = fd_normal.get(view_id);
        if (fd == null) {
            if (listener == null) {
                listener = new IPropertyChangeListener() {
                    public void propertyChange(PropertyChangeEvent event) {
                        Protocol.invokeLater(new Runnable() {
                            public void run() {
                                fd_normal.clear();
                                fd_italic.clear();
                                fd_monospaced.clear();
                            }
                        });
                    }
                };
                JFaceResources.getFontRegistry().addListener(listener);
            }
            if (IDebugUIConstants.ID_DEBUG_VIEW.equals(view_id)) {
                fd = JFaceResources.getFontDescriptor(JFaceResources.DEFAULT_FONT).getFontData()[0];
            } else if (TCFDetailPane.ID.equals(view_id)) {
                FontData ff = JFaceResources.getFontDescriptor(JFaceResources.DEFAULT_FONT).getFontData()[0];
                FontData fp = JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_DETAIL_PANE_FONT)
                        .getFontData()[0];
                fd = new FontData(fp.getName(), ff.getHeight(), SWT.NORMAL);
            } else {
                fd = JFaceResources.getFontDescriptor(IDebugUIConstants.PREF_VARIABLE_TEXT_FONT).getFontData()[0];
            }
            fd_normal.put(view_id, fd);
        }
        return fd;
    }

    public static FontData getItalicFontData(String view_id) {
        FontData fd = fd_italic.get(view_id);
        if (fd == null) {
            FontData fn = getNormalFontData(view_id);
            fd = new FontData(fn.getName(), fn.getHeight(), SWT.ITALIC);
            fd_italic.put(view_id, fd);
        }
        return fd;
    }

    public static FontData getMonospacedFontData(String view_id) {
        FontData fd = fd_monospaced.get(view_id);
        if (fd == null) {
            FontData fn = getNormalFontData(view_id);
            FontData fm = JFaceResources.getFontDescriptor(JFaceResources.TEXT_FONT).getFontData()[0];
            fd = new FontData(fm.getName(), fn.getHeight(), fn.getStyle());
            fd_monospaced.put(view_id, fd);
        }
        return fd;
    }
}