org.jboss.tools.common.model.ui.widgets.DefaultSettings.java Source code

Java tutorial

Introduction

Here is the source code for org.jboss.tools.common.model.ui.widgets.DefaultSettings.java

Source

/*******************************************************************************
 * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc.
 * Distributed under license by Red Hat, Inc. All rights reserved.
 * This program is 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:
 *     Exadel, Inc. and Red Hat, Inc. - initial API and implementation
 ******************************************************************************/
package org.jboss.tools.common.model.ui.widgets;

import java.util.HashMap;

import org.eclipse.jface.resource.JFaceColors;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CCombo;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Cursor;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.ui.forms.widgets.FormToolkit;

import org.jboss.tools.common.model.ui.Insets;
import org.jboss.tools.common.model.ui.widgets.border.Border;
import org.jboss.tools.common.model.ui.widgets.border.FormControlBorder;

public class DefaultSettings implements IWidgetSettings {
    // settings
    private HashMap<String, Object> settings = new HashMap<String, Object>();

    // static access   
    private static IWidgetSettings defaultSettings;

    // colors
    protected Color redBackground;
    protected Color whiteBackground;
    protected Color defaultBackground;
    protected Color defaultForeground;
    protected Color hyperlinkColor;
    protected Color activeHyperlinkColor;

    // fonts
    protected Font defaultFont;
    protected Font headerFont;
    protected Font titleFont;

    // cursors
    protected Cursor defaultCursor;
    protected Cursor handCursor;

    // borders
    protected Border defaultBorder;

    public static IWidgetSettings getDefault() {
        if (defaultSettings == null)
            defaultSettings = new DefaultSettings();
        return defaultSettings;
    }

    protected void initColors() {
        defaultBackground = Display.getCurrent().getSystemColor(SWT.COLOR_WIDGET_BACKGROUND);
        defaultForeground = Display.getCurrent().getSystemColor(SWT.COLOR_WIDGET_FOREGROUND);
        whiteBackground = Display.getCurrent().getSystemColor(SWT.COLOR_WHITE);
        redBackground = Display.getCurrent().getSystemColor(SWT.COLOR_RED);
        hyperlinkColor = JFaceColors.getHyperlinkText(Display.getCurrent());
        activeHyperlinkColor = JFaceColors.getActiveHyperlinkText(Display.getCurrent());
    }

    protected void initFonts() {
        defaultFont = JFaceResources.getDefaultFont();
        headerFont = JFaceResources.getBannerFont();
        titleFont = JFaceResources.getHeaderFont();
    }

    protected void initCursors() {
        Display display = Display.getCurrent() != null ? Display.getCurrent() : Display.getDefault();
        defaultCursor = display.getSystemCursor(SWT.CURSOR_ARROW);
        handCursor = display.getSystemCursor(SWT.CURSOR_HAND);
    }

    protected void initBorders() {
        defaultBorder = new FormControlBorder(new Insets(0, 0, 0, 0));
    }

