com.jaspersoft.android.jaspermobile.activities.repository.LibraryActivity.java Source code

Java tutorial

Introduction

Here is the source code for com.jaspersoft.android.jaspermobile.activities.repository.LibraryActivity.java

Source

/*
 * Copyright  2014 TIBCO Software, Inc. All rights reserved.
 * http://community.jaspersoft.com/project/jaspermobile-android
 *
 * Unless you have purchased a commercial license agreement from Jaspersoft,
 * the following license terms apply:
 *
 * This program is part of Jaspersoft Mobile for Android.
 *
 * Jaspersoft Mobile is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Jaspersoft Mobile 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 Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with Jaspersoft Mobile for Android. If not, see
 * <http://www.gnu.org/licenses/lgpl>.
 */
package com.jaspersoft.android.jaspermobile.activities.repository;

import android.app.ActionBar;
import android.os.Bundle;
import android.support.v4.app.FragmentTransaction;
import android.view.Menu;
import android.view.MenuItem;

import com.google.inject.Inject;
import com.jaspersoft.android.jaspermobile.R;
import com.jaspersoft.android.jaspermobile.activities.HomeActivity;
import com.jaspersoft.android.jaspermobile.activities.repository.fragment.ResourcesControllerFragment;
import com.jaspersoft.android.jaspermobile.activities.repository.fragment.ResourcesControllerFragment_;
import com.jaspersoft.android.jaspermobile.activities.repository.fragment.SearchControllerFragment;
import com.jaspersoft.android.jaspermobile.activities.repository.fragment.SearchControllerFragment_;
import com.jaspersoft.android.jaspermobile.activities.repository.support.FilterManager;
import com.jaspersoft.android.jaspermobile.activities.repository.support.LibraryPref_;
import com.jaspersoft.android.jaspermobile.activities.repository.support.SortOptions;
import com.jaspersoft.android.jaspermobile.activities.repository.support.SortOrder;
import com.jaspersoft.android.jaspermobile.activities.robospice.RoboSpiceFragmentActivity;
import com.jaspersoft.android.jaspermobile.dialog.FilterDialogFragment;
import com.jaspersoft.android.jaspermobile.dialog.SortDialogFragment;
import com.jaspersoft.android.jaspermobile.info.ServerInfoManager;
import com.jaspersoft.android.jaspermobile.info.ServerInfoSnapshot;
import com.jaspersoft.android.sdk.client.JsRestClient;
import com.jaspersoft.android.sdk.client.oxm.server.ServerInfo;

import org.androidannotations.annotations.Bean;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.InstanceState;
import org.androidannotations.annotations.OptionsItem;
import org.androidannotations.annotations.OptionsMenu;
import org.androidannotations.annotations.OptionsMenuItem;
import org.androidannotations.annotations.sharedpreferences.Pref;

import java.util.List;

/**
 * @author Tom Koptel
 * @since 1.9
 */
@EActivity
@OptionsMenu(R.menu.libraries_menu)
public class LibraryActivity extends RoboSpiceFragmentActivity {

    @Inject
    JsRestClient jsRestClient;

    @Bean
    ServerInfoManager infoManager;
    @Pref
    LibraryPref_ pref;
    @Bean
    FilterManager filterOptions;
    @Bean
    SortOptions sortOptions;

    @OptionsMenuItem
    MenuItem filter;
    @OptionsMenuItem
    MenuItem sort;

    @InstanceState
    boolean mShowFilterOption;
    @InstanceState
    boolean mShowSortOption;

    private ResourcesControllerFragment resourcesController;
    private SearchControllerFragment searchControllerFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        ActionBar actionBar = getActionBar();
        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
        }

        if (savedInstanceState == null) {
            // Reset all controls state
            pref.clear();

            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

            resourcesController = ResourcesControllerFragment_.builder()
                    .emptyMessage(R.string.r_browser_nothing_to_display).resourceTypes(filterOptions.getFilters())
                    .sortOrder(sortOptions.getOrder()).recursiveLookup(true).build();
            transaction.add(resourcesController, ResourcesControllerFragment.TAG);

            searchControllerFragment = SearchControllerFragment_.builder().resourceTypes(filterOptions.getFilters())
                    .build();
            transaction.add(searchControllerFragment, SearchControllerFragment.TAG);
            transaction.commit();
        } else {
            resourcesController = (ResourcesControllerFragment) getSupportFragmentManager()
                    .findFragmentByTag(ResourcesControllerFragment.TAG);
            searchControllerFragment = (SearchControllerFragment) getSupportFragmentManager()
                    .findFragmentByTag(SearchControllerFragment.TAG);
        }

        updateOptionsMenu();
    }

    private void updateOptionsMenu() {
        infoManager.getServerInfo(getSpiceManager(), new ServerInfoManager.InfoCallback() {
            @Override
            public void onInfoReceived(ServerInfoSnapshot serverInfo) {
                mShowSortOption = true;
                String proVersion = ServerInfo.EDITIONS.PRO;
                mShowFilterOption = (proVersion.equals(serverInfo.getEdition()));
                invalidateOptionsMenu();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        filter.setVisible(mShowFilterOption);
        sort.setVisible(mShowSortOption);
        return true;
    }

    @OptionsItem(android.R.id.home)
    final void showHome() {
        HomeActivity.goHome(this);
    }

    @OptionsItem(R.id.filter)
    final void startFiltering() {
        FilterDialogFragment.show(getSupportFragmentManager(), new FilterDialogFragment.FilterDialogListener() {
            @Override
            public void onDialogPositiveClick(List<String> types) {
                if (resourcesController != null) {
                    resourcesController.loadResourcesByTypes(types);
                }
                if (searchControllerFragment != null) {
                    searchControllerFragment.setResourceTypes(types);
                }
            }
        });
    }

    @OptionsItem(R.id.sort)
    final void startSorting() {
        SortDialogFragment.show(getSupportFragmentManager(), new SortDialogFragment.SortDialogListener() {
            @Override
            public void onOptionSelected(SortOrder sortOrder) {
                if (resourcesController != null) {
                    resourcesController.loadResourcesBySortOrder(sortOrder);
                }
            }
        });
    }

}