Package com.subgraph.vega.ui.http.intercept.config

Source Code of com.subgraph.vega.ui.http.intercept.config.BreakpointMatchTypeEditingSupport

/*******************************************************************************
* Copyright (c) 2011 Subgraph.
* 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:
*     Subgraph - initial API and implementation
******************************************************************************/
package com.subgraph.vega.ui.http.intercept.config;

import java.util.List;

import org.eclipse.jface.viewers.ArrayContentProvider;
import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ComboBoxViewerCellEditor;
import org.eclipse.jface.viewers.EditingSupport;
import org.eclipse.jface.viewers.LabelProvider;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.swt.SWT;

import com.subgraph.vega.api.model.conditions.IHttpCondition;
import com.subgraph.vega.api.model.conditions.match.IHttpConditionMatchAction;

public class BreakpointMatchTypeEditingSupport extends EditingSupport {
  private final TableViewer viewer;

  public BreakpointMatchTypeEditingSupport(TableViewer viewer) {
    super(viewer);
    this.viewer = viewer;
  }

  @Override
  protected CellEditor getCellEditor(Object element) {
    ComboBoxViewerCellEditor editor = new ComboBoxViewerCellEditor(viewer.getTable(), SWT.READ_ONLY);
    editor.setContenProvider(new ArrayContentProvider());
    editor.setLabelProvider(new LabelProvider() {
      public String getText(Object element) {
        return ((IHttpConditionMatchAction) element).getLabel();
      }
    });
    final IHttpCondition condition = (IHttpCondition) element;
    final List<IHttpConditionMatchAction> matchActions = condition.getType().getMatchActions();
    editor.setInput(matchActions);
    for(IHttpConditionMatchAction ma: matchActions) {
      if(ma.getLabel().equals(condition.getMatchAction().getLabel()))
        editor.getViewer().setSelection(new StructuredSelection(ma));
    }
    return editor;
  }

  @Override
  protected boolean canEdit(Object element) {
    return true;
  }

  @Override
  protected Object getValue(Object element) {
    return ((IHttpCondition) element).getType();
  }

  @Override
  protected void setValue(Object element, Object value) {
    final IHttpCondition condition = (IHttpCondition) element;
    final IHttpConditionMatchAction newMatchAction = (IHttpConditionMatchAction) value;
    final IHttpConditionMatchAction oldMatchAction = condition.getMatchAction();
    if(newMatchAction.getLabel().equals(oldMatchAction.getLabel()))
      return;
    // Input will be quietly rejected if it doesn't make sense  (ie: an integer input to a range match action)
    newMatchAction.setArgumentFromString(oldMatchAction.getArgumentAsString());
    condition.setMatchAction(newMatchAction);
    viewer.refresh(true);
  }

}
TOP

Related Classes of com.subgraph.vega.ui.http.intercept.config.BreakpointMatchTypeEditingSupport

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.