    protected void initSettings() {
        // Unknow control
        put("Control.Style", SWT.NONE); //$NON-NLS-1$
        put("Control.Background", defaultBackground); //$NON-NLS-1$
        put("Control.Foreground", defaultForeground); //$NON-NLS-1$
        put("Control.Font", defaultFont); //$NON-NLS-1$

        // Composite
        put("Composite.Style", SWT.NONE); //$NON-NLS-1$
        put("Composite.Background", defaultBackground); //$NON-NLS-1$
        put("Composite.Foreground", defaultForeground); //$NON-NLS-1$
        put("Composite.Font", defaultFont); //$NON-NLS-1$

        // Label
        put("Label.Style", SWT.NONE); //$NON-NLS-1$
        // Please, do not put whiteBackground here, it spoils all wizards
        put("Label.Background", defaultBackground); //$NON-NLS-1$
        put("Label.Foreground", defaultForeground); //$NON-NLS-1$
        put("Label.Font", defaultFont); //$NON-NLS-1$
        put("Label.Font.Title", titleFont); //$NON-NLS-1$
        put("Label.Font.Header", headerFont); //$NON-NLS-1$

        // Hyperlink
        put("Hyperlink.Style", SWT.NONE); //$NON-NLS-1$
        put("Hyperlink.Background", defaultBackground); //$NON-NLS-1$
        put("Hyperlink.Foreground", hyperlinkColor); //$NON-NLS-1$
        put("Hyperlink.ActiveColor", activeHyperlinkColor); //$NON-NLS-1$
        put("Hyperlink.Font", defaultFont); //$NON-NLS-1$
        put("Hyperlink.ActiveCursor", handCursor); //$NON-NLS-1$
        put("Hyperlink.Disabled", defaultForeground); //$NON-NLS-1$

        // Text
        put("Text.Style", SWT.BORDER); //$NON-NLS-1$
        put("Text.Background", whiteBackground); //$NON-NLS-1$
        put("Text.Foreground", defaultForeground); //$NON-NLS-1$
        put("Text.Font", defaultFont); //$NON-NLS-1$

        // Note
        put("Note.Style", SWT.BORDER | SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); //$NON-NLS-1$
        put("Note.Background", whiteBackground); //$NON-NLS-1$
        put("Note.Foreground", defaultForeground); //$NON-NLS-1$
        put("Note.Font", defaultFont); //$NON-NLS-1$
        put("Note.ValidateStrategy", 0); //$NON-NLS-1$

        // Combo
        put("Combo.Style", SWT.BORDER); //$NON-NLS-1$
        put("Combo.Background", whiteBackground); //$NON-NLS-1$
        put("Combo.Background.Disabled", defaultBackground); //$NON-NLS-1$
        put("Combo.Foreground", defaultForeground); //$NON-NLS-1$
        put("Combo.Font", defaultFont); //$NON-NLS-1$

        // Button
        put("Button.Style", SWT.PUSH); //$NON-NLS-1$
        put("Button.Background", defaultBackground); //$NON-NLS-1$
        put("Button.Foreground", defaultForeground); //$NON-NLS-1$
        put("Button.Font", defaultFont); //$NON-NLS-1$

        // CheckBox
        put("CheckBox.Style", SWT.CHECK); //$NON-NLS-1$
        put("CheckBox.Background", defaultBackground); //$NON-NLS-1$
        put("CheckBox.Foreground", defaultForeground); //$NON-NLS-1$
        put("CheckBox.Font", defaultFont); //$NON-NLS-1$

        // List
        put("List.Style", SWT.BORDER); //$NON-NLS-1$
        put("List.Background", whiteBackground); //$NON-NLS-1$
        put("List.Foreground", defaultForeground); //$NON-NLS-1$
        put("List.Font", defaultFont); //$NON-NLS-1$

        // Tree
        put("Tree.Style", SWT.BORDER); //$NON-NLS-1$
        put("Tree.Background", whiteBackground); //$NON-NLS-1$
        put("Tree.Foreground", defaultForeground); //$NON-NLS-1$
        put("Tree.Font", defaultFont); //$NON-NLS-1$

        // Table
        put("Table.Style", SWT.BORDER); //$NON-NLS-1$
        put("Table.Background", whiteBackground); //$NON-NLS-1$
        put("Table.Foreground", defaultForeground); //$NON-NLS-1$
        put("Table.Font", defaultFont); //$NON-NLS-1$
    }

    protected DefaultSettings() {
        initColors();
        initFonts();
        initCursors();
        initBorders();
        initSettings();
    }

    public Object getObject(String key) {
        return settings.get(key);
    }

    public int getInt(String key) {
        Integer integer = (Integer) settings.get(key);
        if (integer != null)
            return integer.intValue();
        return SWT.DEFAULT;
    }

    public int getStyle(String key) {
        Integer integer = (Integer) settings.get(key);
        if (integer != null)
            return integer.intValue();
        return SWT.NONE;
    }

    public Color getColor(String key) {
        Color color = (Color) settings.get(key);
        if (color == null)
            color = redBackground;
        return color;
    }

