Java tutorial
/** * Copyright (c) 2009, 2010 Mark Feber, MulgaSoft * * 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 */ package com.mulgasoft.emacsplus.preferences; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.preference.FieldEditor; import org.eclipse.swt.SWT; import org.eclipse.swt.events.DisposeEvent; import org.eclipse.swt.events.DisposeListener; import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.widgets.Button; import org.eclipse.swt.widgets.Composite; /** * A stand-alone button for inclusion in a preference page * * @author Mark Feber - initial API and implementation */ public class ButtonFieldEditor extends FieldEditor { Composite top = null; private Button button; /** * Construct a stand-alone button for inclusion in the preference page * * @param parent the composite parent * @param buttonText displayed by the button * @param onPush the button behavior on push: a SelectionAdapter * new SelectionAdapter() { * public void widgetSelected(SelectionEvent evt) { * // button behavior * } * } */ public ButtonFieldEditor(Composite parent, String buttonText, SelectionAdapter onPush) { super("noop", buttonText, parent); //$NON-NLS-1$ button.addSelectionListener(onPush); } protected Button getButtonControl(Composite parent) { if (button == null) { button = new Button(parent, SWT.PUSH); button.setText(getLabelText()); button.setFont(parent.getFont()); button.addDisposeListener(new DisposeListener() { public void widgetDisposed(DisposeEvent event) { button = null; } }); } else { checkParent(button, parent); } return button; } public void setEnabled(boolean enabled, Composite parent) { getButtonControl(parent).setEnabled(enabled); } /** * @see org.eclipse.jface.preference.FieldEditor#adjustForNumColumns(int) */ @Override protected void adjustForNumColumns(int numColumns) { ((GridData) top.getLayoutData()).horizontalSpan = numColumns; } /** * @see org.eclipse.jface.preference.FieldEditor#doFillIntoGrid(org.eclipse.swt.widgets.Composite, int) */ @Override protected void doFillIntoGrid(Composite parent, int numColumns) { top = parent; GridData gd = new GridData(); gd.horizontalSpan = numColumns; gd.horizontalAlignment = GridData.FILL; gd.horizontalAlignment = GridData.END; gd.grabExcessHorizontalSpace = true; button = getButtonControl(parent); int widthHint = convertHorizontalDLUsToPixels(button, IDialogConstants.BUTTON_WIDTH); gd.widthHint = Math.max(widthHint, button.computeSize(SWT.DEFAULT, SWT.DEFAULT, true).x); button.setLayoutData(gd); } /** * @see org.eclipse.jface.preference.FieldEditor#doLoad() */ @Override protected void doLoad() { // nope } /** * @see org.eclipse.jface.preference.FieldEditor#doLoadDefault() */ @Override protected void doLoadDefault() { // nope } /** * @see org.eclipse.jface.preference.FieldEditor#doStore() */ @Override protected void doStore() { // nope } /** * @see org.eclipse.jface.preference.FieldEditor#getNumberOfControls() */ @Override public int getNumberOfControls() { return 1; } }