blob: d5b05c95da84fe26bed81293be4edda8320e58ef [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jface.tests.viewers;
import org.eclipse.jface.resource.JFaceResources;
import org.eclipse.jface.tests.viewers.TableViewerTest.TableTestLabelProvider;
import org.eclipse.jface.viewers.ColumnLayoutData;
import org.eclipse.jface.viewers.ColumnWeightData;
import org.eclipse.jface.viewers.IFontProvider;
import org.eclipse.jface.viewers.ITableFontProvider;
import org.eclipse.jface.viewers.StructuredViewer;
import org.eclipse.jface.viewers.TableLayout;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.TableColumn;
import org.eclipse.swt.widgets.TableItem;
/**
* The TableFontProviderTest is a test suite designed to test
* ITableFontProviders.
*/
public class TableFontProviderTest extends StructuredViewerTest {
Font font1;
Font font2;
/**
* Create a new instance of the receiver
*
* @param name
*/
public TableFontProviderTest(String name) {
super(name);
}
/**
* Test the general font provider.
*/
public void testFontProvider() {
TableViewer viewer = (TableViewer) fViewer;
FontViewLabelProvider provider = new FontViewLabelProvider();
viewer.setLabelProvider(provider);
//refresh so that the colors are set
fViewer.refresh();
TestElement first = fRootElement.getFirstChild();
compareFontDatas(viewer.getTable().getItem(0).getFont(0), font1);//$NON-NLS-1$
compareFontDatas(viewer.getTable().getItem(0).getFont(1), font1);//$NON-NLS-1$
provider.fExtended = false;
}
/**
* Test that the fonts are being set.
*
*/
public void testTableItemsFontProvider() {
TableViewer viewer = (TableViewer) fViewer;
TableFontViewLabelProvider provider = new TableFontViewLabelProvider();
viewer.setLabelProvider(provider);
Table table = viewer.getTable();
fViewer.refresh();
compareFontDatas(font1, table.getItem(0).getFont(0));//$NON-NLS-1$
compareFontDatas(font2,table.getItem(0).getFont(1));//$NON-NLS-1$
provider.fExtended = false;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.tests.viewers.StructuredViewerTest#setUp()
*/
public void setUp() {
super.setUp();
font1 = JFaceResources.getFont(JFaceResources.BANNER_FONT);
font2 = JFaceResources.getFont(JFaceResources.HEADER_FONT);
}
/**
* Run as a stand alone test
*
* @param args
*/
public static void main(String[] args) {
junit.textui.TestRunner.run(TableFontProviderTest.class);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.tests.viewers.StructuredViewerTest#createViewer(org.eclipse.swt.widgets.Composite)
*/
protected StructuredViewer createViewer(Composite parent) {
TableViewer viewer = new TableViewer(parent);
viewer.setContentProvider(new TestModelContentProvider());
viewer.getTable().setLinesVisible(true);
TableLayout layout = new TableLayout();
viewer.getTable().setLayout(layout);
viewer.getTable().setHeaderVisible(true);
String headers[] = { "column 1 header", "column 2 header" };//$NON-NLS-1$ //$NON-NLS-2$
ColumnLayoutData layouts[] = { new ColumnWeightData(100),
new ColumnWeightData(100) };
final TableColumn columns[] = new TableColumn[headers.length];
for (int i = 0; i < headers.length; i++) {
layout.addColumnData(layouts[i]);
TableColumn tc = new TableColumn(viewer.getTable(), SWT.NONE, i);
tc.setResizable(layouts[i].resizable);
tc.setText(headers[i]);
columns[i] = tc;
}
return viewer;
}
protected int getItemCount() {
TestElement first = fRootElement.getFirstChild();
TableItem ti = (TableItem) fViewer.testFindItem(first);
Table table = ti.getParent();
return table.getItemCount();
}
protected String getItemText(int at) {
Table table = (Table) fViewer.getControl();
return table.getItem(at).getText();
}
private void compareFontDatas(Font font1, Font font2){
FontData[] font1Data = font1.getFontData();
FontData[] font2Data = font2.getFontData();
assertTrue("Mismatched sizes",font1Data.length == font2Data.length);
for (int a = 0; a < font2Data.length; a++) {
assertTrue("Mismatched fontData",font1Data[a].equals(font2Data[a]));
}
}
class TableFontViewLabelProvider extends TableTestLabelProvider implements
ITableFontProvider {
public Image getColumnImage(Object obj, int index) {
return null;
}
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.ITableFontProvider#getFont(java.lang.Object,
* int)
*/
public Font getFont(Object element, int columnIndex) {
switch (columnIndex) {
case 0:
return font1;
default:
return font2;
}
}
}
/**
* A label provider that does not provide font support entry by entry.
*/
class FontViewLabelProvider extends TableTestLabelProvider implements
IFontProvider {
/*
* (non-Javadoc)
*
* @see org.eclipse.jface.viewers.IFontProvider#getFont(java.lang.Object)
*/
public Font getFont(Object element) {
return font1;
}
}
}