Project: Vega
/*******************************************************************************
 * 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.conditions; 
 
import java.util.List; 
 
import org.eclipse.jface.viewers.ArrayContentProvider; 
import org.eclipse.jface.viewers.ComboViewer; 
import org.eclipse.jface.viewers.ILabelProvider; 
import org.eclipse.jface.viewers.ISelection; 
import org.eclipse.jface.viewers.ISelectionChangedListener; 
import org.eclipse.jface.viewers.IStructuredSelection; 
import org.eclipse.jface.viewers.LabelProvider; 
import org.eclipse.jface.viewers.SelectionChangedEvent; 
import org.eclipse.jface.viewers.StructuredSelection; 
import org.eclipse.swt.SWT; 
import org.eclipse.swt.widgets.Composite; 
 
import com.subgraph.vega.api.model.conditions.IHttpConditionType; 
 
public class ConditionTypeComboViewer extends ComboViewer { 
 private MatchActionComboViewer matchActionViewer; 
  
 public ConditionTypeComboViewer(Composite parent, List<IHttpConditionType> conditionTypes) { 
  super(parent, SWT.READ_ONLY); 
   
  setContentProvider(new ArrayContentProvider()); 
  setLabelProvider(createLabelProvider()); 
  addSelectionChangedListener(createSelectionChangedListener()); 
  setInput(conditionTypes.toArray()); 
  reset(); 
 
  
  
 private ILabelProvider createLabelProvider() { 
  return new LabelProvider() { 
   @Override 
   public String getText(Object element) { 
    if(element instanceof IHttpConditionType)  
     return ((IHttpConditionType) element).getName(); 
    else 
     return null
   
  }; 
 
  
 private ISelectionChangedListener createSelectionChangedListener() { 
  return new ISelectionChangedListener() { 
   @Override 
   public void selectionChanged(SelectionChangedEvent event) { 
    setMatchActionInputForSelection(event.getSelection()); 
   
  }; 
 
 
 public void reset() { 
  final Object element = getElementAt(0); 
  if(element != null
   setSelection(new StructuredSelection(element)); 
 
 
 public void setMatchTypeViewer(MatchActionComboViewer viewer) { 
  matchActionViewer = viewer; 
  setMatchActionInputForSelection(getSelection()); 
 
  
 private void setMatchActionInputForSelection(ISelection selection) { 
  if(matchActionViewer == null || !(selection instanceof IStructuredSelection)) 
   return
  final IStructuredSelection ss = (IStructuredSelection) selection; 
  if(!(ss.getFirstElement() instanceof IHttpConditionType)) 
   return
   
  final IHttpConditionType conditionType = (IHttpConditionType) ss.getFirstElement(); 
  matchActionViewer.setMatchActionInput(conditionType.getMatchActions()); 
 
  
 public IHttpConditionType getSelectedConditionType() { 
  final IStructuredSelection selection = (IStructuredSelection) getSelection(); 
  if(selection.isEmpty()) 
   return null
  return (IHttpConditionType) selection.getFirstElement(); 
 
}