    public Font getFont(String key) {
        Font font = (Font) settings.get(key);
        if (font == null)
            font = defaultFont;
        return font;
    }

    public Border getBorder(String key) {
        Border border = (Border) settings.get(key);
        if (border == null)
            border = defaultBorder;
        return border;
    }

    public Cursor getCursor(String key) {
        Cursor cursor = (Cursor) settings.get(key);
        if (cursor == null)
            cursor = defaultCursor;
        return cursor;
    }

    protected void put(String key, Object object) {
        settings.put(key, object);
    }

    protected void put(String key, int i) {
        settings.put(key, Integer.valueOf(i));
    }

    protected void put(String key, Color color) {
        settings.put(key, color);
    }

    protected void put(String key, Font font) {
        settings.put(key, font);
    }

    protected void put(String key, Border border) {
        settings.put(key, border);
    }

    protected void put(String key, Cursor cursor) {
        settings.put(key, cursor);
    }

    /* (non-Javadoc)
     * @see org.jboss.tools.common.model.ui.widgets.IWidgetSettings#setupControl(org.eclipse.swt.widgets.Control)
     */
    public void setupControl(Control control) {
        FormToolkit toolkit = getToolkit(control.getDisplay());
        if (control instanceof Composite) {
            toolkit.adapt((Composite) control);
        }
        if (control instanceof CCombo || control instanceof Combo) {
            control.setBackground(getColor("Combo.Background")); //$NON-NLS-1$
            control.setForeground(getColor("Combo.Foreground")); //$NON-NLS-1$
            control.setFont(getFont("Combo.Font")); //$NON-NLS-1$
        } else if (control instanceof Label) {
            control.setBackground(getColor("Label.Background")); //$NON-NLS-1$
            control.setForeground(getColor("Label.Foreground")); //$NON-NLS-1$
            control.setFont(getFont("Label.Font")); //$NON-NLS-1$
        } else if (control instanceof Text) {
            control.setBackground(getColor("Text.Background")); //$NON-NLS-1$
            control.setForeground(getColor("Text.Foreground")); //$NON-NLS-1$
            control.setFont(getFont("Text.Font")); //$NON-NLS-1$
        } else if (control instanceof Button) {
            control.setBackground(getColor("Button.Background")); //$NON-NLS-1$
            control.setForeground(getColor("Button.Foreground")); //$NON-NLS-1$
            control.setFont(getFont("Button.Font")); //$NON-NLS-1$
        } else if (control instanceof List) {
            control.setBackground(getColor("List.Background")); //$NON-NLS-1$
            control.setForeground(getColor("List.Foreground")); //$NON-NLS-1$
            control.setFont(getFont("List.Font")); //$NON-NLS-1$
        } else if (control instanceof Tree) {
            control.setBackground(getColor("Tree.Background")); //$NON-NLS-1$
            control.setForeground(getColor("Tree.Foreground")); //$NON-NLS-1$
            control.setFont(getFont("Tree.Font")); //$NON-NLS-1$
        } else if (control instanceof Table) {
            control.setBackground(getColor("Table.Background")); //$NON-NLS-1$
            control.setForeground(getColor("Table.Foreground")); //$NON-NLS-1$
            control.setFont(getFont("Table.Font")); //$NON-NLS-1$
        } else if (control instanceof Composite) {
            control.setBackground(getColor("Composite.Background")); //$NON-NLS-1$
            control.setForeground(getColor("Composite.Foreground")); //$NON-NLS-1$
            control.setFont(getFont("Composite.Font")); //$NON-NLS-1$
        } else { // unknow control
            control.setBackground(getColor("Control.Background")); //$NON-NLS-1$
            control.setForeground(getColor("Control.Foreground")); //$NON-NLS-1$
            control.setFont(getFont("Control.Font")); //$NON-NLS-1$
        }
    }

    public FormToolkit getToolkit(Display display) {
        return null;
    }

    public void dispose() {
    }

}