blob: a2ebd7a7629c3e27f7d5dba46d2264d7c7748fcf [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015, Red Hat Inc.
* 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:
* Mickael Istria (Red Hat Inc.)
*******************************************************************************/
package org.eclipse.ui.tests.preferences;
import java.io.ByteArrayInputStream;
import java.util.Collections;
import org.eclipse.core.commands.Command;
import org.eclipse.core.commands.ExecutionEvent;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.preference.PreferenceDialog;
import org.eclipse.jface.resource.FontDescriptor;
import org.eclipse.jface.resource.FontRegistry;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.swt.custom.StyledText;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.IEditorDescriptor;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.internal.themes.ColorsAndFontsPreferencePage;
import org.eclipse.ui.part.FileEditorInput;
import org.eclipse.ui.texteditor.AbstractTextEditor;
import org.junit.After;
import org.junit.Assert;
import org.junit.Assume;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* @since 3.11
*
*/
public class ZoomAndPreferencesFontTest {
private static IProject project;
private static IFile file;
private StyledText text;
private AbstractTextEditor editor;
private int initialFontHeight;
@BeforeClass
public static void createFilesAndOpenEditor() throws Exception {
project = ResourcesPlugin.getWorkspace().getRoot().getProject(ZoomAndPreferencesFontTest.class.getSimpleName());
project.create(new NullProgressMonitor());
project.open(new NullProgressMonitor());
file = project.getFile(ZoomAndPreferencesFontTest.class.getSimpleName() + ".txt"); // $NON-NLS-1$
file.create(new ByteArrayInputStream(ZoomAndPreferencesFontTest.class.getSimpleName().getBytes()), true,
new NullProgressMonitor());
}
@Before
public void openEditor() throws Exception {
IEditorDescriptor desc = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(file.getName());
editor = (AbstractTextEditor) PlatformUI.getWorkbench().getActiveWorkbenchWindow()
.getActivePage().openEditor(new FileEditorInput(file), desc.getId());
editor.setFocus();
text = (StyledText) editor.getAdapter(Control.class);
// assume we start on a clean state
initialFontHeight = text.getFont().getFontData()[0].getHeight();
}
@After
public void restoreAndCheckDefaults() {
PreferenceDialog dialog = new PreferenceDialog(Display.getCurrent().getActiveShell(), PlatformUI.getWorkbench().getPreferenceManager());
dialog.setSelectedNode("org.eclipse.ui.preferencePages.ColorsAndFonts");
dialog.setBlockOnOpen(false);
dialog.open();
ColorsAndFontsPreferencePage page = (ColorsAndFontsPreferencePage)dialog.getSelectedPage();
page.performDefaults();
page.performOk();
dialog.close();
// make sure we land on a clean state
Assert.assertEquals(initialFontHeight, text.getFont().getFontData()[0].getHeight());
editor.close(false);
}
@Test
public void testThemeAPIvsPreferences() {
int targetHeight = 17; // Whatever > 0 and not default size/10
FontRegistry registry = editor.getSite().getWorkbenchWindow().getWorkbench().getThemeManager().getCurrentTheme()
.getFontRegistry();
FontData[] data = registry.getFontData(JFaceResources.TEXT_FONT);
FontDescriptor desc = FontDescriptor.createFrom(data).setHeight(targetHeight);
registry.put(JFaceResources.TEXT_FONT, desc.getFontData());
Assert.assertEquals(targetHeight, text.getFont().getFontData()[0].getHeight());
restoreAndCheckDefaults();
}
@Test
public void testZoomCommand() throws Exception {
Command command = null;
command = PlatformUI.getWorkbench().getService(ICommandService.class)
.getCommand("org.eclipse.ui.edit.text.zoomIn");
Assume.assumeNotNull(command);
Assume.assumeTrue("Command must be defined for this test to run", command.isDefined());
int times = 6;
for (int i = 0; i < times; i++) {
command.executeWithChecks(new ExecutionEvent(command, Collections.EMPTY_MAP, null, null));
}
Assert.assertEquals(initialFontHeight + times * 2, text.getFont().getFontData()[0].getHeight());
}
}