Java tutorial
/* Copyright (C) 2012, 2013, 2014 University of Otago, Tonic Artos <tonic.artos@gmail.com> Otago PsyAn Lab is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. 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/>. In accordance with Section 7(b) of the GNU General Public License version 3, all legal notices and author attributions must be preserved. */ package nz.ac.otago.psyanlab.common.designer.assets; import com.tonicartos.component.FilePickerFragment; import com.tonicartos.component.FilePickerFragment.Callbacks; import com.tonicartos.component.FilePickerFragment.HeaderMapper; import com.tonicartos.widget.stickygridheaders.StickyGridHeadersGridView; import nz.ac.otago.psyanlab.common.R; import nz.ac.otago.psyanlab.common.model.Asset; import nz.ac.otago.psyanlab.common.util.Args; import android.annotation.SuppressLint; import android.app.ActionBar; import android.content.Intent; import android.content.res.Resources; import android.os.Bundle; import android.os.Environment; import android.support.v4.app.FragmentActivity; import android.view.Menu; import android.view.MenuItem; import java.io.File; import java.io.FilenameFilter; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * A dialogue themed activity that uses the a FilePicker fragment to choose * files to import as assets. */ public class ImportAssetActivity extends FragmentActivity implements Callbacks { private FilePickerFragment mFilePickerFragment; @Override public FilenameFilter getfilter() { return new FilenameFilter() { private Pattern mAllowedFilesPattern = Pattern.compile(Asset.FILE_ENDINGS_IMAGES /* * + * "|" * + * Asset * . * FILE_ENDINGS_SOUNDS * + * "|" * + * Asset * . * FILE_ENDINGS_VIDEOS */, Pattern.CASE_INSENSITIVE); @Override public boolean accept(File dir, String filename) { File f = new File(dir, filename); if (f.isHidden()) { return false; } if (f.isDirectory()) { return true; } return mAllowedFilesPattern.matcher(filename).matches(); } }; } @Override public HeaderMapper getHeaderMapper() { return new HeaderMapper() { private Pattern mAudioPattern = Pattern.compile("audio/.*|application/ogg"); private Pattern mImagePattern = Pattern.compile("image/.*"); private Pattern mVideoPattern = Pattern.compile("video/.*"); @Override public String getHeaderFor(String mimeType, File file) { Matcher matcher = mAudioPattern.matcher(mimeType); if (matcher.matches()) { return getResources().getString(R.string.header_sounds); } matcher = mVideoPattern.matcher(mimeType); if (matcher.matches()) { return getResources().getString(R.string.header_videos); } matcher = mImagePattern.matcher(mimeType); if (matcher.matches()) { return getResources().getString(R.string.header_images); } return mimeType; } }; } @Override public void onBackPressed() { if (!mFilePickerFragment.goBack()) { setResult(RESULT_CANCELED); super.onBackPressed(); } } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.just_cancel, menu); return super.onCreateOptionsMenu(menu); } @Override public void onFilesPicked(File... files) { Intent data = new Intent(); String[] paths = new String[files.length]; for (int i = 0; i < files.length; i++) { paths[i] = files[i].getPath(); } data.putExtra(Args.PICKED_PATHS, paths); setResult(RESULT_OK, data); finish(); } @Override public boolean onOptionsItemSelected(MenuItem item) { int itemId = item.getItemId(); if (itemId == R.id.menu_cancel || itemId == android.R.id.home) { setResult(RESULT_CANCELED); finish(); } return super.onOptionsItemSelected(item); } @SuppressLint("NewApi") @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_import); Resources resources = getResources(); mFilePickerFragment = (FilePickerFragment) getSupportFragmentManager().findFragmentById(R.id.file_picker); if (savedInstanceState == null) { mFilePickerFragment.setRootDir(Environment.getExternalStorageDirectory()); mFilePickerFragment.setColumnWidth(resources.getDimensionPixelSize(R.dimen.grid_column_width)); mFilePickerFragment.setNumColumns(StickyGridHeadersGridView.AUTO_FIT); mFilePickerFragment.setMultiSelectEnabled(true); } ActionBar abs = getActionBar(); abs.setDisplayUseLogoEnabled(false); abs.setDisplayShowHomeEnabled(false); abs.setTitle(R.string.title_import_asset); } }