blob: df33e4a5f05f8e66ea10244c52d4ca9664852edd [file] [log] [blame]
/******************************************************************************
* Copyright (c) 2008 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.gmf.runtime.diagram.ui.printing.render.dialogs;
import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.ListViewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Spinner;
import org.eclipse.swt.widgets.Text;
/**
* Intended to be used as a base for other specializing dialog blocks.
* Provides common layout functionality
*
* @author Christian Damus (cdamus)
* @author James Bruck (jbruck)
*/
abstract class DialogBlock {
private final IDialogUnitConverter dluConverter;
DialogBlock(IDialogUnitConverter dluConverter) {
this.dluConverter = dluConverter;
}
protected Shell getShell() {
return dluConverter.getShell();
}
static Composite layout(Composite composite, int columns) {
GridLayout g = new GridLayout(columns, false);
g.marginLeft = 6;
g.marginRight = 6;
g.marginTop = 6;
g.marginBottom = 3;
composite.setLayout(g);
return composite;
}
GridData getLayoutData(Control control) {
GridData result = (GridData) control.getLayoutData();
if (result == null) {
result = new GridData();
control.setLayoutData(result);
}
return result;
}
Control layoutFillHorizontal(Control control) {
layoutFillHorizontal(control, true);
return control;
}
Control layoutFillHorizontal(Control control, boolean grab) {
GridData data = getLayoutData(control);
data.horizontalAlignment = SWT.FILL;
data.grabExcessHorizontalSpace = grab;
return control;
}
Control layoutFillVertical(Control control) {
GridData data = getLayoutData(control);
data.verticalAlignment = SWT.FILL;
data.grabExcessVerticalSpace = true;
return control;
}
Control layoutAlignLeft(Control control) {
GridData data = getLayoutData(control);
data.horizontalAlignment = SWT.BEGINNING;
data.grabExcessHorizontalSpace = false;
return control;
}
Control layoutAlignRight(Control control) {
GridData data = getLayoutData(control);
data.horizontalAlignment = SWT.END;
data.grabExcessHorizontalSpace = false;
return control;
}
Control layoutFillBoth(Control control) {
GridData data = getLayoutData(control);
data.horizontalAlignment = SWT.FILL;
data.grabExcessHorizontalSpace = true;
data.verticalAlignment = SWT.FILL;
data.grabExcessVerticalSpace = true;
return control;
}
Control layoutSpanHorizontal(Control control, int span) {
GridData data = getLayoutData(control);
data.horizontalSpan = span;
return control;
}
Control layoutSpanVertical(Control control, int span) {
GridData data = getLayoutData(control);
data.verticalSpan = span;
return control;
}
Control layoutHorizontalIndent(Control control) {
layoutHorizontalIndent(control, 15);
return control;
}
Control layoutHorizontalIndent(Control control, int inset) {
GridData data = getLayoutData(control);
data.horizontalIndent = inset;
return control;
}
Control layoutVerticalIndent(Control control) {
layoutVerticalIndent(control, 15);
return control;
}
Control layoutVerticalIndent(Control control, int inset) {
GridData data = getLayoutData(control);
data.verticalIndent = inset;
return control;
}
Control layoutWidth(Control control, int dlus) {
if (dlus > 0) {
GridData data = getLayoutData(control);
data.widthHint = dluConverter.convertHorizontalDLUsToPixels(dlus);
}
return control;
}
Control layoutHeight(Control control, int dlus) {
if (dlus > 0) {
GridData data = getLayoutData(control);
data.heightHint = dluConverter.convertHorizontalDLUsToPixels(dlus);
}
return control;
}
Group group(Composite parent, String text) {
Group result = new Group(parent, SWT.NONE);
result.setText(text);
layoutFillBoth(result);
return result;
}
Label label(Composite parent, String text) {
Label result = new Label(parent, SWT.NONE);
result.setText(text);
return result;
}
Text text(Composite parent, int width) {
Text result = new Text(parent, SWT.SINGLE | SWT.BORDER);
layoutFillHorizontal(result, false);
layoutWidth(result, width);
return result;
}
ComboViewer combo(Composite parent) {
ComboViewer result = new ComboViewer(parent);
return result;
}
ListViewer list(Composite parent){
ListViewer result = new ListViewer(parent);
return result;
}
Button button(Composite parent, String text) {
Button result = new Button(parent, SWT.PUSH);
result.setText(text);
return result;
}
Button radio(Composite parent, String text) {
Button result = new Button(parent, SWT.RADIO);
result.setText(text);
return result;
}
Button check(Composite parent, String text) {
Button result = new Button(parent, SWT.CHECK);
result.setText(text);
return result;
}
Spinner spinner(Composite parent, int min, int max) {
Spinner result = new Spinner(parent, SWT.BORDER);
result.setMinimum(min);
result.setMaximum(max);
return result;
}
Control blank(Composite parent) {
Label result = new Label(parent, SWT.NONE);
return result;
}
public abstract Control createContents(Composite parent);
public abstract void dispose();
public static interface IDialogUnitConverter {
int convertHorizontalDLUsToPixels(int dlus);
Shell getShell();
}
}