blob: dc64fc7bad340cade1e88769c1f7e3a198c83916 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 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.pde.internal.ui.commands;
import org.eclipse.core.commands.Command;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
import org.eclipse.ui.commands.ICommandService;
import org.eclipse.ui.forms.widgets.FormToolkit;
public abstract class QueryControl {
protected final CommandComposerPart fCSP;
protected final FormToolkit fToolkit;
protected Button fRadioButton;
protected Group fGroup;
protected QueryControl(CommandComposerPart csp, Composite parent) {
fCSP = csp;
fToolkit = csp.getToolkit();
createGroup(parent);
}
protected ICommandService getCommandService() {
return fCSP.getCommandService();
}
private Group createGroup(Composite parent) {
fRadioButton = fToolkit.createButton(parent, "", SWT.RADIO); //$NON-NLS-1$
fRadioButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
enable(fRadioButton.getSelection());
}
});
fGroup = new Group(parent, SWT.NONE);
GridData gd = new GridData(GridData.FILL_HORIZONTAL);
fGroup.setLayoutData(gd);
fGroup.setLayout(new GridLayout());
fGroup.setText(getName());
createGroupContents(fGroup);
fToolkit.adapt(fGroup, false, false);
return fGroup;
}
protected QueryControl select(boolean select) {
fRadioButton.setSelection(select);
return this;
}
protected abstract void createGroupContents(Group parent);
protected abstract String getName();
protected abstract void enable(boolean enable);
protected abstract Command[] getCommands();
}