/* Copyright (C) 2009 Mobile Sorcery AB
This program is free software; you can redistribute it and/or modify it
under the terms of the Eclipse Public License v1.0.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the Eclipse Public License v1.0 for
more details.
You should have received a copy of the Eclipse Public License v1.0 along
with this program. It is also available at http://www.eclipse.org/legal/epl-v10.html
*/
package com.mobilesorcery.sdk.profiles.ui.internal;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
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.Shell;
import com.mobilesorcery.sdk.profiles.IDeviceFilter;
public class SelectFilterTypeDialog extends Dialog {
private IFilterProvider[] filterProviders;
private IFilterProvider selectedFilterProvider;
private IDeviceFilter filter;
public SelectFilterTypeDialog(Shell parentShell) {
super(parentShell);
}
public void createButtonsForButtonBar(Composite parent) {
createButton(parent, IDialogConstants.OK_ID, IDialogConstants.OK_LABEL, true);
createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false);
updateUI();
}
public Control createDialogArea(Composite parent) {
getShell().setText(Messages.SelectFilterTypeDialog_SelectFilterType);
Composite contents = new Composite(parent, SWT.NONE);
contents.setLayout(new GridLayout(1, false));
// TODO: Externalize
filterProviders = new IFilterProvider[] {
new ProfileFilterDialog(getShell()),
new FeatureFilterDialog(getShell()),
new ConstantFilterDialog(getShell())
};
final Button[] filterRadioButtons = new Button[filterProviders.length];
for (int i = 0; i < filterProviders.length; i++) {
filterRadioButtons[i] = new Button(contents, SWT.RADIO);
filterRadioButtons[i].setText(filterProviders[i].getName());
filterRadioButtons[i].setData(filterProviders[i]);
filterRadioButtons[i].addSelectionListener(new SelectionListener() {
public void widgetDefaultSelected(SelectionEvent e) {
widgetSelected(e);
}
public void widgetSelected(SelectionEvent e) {
selectedFilterProvider = (IFilterProvider) e.widget.getData();
updateUI();
}
});
}
return contents;
}
public void okPressed() {
getShell().close();
filter = selectedFilterProvider.getFilter();
super.okPressed();
}
public IDeviceFilter getFilter() {
return filter;
}
private void updateUI() {
getButton(IDialogConstants.OK_ID).setEnabled(selectedFilterProvider != null);
}
}