| /****************************************************************************** |
| * 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(); |
| } |
| } |