/* * Syncany, www.syncany.org * Copyright (C) 2011-2015 Philipp C. Heckel <philipp.heckel@gmail.com> * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.syncany.gui.util; import org.eclipse.swt.SWT; import org.eclipse.swt.events.FocusAdapter; import org.eclipse.swt.events.FocusEvent; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Text; import org.syncany.util.EnvironmentUtil; /** * @author Vincent Wiencek <vwiencek@gmail.com> * */ public class WidgetDecorator { public static final int VERTICAL_INDENT = 20; public static final int DEFAULT_BUTTON_WIDTH = 100; public static final int DEFAULT_BUTTON_HEIGHT = 30; public static final Color INVALID_TEXT_COLOR = SWTResourceManager.getColor(255, 218, 185); public static final Color RED = SWTResourceManager.getColor(SWT.COLOR_RED); public static final Color WHITE = SWTResourceManager.getColor(SWT.COLOR_WHITE); public static final Color BLACK = SWTResourceManager.getColor(SWT.COLOR_BLACK); public static final Color GRAY = SWTResourceManager.getColor(SWT.COLOR_GRAY); public static final Color DARK_GRAY = SWTResourceManager.getColor(SWT.COLOR_DARK_GRAY); public static final Color LIGHT_GRAY = SWTResourceManager.getColor(220, 220, 220); public static final Color BLUE_LINK = SWTResourceManager.getColor(0, 147, 173); public static final Color COLOR_WIDGET = SWTResourceManager.getColor(SWT.COLOR_WIDGET_BACKGROUND); private static String FONT_NAME = "Segoe UI"; private static int FONT_SIZE = EnvironmentUtil.isMacOSX() ? 10 : EnvironmentUtil.isWindows() ? 9 : 9; private static Font FONT_TITLE = SWTResourceManager.getFont(FONT_NAME, FONT_SIZE + 5, SWT.NORMAL); private static Font FONT_BIGGER = SWTResourceManager.getFont(FONT_NAME, FONT_SIZE + 2, SWT.BOLD); private static Font FONT_NORMAL = SWTResourceManager.getFont(FONT_NAME, FONT_SIZE, SWT.NORMAL); private static Font FONT_SMALLER = SWTResourceManager.getFont(FONT_NAME, FONT_SIZE - 1, SWT.NORMAL); private static Font FONT_BOLD = SWTResourceManager.getFont(FONT_NAME, FONT_SIZE, SWT.BOLD); public static void title(Control... controls) { font(FONT_TITLE, controls); } public static void bigger(Control... controls) { font(FONT_BIGGER, controls); } public static void smaller(Control... controls) { font(FONT_SMALLER, controls); } public static void normal(Control... controls) { font(FONT_NORMAL, controls); } public static void bold(Control... controls) { font(FONT_BOLD, controls); } public static void font(Font font, Control... controls) { for (Control control : controls) { font(font, control); if (control instanceof Text) { enhanceFocus((Text) control); } } } private static void font(Font font, Control control) { control.setFont(font); } private static void enhanceFocus(Text control) { final Text text = (Text) control; text.addFocusListener(new FocusAdapter() { @Override public void focusGained(FocusEvent e) { text.selectAll(); } }); } public static void markAsInvalid(Control control) { control.setBackground(INVALID_TEXT_COLOR); } public static void markAsValid(Control control) { control.setBackground(WHITE); } }