blob: 9e41fb3e3e18097c80ec3a5f248b18a34e5f0ed2 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 The Regents of the University of California.
* This material was produced under U.S. Government contract W-7405-ENG-36
* for Los Alamos National Laboratory, which is operated by the University
* of California for the U.S. Department of Energy. The U.S. Government has
* rights to use, reproduce, and distribute this software. NEITHER THE
* GOVERNMENT NOR THE UNIVERSITY MAKES ANY WARRANTY, EXPRESS OR IMPLIED, OR
* ASSUMES ANY LIABILITY FOR THE USE OF THIS SOFTWARE. If software is modified
* to produce derivative works, such modified software should be clearly marked,
* so as not to confuse it with the version available from LANL.
*
* Additionally, 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
*
* LA-CC 04-115
*******************************************************************************/
package org.eclipse.ptp.ui.preferences;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.preference.PreferencePage;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.BusyIndicator;
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.Group;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.IWorkbenchWindow;
/**
* @author Clement chu
*
*/
public abstract class AbstractPerferencePage extends PreferencePage implements IWorkbenchPreferencePage {
protected IWorkbench fWorkbench;
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(org.eclipse.ui.IWorkbench)
*/
public void init(IWorkbench workbench) {
fWorkbench = workbench;
}
/** Get Workbench
* @return
*/
protected IWorkbench getWorkbench() {
return fWorkbench;
}
/** Create group composite
* @param parent
* @param numColumns
* @param makeBalance
* @param labelText
* @return
*/
protected Composite createGroupComposite(Composite parent, int numColumns, boolean makeBalance, String labelText) {
Group comp = new Group(parent, SWT.SHADOW_ETCHED_IN);
GridLayout layout = new GridLayout(numColumns, makeBalance);
comp.setLayout(layout);
layout.marginLeft = 2;
layout.marginTop = 2;
layout.marginRight = 2;
layout.marginBottom = 2;
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
gd.verticalAlignment = SWT.CENTER ;
gd.horizontalAlignment = SWT.FILL;
comp.setLayoutData(gd);
comp.setText(labelText);
comp.setFont(parent.getFont());
return comp;
}
/** Create composite
* @param parent
* @param numColumns
* @return
*/
protected Composite createComposite(Composite parent, int numColumns) {
Composite composite = new Composite(parent, SWT.NONE);
composite.setLayout(new GridLayout(numColumns, false));
composite.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
return composite;
}
/** Create check type button
* @param parent
* @param label
* @return
*/
protected Button createCheckButton(Composite parent, String label) {
return createButton(parent, label, SWT.CHECK | SWT.LEFT);
}
/** Create normal button
* @param parent
* @param label
* @param type
* @return
*/
protected Button createButton(Composite parent, String label, int type) {
Button button = new Button(parent, type);
button.setText(label);
button.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
return button;
}
/** Create combo box
* @param parent
* @param label
* @param data
* @param selectedData
* @return
*/
protected Combo createCombo(Composite parent, String label, String[] data, String selectedData) {
createLabel(parent, label, SWT.DEFAULT, SWT.DEFAULT, SWT.LEFT);
Combo combo = new Combo(parent, SWT.DROP_DOWN | SWT.READ_ONLY | SWT.BORDER);
combo.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
combo.setItems(data);
int selectedIndex = combo.indexOf(selectedData);
combo.select((selectedIndex<0)?0:selectedIndex);
return combo;
}
/** Create label
* @param parent
* @param text
* @param widthHint
* @param heightHint
* @param style
* @return
*/
protected Label createLabel(Composite parent, String text, int widthHint, int heightHint, int style) {
Label label = new Label(parent, style);
label.setText(text);
GridData gd = new GridData();
gd.horizontalSpan = 1;
gd.widthHint = widthHint;
gd.heightHint = heightHint;
label.setLayoutData(gd);
return label;
}
/** Create spacer
* @param composite
* @param columnSpan
*/
protected void createSpacer(Composite composite, int columnSpan) {
Label label = new Label(composite, SWT.NONE);
GridData gd = new GridData();
gd.horizontalSpan = columnSpan;
label.setLayoutData(gd);
}
/** Get pages
* @return
*/
protected IWorkbenchPage[] getPages() {
final List<IWorkbenchPage> pages = new ArrayList<IWorkbenchPage>();
BusyIndicator.showWhile(getShell().getDisplay(), new Runnable() {
public void run() {
if (fWorkbench != null) {
IWorkbenchWindow[] windows = fWorkbench.getWorkbenchWindows();
for (int i=0; i<windows.length; i++) {
pages.add(windows[i].getActivePage());
}
}
}
} );
return (IWorkbenchPage[])pages.toArray(new IWorkbenchPage[0]);
}
/** Store preference values
*
*/
protected abstract void storeValues();
/** Set preference value
*
*/
protected abstract void setValues();
}