blob: 26b4f0ec7bad188a930d163d028dfcfcec20c0ed [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2005 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.ui.tests.performance.layout;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.WorkbenchException;
import org.eclipse.ui.internal.presentations.PresentationFactoryUtil;
import org.eclipse.ui.presentations.AbstractPresentationFactory;
import org.eclipse.ui.tests.performance.UIPerformancePlugin;
import org.eclipse.ui.tests.performance.presentations.PresentationTestbed;
import org.eclipse.ui.tests.performance.presentations.TestPresentablePart;
public class PresentationWidgetFactory extends TestWidgetFactory {
private AbstractPresentationFactory factory;
private int type;
private Shell shell;
private Image img;
private Control ctrl;
private int numParts;
public PresentationWidgetFactory(AbstractPresentationFactory factory, int type, int numParts) {
this.factory = factory;
this.type = type;
this.numParts = numParts;
}
public void init() throws CoreException, WorkbenchException {
super.init();
img = UIPerformancePlugin.getImageDescriptor("icons/anything.gif").createImage();
Display display = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell().getDisplay();
shell = new Shell(display);
TestPresentablePart selection = null;
PresentationTestbed testBed = new PresentationTestbed(shell, factory, type);
for(int partCount = 0; partCount < numParts; partCount++) {
TestPresentablePart part = new TestPresentablePart(shell, img);
part.setName("Some part");
part.setContentDescription("Description");
part.setTitle("Some title");
part.setDirty(partCount % 2 == 0);
part.setTooltip("This is a tooltip");
testBed.add(part);
selection = part;
}
testBed.setSelection(selection);
ctrl = testBed.getControl();
shell.setBounds(0,0,1024,768);
ctrl.setBounds(shell.getClientArea());
shell.setVisible(true);
}
public void done() throws CoreException, WorkbenchException {
shell.dispose();
img.dispose();
super.done();
}
public static String describePresentation(AbstractPresentationFactory factory, int type) {
String typeDesc = "unknown";
switch(type) {
case PresentationFactoryUtil.ROLE_EDITOR: typeDesc = "editor"; break;
case PresentationFactoryUtil.ROLE_STANDALONE: typeDesc = "standalone with title"; break;
case PresentationFactoryUtil.ROLE_STANDALONE_NOTITLE: typeDesc = "standalone without title"; break;
case PresentationFactoryUtil.ROLE_VIEW: typeDesc = "view"; break;
}
return "Presentation " + factory.getId() + " " + typeDesc;
}
public String getName() {
return describePresentation(factory, type);
}
public Composite getControl() throws CoreException, WorkbenchException {
return (Composite)ctrl;
}
}