gt:         item = menu.findItem(R.id.action_sync_file);
context: /* ownCloud Android client application
   *   Copyright (C) 2012-2014 ownCloud Inc. 
   *
   *   This program is free software: you can redistribute it and/or modify
   *   it under the terms of the GNU General Public License version 2,
   *   as published by the Free Software Foundation.
   *
   *   This program is distributed in the hope that it will be useful,
   *   but WITHOUT ANY WARRANTY; without even the implied warranty of
   *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   *   GNU General Public License for more details.
   *
   *   You should have received a copy of the GNU General Public License
   *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
   *
   */
  package com.owncloud.android.ui.preview;
  
  import java.io.BufferedInputStream;
  import java.io.File;
  import java.io.FileInputStream;
  import java.io.FilterInputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.lang.ref.WeakReference;
  
  import android.accounts.Account;
  import android.annotation.SuppressLint;
  import android.app.Activity;
  import android.graphics.Bitmap;
  import android.graphics.BitmapFactory;
  import android.graphics.BitmapFactory.Options;
  import android.graphics.Point;
  import android.os.AsyncTask;
  import android.os.Bundle;
  import android.support.v4.app.FragmentStatePagerAdapter;
  import android.view.Display;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.View.OnClickListener;
  import android.view.ViewGroup;
  import android.widget.ImageView;
  import android.widget.ProgressBar;
  import android.widget.TextView;
  
  import com.actionbarsherlock.view.Menu;
  import com.actionbarsherlock.view.MenuInflater;
  import com.actionbarsherlock.view.MenuItem;
  import com.owncloud.android.R;
  import com.owncloud.android.datamodel.OCFile;
  import com.owncloud.android.files.FileMenuFilter;
  import com.owncloud.android.lib.common.utils.Log_OC;
  import com.owncloud.android.ui.dialog.ConfirmationDialogFragment;
  import com.owncloud.android.ui.dialog.RemoveFileDialogFragment;
  import com.owncloud.android.ui.fragment.FileFragment;
  import com.owncloud.android.utils.TouchImageViewCustom;
  
  
  
  /**
   * This fragment shows a preview of a downloaded image.
   * 
   * Trying to get an instance with NULL {@link OCFile} or ownCloud {@link Account} values will produce an {@link IllegalStateException}.
   * 
   * If the {@link OCFile} passed is not downloaded, an {@link IllegalStateException} is generated on instantiation too.
   * 
   * @author David A. Velasco
   */
  public class PreviewImageFragment extends FileFragment {
  
      public static final String EXTRA_FILE = "FILE";
      public static final String EXTRA_ACCOUNT = "ACCOUNT";
  
      private View mView;
      private Account mAccount;
      private TouchImageViewCustom mImageView;
      private TextView mMessageView;
      private ProgressBar mProgressWheel;
  
      public Bitmap mBitmap = null;
      
      private static final String TAG = PreviewImageFragment.class.getSimpleName();
  
      private boolean mIgnoreFirstSavedState;
  
      
      /**
       * Creates a fragment to preview an image.
       * 
       * When 'imageFile' or 'ocAccount' are null
       * 
       * @param imageFile                 An {@link OCFile} to preview as an image in the fragment
       * @param ocAccount                 An ownCloud account; needed to start downloads
       * @param ignoreFirstSavedState     Flag to work around an unexpected behaviour of {@link FragmentStatePagerAdapter}; TODO better solution 
       */
      public PreviewImageFragment(OCFile fileToDetail, Account ocAccount, boolean ignoreFirstSavedState) {
          super(fileToDetail);
          mAccount = ocAccount;
          mIgnoreFirstSavedState = ignoreFirstSavedState;
      }
      
      
      /**
       *  Creates an empty fragment for image previews.
       * 
       *  MUST BE KEPT: the system uses it when tries to reinstantiate a fragment automatically (for instance, when the device is turned a aside).
       * 
       *  DO NOT CALL IT: an {@link OCFile} and {@link Account} must be provided for a successful construction 
       */
      public PreviewImageFragment() {
          super();
          mAccount = null;
          mIgnoreFirstSavedState = false;
      }
      
      
      /**
       * {@inheritDoc}
       */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setHasOptionsMenu(true);
      }
      
  
      /**
       * {@inheritDoc}
       */
      @Override
      public View onCreateView(LayoutInflater inflater, ViewGroup container,
              Bundle savedInstanceState) {
          super.onCreateView(inflater, container, savedInstanceState);
          mView = inflater.inflate(R.layout.preview_image_fragment, container, false);
          mImageView = (TouchImageViewCustom) mView.findViewById(R.id.image);
          mImageView.setVisibility(View.GONE);
          mImageView.setOnClickListener(new OnClickListener() {
              @Override
              public void onClick(View v) {
                  ((PreviewImageActivity) getActivity()).toggleFullScreen();
              }
  
          });
          mMessageView = (TextView)mView.findViewById(R.id.message);
          mMessageView.setVisibility(View.GONE);
          mProgressWheel = (ProgressBar)mView.findViewById(R.id.progressWheel);
          mProgressWheel.setVisibility(View.VISIBLE);
          return mView;
      }
  
      /**
       * {@inheritDoc}
       */
      @Override
      public void onActivityCreated(Bundle savedInstanceState) {
          super.onActivityCreated(savedInstanceState);
          if (savedInstanceState != null) {
              if (!mIgnoreFirstSavedState) {
                  OCFile file = (OCFile)savedInstanceState.getParcelable(PreviewImageFragment.EXTRA_FILE);
                  setFile(file);
                  mAccount = savedInstanceState.getParcelable(PreviewImageFragment.EXTRA_ACCOUNT);
              } else {
                  mIgnoreFirstSavedState = false;
              }
          }
          if (getFile() == null) {
              throw new IllegalStateException("Instanced with a NULL OCFile");
          }
          if (mAccount == null) {
              throw new IllegalStateException("Instanced with a NULL ownCloud Account");
          }
          if (!getFile().isDown()) {
              throw new IllegalStateException("There is no local file to preview");
          }
      }
          
  
      /**
       * {@inheritDoc}
       */
      @Override
      public void onSaveInstanceState(Bundle outState) {
          super.onSaveInstanceState(outState);
          outState.putParcelable(PreviewImageFragment.EXTRA_FILE, getFile());
          outState.putParcelable(PreviewImageFragment.EXTRA_ACCOUNT, mAccount);
      }
      
  
      @Override
      public void onStart() {
          super.onStart();
          if (getFile() != null) {
             BitmapLoader bl = new BitmapLoader(mImageView, mMessageView, mProgressWheel);
             bl.execute(new String[]{getFile().getStoragePath()});
          }
      }
      
      
      /**
       * {@inheritDoc}
       */
      @Override
      public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
          super.onCreateOptionsMenu(menu, inflater);
          inflater.inflate(R.menu.file_actions_menu, menu);
      }
  
      /**
       * {@inheritDoc}
       */
      @Override
      public void onPrepareOptionsMenu(Menu menu) {
          super.onPrepareOptionsMenu(menu);
          
          if (mContainerActivity.getStorageManager() != null) {
              // Update the file
              setFile(mContainerActivity.getStorageManager().getFileById(getFile().getFileId()));
              
              FileMenuFilter mf = new FileMenuFilter(
                  getFile(),
                  mContainerActivity.getStorageManager().getAccount(),
                  mContainerActivity,
                  getSherlockActivity()
              );
              mf.filter(menu);
          }
          
          // additional restriction for this fragment 
          // TODO allow renaming in PreviewImageFragment
          MenuItem item = menu.findItem(R.id.action_rename_file);
          if (item != null) {
              item.setVisible(false);
              item.setEnabled(false);
          }
          
          // additional restriction for this fragment 
          // TODO allow refresh file in PreviewImageFragment
  