blob: a51f3593c7a9c2da6739b8c20cc6382afd41acf2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2007 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.internal.views.properties.tabbed.view;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.ScrolledComposite;
import org.eclipse.swt.layout.FormAttachment;
import org.eclipse.swt.layout.FormData;
import org.eclipse.swt.layout.FormLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
/**
* Composite responsible for drawing the tabbed property sheet page.
*
* @author Anthony Hunter
*/
public class TabbedPropertyComposite
extends Composite {
private TabbedPropertySheetWidgetFactory factory;
private Composite mainComposite;
private Composite leftComposite;
private ScrolledComposite scrolledComposite;
private Composite tabComposite;
private TabbedPropertyTitle title;
private TabbedPropertyList listComposite;
private boolean displayTitle;
/**
* Constructor for a TabbedPropertyComposite
*
* @param parent
* the parent widget.
* @param factory
* the widget factory.
* @param displayTitle
* if <code>true</code>, then the title bar will be displayed.
*/
public TabbedPropertyComposite(Composite parent,
TabbedPropertySheetWidgetFactory factory, boolean displayTitle) {
super(parent, SWT.NO_FOCUS);
this.factory = factory;
this.displayTitle = displayTitle;
createMainComposite();
}
/**
* Create the main composite.
*/
protected void createMainComposite() {
mainComposite = factory.createComposite(this, SWT.NO_FOCUS);
mainComposite.setLayout(new FormLayout());
FormData formData = new FormData();
formData.left = new FormAttachment(0, 0);
formData.right = new FormAttachment(100, 0);
formData.top = new FormAttachment(0, 0);
formData.bottom = new FormAttachment(100, 0);
mainComposite.setLayoutData(formData);
createMainContents();
}
/**
* Create the contents in the main composite.
*/
protected void createMainContents() {
if (displayTitle) {
title = new TabbedPropertyTitle(mainComposite, factory);
FormData data = new FormData();
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
data.top = new FormAttachment(0, 0);
title.setLayoutData(data);
}
leftComposite = factory.createComposite(mainComposite, SWT.NO_FOCUS);
leftComposite.setLayout(new FormLayout());
scrolledComposite = factory.createScrolledComposite(mainComposite, SWT.H_SCROLL
| SWT.V_SCROLL | SWT.NO_FOCUS);
scrolledComposite.setLayout(new FormLayout());
FormData formData = new FormData();
formData.left = new FormAttachment(leftComposite, 0);
formData.right = new FormAttachment(100, 0);
if (displayTitle) {
formData.top = new FormAttachment(title, 0);
} else {
formData.top = new FormAttachment(0, 0);
}
formData.bottom = new FormAttachment(100, 0);
scrolledComposite.setLayoutData(formData);
formData = new FormData();
formData.left = new FormAttachment(0, 0);
formData.right = new FormAttachment(scrolledComposite, 0);
if (displayTitle) {
formData.top = new FormAttachment(title, 0);
} else {
formData.top = new FormAttachment(0, 0);
}
formData.bottom = new FormAttachment(100, 0);
leftComposite.setLayoutData(formData);
tabComposite = factory.createComposite(scrolledComposite, SWT.NO_FOCUS);
tabComposite.setLayout(new FormLayout());
scrolledComposite.setContent(tabComposite);
scrolledComposite.setAlwaysShowScrollBars(false);
scrolledComposite.setExpandVertical(true);
scrolledComposite.setExpandHorizontal(true);
listComposite = new TabbedPropertyList(leftComposite, factory);
formData = new FormData();
formData.left = new FormAttachment(0, 0);
formData.right = new FormAttachment(100, 0);
formData.top = new FormAttachment(0, 0);
formData.bottom = new FormAttachment(100, 0);
listComposite.setLayoutData(formData);
FormData data = new FormData();
data.left = new FormAttachment(0, 0);
data.right = new FormAttachment(100, 0);
data.top = new FormAttachment(0, 0);
data.bottom = new FormAttachment(100, 0);
tabComposite.setLayoutData(data);
}
/**
* Get the tabbed property list, which is the list of tabs on the left hand
* side of this composite.
*
* @return the tabbed property list.
*/
public TabbedPropertyList getList() {
return listComposite;
}
/**
* Get the tabbed property title bar.
*
* @return the tabbed property title bar or <code>null</code> if not used.
*/
public TabbedPropertyTitle getTitle() {
return title;
}
/**
* Get the tab composite where sections display their property contents.
*
* @return the tab composite.
*/
public Composite getTabComposite() {
return tabComposite;
}
/**
* Get the scrolled composite which surrounds the title bar and tab
* composite.
*
* @return the scrolled composite.
*/
public ScrolledComposite getScrolledComposite() {
return scrolledComposite;
}
/**
* Get the widget factory.
*
* @return the widget factory.
*/
protected TabbedPropertySheetWidgetFactory getFactory() {
return factory;
}
/**
* @see org.eclipse.swt.widgets.Widget#dispose()
*/
public void dispose() {
listComposite.dispose();
if (displayTitle) {
title.dispose();
}
super.dispose();
}
}