| /******************************************************************************* |
| * Copyright (c) 2014 Formal Mind GmbH. |
| * 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: |
| * Michael Jastram - initial API and implementation |
| ******************************************************************************/ |
| package org.eclipse.rmf.reqif10.search.filter.ui; |
| |
| import java.util.List; |
| |
| import org.eclipse.rmf.reqif10.AttributeDefinitionBoolean; |
| import org.eclipse.rmf.reqif10.search.filter.BoolFilter; |
| import org.eclipse.rmf.reqif10.search.filter.IFilter; |
| import org.eclipse.rmf.reqif10.search.filter.IFilter.Operator; |
| import org.eclipse.swt.SWT; |
| import org.eclipse.swt.layout.GridData; |
| import org.eclipse.swt.widgets.Combo; |
| |
| /** |
| * Used for Boolean |
| * |
| * @author jastram |
| */ |
| public class FilterControlBoolean extends FilterControl { |
| |
| private Combo valueControl; |
| |
| public FilterControlBoolean(FilterPanel parent, |
| AttributeDefinitionBoolean attribute) { |
| super(parent, attribute); |
| } |
| |
| public FilterControlBoolean(FilterPanel parent, BoolFilter template) { |
| super(parent, template); |
| } |
| |
| protected void updateValueControls(boolean initialize) { |
| if (getOperator() == Operator.IS_SET || getOperator() == Operator.IS_NOT_SET) { |
| showValueControl(false); |
| } else { |
| showValueControl(true); |
| if (initialize) { |
| Boolean defaultValue = (Boolean) templateFilter.getFilterValue1(); |
| valueControl.select(Boolean.TRUE.equals(defaultValue) ? 1 : 0); |
| } |
| } |
| layout(); |
| } |
| |
| private void showValueControl(boolean show) { |
| if (show && valueControl == null) { |
| valueControl = new Combo(this, SWT.DROP_DOWN | SWT.BORDER | SWT.READ_ONLY); |
| valueControl.add("FALSE"); // index: 0 |
| valueControl.add("TRUE"); // index: 1 |
| valueControl.select(0); |
| GridData layoutData = new GridData(SWT.FILL, SWT.CENTER, true, false); |
| valueControl.setLayoutData(layoutData); |
| } else if (!show && valueControl != null) { |
| valueControl.dispose(); |
| valueControl = null; |
| } |
| } |
| |
| public IFilter getFilter() { |
| Boolean value = valueControl == null ? null : new Boolean(valueControl.getSelectionIndex() == 1); |
| return new BoolFilter(getOperator(), value, (AttributeDefinitionBoolean) attribute); |
| } |
| |
| @Override |
| protected List<Operator> getOperators() { |
| return BoolFilter.SUPPORTED_OPERATORS.asList(); |
| } |
| |
| } |