/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Eclipse Public License, Version 1.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.eclipse.org/org/documents/epl-v10.php
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.ide.eclipse.adt.internal.editors.ui;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.CLabel;
import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.ToolBar;
/**
* A composite that wraps a control, with a header composed of an image/label
* and a set of toolbar icons.
*/
public class DecorComposite extends Composite {
private CLabel mTitle;
private ToolBar mToolbar;
private IDecorContent mContent;
public DecorComposite(Composite parent, int style) {
super(parent, style);
GridLayoutBuilder.create(this).noMargins().columns(2).vSpacing(1);
mTitle = new CLabel(this, SWT.NONE);
GridDataBuilder.create(mTitle).hGrab().hFill().vCenter();
mToolbar = new ToolBar(this, SWT.FLAT | SWT.RIGHT);
GridDataBuilder.create(mToolbar).fill();
Label sep = new Label(this, SWT.SEPARATOR | SWT.HORIZONTAL);
GridDataBuilder.create(sep).hSpan(2).hFill();
}
public DecorComposite setTitle(String title) {
mTitle.setText(title);
return this;
}
public DecorComposite setImage(Image image) {
mTitle.setImage(image);
return this;
}
public DecorComposite setContent(IDecorContent content) {
mContent = content;
content.createControl(this);
GridDataBuilder.create(content.getControl()).hSpan(2).grab().fill();
String t = content.getTitle();
if (t != null) {
setTitle(t);
}
Image i = content.getImage();
if (i != null) {
setImage(i);
}
return this;
}
public Control getContentControl() {
return mContent == null ? null : mContent.getControl();
}
}