/******************************************************************************* * Copyright (c) 2007-2008 Peter Centgraf. * 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 : * Peter Centgraf - initial implementation *******************************************************************************/ package org.eclipse.nebula.snippets.gallery; import java.util.Arrays; import org.eclipse.jface.layout.GridDataFactory; import org.eclipse.jface.layout.GridLayoutFactory; import org.eclipse.jface.viewers.IColorProvider; import org.eclipse.jface.viewers.IFontProvider; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.jface.viewers.ViewerComparator; import org.eclipse.jface.viewers.ViewerFilter; import org.eclipse.nebula.jface.galleryviewer.GalleryTreeViewer; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.graphics.Font; import org.eclipse.swt.graphics.FontData; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.program.Program; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Shell; /** * Simple visual test harness for GalleryTreeViewer. * * @author Peter Centgraf * @since Dec 5, 2007 */ public class SnippetGalleryViewerTester { protected static class GalleryTestContentProvider implements ITreeContentProvider { // implements IStructuredContentProvider { // Use this to test // FlatTreeContentProvider public static final int NUM_GROUPS = 10; public static final int NUM_ITEMS = 20; String[] groups = new String[NUM_GROUPS]; String[][] items = new String[NUM_GROUPS][NUM_ITEMS]; public GalleryTestContentProvider() { for (int i = 0; i < NUM_GROUPS; i++) { groups[i] = "Group " + (i + 1); //$NON-NLS-1$ for (int j = 0; j < NUM_ITEMS; j++) { items[i][j] = "Item " + (j + 1); //$NON-NLS-1$ } } } public Object[] getChildren(Object parentElement) { int idx = Arrays.asList(groups).indexOf(parentElement); return items[idx]; } public Object getParent(Object element) { return null; } public boolean hasChildren(Object element) { return ((String) element).startsWith("Group"); //$NON-NLS-1$ } public Object[] getElements(Object inputElement) { return groups; } public void dispose() { } public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { } } protected static class GalleryTestLabelProvider extends LabelProvider implements IColorProvider, IFontProvider { protected static Image itemImage = new Image(Display.getCurrent(), Program.findProgram("jpg").getImageData()); public Image getImage(Object element) { return itemImage; } public Color getBackground(Object element) { String label = (String) element; if (Integer.parseInt(label.substring(label.indexOf(' ') + 1)) % 2 > 0) { return Display.getCurrent().getSystemColor(SWT.COLOR_YELLOW); } else { return null; } } public Color getForeground(Object element) { String label = (String) element; if (Integer.parseInt(label.substring(label.indexOf(' ') + 1)) % 2 > 0) { return null; } else { return Display.getCurrent().getSystemColor(SWT.COLOR_BLUE); } } public Font getFont(Object element) { String label = (String) element; if (Integer.parseInt(label.substring(label.indexOf(' ') + 1)) % 2 > 0) { return null; } else { FontData sysFontData = Display.getCurrent().getSystemFont().getFontData()[0]; sysFontData.setStyle(SWT.BOLD | SWT.ITALIC); return new Font(Display.getCurrent(), sysFontData); } } } protected static class OddNumbersFilter extends ViewerFilter { public boolean select(Viewer viewer, Object parentElement, Object element) { try { String label = (String) element; return (Integer.parseInt(label.substring(label.indexOf(' ') + 1)) % 2 > 0); } catch (Exception e) { return true; } } } protected static final int WIDTH = 800; protected static final int HEIGHT = 600; protected Shell shell; public SnippetGalleryViewerTester() { // Initialize the containing Shell Display display = new Display(); shell = new Shell(display); shell.setSize(WIDTH, HEIGHT); shell.setBackground(display.getSystemColor(SWT.COLOR_RED)); GridLayoutFactory.fillDefaults().applyTo(shell); GalleryTreeViewer viewer = new GalleryTreeViewer(shell); GridDataFactory.fillDefaults().grab(true, true).applyTo(viewer.getGallery()); viewer.setContentProvider(new GalleryTestContentProvider()); viewer.setLabelProvider(new GalleryTestLabelProvider()); viewer.setComparator(new ViewerComparator()); // viewer.addFilter(new OddNumbersFilter()); viewer.setInput(new Object()); // Show the Shell shell.open(); shell.layout(); // Run the event loop while (!shell.isDisposed()) { if (!display.readAndDispatch()) display.sleep(); } display.dispose(); } /** * @param args */ public static void main(String[] args) { new SnippetGalleryViewerTester(); } }