blob: 3e71a8a8fe0590238e109aeba06fe54058d0c417 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 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.wst.xsd.ui.internal.util;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.graphics.FontData;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.List;
import org.eclipse.swt.widgets.Table;
import org.eclipse.swt.widgets.Text;
public class ViewUtility
{
private static Font font;
public static Font getFont()
{
if (font == null)
{
font = new Font(Display.getCurrent(), "ms sans serif", 8, SWT.NORMAL);
}
return font;
}
public static void setFont(Font newFont)
{
font = newFont;
}
public static void setComposite(Composite comp)
{
// deprecated. Remove later
}
public static Composite createComposite(Composite parent, int numColumns)
{
Composite composite = new Composite(parent, SWT.NONE);
composite.setFont(getFont());
GridLayout layout = new GridLayout();
layout.numColumns = numColumns;
composite.setLayout(layout);
GridData data = new GridData();
data.verticalAlignment = GridData.FILL;
data.horizontalAlignment = GridData.FILL;
composite.setLayoutData(data);
return composite;
}
public static Composite createComposite(Composite parent, int numColumns, boolean horizontalFill)
{
if (!horizontalFill)
{
createComposite(parent, numColumns);
}
Composite composite = new Composite(parent, SWT.NONE);
composite.setFont(getFont());
GridLayout layout = new GridLayout();
layout.numColumns = numColumns;
composite.setLayout(layout);
GridData data = new GridData();
data.verticalAlignment = GridData.FILL;
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
composite.setLayoutData(data);
return composite;
}
public static Composite createComposite(Composite parent, int numColumns, boolean horizontalFill, boolean verticalFill)
{
if (!horizontalFill && !verticalFill)
{
createComposite(parent, numColumns);
}
Composite composite = new Composite(parent, SWT.NONE);
composite.setFont(getFont());
GridLayout layout = new GridLayout();
layout.numColumns = numColumns;
composite.setLayout(layout);
GridData data = new GridData();
data.verticalAlignment = GridData.FILL;
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
data.grabExcessVerticalSpace = true;
composite.setLayoutData(data);
return composite;
}
public static Label createHorizontalFiller(Composite parent, int horizontalSpan)
{
Label label = new Label(parent, SWT.LEFT);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.horizontalSpan = horizontalSpan;
label.setLayoutData(data);
return label;
}
/**
* Helper method for creating labels.
*/
public static Label createLabel(Composite parent, String text)
{
Label label = new Label(parent, SWT.LEFT);
label.setText(text);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
label.setLayoutData(data);
return label;
}
public Label createLabel(Composite parent, int style, String text)
{
Label label = new Label(parent, style);
// setColor(label);
label.setText(text);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
label.setLayoutData(data);
return label;
}
public static Label createLabel(Composite parent, String text, int alignment)
{
Label label = new Label(parent, SWT.LEFT);
label.setText(text);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.verticalAlignment = alignment;
label.setLayoutData(data);
return label;
}
/**
* Helper method for creating buttons.
*/
public static Button createPushButton(Composite parent, String label)
{
Button button = new Button(parent, SWT.PUSH);
button.setText(label);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
button.setLayoutData(data);
return button;
}
public static Table createTable(Composite parent)
{
Table table = new Table(parent, SWT.SINGLE | SWT.BORDER);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
table.setLayoutData(data);
return table;
}
/**
* Create radio button
*/
public static Button createRadioButton(Composite parent, String label)
{
Button button = new Button(parent, SWT.RADIO);
button.setText(label);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
button.setLayoutData(data);
return button;
}
/**
* Helper method for creating check box
*/
public static Button createCheckBox(Composite parent, String label)
{
Button button = new Button(parent, SWT.CHECK);
button.setText(label);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
button.setLayoutData(data);
return button;
}
public static Combo createComboBox(Composite parent)
{
return createComboBox(parent, true);
}
public static Combo createComboBox(Composite parent, boolean isReadOnly)
{
int style = isReadOnly == true ? SWT.READ_ONLY : SWT.DROP_DOWN;
Combo combo = new Combo(parent, style);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
combo.setLayoutData(data);
return combo;
}
public static List createListBox(Composite parent, int width, boolean isMultiSelect)
{
int style = isMultiSelect ? SWT.MULTI : SWT.SINGLE;
List list = new List(parent, style | SWT.BORDER);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
data.widthHint = width;
list.setLayoutData(data);
return list;
}
public static List createListBox(Composite parent, int style)
{
List list = new List(parent, style);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.verticalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
data.grabExcessVerticalSpace = true;
list.setLayoutData(data);
return list;
}
public Text createTextField(Composite parent)
{
Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.verticalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
text.setLayoutData(data);
// text.addKeyListener(keyboardHandler);
return text;
}
public static Text createTextField(Composite parent, int width)
{
Text text = new Text(parent, SWT.SINGLE | SWT.BORDER);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
data.widthHint = width;
text.setLayoutData(data);
return text;
}
/**
* <code>createWrappedMultiTextField</code> creates a wrapped multitext field
*
* @param parent a <code>Composite</code> value
* @param width an <code>int</code> value
* @param numLines an <code>int</code> value representing number of characters in height
* @param verticalFill a <code>boolean</code> value
* @return a <code>Text</code> value
*/
public static Text createWrappedMultiTextField(Composite parent, int width, int numLines, boolean verticalFill)
{
Text text = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.WRAP | SWT.V_SCROLL);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
if (verticalFill)
{
data.verticalAlignment = GridData.FILL;
data.grabExcessVerticalSpace = true;
}
data.widthHint = width;
FontData[] fontData = getFont().getFontData();
// hack for now where on Windows, only 1 fontdata exists
data.heightHint = numLines * fontData[0].getHeight();
text.setLayoutData(data);
return text;
}
public static Text createMultiTextField(Composite parent, int width, int height, boolean verticalFill)
{
Text text = new Text(parent, SWT.MULTI | SWT.BORDER | SWT.H_SCROLL | SWT.V_SCROLL);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
if (verticalFill)
{
data.verticalAlignment = GridData.FILL;
data.grabExcessVerticalSpace = true;
}
data.widthHint = width;
data.heightHint = height;
text.setLayoutData(data);
return text;
}
public static Group createGroup(Composite parent, int numColumns, String text, boolean verticalFill)
{
Group group = new Group(parent, SWT.SHADOW_ETCHED_IN);
group.setText(text);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
if (verticalFill)
{
data.verticalAlignment = GridData.FILL;
data.grabExcessVerticalSpace = true;
}
group.setLayoutData(data);
GridLayout layout = new GridLayout();
layout.numColumns = numColumns;
group.setLayout(layout);
return group;
}
public static Group createGroup(Composite parent, int numColumns, String text, boolean verticalFill, int alignment)
{
Group group = new Group(parent, SWT.SHADOW_ETCHED_IN);
group.setText(text);
GridData data = new GridData();
data.horizontalAlignment = GridData.FILL;
data.grabExcessHorizontalSpace = true;
data.verticalAlignment = alignment;
if (verticalFill)
{
data.verticalAlignment = GridData.FILL;
data.grabExcessVerticalSpace = true;
}
group.setLayoutData(data);
GridLayout layout = new GridLayout();
layout.numColumns = numColumns;
group.setLayout(layout);
return group;
}
public static Label createVerticalFiller(Composite parent, int verticalSpan)
{
Label label = new Label(parent, SWT.LEFT);
label.setFont(getFont());
GridData data = new GridData();
data.verticalAlignment = GridData.FILL;
data.verticalSpan = verticalSpan;
label.setLayoutData(data);
return label;
}
/**
* Creates a grid data object that occupies vertical and horizontal
* space.
*/
static public GridData createFill()
{
GridData gd= new GridData();
gd.horizontalAlignment= GridData.FILL;
gd.grabExcessHorizontalSpace= true;
gd.verticalAlignment= GridData.FILL;
gd.grabExcessVerticalSpace= true;
return gd;
}
/**
* Creates a grid data object that occupies horizontal space.
*/
static public GridData createHorizontalFill()
{
GridData gd= new GridData();
gd.horizontalAlignment= GridData.FILL;
gd.grabExcessHorizontalSpace= true;
return gd;
}
/**
* Creates a grid data object that occupies vertical space.
*/
static public GridData createVerticalFill()
{
GridData gd= new GridData();
gd.verticalAlignment= GridData.FILL;
gd.grabExcessVerticalSpace= true;
return gd;
}
}