Package org.objectstyle.wolips.eomodeler.editors.qualifier

Source Code of org.objectstyle.wolips.eomodeler.editors.qualifier.KeyValueQualifierTypeEditor

/**
*
*/
package org.objectstyle.wolips.eomodeler.editors.qualifier;

import java.util.List;

import org.eclipse.jface.viewers.ComboViewer;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Text;
import org.objectstyle.wolips.eomodeler.core.model.EOQualifierFactory;
import org.objectstyle.wolips.eomodeler.core.model.qualifier.EOAggregateQualifier;
import org.objectstyle.wolips.eomodeler.core.model.qualifier.EOKeyComparisonQualifier;
import org.objectstyle.wolips.eomodeler.core.model.qualifier.EOKeyValueQualifier;
import org.objectstyle.wolips.eomodeler.core.model.qualifier.EOQualifier;
import org.objectstyle.wolips.eomodeler.core.model.qualifier.EOTruePredicate;

public class KeyValueQualifierTypeEditor extends AbstractQualifierTypeEditor {
  private String _key;

  private ComboViewer _operatorCombo;

  private Text _valueText;

  public KeyValueQualifierTypeEditor(Composite parent, int style) {
    super(parent, style);
    GridLayout layout = new GridLayout(2, false);
    layout.marginLeft = 0;
    layout.marginRight = 0;
    layout.marginWidth = 0;
    layout.marginTop = 0;
    layout.marginBottom = 0;
    layout.marginHeight = 0;
    layout.horizontalSpacing = 0;
    setLayout(layout);

    _operatorCombo = new ComboViewer(this, SWT.READ_ONLY);
    _operatorCombo.setLabelProvider(new LabelProvider() {
      @Override
      public String getText(Object element) {
        String text;
        if (element == null) {
          text = "";
        } else {
          text = ((EOQualifier.Comparison) element).getDisplayName();
        }
        return text;
      }
    });
    _operatorCombo.add(new EOQualifier.Comparison("="));
    _operatorCombo.add(new EOQualifier.Comparison("<>", "!="));
    _operatorCombo.add(new EOQualifier.Comparison("<"));
    _operatorCombo.add(new EOQualifier.Comparison("<="));
    _operatorCombo.add(new EOQualifier.Comparison(">"));
    _operatorCombo.add(new EOQualifier.Comparison(">="));
    _operatorCombo.add(new EOQualifier.Comparison("contains"));
    _operatorCombo.add(new EOQualifier.Comparison("like"));
    _operatorCombo.add(new EOQualifier.Comparison("caseinsensitivelike", "like (any case)"));
    _operatorCombo.getCombo().setLayoutData(new GridData());

    _valueText = new Text(this, SWT.BORDER);
    _valueText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
  }

  public void setQualifier(EOQualifier qualifier) {
    EOQualifier finalQualifier = qualifier;
    if (finalQualifier instanceof EOAggregateQualifier) {
      List<EOQualifier> qualifiers = ((EOAggregateQualifier) finalQualifier).getQualifiers();
      if (!qualifiers.isEmpty()) {
        finalQualifier = qualifiers.get(0);
      }
    }

    if (finalQualifier instanceof EOKeyValueQualifier) {
      EOKeyValueQualifier kvQualifier = (EOKeyValueQualifier) finalQualifier;
      _key = kvQualifier.getKey();
      _operatorCombo.setSelection(new StructuredSelection(kvQualifier.getComparison()));
      String valueStr;
      Object value = kvQualifier.getValue();
      if (value instanceof String) {
        String escapedValue = (String) value;
        escapedValue = escapedValue.replaceAll("'", "\\'");
        valueStr = "'" + escapedValue + "'";
      } else if (value instanceof Number) {
        valueStr = value.toString();
      } else {
        valueStr = (value == null) ? "" : value.toString();
      }
      _valueText.setText(valueStr);
    } else if (finalQualifier instanceof EOKeyComparisonQualifier) {
      EOKeyComparisonQualifier kcQualifier = (EOKeyComparisonQualifier) finalQualifier;
      _key = kcQualifier.getLeftKey();
      _operatorCombo.setSelection(new StructuredSelection(kcQualifier.getComparison()));
      String valueStr = (kcQualifier.getRightKey() == null) ? "" : kcQualifier.getRightKey();
      _valueText.setText(valueStr);
    } else {
      _operatorCombo.setSelection(new StructuredSelection(_operatorCombo.getElementAt(0)));
      _valueText.setText("");
    }
  }

  public EOQualifier getQualifier() {
    EOQualifier qualifier;
    if (_key == null) {
      qualifier = null;
    } else {
      EOQualifier.Comparison comparison = (EOQualifier.Comparison) ((IStructuredSelection) _operatorCombo.getSelection()).getFirstElement();
      String value = _valueText.getText();
      qualifier = EOQualifierFactory.fromString(_key + " " + comparison + " " + value);
    }
    if (qualifier == null) {
      qualifier = new EOTruePredicate();
    }
    return qualifier;
  }
}
TOP

Related Classes of org.objectstyle.wolips.eomodeler.editors.qualifier.KeyValueQualifierTypeEditor

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.