@Override
 public void swapRight(MenuItem item) {
   super.swapRight(item);
   mButton.setTranslationX(0);
   mButton.animate().translationX(-mButton.getWidth()).setDuration(SwapButton.ANIM_DURATION);
   Runnable updateButton =
       new Runnable() {
         @Override
         public void run() {
           mButton.animate().cancel();
           mButton.setTranslationX(0);
         }
       };
   mHandler.postDelayed(updateButton, SwapButton.ANIM_DURATION);
   selectMenuItem(item);
 }
  @Override
  public void reflectCurrentFilter() {
    if (useCompact(mContext)) {
      super.reflectCurrentFilter();

      FilterRepresentation rep = getLocalRepresentation();
      if (rep != null && getLocalRepresentation() instanceof FilterVignetteRepresentation) {
        FilterVignetteRepresentation drawRep = (FilterVignetteRepresentation) rep;
        mImageVignette.setRepresentation(drawRep);
      }
      updateText();
      return;
    }
    mLocalRepresentation = null;
    if (getLocalRepresentation() != null
        && getLocalRepresentation() instanceof FilterVignetteRepresentation) {
      FilterVignetteRepresentation rep = (FilterVignetteRepresentation) getLocalRepresentation();
      int min;
      int[] mode = {
        FilterVignetteRepresentation.MODE_VIGNETTE,
        FilterVignetteRepresentation.MODE_EXPOSURE,
        FilterVignetteRepresentation.MODE_SATURATION,
        FilterVignetteRepresentation.MODE_CONTRAST,
        FilterVignetteRepresentation.MODE_FALLOFF
      };
      SeekBar[] sliders = {mVignetteBar, mExposureBar, mSaturationBar, mContrastBar, mFalloffBar};
      TextView[] label = {
        mVignetteValue, mExposureValue, mSaturationValue, mContrastValue, mFalloffValue
      };
      for (int i = 0; i < mode.length; i++) {
        BasicParameterInt p = (BasicParameterInt) rep.getFilterParameter(mode[i]);
        int value = p.getValue();
        sliders[i].setMax(p.getMaximum() - p.getMinimum());
        sliders[i].setProgress(value - p.getMinimum());
        label[i].setText("" + value);
      }

      mImageVignette.setRepresentation(rep);
      String text = mContext.getString(rep.getTextId()).toUpperCase();
      mFilterTitle.setText(text);
      updateText();
    }
  }
  @Override
  public void setUtilityPanelUI(View actionButton, View editControl) {
    if (useCompact(mContext)) {
      super.setUtilityPanelUI(actionButton, editControl);
      return;
    }
    mActionButton = actionButton;
    mEditControl = editControl;
    mEditTitle.setCompoundDrawables(null, null, null, null);
    LinearLayout group = (LinearLayout) editControl;
    LayoutInflater inflater =
        (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    LinearLayout controls =
        (LinearLayout) inflater.inflate(R.layout.filtershow_vignette_controls, group, false);
    ViewGroup.LayoutParams lp =
        new LinearLayout.LayoutParams(
            ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
    controls.setLayoutParams(lp);
    group.removeAllViews();
    group.addView(controls);

    mVignetteBar = (SeekBar) controls.findViewById(R.id.mainVignetteSeekbar);
    mVignetteBar.setMax(200);
    mVignetteBar.setOnSeekBarChangeListener(this);
    mVignetteValue = (TextView) controls.findViewById(R.id.mainVignetteValue);
    mExposureBar = (SeekBar) controls.findViewById(R.id.exposureSeekBar);
    mExposureBar.setMax(200);
    mExposureBar.setOnSeekBarChangeListener(this);
    mExposureValue = (TextView) controls.findViewById(R.id.exposureValue);
    mSaturationBar = (SeekBar) controls.findViewById(R.id.saturationSeekBar);
    mSaturationBar.setMax(200);
    mSaturationBar.setOnSeekBarChangeListener(this);
    mSaturationValue = (TextView) controls.findViewById(R.id.saturationValue);
    mContrastBar = (SeekBar) controls.findViewById(R.id.contrastSeekBar);
    mContrastBar.setMax(200);
    mContrastBar.setOnSeekBarChangeListener(this);
    mContrastValue = (TextView) controls.findViewById(R.id.contrastValue);
    mFalloffBar = (SeekBar) controls.findViewById(R.id.falloffSeekBar);
    mFalloffBar.setMax(200);
    mFalloffBar.setOnSeekBarChangeListener(this);
    mFalloffValue = (TextView) controls.findViewById(R.id.falloffValue);
  }
 @Override
 public void createEditor(Context context, FrameLayout frameLayout) {
   super.createEditor(context, frameLayout);
   mImageVignette = (ImageVignette) mImageShow;
   mImageVignette.setEditor(this);
 }